供 AI 辅助学习使用的技术背景
我的技术背景与学习起点
这份文档供帮助我学习新领域的 AI 使用。它根据 Calvin’s Marbles 的公开文章和 About 整理,以第一人称描述我的知识背景。能力判断是基于公开材料的教学起点,后续应随我的实际理解和新实践更新。
如果只读一段:我是 Calvin Luo,一名以分布式存储、数据库内核和 C++ / Rust 系统开发为主要背景的资深工程师。我熟悉从协议语义、状态机、源码实现到线上故障与性能测量的分析方式,有 TiFlash、TiCI、云存储、事务和复制方面的实际工程经历,也有算法竞赛、Spark 和机器学习应用背景。2026 年 9 月起,我在 MiniMax 从事 KVCache 工作,正在扩展 LLM 推理、GPU 内存与互联、RDMA 等领域知识。讲解新领域时,可以直接使用我的系统工程基础,但需要认真解释该领域的新概念、机制和假设;尤其要交代数字的来源,用连贯的因果关系把推导讲清楚。
如何判断我的熟悉程度
阅读本档案时,请区分三种证据:
- 实际工程经验:文章包含自己的设计选择、实现过程、压测、故障调查、上线与兼容性处理。这类内容最适合作为讲解新知识时的已知基础。
- 系统学习与源码研究:文章包含源码调用路径、协议分析、论文笔记、推导或练习。这说明我有相应知识基础和阅读能力,但不代表在每个系统上都做过生产开发。
- 近期接触与待确认知识:调研、翻译、AI 对话整理、提纲和未完成章节。这些可以表明学习方向,不能单凭篇幅认定已经熟练掌握。
旧文章可能持续更新,发表日期不等于最后实践时间。没有相关文章,也不能推出我完全不会。若某个知识点会影响后面的理解,可以用一个具体例子校准,然后继续讲解,无须从头盘问背景。
可以作为较强基础的领域
分布式数据库、事务与复制
这是最适合用来连接新知识的主线。我此前在 PingCAP 从事 TiFlash 和 TiCI 的数据库内核工作,涉及复制、事务、存储、云架构和全文检索。
可以默认我理解共识与事务的分工,能够讨论线性一致性、快照隔离、可串行化、故障模型、安全性与活性。对 Raft 的理解包括选举、日志复制、提交与应用、快照、成员变更、Learner、ReadIndex 和读可见性;对 Percolator 的理解包括 prewrite / commit、锁解析、时间戳、Async Commit,以及事务顺序与 Raft 日志顺序的关系。Paxos、EPaxos、FLP 和不同一致性模型也有较完整的学习记录。
我的经验尤其涉及跨层交互:从 TiKV 的事务与 Raft 状态,到 TiFlash Proxy、行转列、DeltaMerge、读快照及索引复用。面对问题时,我会关注“在哪一层应当成立的不变量被破坏了”,而不只看最终 SQL 的结果。例如,TiFlash 不一致问题的复盘会把日志、并发交错和快照状态串起来,区分合理的怀疑与真正能够解释现象的根因。
此外,我做过 MIT 6.824 的相关实验,也有自己的 Raft 实现 Nuft;学习与工程背景能支持直接讨论协议细节,而不必先解释什么是主从复制或分布式系统。
代表依据:Raft、Raft Learner、Percolator 的进一步论述、TiFlash 不一致问题复盘。
存储引擎、云存储与检索架构
我有围绕真实负载分析存储结构和架构取舍的经验,熟悉以下几组关系:
- LSM、Memtable、SSTable、WAL、Manifest、版本和快照;不同 compaction 策略对读放大、写放大、空间放大和写入停顿的影响。
- 行存与列存、增量与基线、索引与扫描;数据布局、局部性、压缩、分片键、过滤条件和查询并发之间的关系。
- 存算分离中的本地状态、S3 数据、日志和检查点;一致性、数据新鲜度、恢复速度、扩缩容、可用性与成本的取舍。
- 全文检索中的词典、posting list、segment / fragment、合并和删除;Tantivy 与数据库版本语义、缓存、内存管理之间的集成问题。
这些背景既来自 LevelDB、Redis、InnoDB、RocksDB 等源码或机制研究,也来自 TiFlash Cloud、快速新建副本 FAP 和 TiCI 的设计实践。TiCI 文章涉及 CDC 接入、基线与增量合并、分片与 compaction、读副本缓存、异步 warmup,以及 split / merge 时的数据可见性。云存储讨论还会具体分析 S3 请求成本、小文件、限流、共享数据的生命周期和恢复路径。
我读过多种数据库与存储论文,能够用自己的系统经验比较设计。C-Store、Kudu、Aurora、Dynamo、Snowflake、Hologres、CockroachDB、Ceph 等是有学习记录的参照系;这不等于我分别维护过这些产品的内核。向量索引目前主要有技术调研证据,深度应与长期参与的事务、复制和存储工作区别对待。
代表依据:TiCI 的设计考量、云上的 TiDB 和 TiFlash、FAP、LevelDB Compaction、磁盘上的数据结构。
C++、Rust 与并发系统编程
C++ 和 Rust 是可以直接用来表达复杂机制的语言。我关注语言规则如何落到对象布局、生命周期、资源管理、并发与运行时代价上。
C++ 背景覆盖对象模型、初始化、值类别和移动语义、模板与 SFINAE、类型转换、智能指针、allocator、链接,以及原子操作和协程机制。Rust 背景覆盖所有权、借用、生命周期、trait、泛型、闭包、Cargo 与 feature、FFI 和异步编程;另有 Borrow Checker、HIR / MIR、NLL 与 GhostCell 的学习笔记。
我参与过 Rust / C++ 混合项目,实际处理过协程与线程的取舍、Actor 消息循环、锁跨越挂起点、panic 难以传播、任务等待、跨组件接口与构建适配。因此,可以直接讨论所有权边界、取消与退出、队列、背压、错误传播、ABI 和跨语言调用。介绍另一门语言或运行时时,比较这些语义通常比介绍基本语法更有帮助。
并发方面,我有内存模型、缓存一致性、原子操作、CAS、ABA、无锁队列、Hazard Pointer、futex、读写锁,以及 Future / Coroutine / Actor / CSP 等学习积累。可以使用 happens-before、资源生命周期和状态转换推理;但如果涉及特定硬件的新可见性规则,仍需从该硬件的保证讲起。
代表依据:Rust:从 C++ 程序员的视角、混合 Rust/C++ 项目经验、并发编程重要概念、Hazard Pointer。
操作系统、性能分析与复杂问题定位
我熟悉 Linux 系统编程的常用概念,能够把应用行为连接到线程调度、锁等待、虚拟内存、页缓存、缺页、NUMA、缓存与 TLB、文件 I/O、动态链接和符号解析。CPU 微架构和性能方面有流水线、乱序执行、分支预测、SIMD、访存局部性与性能分析的学习积累。
比工具名字更能代表我的能力的是测量和归因:区分 on-CPU 与 off-CPU 时间,区分已分配内存、分配器统计和 RSS,解释采样、栈回溯、符号化与监控指标的误差,并把热点或增长归因到具体模块。文章记录了 TiFlash heap profiling、jemalloc / jeprof、eBPF 内存观测的实际比较,也分析过 Grafana 指标计算带来的误导。
我能够进行源码插桩、构造实验和最小复现,比较不同实现或版本,并沿跨组件调用链排查。性能讨论可以直接进入负载模型、吞吐与尾延迟、排队、缓存行为和资源争用,不必只停在“优化代码会更快”。对 io_uring、FUSE、零拷贝及 RDMA 等新路径,则应区分已有系统知识与该接口的具体约束。
代表依据:CPU Profiling 经验、C++ 内存监控、eBPF 内存分配监控、内存领域知识。
从设计到上线的工程方法
我有从架构、实现、测试到上线排障的完整项目经历。除了单模块正确性,我会关注异步状态是否完整、错误是否被吞掉、心跳是否会被阻塞、服务发现是否一致、重启与 failover 是否能够恢复,以及跨版本和跨组件适配是否可靠。
我重视有明确行为契约的测试,包括单元测试、模块集成、在通信边界上做 mock 的组件级端到端测试,以及真实集群回归。测试失败应当帮助理解系统假设,而不只是成为需要绕过的门槛。上线讨论会包含灰度、回退、可观测性和临时缓解措施;比较方案时,需要先明确正确性与可用性条件,再讨论性能上限。
我已经在实际项目和个人项目中使用 AI 辅助开发,对规格说明、上下文组织、审查、测试与人的接管边界有自己的实践。近期偏好是保持实现和工作流程简洁,利用已经成立的假设,避免不必要的防御性代码和抽象。不要因为较早文章讨论过复杂 prompt 或 skill 组织,就假定我现在希望每件事都搭建一套重型流程。
代表依据:TiCI 上线过程、混合项目与测试经验、高并发系统场景、2026 年 9 月 AI 编程经验。
其他可用于迁移的知识背景
| 领域 | 可以利用的基础 | 教学时应保留的边界 |
|---|---|---|
| 算法与数据结构 | 有 ACM/ICPC、CCPC、Kickstart 和长期题解积累;熟悉复杂度、摊还分析、搜索、动态规划、二分、图论、字符串算法、树状数组和线段树等。 | 可以直接给出数据结构、复杂度和证明思路;不必假定所有冷门竞赛技巧都能立即回忆。 |
| 数学 | 有线性代数、概率统计、离散数学和逻辑的学习记录;包括子空间、投影、最小二乘、特征分解、正定性和 SVD。 | 可以用公式和推导,但要解释新符号、张量维度和物理意义。长期未用的结论可能需要简短回顾;不默认具备所有深度学习数学细节。 |
| 编译与程序语言 | 做过 Fortran 到 C++ 的转换工具和数组库;学习过词法与语法分析、LL / LR / GLR、Flex/Bison、AST、语言语义和运行时实现。 | 适合从语义到表示再到执行讲解;不能据此默认熟悉 LLVM 后端、GPU 编译器或任意优化 pass。 |
| 函数式与类型系统 | 学习过 Haskell、类型类、参数多态、高阶与高秩多态、惰性求值、Continuation、CPS、Church 编码和不动点组合子,并在多种语言中比较实现。 | 可以使用这些概念建立联系;新的类型理论和具体语言规则仍需定义。 |
| 形式化方法 | 有 TLA+ / PlusCal、Raft / EPaxos 模型分析和事务验证相关经历;做过 Coq / Software Foundations 的部分证明练习。 | 能讨论不变量、状态空间、安全性、活性、归纳与反例;TLA+ 的协议建模经验与 Coq 的证明练习应分别看待。 |
| 网络与 RPC | 分析过 TCP、UDP、libutp、重传、流控、拥塞控制、RTT、套接口和 gRPC;自己的 ATP 项目实现过基于 UDP 的可靠传输。 | 这些能支撑理解 RDMA,但 TCP 的完成语义和 CPU 的内存同步经验不能直接套到 NIC / GPU 上。 |
| 数据处理与机器学习应用 | 在腾讯做过数据挖掘、预测模型和在线推理相关工作;有 Spark / Spark SQL / ML 库源码研究,以及 Python、NumPy、Pandas、Scala、TensorFlow、遗传算法实践。 | 既有模型训练与应用背景,也有分布式数据处理经验;多数材料对应较早技术栈,不默认熟悉当前 PyTorch、LLM 训练或最新模型结构。 |
| 工具链与部署 | 有 Git、Bash、CMake / 编译链接、GCC / GLIBC、V8 集成、Linux / Windows / macOS 环境、服务部署、NAS 和网络配置等经验。 | 可以给可执行命令并解释关键参数;少数 Django、网站与游戏工具实践不足以代表当前前端或所有运维领域的熟练程度。 |
| 土木与数值计算 | 本科为土木工程,后在南京大学学习软件工程;有钢筋混凝土、基础工程、岩土实习,以及用遗传算法优化有限元程序参数的记录。 | 可作为工程建模、约束与数值方法的历史背景,不应当作当前土木工程执业或设计能力的证明。 |
补充依据:算法题解、线性代数、Fortran 数组实现、Haskell、TLA+、Software Foundations、Spark、libutp。
当前正在扩展的领域
截至 2026 年 10 月,公开材料显示我的工作重心已经转向 KVCache。这里最有价值的教学方式,是把已有的存储、并发和性能经验连接到推理系统,同时补齐模型与硬件特有的语义。
| 方向 | 已有学习内容 | 继续讲解时需要明确的部分 |
|---|---|---|
| LLM 推理基础 | Transformer、Q/K/V、Attention、Prefill / Decode、KVCache、前缀复用和 PagedAttention 等已有笔记。 | 从具体张量形状和计算过程解释新结构。相关内容包含 AI 整理,不默认我已经独立实现过 Attention kernel 或完整推理引擎。 |
| KVCache 系统 | 已在讨论 HBM / Host DRAM / SSD 分层、缓存保存与恢复、迁移路径、容量与带宽预算、排队和前台延迟。 | 说明缓存键、模型与位置兼容性、数据生命周期,以及搬运与计算如何同步;区分算例、设计设想与实测结果。 |
| RDMA 与 GPU 互联 | 有 PD / MR / QP / CQ、QP 建连、单边写、控制面交互、GPUDirect RDMA、NUMA / PCIe / UPI 路径及评估维度的学习记录。 | 完成、可见性和可复用时刻要分别解释;verbs 行为、GPU 消费数据前的同步、拓扑和硬件条件不能省略。 |
| AI 存储与索引 | 调研过 3FS、FUSE、io_uring、零拷贝,以及 HNSW、Vamana / DiskANN、IVF 和量化等向量索引思路。 | 可从既有存储引擎知识切入,但需要重新定义负载、正确性或召回目标,并核对具体实现和版本。 |
这些记录能够支持“有系统基础、正在深入 AI 基础设施”的判断,尚不足以默认我熟练掌握 CUDA / Triton kernel 优化、多机大模型训练、NCCL 或全部 GPU 微架构。这里的边界表示公开材料的证据范围,不是对实际能力的否定;如果我在对话中展示了更深入的理解,请及时提高讲解起点。
代表依据:KVCache:硬件和架构、RDMA 学习、RDMA 评估指标、LLM 基础、3FS、向量索引调研。
请怎样帮助我学习
下面的要求主要来自我在 AI 编程与学习经验 中给出的学习提示,以及 博客写作方式 中对准确、详尽和逻辑清晰的要求。
- 把我当作有工程经验的新领域学习者。可以默认我理解基本程序设计、常见数据结构、操作系统、网络和数据库概念。不要反复解释什么是变量、线程、缓存或复杂度;对于新领域的专有概念,则必须把含义和作用讲清楚。
- 用连贯的因果关系讲解。先说明问题和约束,再解释机制为什么解决这个问题,最后谈代价和边界。可以口语化,但不要用一串短句、分号、缩写和结论替代论证。
- 第一次出现的新术语要落到具体对象上。不仅展开缩写,还要说明它由谁创建、保存什么、谁使用、处在哪条调用或数据路径中。如果几个概念容易混淆,明确它们的区别。
- 每个关键数字都要有来处。区分规格上限、实测值、文献结论和假设算例;给出必要的公式、参数、单位和统计口径。尤其区分 bit / byte、GB / GiB、单向 / 双向、单卡 / 整机,以及平均值 / 分位数。不要抛出一个“经验值”就直接开始推导。
- 优先使用熟悉领域的类比,并指出类比在哪里失效。数据库、缓存、事务、状态机、所有权、异步 I/O 和数据布局都是好的起点。但类比只是帮助定位概念,最终仍需给出新领域自身的准确语义。
- 允许深入原理和实现。我能够阅读论文、源码、伪代码和英文技术资料,也愿意理解推导。讲复杂内容时,先建立主线,再展开关键细节;不要因为技术背景较强就省掉中间步骤,使用“显然”跳过真正的新知识。
- 用具体例子检验理解。可以给一个小规模算例、一段代码、一条请求的数据流,或一个失败时序。需要实践时,说明如何运行、预期观察到什么、什么结果会推翻当前解释。练习应帮助理解机制,不必每次都变成大项目。
- 对资料和结论保持可核查性。涉及实现细节时注明版本或代码位置,区分语言规范、硬件保证和某个实现的选择。我的博客也有旧结论、未完成内容和后续纠错;发现冲突时,应以可靠原始资料和实验澄清。
- 代码和方案保持简洁。利用题目或环境已经给出的条件,尽量复用现有接口和测试基础设施。不要为未提出的需求增加大量配置、兼容层或防御性逻辑;需要额外复杂性时,解释它在解决哪个真实问题。
一个适合我的讲解顺序是:这是什么、解决什么问题 → 和已知知识的联系 → 一次具体执行过程 → 正确性条件与性能代价 → 一个可验证的例子。这是组织思路的参考,无须把每次回答机械地写成同样的模板。
讲解新领域时可以使用的连接
| 要讲的新知识 | 可借助的已有经验 | 必须补充的差异 |
|---|---|---|
| KVCache、前缀复用与换入换出 | 数据库缓存、物化结果、分层存储、缓存准入与淘汰。 | KV 是由模型对特定上下文计算得到的状态;复用依赖模型、前缀和位置等条件,不能直接当普通 KV 数据库的任意键值。 |
| PagedAttention 与 KV 块管理 | 虚拟内存、分页、间接寻址、共享与引用计数。 | 明确逻辑 token 块和物理 KV 块的映射;算法中的块管理不等于操作系统缺页和磁盘换页。 |
| RDMA / GPU 异步搬运 | 提交队列、完成队列、异步 I/O、所有权与资源回收。 | NIC 报告完成、目标数据对 GPU 可见、消费者已经用完数据是不同事件,具体保证取决于接口与硬件。 |
| GPU 执行与性能优化 | CPU 的缓存层次、SIMD、访存局部性、带宽瓶颈和 profiling。 | 从头解释 GPU 的执行与存储组织,例如 warp、SIMT、shared memory;不要用 CPU 核心或线程做一一对应。 |
| Attention 与张量计算 | 线性代数、矩阵乘法、复杂度分析和数据布局。 | 说明各维度及其含义,展开 Q/K/V、归一化和掩码如何参与计算,再讨论具体模型变体。 |
| 向量近似检索 | 图搜索、树和索引、压缩、缓存局部性、读放大。 | 区分精确查询与近似召回,解释距离度量、召回率、构建成本以及内存与磁盘访问的权衡。 |
| 分布式训练或多 GPU 推理 | 分布式调度、数据分片、流水线、通信与计算重叠、尾延迟。 | 需要介绍新的并行维度和集合通信语义;例如 all-reduce 是聚合通信操作,不能当成 Raft 共识。 |
| 新协议与并发正确性 | 状态机、不变量、TLA+、故障注入、最小反例。 | 先定义状态、事件、失败模型与观察者,再说明需要证明或测量的性质。 |
资料范围与维护
本版整理日期为 2026-10-13。核对了线上 站点地图 的 280 篇已发布文章,与本地 _posts 的 280 篇源文一一对应;按全部源文梳理主题与证据,对工程实践、故障复盘、近期学习和学习偏好作重点核读。
采用较宽的技术范围,共纳入 248 篇技术及相关背景材料,包括算法竞赛复盘、工具使用、形式逻辑、土木工程,以及包含编程或系统思路的游戏文章;其余 32 篇旅行、运动、文学和生活内容不用于技术能力判断。另参考公开 About 和写作说明,不把 _drafts 中的未发布材料当作已发布成果。这里只保留代表性链接,避免把档案变成全站目录。
解释资料时特别保留以下限制:
- 2026 年的 KVCache 硬件、RDMA 评估、Attention 和部分核查文章标有
AIGen,LLM 基础文章也明确包含 AI 整理。这些用于识别学习方向和已讨论的概念,不单独作为熟练实现或生产成绩的证明。 Attention和《西瓜书笔记》等页面目前正文很少,另一些文章含空章节、TODO 或未完待续。不会据此推断已经完整掌握对应领域或读完整本书。- 数据库论文核查 和 Redis 源码核查 记录了对旧文的纠正与讨论。本文提炼知识范围和工程经验,不把旧文中的每个技术结论直接视为正确知识。
- 两篇转发到 PingCAP 的文章,在本次访问时跳转至认证页面;其外站全文未作为独立阅读证据。相关经历以公开 About 及本博客其他有实质正文的文章交叉判断。
后续更新时,应优先记录新完成的实现、实验、线上问题和已经澄清的概念,再调整熟悉程度。我的新反馈和实际表现,应优先于这份基于历史材料的总结。