《Java 编程实战》全 55 篇,是《Java 编程入门》的续卷。它把卷一那个用内存存储的 CLI 程序
library,逐步改造成可部署的 HTTP 服务libraryd:第 1–2 章拆模块、管依赖、立质量门禁;第 3–6 章接 PostgreSQL、写 JDBC 仓储、处理事务与 JSON;第 7–8 章用 Javalin 暴露接口并统一错误契约;第 9–11 章处理线程池、虚拟线程、异步编排与定时任务;第 12–14 章补日志、指标、追踪与缓存;第 15–16 章用 Testcontainers 做集成测试,并完成打包、容器化与发布回滚。
本页是《Java 编程实战》的全书目录:按章节顺序列出全部 55 篇,点击标题直达正文。也可以从各节末尾的「阅读导航」按顺序通读,或先看目录篇 里的三条学习路径与六周计划。
全书概览
| 项目 | 内容 |
|---|---|
| 书稿 | 《Java 编程实战》 |
| 篇数 | 55 篇(正文 16 章 48 节 + 目录篇 + 序 + 前言 + 附录 A–D) |
| 领域 | Java 服务端工程:从持久化到可部署服务 |
| 贯穿项目 | libraryd —— 卷一 library 的服务化版本 |
| 阅读方式 | 从目录篇 进入按顺序通读,或按查漏场景跳读 |
| 主线版本 | JDK 25 LTS(Temurin 25.0.5+8)、PostgreSQL 17、Javalin 7.2.4 |
| 构建工具 | Maven 3.9.12 多模块;依赖版本在父 POM 统一锁定 |
| 上级专题 | 书稿专题 |
全书目录
前置与附录
| 节 | 文章 | 核心内容 |
|---|---|---|
| — | 目录与学习路径 | 全书导航页:从 CLI 到服务的升级路线、三条学习路径、六部分依赖关系与 48 节逐节索引 |
| — | 序 | 为什么卷二单独成书、为什么不用 Spring、六道工程门槛与四卷本路线 |
| — | 前言 | 读者对象、前置知识、环境清单与真实版本输出、容器约定、四种验证方式 |
| 附 A | 附录 A Maven 配置模板 | 父 POM、依赖管理、编译/测试/覆盖率/静态分析/打包/镜像插件与 profile |
| 附 B | 附录 B 依赖选型 | JDBC、连接池、迁移、HTTP、JSON、校验、日志、指标、缓存、测试的对比与选型理由 |
| 附 C | 附录 C 故障排查 | 端口、连接池、Flyway、事务、HTTP、容器与测试的常见报错与定位顺序 |
| 附 D | 附录 D 与 Spring Boot 卷的衔接 | 手工装配与 Spring Boot 的概念映射、迁移顺序与五个易错差异 |
第一部分:工程基座(第 1–2 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 1.1 | 1.1 从单模块到多模块 | 五个模块的边界、依赖方向、父 POM 与子模块结构 |
| 1.2 | 1.2 依赖治理 | BOM、作用域、冲突调解、dependency:tree 与 Enforcer |
| 1.3 | 1.3 可复现构建 | 插件锁定、outputTimestamp、可重复打包与构建缓存 |
| 2.1 | 2.1 编译告警 | -Xlint 分类、-Werror 门禁、弃用与预览特性 |
| 2.2 | 2.2 静态分析 | Checkstyle 规则集、SpotBugs 缺陷模式、误报处理 |
| 2.3 | 2.3 质量门禁 | JaCoCo 覆盖率、阈值、CI 阶段与失败策略 |
第二部分:数据访问(第 3–6 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 3.1 | 3.1 JDBC 基础 | DriverManager、PreparedStatement、结果集与资源关闭 |
| 3.2 | 3.2 HikariCP | 连接池参数、池大小估算、泄漏检测与指标 |
| 3.3 | 3.3 数据访问层 | 仓储接口、行映射、生成主键、SQL 组织方式 |
| 4.1 | 4.1 表设计 | 约束、范式、命名、libraryd 的 schema 与迁移 |
| 4.2 | 4.2 索引与执行计划 | B-tree、部分索引、GIN 与 EXPLAIN ANALYZE 读法 |
| 4.3 | 4.3 分页、批量写与 N+1 | limit/offset 与 keyset、批量插入、查询次数控制 |
| 5.1 | 5.1 JDBC 事务 | autoCommit、提交与回滚、保存点、事务模板 |
| 5.2 | 5.2 隔离级别与 MVCC | 四种隔离级别、PostgreSQL 的 MVCC、幻读与锁等待 |
| 5.3 | 5.3 并发控制 | 部分唯一索引、条件更新、幂等归还、重试边界 |
| 6.1 | 6.1 Jackson 基础 | 对象绑定、命名策略、JavaTimeModule、未知字段 |
| 6.2 | 6.2 DTO 设计 | 请求/响应 DTO、record、领域对象与传输对象的边界 |
| 6.3 | 6.3 序列化边界 | 多态、循环引用、jsonb 与版本兼容 |
第三部分:HTTP 服务(第 7–8 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 7.1 | 7.1 Javalin 起步 | 路由注册、路径参数、请求体、状态码与 Location |
| 7.2 | 7.2 中间件 | 请求 ID、访问日志、异常过滤器与上下文传递 |
| 7.3 | 7.3 优雅停机 | 停止接收、排空在途请求、关闭线程池与连接池 |
| 8.1 | 8.1 参数校验 | Jakarta Validation 注解、跨字段规则、错误消息组织 |
| 8.2 | 8.2 错误契约 | RFC 9457 字段、application/problem+json、错误码 |
| 8.3 | 8.3 异常映射 | 领域异常到状态码、未知异常兜底、日志与响应分离 |
第四部分:并发与异步(第 9–11 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 9.1 | 9.1 ExecutorService | 核心线程、队列、空闲回收、饱和与关闭 |
| 9.2 | 9.2 虚拟线程 | 虚拟线程模型、Javalin 集成、固定与阻塞边界 |
| 9.3 | 9.3 背压与拒绝策略 | 有界队列、拒绝策略、过载指标与 503 语义 |
| 10.1 | 10.1 CompletableFuture | 创建、组合、异常恢复与超时 |
| 10.2 | 10.2 异步编排 | 并行查询、结果合并、自定义执行器 |
| 10.3 | 10.3 异步边界 | 阻塞调用、MDC 传递、超时与可观测性 |
| 11.1 | 11.1 ScheduledExecutorService | 固定频率与固定延迟、时钟注入、任务异常 |
| 11.2 | 11.2 批处理 | 游标读取、分片、罚金结算与进度记录 |
| 11.3 | 11.3 任务幂等 | 幂等键、去重表、数据库锁与重复执行 |
第五部分:可观测性与缓存(第 12–14 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 12.1 | 12.1 SLF4J 与 Logback | 门面与实现、级别、Appender、配置文件分层 |
| 12.2 | 12.2 结构化日志 | JSON 编码、MDC、请求 ID 与 traceId |
| 12.3 | 12.3 日志规范 | 脱敏、采样、日志级别选择与存储成本 |
| 13.1 | 13.1 Micrometer | 计数器、计时器、Gauge、Prometheus 端点与标签基数 |
| 13.2 | 13.2 追踪 | OpenTelemetry、span 层级、W3C traceparent 传播 |
| 13.3 | 13.3 健康检查 | 存活与就绪、数据库探测、依赖降级与超时 |
| 14.1 | 14.1 本地缓存 | Caffeine、容量、TTL、刷新与统计 |
| 14.2 | 14.2 缓存模式 | Cache-Aside、穿透、击穿、雪崩与失效顺序 |
| 14.3 | 14.3 分布式缓存 | Redis、Jedis、序列化、一致性与降级 |
第六部分:测试与交付(第 15–16 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 15.1 | 15.1 测试金字塔 | 单元、集成、端到端的分工与成本 |
| 15.2 | 15.2 Testcontainers | PostgreSQL 容器、生命周期、迁移与测试隔离 |
| 15.3 | 15.3 端到端与 CI | 启动真实服务、HTTP 断言、CI 阶段与失败排查 |
| 16.1 | 16.1 打包 | Shade fat jar、资源合并、jlink 与运行时选择 |
| 16.2 | 16.2 容器化 | 多阶段 Dockerfile、镜像分层、Jib 与健康检查 |
| 16.3 | 16.3 发布与回滚 | 配置注入、迁移顺序、灰度、回滚与发布检查清单 |
怎么读这套书
- 完整实战(约 6 周):按 1→16 章顺序读,每周 2–3 章,代码跑通再往下;第 6 周结束时交付一个能
docker run的libraryd。 - 服务端速成(约 3 周):第 1 章读模块拆分与依赖治理,第 3–8 章按顺序读,第 9–11 章读虚拟线程与定时任务,第 12–13 章读日志与指标,第 15–16 章读 Testcontainers 与容器化。
- 按问题查:从上面的章节表按关键词跳转。高频入口:连接池看 3.2,索引看 4.2,并发借阅看 5.3,错误契约看 8.2,线程池看 9.1,指标看 13.1,镜像看 16.2。
三条路径的详细说明、每周任务与检查点,见目录篇 。
与站内其他 Java 内容的分工
- 本书:从卷一的内存 CLI 出发,手工搭出服务端基础设施,不依赖 Spring。
- 《Java 编程入门》 :语言、标准库、测试与打包,本书的前置。
- Spring Boot 三部曲 :在会 Java 的前提下讲框架、自动配置与生态;与本书的对应关系见附录 D 。
- Java 专题 :按主题深入的单点文章,适合查具体 API 与机制。
版本与验证约定
- 主线 JDK 25 LTS(Temurin 25.0.5)、PostgreSQL 17、Javalin 7.2.4、Maven 3.9.12。
- 依赖版本在父 POM 的
dependencyManagement统一锁定,子模块不写版本;完整清单见附录 B 。 - 代码块标
java,SQL 标sql,命令标bash,真实输出标text,pom.xml标xml。 - 数据库实验统一用
postgres:17-alpine容器;HTTP 示例用curl真实请求,状态码与响应体来自实际运行。 - 标「示意」的输出不是实测结果;标
...的位置表示省略,直接复制通常不能编译。
下一步
读完卷二后,卷三《Java 高级编程》会拆开 libraryd 的并发与语言机制:类型系统、反射与动态代理、类加载与字节码、JMM、JUC、虚拟线程与结构化并发、JPMS 与 FFM。卷四则用同一个服务做 JVM 观测与性能调优。四卷的边界与先后关系,见序
。