Skip to content

技术书籍

技术书的正确读法不是「从头到尾读一遍」,而是带着问题读、合上书验证:这本书能不能让你的代码写得更好、架构判断更准、概念理解更深。本页书架按主题分组,每本笔记遵循笔记模板,与本站各领域文档互相链接——读完的书要能在站内留下痕迹。

使用方式

  • 精读一本书后,用本页模板为该书写一张「书籍卡」,勾掉行动项;
  • 书的某个主题如果与本站已有文档强相关,把精华合并进对应领域页(见从笔记到专题文章);
  • 技术书会过时:回看旧笔记时,标注「哪些结论已被当前工具链淘汰」(如框架版本、API 变更)。

计算机系统与底层

《深入理解计算机系统》(CS:APP)

信息:Randal E. Bryant / David R. O'Hallaron · 原书第 3 版 2016 · 难度:进阶

一句话概括:以程序员视角走一遍「程序从源码到机器执行的每一层」——数据表示、汇编、链接、进程与虚拟内存、存储层次、并发,建立「程序行为由底层机制决定」的直觉。

核心收获

  • 一切都是位模式,解释方式决定含义:整数溢出、浮点精度损失不是 bug,而是有限位表示的必然结果——写代码前先想「这个值会不会超范围」;
  • 调用栈与栈帧:理解函数调用(返回地址、栈帧、局部变量布局)后,递归爆栈、内存越界、调试器里的调用栈都变得透明;
  • 链接:静态链接与动态链接、符号解析规则,是「undefined reference」报错与运行时加载失败的底层原因;
  • 存储层次与局部性:cache 的命中率由访问模式决定——算法的复杂度之外,访问局部性是决定常数性能的最大隐藏因素;
  • 并发基础:线程共享内存是并发的根因,加锁/信号量解决的是「共享可变状态」问题。

读法与行动

代码质量与软件工程

《代码大全》(第 2 版)

信息:Steve McConnell · 原书第 2 版 2004 · 难度:入门偏中

一句话概括:把「软件构建」当作一门可教的工艺系统讲解——从变量命名、子程序设计、防御式编程到调试与重构,几乎每个主张都给出代价与取舍。

核心收获

  • 复杂度是第一敌人:软件构建的多数失败源于模块过于复杂,管理心智负担优先于堆技巧;
  • 命名是给未来读者看的:变量/函数名描述「是什么、承担什么」,而不是缩写与注释的替代品;
  • 防御式编程:对外部输入先验证再使用,assert 表达「不可能发生」的不变量;
  • 高质量子程序:一个函数只做一件事、通过参数与返回值交流,降低耦合才谈得上复用与测试;
  • 调试要用科学方法:先形成假设、再设计实验验证、二分定位,而不是随机改一处看运气。

读法与行动

  • 适合在开始写真实项目前通读一遍「变量 / 子程序 / 调试」三部分,之后当作编码规范手册查阅;
  • 动作:为本站 学习路径 的里程碑项目建立一份「编码自检清单」,把命名、防御式、单职责三条写成可勾选项;
  • 与本站关联:踩坑记录 的五段式排查法即「科学调试」的落地;测试保障见前端测试

《重构:改善既有代码的设计》(第 2 版)

信息:Martin Fowler · 原书第 2 版 2019(JavaScript 版)· 难度:入门偏中

一句话概括:在不改变可观察行为的前提下、通过一系列小步安全地改善代码内部结构——重构不是返工,是让代码持续保持可读、可改的日常动作。

核心收获

  • 重构的命脉是「测试保护 + 小步」:每次只做一个安全变换、改完立即跑测试,靠连续小步取代一次大手术;
  • 坏味道是重构信号:重复代码、过长函数、过长参数列表、散弹式修改、依恋情结——先识别味道,再选对应手法;
  • 常用手法要形成肌肉记忆:Extract Function(提炼函数)、Inline(内联)、Move Function(搬移)、以多态取代条件表达式;
  • 重构时机:添加功能前(让新代码好放)、修 bug 前(让 bug 位置显眼)、Code Review 时(顺手清理)——而不是专门安排「重构周」;
  • 与性能的关系:先写出清晰结构,用性能分析定位热点后再针对性优化,而不是早期猜测。

读法与行动

  • 读前先建立测试 习惯——没有测试保护的重构等于高空走钢丝;
  • 动作:把自己最近一段代码按「坏味道清单」体检一遍,选出最长的一个函数做一次 Extract Function,前后跑测试对比;
  • 与本站关联:本站过程记录 强调「可回看」,重构强调「可安全修改」,两者共同支撑代码的长期可维护性。

分布式与数据系统

《凤凰架构:构建可靠的大型分布式系统》

信息:周志明 · 2021 · 难度:进阶

一句话概括:用「架构演进史」的视角讲清楚现代分布式系统为什么长这样——从单体、SOA 到微服务、服务网格与云原生,每一步解决什么问题、又付出了什么代价。

核心收获

  • 架构演进是「切分」与「治理」的再平衡:把大系统切小以获得独立演进与故障隔离,代价是引入分布式的通信、一致性、可观测等复杂度;
  • 微服务不是银弹:拆分的收益在团队规模足够大、模块边界足够清晰时才成立;规模小时单体 + 良好模块化往往更优;
  • 基础设施角色的分工:服务发现、配置中心、网关、负载均衡、容器编排各自解决「分布式带来的某一类问题」,理解职责边界才不会重复造轮子;
  • 演进视角:没有「最好」的架构,只有「当前阶段最合适」的架构——架构决策要能回滚、能演进。

读法与行动

  • 推荐与本站 微服务 主题对照阅读:书本给「为什么」,站内笔记给「具体怎么做与实测」;
  • 动作:读完「服务发现」一章后,动手在本地跑一次 Nacos 或 Consul 的最小注册/发现 demo,并把结论补进后端笔记
  • 与本站关联:容器与部署系统设计消息队列

《设计数据密集型应用》(DDIA)

信息:Martin Kleppmann · 原书 2017 · 中文版 2018 · 难度:进阶

一句话概括:把数据库、缓存、消息队列、流处理等「数据系统」统一到同一套骨架下讲解——可靠性、可扩展性与可维护性,加上复制、分区、事务与一致性,是后端知识体系的「地图」。

核心收获

  • 设计目标三问:可靠性(出故障不丢数据)、可扩展性(负载增长有策略)、可维护性(后人能改)——先回答这三点再谈选型;
  • 存储引擎底层:B+ 树(读快、写放大低)与 LSM-Tree(写快、读放大、需压缩)的取舍,能解释为什么不同数据库在读写负载上表现迥异——可对照本站数据库 页的索引实测;
  • 复制与分区:主从/多主/无主复制各有取舍;分区要防热点(如一致性哈希)——与系统设计 的哈希环实测互相印证;
  • 事务的边界:隔离级别、分布式事务的现实约束——它为什么难,以及工程上常退而求其次的方案(如最终一致 + 补偿);
  • 批处理与流处理:数据系统的「输入端」同样重要,离线/实时只是延迟谱系的两端。

读法与行动

AI 与深度学习

《深度学习》(花书)

信息:Ian Goodfellow / Yoshua Bengio / Aaron Courville · 2016 · 难度:进阶

一句话概括:系统建立「深度学习 = 让模型自己学特征」的框架——从数学基础、神经网络与训练机制,到 CNN/RNN 等结构,至今仍是深度概念的基础参考。

核心收获

  • 表示学习:传统机器学习依赖人工特征,深度学习学的是「特征本身」,端到端地从数据中逐层抽象;
  • 正则化与泛化:过拟合的机制与各类正则化手段(权重衰减、dropout、数据增强)的统一视角是「对解的偏好」;
  • 优化 ≠ 找到全局最优:实际训练靠 SGD 系方法在损失面上找「足够好」的解,动量/自适应学习率是工程关键——可对照本站 PyTorch 的优化器小节;
  • 结构即先验:CNN 的局部性与权值共享、RNN 的时序共享,都是把「对问题结构的假设」注入模型;
  • 时代局限:出版于 2016 年,无 Transformer/LLM 内容——读它补基础,读本站 LLM 页 补前沿。

读法与行动

团队与项目

《人月神话》

信息:Frederick P. Brooks · 1975 / 周年纪念版 1995 · 难度:入门

一句话概括:软件工程最经典的「没有银弹」之辩——大型系统的本质复杂度无法消除,且向进度落后的项目加人手只会让它更落后。

核心收获

  • 人月不可互换:沟通成本随人数平方增长,加人不是加产能,可能反而拖慢——这是微服务团队拆分时最该警惕的隐性成本;
  • 概念完整性:一个系统的设计必须由一个(或极少数)头脑保持统一,架构师与实现者之间的沟通损耗是项目最大的隐形成本;
  • 没有银弹:把「本质复杂度」(问题本身固有的难)与「偶然复杂度」(工具与过程带来的难)分开——技术选型能优化的是后者,别指望用新框架消除前者;
  • 焦油坑与第二系统效应:警惕为「上次没做爽的功能」在第二版里过度设计。

读法与行动

  • 篇幅很短(约 300 页小册子),适合项目收尾后的晚上快速读完,用项目复盘 对照自己踩过的坑;
  • 动作:为当前项目写一段「沟通成本复盘」——哪些会议/评审本可以避免,加人真的加速了吗,记入过程记录
  • 与本站关联:项目复盘微服务跨方向转型路线

书架维护与踩坑

  • 技术书的价值密度随时间衰减:优先读「半衰期长」的经典(算法、系统、分布式原理),框架书按需查阅即可;
  • 别把「读完」当目标:读 50 本没行动的书,不如精读 5 本并在本站留下 5 篇笔记 + 5 条被勾掉的行动项;
  • 新书先查「这本书解决什么问题、本站是否有对应主题」——重合度高就先读本站领域笔记,把书当补充;
  • 记下读某本书时用的工具链版本,回看时才能判断「结论是否还成立」。

笔记结构见笔记模板,阅读方法与节奏见阅读方法,写作规范请参阅读书笔记

基于 VitePress 构建 · 内容以知识共享方式沉淀