如何阅读
- 系统学习:点击「开始阅读」,先了解这本书的学习路径,再按章节顺序通读。
- 查找章节:点击「全书目录」,直接查看分章索引,跳到需要的小节。
- 选择起点:初学者先读入门卷,有基础的读实战卷,研究语言机制的读高级卷或系统编程卷。
这些电子书以网页章节形式在线阅读。每个系列围绕一个完整主题编排,技术书稿与创作手记按领域分别收录。
在线书架 / BOOKS
从第一章开始,把知识读成体系。
按领域与学习阶段整理的在线电子书与创作手记。覆盖 Rust、Lua、TypeScript、Python、Java(Spring Boot)、Go、AI Agent、MMO 服务器开发(Go 主线 + Java 21 双栈对照,四卷本 180 篇)、游戏开发(含 Cocos 四卷本与《游戏引擎实现原理》四卷本)与文学创作,从阅读指南进入,或按全书目录查找章节。
了解阅读方式4 部书稿
从所有权与借用,到工程实战与系统编程。
3 部书稿
从脚本基础,到语言机制与游戏业务。
2 部书稿
从客户端引擎,到服务端架构与完整项目。
4 部书稿
用 Go 从零实现一套能真跑、能压测、能跨服的 MMO 服务端 aegis,Java 21 作为双栈对照。
用 Go 从零实现 aegis 的网络底座:协议、KCP、会话、路由、定时器、Actor、同步模型与安全,直到能登录、能移动、能广播的最小服务器。
把玩法装进底座:实体运行时、AOI、战斗、背包、任务、社交、交易与匹配,把《晨曦大陆》做成单服可玩。
把单服推成集群:服务发现、RPC、网关集群、实例调度、跨服玩法、缓存、分库分表与分布式事务。
把服务端交付并长期运营好:压测、性能、可观测性、部署发布、配置热更、数据分析、GM 后台与容灾演练。
4 部书稿
从零手写 2D 运行时,到 Cocos Creator 3.8 交付产品,再到引擎内部与客户端联机。
手写 mini2d 运行时打通帧循环、渲染、物理与存档,每章对照 Cocos Creator 3.8。
用 Cocos Creator 3.8 交付《方块冲刺》,走到 H5 / 微信小游戏 / 原生三端上线。
深入渲染管线、Effect 体系与内存性能,学会读源码、裁剪引擎并评估升级。
从预测与和解到弱网降级,用可单测的纯逻辑实现《方块冲刺》双人竞速客户端。
4 部书稿
用 TypeScript 从零实现一个 3D 游戏引擎:内核、渲染、子系统与工具,直到工程化交付。
用 TypeScript 从零写出 helio 内核:内存、句柄、ECS、任务与反射,直到《微光岛》第一个能走动的方块。
从 RHI 三后端到帧图与后处理,把《微光岛》的小岛真正渲染出来。
资源管线、动画物理音频输入与脚本热重载,外加一套能编辑、能撤销、能存盘的编辑器。
构建、测试、性能、跨端与交付:把《微光岛》从能跑推到能发,并做跨引擎对照。
3 部书稿
按入门、实战、高级三步,建立类型与工程能力。
从基本类型、函数与泛型,到类型建模、模块和工程配置,以全栈项目收尾。
面向项目交付,覆盖测试、服务端与数据层、前端类型实践、API 契约及部署运维。
面向库与工具链作者,深入类型级编程、编译器 API、声明发布和运行时边界。
3 部书稿
从语言基础与工程交付,深入 CPython 与性能优化。
面向零基础读者,从数据结构与函数,到类型注解、并发异步、测试打包与应用项目。
从工程脚手架出发,实践 Web 服务、数据访问、后台任务、自动化与生产部署。
深入 CPython 对象模型、字节码、GC 与并发运行时,理解扩展机制和性能工程。
3 部书稿
从 Spring Boot 入门与工程实战,到框架内部机制与版本迁移。
面向零基础读者,从环境搭建与第一个接口,到 Web、数据访问、测试与完整项目。
从工程脚手架出发,实践 Web 服务、数据访问、缓存、消息与生产部署交付。
深入容器、自动配置、AOP、请求管线与事务机制,理解框架内部与 3.x 到 4.x 迁移。
4 部书稿
从语言入门到工程实战,再到高级特性与运行时原理。
3 部书稿
从零手写 Agent 引擎,到工程化服务,再到框架重写与生产化加固。
从零手写 Agent 引擎 minagent,把消息、工具、记忆、编排、评测到服务化逐章跑通。
把引擎装成可上线的研究助理服务,覆盖接口、数据、并发、可观测与部署交付。
用主流框架重写研究助理并剖析源码,补齐持久化、计算机使用、A2A 与生产化加固。
1 部书稿
一部长篇科幻小说的创作过程与长期写作经验。
这些电子书以网页章节形式在线阅读。每个系列围绕一个完整主题编排,技术书稿与创作手记按领域分别收录。
按书架顺序查看各系列的发布状态,展开分卷详情可查看每部书的篇数与目录。
目录篇仍为草稿,发布后开放阅读入口。
本节是第 15 章收官,把零散的测试变成系统性防线:先厘清语句、分支、函数、行四种覆盖率口径与阈值配置的陷阱,再给出 ESLint 搭配 typescript-eslint 类型感知规则的扁平配置,说明 Prettier 与提交前钩子的职责分工,最后用一份 GitHub Actions 流水线演示类型检查、lint、测试、覆盖率如何逐层卡门,并给出渐进收紧的棘轮策略与常见坑。
本节讲一个常被忽视的话题:类型本身也要写测试。先说明运行时断言为什么测不到类型,再用 @ts-expect-error 给出零依赖方案,随后系统讲解 expect-type 与 tsd 两套断言库的 API、配置与接入流水线的方式,并以手写工具类型 DeepPartial 为例演示如何为类型写回归测试。读完你能为发布给团队或社区的库建立一道类型契约防线。
本节从零为 TypeScript 项目搭起单元测试:先比较 Vitest 与 Jest 的取舍,再手写第一个 describe/it/expect 用例,讲清测试代码本身同样受 tsc 检查、mock 如何保持类型安全、异步与假定时器该怎么测。随后给出两者的 API 对照表,并总结 globals 类型缺失、vi.mock 提升等常见报错,读完你能为真实工程补上一套可维护的测试。
本节用图书缓存 BookCache 实测 Bean 从构造器到销毁的完整生命周期,用真实日志证明 @PostConstruct、InitializingBean、自定义 init-method 与 BeanPostProcessor 的执行顺序,并说明 SmartInitializingSingleton、ApplicationRunner 各自该用在什么时机。
锁定依赖是可复现构建的地基。本节先拆 pip freeze 为何不可复现,再对比 uv/poetry/pdm/pip-tools 的锁文件分工,用 packaging 与 pip 实测 diamond dependency 冲突,演示 require-hashes 哈希校验与离线安装,最后落到容器镜像中的可复现要点。
构建产物 sdist 与 wheel 到底差在哪?本节逐段解码 wheel 文件名,真实跑一次 python -m build,把 wheel 装进临时 venv 执行 console_scripts 命令,再讲清包数据、入口点插件、twine check、TestPyPI 与 PyPI 的上传流程,以及版本号不可复用这条硬规则。
从 setup.py 与 requirements.txt 的历史包袱讲起,用 PEP 518/517/621 三条线串起 pyproject.toml 的来历;拆解 build-system 后端选型与 project 表标准字段,重点实测依赖说明符中 ~= 的锁定边界与逗号、空格的区别,并给出经 tomllib 校验的完整配置。
以秋冷糖是否公开不完整风险为样章,模拟如何把专业判断、制度压力、普通人代价和人物责任写进关键选择。
本节用图书管理服务的 BookService 与 BookRepository 对比构造器、Setter、字段三种注入方式,解释官方为何推荐构造器注入,演示 @Qualifier 与 @Primary 解决同类型多 Bean,并拆解五种作用域与 prototype 注入 singleton 的经典陷阱及两种解法。
本节解决异步编程里最容易被忽略的三个问题:并发数不受控、任务无法取消、请求没有超时。我们手写一个泛型并发池,把 AbortController 与 AbortSignal 的取消链路讲透,用 AbortSignal.timeout 与 Promise.race 实现两种超时方案,再给出指数退避重试与竞态防护的写法,读完你能写出可控、可中断、可观测的异步批处理代码。
本节把 Promise 当成带类型参数的状态机来拆解:Promise<T> 里的 T 描述什么,then、catch、finally 如何传递与拓宽类型,async 函数为什么必须返回 Promise<T>,await 又做了怎样的解包。我们用表格对比 all、allSettled、race、any 的类型差异,讲清串行与并行 await 的性能陷阱,并给出类型安全的请求封装写法。
本节把「错误」当成类型问题来讨论:为什么 catch 的参数只能是 unknown,如何用自定义错误类配合 instanceof 收窄,以及如何用判别联合把失败编码成返回值。我们会手写一个带 map、mapErr、unwrap 的 Result 类型,并用表格对比异常与 Result 各自的适用边界,读完你能为业务代码选出一套可推导、可穷尽检查的错误处理方案。
本节从一段手写 new 的代码讲起,说明 IoC 到底反转了什么,理清 ApplicationContext 与 BeanFactory 的关系,逐一演示 @Component、@Bean、@Import 把类变成 Bean 的三种方式,并用 getBeanDefinitionNames() 实测打印容器内容,帮你判断哪些类该交给容器、哪些不该。
从 pytest-cov 的实跑报告讲起,说明 100% 行覆盖不等于测到边界,用 --cov-branch 对比数字;再实跑 ruff check/format 与 mypy --strict,给出 pyproject 配置段,最后落到 pre-commit 与 GitHub Actions,把质量门禁分成本地、CI、发布前三层。
把测试从单条函数升级为可复用、可组合的工程:讲清 fixture 的参数注入与四种作用域、yield 拆解、conftest.py 层级发现、tmp_path 与 monkeypatch,再用 parametrize 和 unittest.mock 演示 patch 该打在哪一层、autospec 与 call_args 怎么用。
从 unittest 的写法对比切入 pytest:讲清 test_ 前缀的自动发现规则、assert 断言重写为何能给出逐元素 diff、pytest.raises 与 match、pytest.approx 浮点比较、skip/skipif/xfail 三种标记,以及 src 布局、pyproject 配置与 -v/-k/-x/--lf 常用开关。
以《孢子危机》开篇雨后前兆为样章,模拟如何通过孩子感知、普通日常、自然线索和信息误判写出危机的第一层不安。
逐个讲透 @ConditionalOnClass、@ConditionalOnMissingBean、@ConditionalOnProperty、@ConditionalOnWebApplication、@ConditionalOnBean 等条件注解,每类配一个最小可运行示例,并说明评估顺序的坑与如何用条件装配实现「按配置开关功能」。
顺着 @EnableAutoConfiguration 一路追到 AutoConfigurationImportSelector 与 AutoConfiguration.imports 清单文件,讲清 3.x/4.x 的加载路径、4.0 模块化后包名的迁移规律,并用 --debug 打印的自动配置报告解读 Positive/Negative matches。
本节把校验真正落到工程上:先列出一份完整的边界清单,再逐个给出落地方式——环境变量启动期校验并 fail fast、封装带 schema 的 typedFetch 解析上游响应、用泛型中间件校验 HTTP 请求体、区分 4xx 与 5xx 的错误归属、用 strict 与 passthrough 处理契约演进,最后用契约测试把前后端对齐。读完你能在自己的项目里搭出一套完整的边界防线。