图解学习笔记

大图少字,分两个板块:AI Agent 工程师是主线,Java 后端架构是它的补给库。

主线 AI Agent 工程师 12 站 · 4 个等级 · 30 周,从 AI 小白到能上线 agent;对照 26 份招聘要求,一个贯穿项目,进度用提交记录作证 打开学习地图 → 补给库 · 主线走完后系统学 Java 后端架构 之前的全部笔记,按技术栈分层;主线用到哪篇再补哪篇 打开学习地图 →(下面是技术栈地图)

AI Agent 工程师主线 · 按学习地图一站一站走,每站先看场景全景

  1. 01全景:一个 FastAPI 请求的一生站 01 的场景全景:一条 curl 进 FastAPI,经过 uv、uvicorn、路由、参数校验、端点协程、gather、事件循环、解析日志、响应模型、pytest 十站,每站挂上 Python 速成的知识点和 Java 对照;并发与串行耗时实测、order-04 超时、阻塞调用卡住事件循环,分步演示
  2. 02uv 管环境和依赖(对照 Maven)站 01 第 1 个知识点:pyproject 写意图、uv.lock 钉死整棵依赖树、.venv 按锁算出来并从全局缓存硬链接;对照 Maven 的 classpath 和最近者优先,pip 与 uv 建环境耗时实测,九个坑、团队规范、CI 与 Docker 写法,uv run 先猜再跑实验台
  3. 03全景:一句话怎么变成模型的回答站 02 的场景全景:值班助手把 order-04 的 GC 日志交给模型,经过拼请求、分词、上下文窗口、查向量表、读完输入(注意力与 KV 缓存)、算概率、采样、逐 token 循环、停下、结算核对十站,每站挂上知识点和 Java 对照;本机小模型实测分词、候选概率、温度 0 和 1、输入长度与耗时、前缀缓存、幻觉,分步演示
  4. 04语法对照:列表、字典、推导式、切片站 01 第 2 个知识点:对照 Java 讲列表和字典的内存布局、推导式和生成器、切片为什么复制而不是视图、8 个坑、推导式与生成器的速度和内存实测,切片实验台
  5. 05函数是一等公民:闭包和装饰器站 01 第 3 个知识点:函数是对象、闭包的 cell 和迟绑定、装饰器就是 f = deco(f) 且在 import 时从下往上执行、monkeypatch 改的是哪个模块的名字;对照 Java lambda 和 Spring AOP 代理,8 个坑本机复现,装饰器实验台(顺序 × wraps × 同步异步,8 种组合 FastAPI 实测)
  6. 06类型标注和 Pydantic 数据模型站 01 第 4 个知识点:类型标注是运行时不检查的元数据、Pydantic 在类定义时编译出校验器、宽松和严格模式、FastAPI 入口 422 与出口 response_model 过滤;对照 Java 编译器、Jackson 和 Bean Validation,8 个坑本机复现,校验耗时实测,Pydantic 实验台(10 种输入 × 两种模式)
  7. 07asyncio:事件循环、async/await、并发请求站 01 第 5 个知识点:协程是能在 await 处暂停的函数、事件循环用一个线程加 epoll 同时等很多 socket、gather 与 TaskGroup 出错时的区别、超时和取消是协作式的;对照 Java 线程池、Netty 和虚拟线程,阻塞与 GIL 实测,8 个坑,“一个线程的时间线”实验台
  8. 08FastAPI 写接口(对照 Spring MVC)站 01 第 6 个知识点:uvicorn、Starlette、FastAPI 三层分工,签名决定参数从路径、查询串、请求体还是依赖来,Depends、lifespan 共享连接池、def 端点的 40 线程上限;值班助手加假日志代理的真服务实测,7 个坑,“参数从哪来”实验台
  9. 09pytest 写测试站 01 第 7 个知识点:按名字收集、assert 改写、按参数名注入的 fixture 和作用域、dependency_overrides 加 MockTransport 不起外部服务测接口;对照 JUnit、Mockito、MockMvc,10 个测试先红后绿抓到一个真 bug,8 个坑,fixture 作用域实验台
  10. 10用 AI 编程工具干活:Claude Code、Cursor站 01 第 8 个知识点(站末总结):智能体循环、上下文窗口与 CLAUDE.md、checkpoint 和权限模式,复盘一次真实的修 bug,6 个在 ~/claude/oncall-helper 里亲手做的练习,“这件事交给 AI 吗”判断台

性能JDK 8 / 17 · Spring Boot 2 / 3

  1. 01系统压测看哪五个数、六种压测、吞吐为什么会到顶、八类常见瓶颈的原理和解法、方案优劣和工具对比,压测曲线和瓶颈实验台
  2. 02响应时间为什么越压越长六步排查:RT 的账单、四问排查路线、一串窗口和浴缸、开环积压与出口变窄、超时重试的反馈环、排队还是拒绝,四个本机实验和排队实验台

架构三高 · 投产 · JDK 8 / 17 / 21 · Spring Boot 2 / 3

  1. 01三高知识地图高性能、高并发、高可用是同一本账:Little 定律算线程和连接、可用率串联相乘并联互补、超时舱壁降级为什么缺一不可、知识点挂在请求链路(含网络 IO、服务治理)和投产六关上、日常开发和投产两张清单、积分卡住时四种写法实测,线程账实验台

SpringJDK 8 / 17 · Spring Boot 2 / 3

  1. 01Spring MVC 请求关卡Filter、Interceptor、WebMvcConfigurer 的区别、生命周期和用途
  2. 02Spring AOP 与事务代理、切面、通知,@Transactional 的提交回滚、传播、隔离和失效场景
  3. 03Spring Boot 自动配置starter、自动配置清单、条件注解,启动时序和自定义 starter
  4. 04Bean 生命周期与循环依赖十四站生命周期、回调顺序、作用域,三级缓存怎么解循环依赖
  5. 05Spring Security 认证与授权过滤器链、核验台、工牌和门禁,401 和 403 从哪来,Security 5 和 6 的写法差别
  6. 06Spring MVC 请求处理流程DispatcherServlet 的 doDispatch 八步,参数解析、页面和 JSON 两种返回、异常善后
  7. 07Spring Boot 启动流程run() 的四段路、refresh 十二步、Tomcat 什么时候开端口,事件顺序、扩展点和启动失败
  8. 08Spring 事件机制发布者、广播站、监听器,同步、@Async、@TransactionalEventListener 怎么选,事件实验台
  9. 09Spring IoC 与依赖注入容器里有什么、图纸从哪来、三种注入写法,同类型多个 Bean 时怎么选的注入裁判
  10. 10Spring AOP 代理原理替身什么时候换上、JDK 代理和 CGLIB、调用怎样穿过拦截器链,替身管不到的地方
  11. 11Spring @Async 与线程池@Async 背后的派单员、用哪个线程池、四步规则和拒绝策略,线程池模拟器

MyBatisMyBatis 3.5 · Spring Boot 2 / 3

  1. 01MyBatis 执行流程启动时编好 SQL 手册,一次调用经过 MapperProxy、SqlSession、Executor 和 JDBC,两级缓存、#{} 与 ${}、插件
  2. 02MyBatis 与 Spring 事务同一个 DataSource、线程上的储物柜、SqlSessionTemplate 复用会话,谁来提交,五个剧情看回滚和坑
  3. 03MyBatis 插件与分页四个能拦的对象、Plugin.wrap 套娃和登记顺序,PageHelper 和 MyBatis-Plus 怎么分页,深分页
  4. 04MyBatis 缓存与 Caffeine一级、二级缓存怎么存怎么清,五个剧情看旧数据,和 Caffeine 逐项对比,LRU 与 W-TinyLFU 命中率
  5. 05MyBatis-Plus 原理启动时注入 SQL、Wrapper 怎么变成 SQL、自动填充和雪花 ID、插件总管和顺序,saveBatch 怎么批量

数据库HikariCP · MySQL 8 · PostgreSQL

  1. 01连接池与事务性能为什么建连接贵、池子开多大、事务怎么吃掉连接、提交落盘和长事务、驱动参数,连接池模拟器
  2. 02MySQL MVCC 与锁隐藏列和版本链、Read View 怎么判断看得见、快照读和当前读、四种行锁和死锁,MVCC 实验台和锁地图
  3. 03HikariCP ConcurrentBag 源码口袋、货架、递交窗口和 state CAS、为什么借连接不加锁却不保证先来先得、先改 state 再看 waiters、逐行读 borrow / requite、各版本差异,线程调度实验台

RedisRedis 7 · Spring Boot 2 / 3

  1. 01缓存穿透、击穿与雪崩三种漏法怎么发生、布隆过滤器、互斥锁和逻辑过期、过期时间打散和高可用,十种防护的代价,数据库压力实验台
  2. 02Redis 持久化 RDB 与 AOF拍照和记账、fork 与写时复制、三种刷盘策略、AOF 重写、混合持久化和多文件 AOF,宕机实验台
  3. 03Redis 主从、哨兵与集群全量和部分同步、哨兵怎么判死和换主、16384 个槽和 hash tag,故障转移演示和槽位计算器
  4. 04Redis 数据结构与编码五种类型和八种编码、SDS 与 embstr、listpack 与 quicklist、渐进式 rehash、跳表,编码观察器
  5. 05Redis 过期删除与内存淘汰惰性删除加定期巡逻、八种淘汰策略、近似 LRU 的抽样和候选池、LFU 计数器,巡逻实验台和淘汰准确度对比
  6. 06Redis 分布式锁五次进化、令牌和 Lua 解锁、Redisson 看门狗,锁与事务的顺序、主从切换丢锁、RedLock 和 fencing token,事故实验台
  7. 07Redis 线程模型与 IO 多路复用单线程为什么快、select/poll/epoll、事件循环演示、慢命令怎么堵住所有人、I/O 线程和 Pipeline
  8. 08Redis 大 key 与热 key多大算大、危害和拆分,热 key 为什么加机器没用、本地缓存和复制打散,怎么发现,大 key 计算器和热 key 实验台
  9. 09Redis Stream 与消息队列List、Pub/Sub、Stream 三代对比,消费组、PEL、ACK 和认领,至少一次与幂等,延迟消息,消费组实验台
  10. 10Redis Lua 脚本与事务MULTI/EXEC/WATCH、出错为什么不回滚、Lua 的写法和 EVALSHA、Redis 7 Functions,最后一件库存两人抢
  11. 11布隆过滤器与 HyperLogLog位数组和 k 个哈希、误判率实验室、容量怎么算、抛硬币估人数、16384 个桶,UV 统计和选型

KafkaKafka 3.x / 4.x · Spring Boot 2 / 3

  1. 01Kafka 消息可靠性与消费组六步学习法:acks 和 ISR、min.insync.replicas、offset 提交时机、消费组和 rebalance、幂等与死信,故障实验台和消费组实验台(关键行为本机集群实测)
  2. 02Kafka 存储:segment、索引、页缓存与零拷贝分段和稀疏索引怎么查、页缓存为什么比 JVM 缓存好、sendfile 少了哪几次拷贝、retention 为什么不准、回放拖慢实时和 TLS 的代价,查找、零拷贝、页缓存三个实验台

Java 并发JDK 8 / 11 / 17 / 21

  1. 01SynchronousQueue 与 LinkedTransferQueue双重队列和双重栈、一次 CAS 完成交接、xfer 的四种模式、先自旋再 park、slack 与自链接、线程池里的后果、JDK 11 / 21 实测,分步演示和沙盘
  2. 02ThreadPoolExecutor.execute 源码execute 的三个 if、ctl 的位、Worker 和 getTask、放进队列后的复查和线程退出前的检查、几件只能靠源码解释的怪事、各版本差异,线程调度实验台
  3. 03AQS 源码state 加等待队列、独占和共享、Condition 的两条队、公平与非公平、JDK 8 和 17 / 21 两代源码对照、日常开发里哪些框架和 JDK 类用到了它,三个 JDK 实测和实验台
  4. 04Java 内存模型写了不等于别人看到:重排序从哪来、happens-before 规则和推导、为什么只保证没有数据竞争的程序、volatile / synchronized / final 各保证什么、内存屏障和 VarHandle,可见性和重排序实测(JDK 17,ARM),双重检查锁分步推演
  5. 05线程、线程状态与上下文切换Java 线程和内核线程 1:1、线程创建成本、六种状态和内核状态对照(RUNNABLE 也可能在 IO 里睡着)、读线程转储、两种上下文切换和怎么数、线程数公式、中断和守护线程,JDK 17 实测(/proc 对照、512 线程慢 36%、一次交接 3.9 微秒、新建线程 82 微秒),线程状态机实验台
  6. 06JMM 下一圈:jcstress、CPU 缓存与伪共享Java 内存模型的下一圈:存储缓冲和失效队列、缓存一致性只管同一地址、x86 TSO 和 ARM 放宽了哪些重排序、volatile 和 CAS 在两种 CPU 上的指令、AQS 和 ConcurrentHashMap 里 volatile 读加 CAS 的模式、伪共享和 LongAdder;jcstress 0.16 在 ARM 上实测库存超卖(volatile 33.6%)、SB、MP(看到标志没看到数据 0.07%)和禁止结果 0 次,伪共享实测,先猜再看结果的实验台
  7. 07synchronized 与锁升级、CAS 与原子类对象头 mark word 的几种状态(JOL 实测无锁、thin lock、fat lock、偏向)、monitorenter / monitorexit 和异常表、轻量级锁和膨胀成 ObjectMonitor、wait / notify、偏向锁为什么被拿掉、CAS 在 ARM 和 x86 上的指令、ABA 实测、原子类和 LongAdder,五种写法吞吐实测(JDK 17,2 核 ARM),锁升级分步演示
  8. 08AQS 下一圈:读写锁、StampedLock、Semaphore 与 JFR 找锁竞争AQS 的下一圈:读写锁把 state 劈成两半、readerShouldBlock 和写锁饥饿、锁降级和升级死锁、StampedLock 乐观读和 validate、Semaphore 舱壁、JFR 的 jdk.JavaMonitorEnter / jdk.ThreadPark;JDK 17 实测四把锁读吞吐(读短时读写锁比普通锁慢、公平读写锁慢 75 倍、乐观读最快)、用 JFR 抓出锁里慢 SQL、Semaphore 限并发,先猜再看的实验台
  9. 09ConcurrentHashMap 与阻塞队列HashMap 并发 put 丢数据实测(丢 4%~16%)、ConcurrentHashMap 的桶数组和三种特殊节点、putVal 的几条路(空桶 CAS、锁桶头、协助扩容)、TreeBin、分格计数、只保证单个方法原子(get 再 put 实测丢更新、merge 不丢)、Recursive update、初始容量,阻塞队列家族和 DelayQueue,JDK 17 反射实测,putVal 路径演示
  10. 10线程池下一圈:怎么配、拒绝策略、动态调参与监控线程池的下一圈:用利特尔法则和 CPU 占比算线程数、按可接受排队时间定队列、四种拒绝策略把代价给了谁(实测 100 条通知三种策略丢 86 条、CallerRuns 让提交方慢 40 倍)、运行中先调最大再调核心(实测 2→16 积压 1 秒消完)、监控五个数、优雅关闭三步,参数计算器
  11. 11ThreadLocal 与内存泄漏值存在线程的 ThreadLocalMap、key 弱 value 强的引用链、串号和三种泄漏、顺手清理与为什么不用引用队列、InheritableThreadLocal / TTL / ScopedValue,ThreadLocalMap 实验台
  12. 12CompletableFuture 与异步编排result 加 Completion 栈的结构、回调在哪个线程跑、thenCompose / thenCombine / allOf 与异常、默认池和超时不取消的坑、ThreadLocal 怎么带,回调线程先猜再看实验台
  13. 13虚拟线程下一圈:什么时候用、pinning 的坑挂载卸载和载体线程、钉住的三种原因、trace 参数和 JFR 找钉住、ReentrantLock 修法与 JEP 491、什么时候不该用、和 J02 前八个知识点对照,载体线程甘特图实验台

JDKJDK 8 / 17 / 21 / 25 · LTS 演进

  1. 01JDK 8、17、21、25四个 LTS 是怎么连起来的:5、6、7 留下的地基(内存模型、锁优化、invokedynamic、Fork/Join)、半年一班车和预览特性、四条主线(语言、并发、GC、平台治理)、50 个新特性各是什么、为什么加、怎么用(带示例)、record + sealed + 模式匹配、强封装、ScopedValue 的设计取舍、8 / 21 / 25 写法对照与升级五步、十二个升级坑、25 之后的 27 和 29,升级检查器

JVMHotSpot · JDK 8 / 17 / 21 / 25

  1. 01JVM 内存结构一个 Java 进程的内存分成哪几块:线程私有的栈、共享的堆、堆外的元空间和直接内存,栈和堆怎么配合、对象头和对象大小、为什么分代,六种 OOM 怎么认、容器被杀的原因,实测撑爆四块内存(JDK 17),分代实验台
  2. 02G1 和 ZGC 怎么回收回收的三件事谁要停下来做、G1 的 Region 和记忆集、并发标记与混合回收、停顿预测、ZGC 的染色指针、读屏障和并发搬迁、为什么一个停顿里搬一个边跑边搬、六个坑和版本差异,实测 Parallel、G1、ZGC 四组对比(JDK 17),G1 和 ZGC 实验台
  3. 03new 一个对象的全过程:分配、对象头与内存布局new 的五步、TLAB 快速 / 慢速路径、mark word 与类指针、字段重排与对齐、压缩指针为什么卡在 32 GB、JOL 与关 TLAB 实测,对象布局实验台
  4. 04GC 日志与调优:先定目标,再动参数三个目标的取舍、一行日志怎么读、占比 / 最长停顿 / 回收后占用三样数、Parallel 固定分代 vs G1 自适应、交易靶场大促与泄漏实测、GC 日志体检台
  5. 05类加载与双亲委派:SPI 为什么要打破它类的一生、三层加载器与 loadClass 源码、类的身份、为什么先问上级、SPI 借 TCCL 反向加载与 Tomcat 子优先、元空间泄漏实测,委派走一遍实验台
  6. 06JIT、逃逸分析与常见的性能误区分层编译、内联和去虚化、逃逸分析与标量替换、去优化、热点 NPE 丢堆栈和预热等坑、六个性能误区,逃逸判定台
  7. 07JVM 故障排查:OOM、频繁 Full GC、CPU 飙高常见误判、先留现场再分两条路线、OOM 抛给了谁、Full GC 后降不降、shallow 和 retained、nid 对到一行、交易靶场三个雷实测(MAT、Humongous、JFR 分配和方法采样)、启动参数模板,排查练习台
  8. 08容器里的 JVM:内存和 CPU 限制cgroup 限额写在哪、JVM 读到后怎么定堆和 GC 和线程数、内核怎么杀进程和节流、堆按比例切加堆外逐块封顶、版本差异,容器内存预算台

Java 基础JDK 8 / 17 / 21 · 语言与集合

  1. 01面向对象、接口与抽象类、泛型和类型擦除J01 第 1 个知识点:封装靠访问控制和防御性复制、多态靠运行时查方法表、接口与抽象类的分工和菱形问题、sealed 与 record、泛型从源码到运行的五步(编译期检查、擦除插 checkcast、Signature 留底、对象不知道元素类型)、为什么非擦除不可、桥方法与 TypeReference,JDK 17 实测与分步演示
  2. 02常用集合怎么选:ArrayList、LinkedList、Set、QueueJ01 第 2 个知识点:按“怎么找”选 List / Set / Map / Queue,ArrayList 扩容与头插、LinkedList 节点与缓存不友好、哈希与红黑树、ArrayDeque 环形数组、PriorityQueue 二叉堆与 DelayQueue,交易靶场订单簿,8 个场景先猜再看 JDK 17 实测
  3. 03HashMap:哈希、扩容、树化J01 第 3 个知识点(过关题):hashCode、扰动与 (n−1)&hash 定位,put 全过程 9 步,负载因子与翻倍扩容的高低位拆分,树化 8 / 6 / 64 与泊松分布,2 的幂对比 Hashtable 素数取模,并发写丢数据与 JDK 7 成环,put 模拟器与 JDK 17 反射实测
  4. 04HashMap 的亲戚们:LinkedHashMap、WeakHashMap、ThreadLocalMapHashMap 的下一圈:LinkedHashMap 的双向链表与三个钩子、访问顺序加 removeEldestEntry 做 LRU,WeakHashMap 的弱引用与 ReferenceQueue,ThreadLocalMap 挂在线程上、开放寻址与 0x61c88647,key 弱 value 强与线程池里的串号和内存泄漏,LRU 模拟器与 JDK 17 实测
  5. 05Lambda、Stream、record、模式匹配:编译后变成了什么J01 新特性的下一圈(机制):invokedynamic 和四个引导方法,Lambda 的隐藏类与捕获,Stream 惰性流水线、Sink 链、短路与有状态操作,parallelStream 的公共池,record 的规范构造器与 ObjectMethods,sealed + switch 的 typeSwitch 与穷举检查,Stream 流水线分步演示,JDK 17 / 21 实测
  6. 06异常、反射、注解与动态代理:Spring 下面那一层J01 第 5 个知识点的下一圈(JDK 层):受检与非受检、异常贵在填栈与 OmitStackTraceInFastThrow、try-with-resources 与 suppressed,Method.invoke 的 inflation 与 JDK 18 的 MethodHandle 实现、强封装,注解的保留策略与“注解对象也是代理”,生成的 $Proxy 类和异常表,手写事务 + 审计拦截器,代理调用分步演示,JDK 17 实测
  7. 07IO 与 NIO 基础:字节怎么进来,怎么出去J01 第 6 个知识点的下一圈(API 与字节):流的装饰器、字符集与乱码、缓冲为什么快(strace 数系统调用:一次一字节 200 万次对 263 次)、ByteBuffer 三指针与 flip / compact、堆内与直接缓冲、FileChannel.transferTo 与 sendfile、Files 工具,交易靶场导出导入,ByteBuffer 演示,JDK 17 实测
  8. 08数据结构与算法:日常和面试够用的那部分J01 最后一个知识点:先按数据量估复杂度,按最频繁的操作选结构,二分的不变式、Top K 小顶堆、滑动窗口限流、TimSort 与双轴快排及比较器约定,红黑树插入分步手推(和 TreeMap 反射实测逐步一致),面试题型地图,交易靶场四道题,JDK 17 实测

网络TCP · TLS 1.2 / 1.3 · HTTP/1.1 / 2 / 3 · 以 Chrome 为例

  1. 01从输入 URL 到页面展示12 站全景、往返次数尺子、DNS 层级缓存、TCP + TLS 1.3 时序、慢启动、渲染阻塞、三次握手等设计取舍、Java 迷你浏览器实测(JDK 8 / 17 / 21)、往返计算器和 script 位置实验台
  2. 02网络 IO 模型一万个连接要几个线程:五种 IO 模型的两段等待、连接便宜线程贵、Reactor 和 Tomcat NIO 连接器、事件循环为什么不能阻塞、HTTP 连接池和 keep-alive 等八个坑、BIO / NIO / 虚拟线程 1 万连接实测(JDK 17 / 21),keep-alive 连接分步演示
  3. 03TCP:握手、挥手、TIME_WAIT 与粘包连接是两端内核的两本账、三次握手为什么是三次、四次挥手和 CLOSE_WAIT、TIME_WAIT 为什么在先关的一方、字节流与长度前缀、Nagle × 延迟 ACK 的 40 ms、accept 队列,真实抓包逐段演示
  4. 04Netty:EventLoop、Pipeline、ByteBufEventLoop 终身绑定连接、Pipeline 入站出站方向、ByteBuf 双下标与引用计数、慢请求拖慢一个线程和漏 release 的实测、4.1→4.2 差异,EventLoop 阻塞实验台
  5. 05RPC 原理:序列化、协议、服务发现、负载均衡一次调用的八步、动态代理 Stub、自描述和约定结构的序列化、帧头与请求 id 多路复用、客户端发现与负载均衡、为什么这样设计,纯 JDK 迷你 RPC 实测(慢实例、坏实例、超时),负载均衡实验台
  6. 06HTTP 客户端与连接池:超时怎么配一次调用的四段超时(拿连接、建连接、等响应、读响应)和总 deadline、读超时为什么不是总超时、池子满了在客户端排队、超时后对面照样做完、各客户端默认值对照,“哪个超时先到”实验台

Java 地图 · 场景全景每站先看全景 · JDK 21 · Spring Boot 3.5

  1. 01全景:一个订单对象的一生J01 的场景全景:用户 1024 下单 2 件 88 号商品,一个 Order 经过 Tomcat 收字节、Jackson 反序列化成 record、Spring 代理开事务、HashMap 查商品、new 实体与泛型擦除、Stream 和模式匹配算价、扣库存抛异常回滚、放进集合、DelayQueue、序列化写回、留在堆里十一站,每站挂上 J01 知识点;本机 Spring Boot 实测每站类名、桶下标、冷热耗时和存活对象数,分步演示
  2. 02全景:一个下单请求在线程池里J02 的场景全景:1000 人抢 100 件 88 号键盘,一个请求经过 Tomcat Acceptor 和 Poller、exec 线程池、ThreadLocal 绑用户、读库存、写回撞车超卖,再分三种修法(synchronized、CAS、数据库条件更新),最后进 ConcurrentHashMap、CompletableFuture 异步通知、清 ThreadLocal 回池十一站,每站挂上 J02 知识点;本机 Spring Boot 实测五种写法的超卖件数、BLOCKED 线程数和虚拟线程,分步演示
  3. 03全景:一个对象从 new 到被回收J03 JVM 与调优的场景全景:类加载、JIT 与逃逸分析、TLAB 分配、大对象、Young GC、晋升、并发标记与 Mixed GC、泄漏到 Full GC、OOM 排查、容器内存十站,附实测 GC 日志,分步演示
  4. 04全景:订单服务调库存服务的一次 RPCJ04 场景全景:Stub、服务发现与负载均衡、长连接、protobuf、HTTP/2 帧、Netty EventLoop、TCP、服务端 Reactor、业务线程池、deadline 十站,gRPC 对 HTTP/1.1 的延迟和连接数实测,分步演示

源码在 github.com/archeu/study-notes