抽空系统整理一下知识体系.仅仅作为一个纲要.

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. 存储

7.1 关系型数据库


7.2 KV数据库


7.3 文档数据库


7.4 图数据库


7.5 向量数据库


7.6 消息队列


8. 总结

持续补充......