表格

习技固然可以成为人杰. 悟道才能羽化升仙. 思想才是王道.
没有唯一的正确标准, 只有在某种情况下适合的方案.

共享数据
共享变量

主动询问
被动通知

缩短处理时间
利用阻塞时间

数据协议(应用层通信协议)
数据格式(序列化协议): 序列化与反序列化
线程模型
网络IO模型: BIO NIO 多路复用...
数据传输方式: TCP UDP

图

本地数据传输 - 数据格式 与 传输方式
网络数据传输 - 数据格式 与 传输方式

内存IO
磁盘IO
网络IO

随机IO
顺序IO

BIO Acceptor
NIO Selector

延迟写
同步写
异步写

一切皆'文件'
文件描述符 File Descriptor read() write()
套接字描述符 Socket Descriptor recv() send()

本地套接字
网络套接字
- 未连接套接字
- 监听套接字
- 已连接套接字

从输入流里面读 - 以流的方式将数据移出 C Heap Buffer缓冲区
向输出流里面写 - 以流的方式将数据移进 C Heap Buffer缓冲区
从通道里读
向通道里写

面向流 将C Heap Buffer缓冲区中的数据以流的方式移进移出
面向缓冲区

操作系统在DMA的协助下将内核缓存中的数据'批量'移进移出

减少数据传输次数 - 减少系统调用次数
单次批量传输数据 - 缓冲区

原子性 一致性 隔离性 持久性
原子性 可见性 有序性

秒 分 时 日 月 星期 年

高性能 高可用 易伸缩 可扩展 安全性
高性能 高可用 高并发
高并发的核心问题在于如何平衡性能与数据一致性
高可用包括数据高可用和服务高可用

高并发系统架构口诀: 读多写少用缓存 写多读少用队列 从而缓解数据库压力
缓存 - 利用空间换取时间是网站优化第一定律
队列之异步 - '能推迟处理则推迟处理'是网站优化第二定律

高并发架构
- 缓存
- 消息队列
- 读写分离
- 分库分表

高可用架构
- 限流
- 熔断
- 降级

性能与数据一致性之间的平衡
时间与空间之间的平衡
时间与次数之间的平衡
时间与次数与速度之间的平衡

读取-修改-写入 CAS-原子性操作内存
打开-操作-关闭 一切皆文件

阻塞 是否可以响应中断
阻塞一定时间 是否可以响应中断
非阻塞

'结构决定特性' '位-构-性'
机制-特性
定位-特性

定时 定量 同步 异步

集中式服务一致性 - 本地事务
分布式服务一致性 - 分布式事务

本地锁 - 分布式锁

集中式系统 - 成功 失败
分布式系统 - 成功 失败 超时

数据副本
服务副本

分布式CAP 一致性 可用性 分区容错性

Linux CPU 进程 内存 磁盘IO 网络

系统监控 - 性能评估与优化 - 故障处理与恢复

常量池 线程池 连接池 对象池...

锁 - 状态的变化

大刀阔斧与精雕细琢

空间 时间 次数 优先级等要素满足的情况下进行处理操作

随机操作变成顺序操作

线程间通信2种类型[同一进程内]
1.共享内存[in Java] -> 需要线程同步
2.消息传递 Channel[in Go]  Actor模型[in Erlang]  Akka[in Scala]

线程同步3种机制
1.[ 锁机制 ]
   1.1 互斥量
   1.2 条件变量
   1.3 读写锁
2.[ 信号量机制 ]
3.[ 信号机制 ]
   


进程间通信2种类型[借助操作系统]
1.[ 本地进程间通信 ]
   1.1进程间数据共享  [ 管道 ][ FIFO ][ 消息队列 ][ 共享存储(shm机制|mmap机制)(&互斥量|信号量|记录锁) ][ UNIX Domain Socket ]
   1.2异步通信  [ 信号 ]
   1.3同步和互斥  [ 互斥量(互斥性) ] [ 信号量(互斥性与同步性) ] [ 记录锁 ]
2.[ 网络进程间通信 ] 套接字



内存映射mmap可以实现进程间通信, 读写文件, 内存申请, 零拷贝等功能.
读写文件两种方式: read/write 内存映射mmap

互斥是种特殊的同步
互斥即无序协同步调
同步即时序协同步调

基于共享内存模型的线程通信,它的基石在于线程同步
基于消息传递模型的线程通信,它的...
进程通信目的在于数据交换

基于共享内存模型的线程通信,对象可以直接访问或修改它的属性,也可以直接调用它的方法.
基于消息传递模型的线程通信,Actor模型中的Actor的状态不能直接读取或修改,方法也不能直接调用.Actor只能通过消息传递的方式与外界通信.


多任务-线程 操作系统调度单位
多任务-进程 资源分配单位

进程
线程
协程

对象池
连接池
线程池
内存池

等待队列
同步队列

同步容器
并发容器

同步编程
并发编程
异步编程
响应式编程


线程Thread生命周期和状态
线程池ExecutorService生命周期和状态
任务FutureTask生命周期和状态

存储{数据/数据结构} + 计算{动作/算法} + 网络
计算向数据移动

事件机制
轮询机制

Linux内核三驾马车
进程管理
内存管理
文件系统与IO
编程基础'四大件'(内功)
1.数据结构与算法     
2.设计模式
3.操作系统        
4.计算机网络     
Linux -> 汇编 -> C/C++ -> JVM -> Netty -> Python

编程(外功)
(*)MySQL
(*)分库分表
(*)Flink
(*)ES

(*)Netty

(*)Kubernetes

JVM
并发编程
Spring
Dubbo
MQ
MyBatis
Redis
Nginx
分布式
Linux系统故障排查与性能调优