Psyduck
另一個用XMind 記錄CS 基礎問題的地方,同樣提供了.xmind源文件以及導出的.pdf文件,XMind 版本為「XMind 2020」。
在2020 年時,曾花了約2 個月的時間整理了第一份XMind 知識庫: ZeroMind。 之所以額外創建一個Repo 幹同樣的事情,是因為一方面自己的審美髮生了變化,另一方面則是對那些最重要但基礎的問題有了更深刻地理解。
溫故而知新,孔子誠不欺我。在整理基礎知識點的過程中,對諸如CFS-vruntime、POSIX 條件變量、TCP 和epoll 等內容有了自己的理解,有一種恍然大悟的感覺。
之所以使用XMind 來記錄這些內容,是因為我非常喜歡《火星救援》裡面的一句台詞:
有時候,所有的情況都會對你不利。所有的壞事一起發生,你就可能會想,就是這樣了,這就是我的終點了。面對這種情況,你要么接受,要么想辦法解決,這就是一切的真諦。解決問題,你想各種辦法,解決一個問題,然後接著解決下一個問題,循環往復,等你解決了足夠多的問題,你就可以回家了。
也就是說,面對一個大問題時需要學會將其分解成一個一個的小問題,然後逐一地處理,即"分而治之"。下面是一些圖片,可以幫助你更好地了解這個項目做了什麼:

? 目錄
- Database
- Distributed System
- Middleware
- Linux Network Programing
- Operating System
- Golang
- Kubernetes
- C++
? Database
MySQL
- 為什麼MySQL 使用B+Tree?
- InnoDB 數據頁結構
- 深入淺出InnoDB Index
- InnoDB WAL
- InnoDB Group Commit
- InnoDB undo log 與MVCC
- 全局鎖、表級鎖以及行鎖(上)
- 全局鎖、表級鎖以及行鎖(中)
- 全局鎖、表級鎖以及行鎖(下)
- 主鍵的選擇
- MySQL Cost-Based Optimizer
- MySQL Join 工作原理淺析
- MySQL Replication——異步與並行複制
- MySQL GTID 與半同步複製
PostgreSQL
- 索引聚集表與堆表
- PostgreSQL 存儲結構
- postgreSQL 中的MVCC
- PostgreSQL 中的內存上下文(MmeoryContext)
- PostgreSQL 查詢樹結構(Query)
- RBO——提升子連接(基本概念)
- RBO——提升子連接(具體過程)
- PostgreSQL 中的SysCache
Greenplum
- Greenplum 架構概覽
- 為什麼需要Motion?
Others
- Redis 數據結構
- Redis 主從復制原理
- 緩存更新的策略
- Redis Cluster 概述
- etcd 概述
- 分佈式鎖的實現
Distributed System
分佈式協議與算法

- 2PC
- CAP 理論
- 拜占庭將軍問題(共識)
- Basic Paxos
- Raft——領導選舉與日誌複製
- Gossip——流言蜚語實現最終一致性
- Quorum NWR——定制一致性
⚗️ Middleware
Linux-Network-Programing
- 訊號
- 信號集與信號掩碼
- 進程的創建
- 進程間通訊簡介
- DAEMON
- 可靠數據傳輸協議——TCP
- TCP 擁塞控制
- socket 編程問題一覽(01)
- socket 編程問題一覽(02)
- epoll 原理剖析
- epoll_event
- HTTPS 握手過程
- Nginx 基本進程模型與核心數據結構
⚡ Operating System
- Linux 進程、線程與調度
- Linux 虛擬內存
- Linux 內存雜記(01)
? Golang
- channel 的設計與使用
- map 的設計與擴容時機
- GMP 模型
- 三色標記-清除式GC
? Kubernetes
? C++
common
面向對象程序設計
TODO
拷貝控制
- 拷貝構造與拷貝賦值
- 左值與右值
- 移動構造與移動賦值
- 三/五法則
模板與泛型編程
- Template 的基本使用
- 萬能引用與類型推斷問題
- 完美轉發
類型相關
- 強制類型轉換
- 自動類型推斷(auto)
- decltype
函數編程
- lambda 表達式
- 可調用對象——std::function
智能指針
- 堆、棧與RAII: C++ 管理資源的方式
- RAII 與智能指針
- shared_ptr
並發編程
- Linux 進程、線程與調度
- 線程的創建與執行
- std::async 與std::future
- 互斥量與std::lock_guard、std::unique_lock
- 通知狀態的改變——POSIX 條件變量
- 通知狀態的改變——C++ 條件變量
- POSIX 信號量
編譯與鏈接