文档目录

第 0 章配套代码索引

这些是教学用的模拟程序,不是生产代码,也不是完整工程。 目的只有一个:把第 0 章里那些「听起来抽象」的结论,变成你能亲眼看到的数字。

一、文件清单

文件 对应小节 这段代码演示什么 运行时长
01-three-kinds-of-problems.md 0.1 三类问题 同一个函数在「无竞争 / 有竞争 / 有分配压力」下的耗时差异 < 5 s
03-latency-distribution.md 0.3 延迟是分布 均值如何骗人;尾延迟跨服务放大;百分位不能直接平均 < 5 s
04-littles-law.md 0.4 Little’s Law 用 QPS 与延迟算资源需求;按平均值配置资源的危险 < 1 s
05-queueing.md 0.5 利用率与排队 M/M/1 模拟:利用率 50%→95% 时排队时间的非线性爆炸 < 10 s
06-coordinated-omission.md 0.6 协调遗漏 闭环 vs 开环压测:同一个服务,P99 差 100 倍 < 5 s
10-lab0.md 0.10 Lab 0 死代码消除、常量折叠、预热曲线 < 5 s

没有代码的小节:0.2(三方权衡)、0.7(谬误清单)、0.8(闭环)、0.9(C++ 直觉对照)——这四节是观念性的,不需要模拟。

二、怎么运行

这些程序都是单文件 main 函数。放在本仓库的 src/main/kotlin/lesson00/ 下即可。

# 方式一:在 IDE 里直接点 main 函数旁边的绿色三角

# 方式二:命令行编译运行
./gradlew build
java -cp build/classes/kotlin/main lesson00.LatencyDistributionKt

如果想用 ./gradlew run,需要在 build.gradle.kts 里加 application 插件并指定 mainClass(本仓库目前没有,建议用上面两种方式)。

三、阅读这些代码的建议

  1. 先猜再看:读代码之前,先猜一下输出会是什么样。猜错的地方就是你真正需要学习的地方。
  2. 改参数再跑:把「1% 的慢请求」改成「5%」,把「10 个下游」改成「3 个」,观察结果怎么变。参数的敏感性比默认输出更有教学价值。
  3. 不要纠结精度:这些都是随机模拟,每次运行的数字会有小幅波动。看的是量级和趋势,不是小数点后两位。
  4. 注意代码里的注释:每个 // 关键点 注释都对应正文里的一个结论。

四、重要提醒

这些程序里的数字不能用来做任何工程决策——它们运行在你的开发机上、单进程、没有网络、没有数据库。

它们唯一的作用是:帮你在脑子里建立一个「这样做会出问题」的直觉。真正的测量从第 2 章开始。