Java 知识文库 — 设计文档
状态:✅ 已确认,批次 1 实施中 定位:大厂 Java 面试 · Java SE 核心 + 生态体系知识库 — 从语言基础到底层原理再到框架生态
一、总体架构
📁 avazoe/Java/
│
├── 📄 00-Java文库设计文档.md ← 总纲(本文档)
├── 📄 00-批次1实施计划.md ← 实施计划
│
├── 📁 01-Java语言基础/ ← 批次 1
├── 📁 02-面向对象核心/ ← 批次 1
├── 📁 03-集合框架/ ← 批次 1
├── 📁 04-泛型与注解/ ← 批次 2
├── 📁 05-异常与日志/ ← 批次 2
├── 📁 06-IO与NIO/ ← 批次 2
├── 📁 07-Lambda与Stream/ ← 批次 2
├── 📁 08-多线程与并发/ ← 批次 3
├── 📁 09-包装类与时间API/ ← 批次 3
├── 📁 10-单元测试/ ← 批次 3
├── 📁 11-MyBatis持久层框架/ ← 批次 4
├── 📁 12-SpringBoot与Web开发/ ← 批次 4
├── 📁 13-Redis/ ← 批次 4
│
└── 📁 面试专题/ ← 批次 4
├── 📄 面试高频100题.md
└── 📄 综合真题解析.md依赖关系
批次 1(地基):语言基础 → 面向对象 → 集合框架
↓
批次 2(进阶):泛型注解 → 异常IO → Lambda/Stream
↓
批次 3(并发与工具):多线程 → 包装类/时间 → 单元测试
↓
批次 4(生态):MyBatis → SpringBoot → Redis → 面试专题二、笔记模板
导航索引页模板(00-XX索引.md)
markdown
---
aliases: [中文别名, 英文别名]
tags: [Java, 子领域, 索引]
created: 2026-07-16
---
# 0X - 板块标题
> **定位**:板块在 Java 体系中的位置
> **面试高频度**:⭐⭐⭐⭐⭐
## 📖 子专题导航
| # | 主题 | 面试频率 | 说明 |
|---|------|---------|------|
| [[链接]] | 名称 | ⭐⭐⭐ | 一句话说明 |
## 🧠 知识全景图
\`\`\`
(ASCII 架构图)
\`\`\`
## 🔑 核心考点速记
(2-3 个最高频考点精简版)
## 📚 相关文件
- [[上游板块]] — 关系说明
- [[00-Java文库设计文档]]深度原理页模板(0X.X-主题名.md)
markdown
---
aliases: [中文别名]
tags: [Java, 子领域, 面试]
created: 2026-07-16
---
# 0X.X - 主题名
> **面试高频度**:⭐⭐⭐⭐⭐
> **考查方式**:常见考察角度
## 一、这是什么?为什么需要它?
(定义 + 动机 — 没有它会怎样?)
## 二、原理拆解
(每个子概念回答"为什么")
## 三、图解全景
\`\`\`
(ASCII 架构图 / 流程图 / 对比图)
\`\`\`
## 四、实战验证
(代码示例 / 命令行 / 基准测试)
## 五、面试视角
| 追问 | 答案要点 |
|------|---------|
| Q1 | 精炼答案 |
## 📚 相关链接
- [[上游主题]]
- [[下游主题]]
- ← 返回 [[00-XX索引]]三、内容原则
| 优先级 | 原则 | 说明 |
|---|---|---|
| 1 | 原理优先 | 每个概念先回答"为什么需要",建立心智模型 |
| 2 | 图解驱动 | 每篇深度笔记至少 1 张 ASCII 图解 |
| 3 | 面试佐证 | 面试题作为原理的巩固检验,非主线 |
| 4 | 表格对比 | 对比类知识用表格,维度一致 |
| 5 | Wiki 互联 | 跨板块引用 [[wiki-link]],形成知识网络 |
| 6 | 参数速查 | 框架板块重点做速查表 |
| 7 | 实战案例 | 排查方法论 + 真实场景 |
四、链接策略
| 链接类型 | 规则 | 示例 |
|---|---|---|
| 向下链接 | 正文引用后续详述主题 | 详见 [[03.2-HashMap核心原理]] |
| 向上回链 | 深度笔记末尾返回索引 | ← 返回 [[00-集合索引]] |
| 跨板块链接 | 相关领域交叉引用 | 线程安全集合 → [[08.2-线程安全]] |
| JVM 互联 | Java 知识链接到 JVM 原理 | JMM 模型 → [[avazoe/JVM/08-Java内存模型与并发/00-JMM索引]] |
| 面试汇聚 | 面试题链接回原理笔记 | 详阅 [[03.2-HashMap核心原理]] |
五、交付批次
| 批次 | 板块 | 笔记数 | 核心链路 |
|---|---|---|---|
| 1 | 01 语言基础 + 02 面向对象 + 03 集合框架 | ~10 | 变量→对象→集合 |
| 2 | 04 泛型注解 + 05 异常 + 06 IO/NIO + 07 Lambda/Stream | ~12 | 类型系统→IO→函数式 |
| 3 | 08 多线程并发 + 09 包装类/时间 + 10 单元测试 | ~10 | 线程安全→API→测试 |
| 4 | 11 MyBatis + 12 SpringBoot + 13 Redis + 面试专题 | ~12 | 持久化→Web→缓存→面试 |
六、内容大纲(分板块详细规划)
01 — Java语言基础
来源:Java_base/Java基础-完全指南.md(重构)
| 笔记 | 核心原理 | 关键图解 |
|---|---|---|
| 00-语言基础索引 | 类型系统在 Java 中的角色 | 数据类型全景图 |
| 01.1-数据类型与运算符 | 8种基本类型为什么这样设计;自动类型转换规则 | 类型取值范围图 + 转换方向图 |
| 01.2-String深度解析 | 不可变性的设计动机;常量池复用;StringBuilder 为何可变 | String 常量池结构图 |
| 01.3-Object类与通用方法 | equals/hashCode 契约;clone 深浅拷贝;finalize | equals vs == 对比图 |
02 — 面向对象核心
来源:Java_base/Java基础-完全指南.md(重构)
| 笔记 | 核心原理 | 关键图解 |
|---|---|---|
| 00-OOP索引 | OOP 为何诞生——管理复杂度的思想 | 面向过程 vs 面向对象对比图 |
| 02.1-三大特性(封装继承多态) | 为什么需要封装?继承的利弊权衡;多态的实现原理 | 多态方法分派流程图 |
| 02.2-抽象类与接口对比 | 设计动机差异:模板 vs 契约;Java 8 后接口进化 | 抽象类 vs 接口对比图 |
| 02.3-内部类与匿名类 | 为什么需要内部类——访问外部类的动机 | 内部类编译后 class 文件结构 |
03 — 集合框架
来源:Java_base/Java基础-集合框架详解.md(840行,核心内容保留)
| 笔记 | 核心原理 | 关键图解 |
|---|---|---|
| 00-集合索引 | 集合框架的整体设计哲学 | Collection vs Map 分支全景图 |
| 03.1-List体系 | ArrayList vs LinkedList 数据结构取舍 | 数组 vs 链表内存布局对比图 |
| 03.2-HashMap核心原理 | 哈希表的动机;扩容与红黑树优化 | HashMap put 流程全链路图 |
| 03.3-ConcurrentHashMap | 分段锁 → CAS + synchronized 的演进 | JDK7 vs JDK8 并发控制对比图 |
| 03.4-Set与Queue | Set 的去重原理;Queue 的解耦设计 | TreeSet 红黑树 / 队列模型图 |
04 — 泛型与注解
来源:Java_base/Java基础-完全指南.md + SpringBoot-JavaWeb-注解知识文库.md
| 笔记 | 核心原理 | 关键图解 |
|---|---|---|
| 00-泛型注解索引 | 泛型——编译期类型安全的动机 | 泛型擦除机制图 |
| 04.1-泛型原理与类型擦除 | 为什么 Java 泛型用擦除而非特化 | 编译前后类型信息对比 |
| 04.2-通配符与边界 | ? extends / ? super 的 PECS 原则 | 协变逆变对比图 |
| 04.3-注解体系 | 注解 = 元数据;编译期 vs 运行时保留策略 | 注解处理生命周期图 |
05 — 异常与日志
来源:Java_base/Java基础-完全指南.md + R扩展
| 笔记 | 核心原理 | 关键图解 |
|---|---|---|
| 00-异常索引 | 异常机制——错误与正常逻辑分离 | 异常类层级图 |
| 05.1-异常体系结构 | Checked vs Runtime 的设计哲学 | try-catch-finally 执行流程图 |
| 05.2-异常最佳实践 | 选择异常类型、异常丢失、性能影响 | 异常链设计图 |
06 — IO与NIO
来源:Java_advanced/Java IO流详解.md(1422行,核心内容保留)
| 笔记 | 核心原理 | 关键图解 |
|---|---|---|
| 00-IO索引 | IO 系统设计分类 | IO 流家族全景图 |
| 06.1-字节流与字符流 | 为什么需要字符流——编码问题 | InputStream/Reader 层级图 |
| 06.2-缓冲流与装饰器模式 | 装饰器模式在 IO 中的应用 | 多层包装流数据流向图 |
| 06.3-NIO核心 | 非阻塞动机——线程复用 | BIO vs NIO 线程模型对比 |
| 06.4-序列化机制 | 序列化解决什么问题 | 序列化/反序列化过程图 |
07 — Lambda与Stream
来源:Java_advanced/Stream流收集数据与Lambda详解.md + 方法引用详解.md
| 笔记 | 核心原理 | 关键图解 |
|---|---|---|
| 00-Lambda索引 | 函数式编程在 Java 中的引入动机 | 匿名类 → Lambda → 方法引用演进图 |
| 07.1-Lambda与函数式接口 | @FunctionalInterface 设计动机 | Lambda 语法糖编译过程 |
| 07.2-Stream流水线 | 惰性求值的动机——链式操作如何避免中间集合 | Stream 操作三阶段图 |
| 07.3-Collectors收集器 | Collector 接口的累加器模型 | toMap 分组/分区流程 |
| 07.4-方法引用 | 四种引用方式的适用场景 | :: 操作符四象限图 |
08 — 多线程与并发
来源:Java_advanced/Java多线程编程.md(578行);关联 avazoe/JVM/08-Java内存模型与并发/
| 笔记 | 核心原理 | 关键图解 |
|---|---|---|
| 00-并发索引 | 并发编程核心三要素 | Java 并发全景图 |
| 08.1-线程基础与创建 | 线程 vs 进程;创建方式的权衡 | 线程状态迁移图 |
| 08.2-线程安全与锁 | synchronized 与 Lock 的设计对比 | 锁膨胀过程 / AQS 队列图 |
| 08.3-并发工具类 | CountDownLatch、CyclicBarrier、Semaphore | AQS 共享/独占模式图 |
| 08.4-Executor与线程池 | 线程池——复用线程的动机 | 线程池 execute 全流程 |
| → JMM | JMM、happens-before → **JMM索引** |
09 — 包装类与时间API
来源:Java_advanced/Java包装类详解.md + Java时间类详解.md
| 笔记 | 核心原理 | 关键图解 |
|---|---|---|
| 00-包装类时间索引 | 包装类存在的意义 | 基本类型 vs 包装类内存对比 |
| 09.1-包装类详解 | 自动装箱拆箱;Integer 缓存 | 缓存池范围图 |
| 09.2-时间日期API演进 | Date → Calendar → java.time 的设计迭代 | 时间 API 演进时间线 |
| 09.3-java.time 核心(新) | LocalDateTime vs Instant vs ZonedDateTime | 新 API 类关系图 |
10 — 单元测试(JUnit & Mockito)
来源:JUnit/ 文件夹(2098行)
| 笔记 | 核心原理 | 关键图解 |
|---|---|---|
| 00-测试索引 | 为什么需要单元测试 | 测试金字塔图 |
| 10.1-JUnit5注解与断言 | Jupiter 编程模型的设计 | 测试生命周期流程图 |
| 10.2-参数化测试 | 数据驱动测试的动机 | @ParameterizedTest 执行流程 |
| 10.3-Mockito | Mock 隔离测试单元的原理 | Mock vs Stub vs Spy 对比 |
| 10.4-SpringBoot测试 | 集成测试的切片加载动机 | @WebMvcTest / @DataJpaTest 切片 |
11 — MyBatis持久层框架
来源:MyBatis/ 文件夹(2315行)
| 笔记 | 核心原理 | 关键图解 |
|---|---|---|
| 00-MyBatis索引 | 半自动 ORM 的设计位置 | MyBatis vs JDBC vs Hibernate |
| 11.1-核心配置与SqlSession | SqlSessionFactoryBuilder 构建流程 | MyBatis 启动时序图 |
| 11.2-Mapper映射原理 | 接口绑定——动态代理 | MapperProxy 调用流程图 |
| 11.3-动态SQL与关联查询 | 动态 SQL 的动机——SQL 组合 | 动态 SQL 解析树 |
| 11.4-缓存机制 | 一级/二级缓存设计动机 | 缓存查找链路图 |
12 — SpringBoot与Web开发
来源:SpringBoot-JavaWeb-注解知识文库.md(2063行)
| 笔记 | 核心原理 | 关键图解 |
|---|---|---|
| 00-SpringBoot索引 | SpringBoot 如何简化 Spring | 自动配置原理图 |
| 12.1-注解体系速查 | 按层分类的注解全景 | Controller/Service/Repository 分层 |
| 12.2-Web层开发 | DispatcherServlet 请求处理 | SpringMVC 请求处理链路 |
| 12.3-数据访问与事务 | @Transactional 事务传播机制 | 事务传播行为对比 |
13 — Redis
来源:Redis专项知识库.md(1608行)
| 笔记 | 核心原理 | 关键图解 |
|---|---|---|
| 00-Redis索引 | Redis 在 Java 架构中的角色 | 缓存层在系统中的位置 |
| 13.1-数据结构 | 5 种类型 + 底层编码 | 编码转换条件图 |
| 13.2-持久化 | RDB vs AOF 设计取舍 | 持久化策略选择树 |
| 13.3-高可用 | 主从复制 + 哨兵 + 集群 | 哨兵故障转移流程图 |
| 13.4-Java集成 | Jedis vs Lettuce vs Redisson | Java Redis 客户端对比 |
七、JVM 互联策略
Java 知识库与已有 **JVM 知识库** 紧密关联:
| Java 板块 | 关联 JVM 板块 | 链接方式 |
|---|---|---|
| 03 集合框架 | **运行时数据区** — 堆内存分配 | HashMap 哈希冲突解决详见 JVM 堆内存布局 |
| 06 IO/NIO | **直接内存** — DirectBuffer | NIO 直接内存详见 JVM 直接内存原理 |
| 08 多线程并发 | **Java内存模型与并发** — JMM | volatile 语义详见 JMM 内存模型 |
| 08 多线程并发 | **锁升级过程** — 锁优化 | synchronized 实现详见锁升级过程 |
| 08 多线程并发 | **GC机制** — GC 影响 | GC 对并发性能的影响 |
设计确认时间: 2026-07-16