抽空系统整理一下知识体系.仅仅作为一个纲要.
1. 计算机基础1.1 CPU
CPU指令流水线
CPU多级缓存
CPU缓存失效
CPU 缓存一致性协议
CPU MUMA架构
多核CPU的演进
CPU分支预测
1.2 内存
内存访问
主内存
工作内存
虚拟内存
页表/TLB
MMAP
内核page cache
内核block cache
进程地址空间
内核地址空间
1.3 磁盘
机械磁盘/SSD/NVME ...
顺序读写/随机读写
内核 cache/预读
cache脏页flush
磁盘cache
fsync/datasync/sync
原子读写
MMAP
MMAP读写性能分析
磁盘IO
1.4 文件
本地文件
远程文件
虚拟文件系统
卷
MMA以及异常
软链接/硬链接
文件句柄/资源
1.5 网络
IO多路复用
TCP
HTTP/HTTPS
代理
带宽
1.6 容器
隔离
CPU/CPU亲和
磁盘
内存
网络
2. 算法2.1 链表
链表复制,复杂链表复制,反转,局部反转,排序,单向链表,双向链表,有环链表,相交链表
2.2 队列
链表构建队列,数组构建队列,栈构建队列,优先级队列(堆)
2.3 栈
链表构建栈
2.4 树
二叉树,完全二叉树,搜索树,排序树,B树,B+树,红黑树,哈夫曼编码树,字典树
前序遍历,中序遍历,后序遍历,层序遍历 (递归非递归)
增删改查
2.5 堆
堆排序
优先级队列
多路归并
2.6 数组
略
2.7 图
略
2.8 跳表
跳表的随机索引算法
跳表的时间复杂度
跳表的结构
2.9 动态规划
背包问题
鸡蛋楼层问题
2.10 贪心算法
排列组合
2.11 算法心得
吴军老师的心得,算法的本质是少做事情,关注量级
2.12 排序
冒泡排序/归并排序/多路归并排序/插入排序/希尔排序/快速排序/基数排序/桶排序/堆排序/特殊排序/超大文件排序/排序树排序
前K个排序
2.13 bitmap
原理
2.14 布隆过滤器
原理
2.15 定时器
定时器的设计
考虑线程,效率,水表设计
2.16 HashMap
负载因子, 扩展策略,索引计算优化,初始值16的意义
2.17 LRU
hashmap+list/淘汰策略
如何解决随机读取的干扰
3. 多线程编程3.1 线程池
线程池模型
3.2 进程/线程
区别联系
共享和不共享
进程切换/开销
线程切换/开销
3.3 系统调用
进程的用户态和内核态
CPU上下文切换
中断上下文切换
3.4 内核态/用户态
权限
CPU上下文切换
3.5 中断
中断的处理过程
3.6 原子性
内存可见性
CPU cache失效
3.7 cache line/伪共享
略
3.8 锁, volatile
volatile的作用
3.9 并行和并发
略
3.10 子进程
僵尸进程,孤儿进程
fork pid,共享,写时复制
3.11 IO多路复用
select/poll/epoll
五种IO模型
epoll的水平触发/边沿触发
3.12 零拷贝
略
3.13 通信
略
4. 分布式系统理论4.1 CAP理论
CP? AP?
P为什么是一个必须的选项
CAP和ACID中C的区别
4.2 一致性
强一致,最终一致,因果一致,顺序一致,外部一致
4.3 Paxos/Raft/ZAB
论文
raft 一致性读
4.4 ETCD/ZK
略
4.5 spanner/tiDB/OB/cockroachDB
架构
4.6 ture Time/TSO/HLC
优缺点
4.7 OCC/S2PL/SS2PL
过程,优缺点
MVCC
4.8 分布式事务模型
略
4.9 事务隔离
不同隔离下的问题
4.10 ACID事务
数据的事务和业务的事务
4.11 备份恢复
逻辑备份,物理备份
4.12 分布式事务优化
cockroachDB
4.13 存储计算分离
略
4.14 NoSQL/NewSQL
略
4.15 全文检索
倒排索引
4.16 数据分片规则
一致性hash?字典
问题,改进机制
4.17 集群扩容
透明扩容?
拓扑变更
多节点协调
租约
5. 系统优化5.1 架构优化
B+树到LSM树
随机到顺序
日志即数据库
预计算
索引,全文索引
延迟加载
零拷贝
用户态协议栈
用户态文件系统
用户态中断
协程
5.2 细节优化
绑定CPU
cache line
分支预测
cache
锁的优化
计算下推
索引
5.3 硬件加速
RDMA
NVME
GPU
FPGA
6. 编程语言6.1 C/C++
6.2 Java
6.3 Golang
GC 三色标记
channel
PGM
6.4 其他
7.1 关系型数据库
7.2 KV数据库
7.3 文档数据库
7.4 图数据库
7.5 向量数据库
7.6 消息队列
持续补充......