Skip to content

Java 知识体系 ​

一张图看清 Java 技术栈全貌,理解每个知识点在体系中的位置与关联关系。

一、全景架构图 ​

┌─────────────────────────────────────────────────────────────────────────────┐
│                           Java 知识体系全景图                                 │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │                        放弃篇:面试与踩坑                             │   │
│  │              面试八股  │  常见坑  │  终极总结                         │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                    ▲                                        │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │                        无为篇:工程实践                               │   │
│  │              最佳实践  │  代码规范  │  设计模式                        │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                    ▲                                        │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │                        修仙篇:架构思维                               │   │
│  │              源码解读  │  框架设计  │  架构思维                        │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                    ▲                                        │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │                        无敌篇:分布式架构                             │   │
│  │       微服务  │  分布式  │  高并发  │  性能调优                        │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                    ▲                                        │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │                        高级篇:框架与中间件                           │   │
│  │     Spring  │  Spring Boot  │  MyBatis  │  数据库  │  Redis  │  MQ   │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                    ▲                                        │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │                        原理篇:JVM 底层                               │   │
│  │        JVM  │  类加载  │  垃圾回收  │  内存模型                        │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                    ▲                                        │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │                        进阶篇:语言特性深挖                           │   │
│  │     泛型  │  反射  │  代理  │  注解  │  多线程  │  网络编程  │  JUC  │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                    ▲                                        │
│  ┌─────────────────────────────────────────────────────────────────────┐   │
│  │                        基础篇:Java 核心                              │   │
│  │  Java语法  │  面向对象  │  异常处理  │  集合  │  IO  │  Lambda与Stream │   │
│  └─────────────────────────────────────────────────────────────────────┘   │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

二、知识依赖关系 ​

每个知识点不是孤立的,它们之间存在层层递进的依赖关系。理解这些依赖,才能知道"先学什么,后学什么"。

2.1 纵向依赖链(自底向上) ​

Java语法 → 面向对象 → 异常处理 → 集合 → IO → Lambda/Stream
                                      ↓
                                   泛型 ──────→ 反射 ──→ 代理
                                      ↓                     ↓
                                   注解 ←──────────────────┘
                                      ↓
                                   多线程 → JUC → 网络编程
                                      ↓
                                   JVM → 类加载 → 垃圾回收 → 内存模型
                                      ↓
                              Spring → Spring Boot → MyBatis → 数据库 → Redis → MQ
                                      ↓
                              微服务 → 分布式 → 高并发 → 性能调优
                                      ↓
                              源码解读 → 框架设计 → 架构思维
                                      ↓
                              最佳实践 → 代码规范 → 设计模式

2.2 关键依赖解读 ​

依赖关系为什么
集合 → 泛型集合框架大量使用泛型,List<String> 就是泛型最直观的应用
泛型 + 反射 → 代理动态代理通过反射调用方法,泛型擦除影响代理的运行时行为
反射 + 代理 → 注解注解处理器通过反射读取注解,Spring AOP 用代理实现注解驱动
多线程 → JUCJUC 是多线程的高级工具包,建立在 Thread/synchronized 基础上
JVM + 类加载 → SpringSpring 的 Bean 容器本质是类加载和反射的综合应用
Spring + 多线程 → 微服务微服务以 Spring Boot 为基础,并发处理是高并发的前提
代理 + 反射 → MyBatisMyBatis 的 Mapper 接口通过 JDK 动态代理生成实现
数据库 → 分布式分布式事务、分库分表建立在数据库基础之上
集合 + 多线程 → RedisRedis 的数据结构是集合在内存中的延伸,并发控制基于 JUC

三、学习路线图 ​

阶段一:入门(0→1 年)—— 能写代码 ​

第1步:Java语法 → 变量、运算符、流程控制、数组
第2步:面向对象 → 封装、继承、多态、抽象类、接口、内部类
第3步:异常处理 → try-catch、受检/非受检、try-with-resources
第4步:集合 → ArrayList、HashMap、fail-fast、ConcurrentHashMap
第5步:IO → BIO、NIO、零拷贝、序列化
第6步:Lambda与Stream → 函数式编程、Stream API、Optional

目标: 独立完成 CRUD 功能,理解 Java 核心 API。

阶段二:进阶(1→3 年)—— 能写好的代码 ​

第7步:泛型 → 类型擦除、通配符、PECS 原则
第8步:反射 → Class、Method、Field、setAccessible、性能
第9步:代理 → JDK 动态代理、CGLIB、Spring AOP 原理
第10步:注解 → 元注解、自定义注解、编译期/运行时处理
第11步:多线程 → 线程生命周期、synchronized、volatile、线程池
第12步:JUC → Lock、AQS、CountDownLatch、BlockingQueue、ConcurrentHashMap
第13步:网络编程 → TCP/IP、Socket、Netty、半包粘包

目标: 理解框架底层原理,能写出高性能、线程安全的代码。

阶段三:深入(3→5 年)—— 能造轮子 ​

第14步:JVM → 内存区域、JIT、参数调优
第15步:类加载 → 双亲委派、SPI、自定义类加载器
第16步:垃圾回收 → 可达性分析、G1、ZGC、GC 调优
第17步:内存模型 → happens-before、volatile 屏障、CAS
第18步:Spring → IoC 容器、AOP、事务传播、Bean 生命周期
第19步:Spring Boot → 自动配置、起步依赖、Actuator
第20步:MyBatis → 动态 SQL、缓存、插件机制
第21步:数据库 → 索引、事务隔离、MVCC、SQL 优化

目标: 理解 JVM 底层,能进行性能调优、框架定制。

阶段四:架构(5+ 年)—— 能设计系统 ​

第22步:Redis → 数据结构、持久化、集群、缓存问题
第23步:消息队列 → RocketMQ、Kafka、事务消息、幂等
第24步:微服务 → 拆分原则、Spring Cloud、CAP
第25步:分布式 → 分布式锁、分布式事务、分布式 ID
第26步:高并发 → 缓存策略、分库分表、限流熔断
第27步:性能调优 → JVM/DB/代码多维度调优、Arthas

目标: 独立设计分布式系统架构,解决高并发、高可用问题。

阶段五:大师(终极)—— 能传道授业 ​

第28步:源码解读 → Spring IoC/AOP 源码、MyBatis 源码
第29步:框架设计 → SPI、模板方法、责任链、手写 ORM/RPC
第30步:架构思维 → SOLID、DDD、六边形架构、CQRS、ADR
第31步:设计模式 → 单例、工厂、策略、观察者、装饰器、代理
第32步:最佳实践 → 命名、异常处理、空处理、并发、日志
第33步:代码规范 → 阿里巴巴规范、Code Review
第34步:面试八股 + 常见坑 → 高频面试题、20+ 常见坑点

目标: 形成完整的知识体系,能指导团队、设计框架。

四、知识点横向关联网络 ​

4.1 以"Spring"为中心的关联 ​

                    ┌──────────────┐
                    │   反射       │ ← Bean 实例化、@Autowired 注入
                    │   代理       │ ← AOP 切面、事务代理
                    │   注解       │ ← @Service、@Transactional
        ┌───────────┤   泛型       │ ← List<Bean>、ApplicationEvent<T>
        │           │   多线程     │ ← @Async、线程池
        │           │   JVM       │ ← Bean 生命周期、内存管理
        │           └──────────────┘
        ▼
   ┌─────────┐
   │ Spring  │
   └─────────┘
        │
        ├──→ Spring Boot:自动配置、起步依赖(注解 + SPI + 条件装配)
        ├──→ MyBatis:Mapper 代理(JDK 动态代理)、事务集成(AOP)
        ├──→ Redis:Spring Cache 抽象(@Cacheable → AOP 拦截)
        ├──→ MQ:消息监听(注解驱动)、事务消息(分布式事务)
        ├──→ 微服务:Spring Cloud(基于 Spring Boot 的生态)
        ├──→ 分布式:Seata 分布式事务(AOP 拦截 + 全局事务协调)
        └──→ 高并发:线程池配置、异步处理、缓存策略

4.2 以"多线程"为中心的关联 ​

                    ┌──────────────┐
                    │   JVM        │ ← 内存模型(happens-before)、锁升级
                    │   集合       │ ← ConcurrentHashMap、BlockingQueue
                    │   代理       │ ← AOP 切面线程安全
        ┌───────────┤   JUC        │ ← Lock、AQS、线程池
        │           │   Redis      │ ← 分布式锁(Redisson)、缓存并发
        │           │   数据库     │ ← 事务隔离、MVCC、行锁
        │           └──────────────┘
        ▼
   ┌─────────┐
   │ 多线程   │
   └─────────┘
        │
        ├──→ JUC:Lock、CountDownLatch、Semaphore、ForkJoinPool
        ├──→ 高并发:线程池调优、异步处理、CompletableFuture
        ├──→ 分布式锁:Redis RedLock、Zookeeper 临时顺序节点
        ├──→ 性能调优:死锁排查、线程 dump 分析、锁竞争优化
        └──→ 设计模式:Future 模式、生产者-消费者、读写锁分离

4.3 以"数据库"为中心的关联 ​

                    ┌──────────────┐
                    │   集合       │ ← 数据结构类比(B+Tree vs HashMap)
                    │   MyBatis    │ ← SQL 映射、缓存、插件
                    │   Spring     │ ← 事务管理、DataSource 配置
        ┌───────────┤   JVM        │ ← 连接池内存、GC 对响应时间的影响
        │           │   多线程     │ ← 连接池并发、事务隔离
        │           │   设计模式   │ ← 连接池(享元模式)、ORM(桥接模式)
        │           └──────────────┘
        ▼
   ┌─────────┐
   │ 数据库   │
   └─────────┘
        │
        ├──→ Redis:缓存策略(Cache Aside)、缓存穿透/击穿/雪崩
        ├──→ 分布式:分库分表、分布式事务(TCC、Saga、Seata)
        ├──→ 高并发:读写分离、连接池优化、慢查询优化
        ├──→ MQ:异步写入、最终一致性、事务消息
        └──→ 性能调优:EXPLAIN、索引优化、SQL 重写

4.4 以"设计模式"为中心的关联 ​

设计模式不是孤立的知识点,它贯穿整个 Java 技术栈:

Singleton    → Spring Bean 默认作用域、枚举单例、DCL
Factory      → BeanFactory、SqlSessionFactory、ThreadFactory
Builder      → Lombok @Builder、StringBuilder、OkHttp Request
Proxy        → JDK 动态代理、CGLIB、Spring AOP、MyBatis Mapper
Strategy     → 线程池拒绝策略、负载均衡策略、排序算法
Observer     → Spring Event、MQ 消费者、Zookeeper Watcher
Template     → JdbcTemplate、RestTemplate、RedisTemplate
Decorator    → IO 流(BufferedInputStream)、Collections.synchronizedList
Chain of Resp→ Filter 链、Interceptor 链、MyBatis 插件链
Adapter      → Spring MVC HandlerAdapter、SLF4J 日志门面

五、技术栈分层对照 ​

┌──────────────────────────────────────────────────────────────────┐
│                      应用层(Application)                        │
│   微服务  │  分布式  │  高并发  │  性能调优                        │
├──────────────────────────────────────────────────────────────────┤
│                      框架层(Framework)                          │
│   Spring  │  Spring Boot  │  MyBatis  │  设计模式                  │
├──────────────────────────────────────────────────────────────────┤
│                      中间件层(Middleware)                        │
│   Redis  │  RocketMQ/Kafka  │  数据库  │  Nginx                    │
├──────────────────────────────────────────────────────────────────┤
│                      运行时层(Runtime)                           │
│   JVM  │  类加载  │  垃圾回收  │  内存模型  │  JIT               │
├──────────────────────────────────────────────────────────────────┤
│                      语言层(Language)                            │
│   语法  │  面向对象  │  异常  │  集合  │  IO  │  Lambda/Stream   │
│   泛型  │  反射  │  代理  │  注解  │  多线程  │  JUC  │  网络    │
├──────────────────────────────────────────────────────────────────┤
│                      工程层(Engineering)                         │
│   最佳实践  │  代码规范  │  架构思维  │  源码解读  │  框架设计      │
└──────────────────────────────────────────────────────────────────┘

阅读顺序: 语言层 → 运行时层 → 框架层 → 中间件层 → 应用层 → 工程层。每一层都是上一层的基础,跳过会埋坑。

六、知识关联速查表 ​

我要学前置知识关联知识通向
泛型集合反射、代理框架设计
反射面向对象、泛型代理、注解Spring IoC、MyBatis
代理反射Spring AOPMyBatis Mapper、RPC
注解反射Spring框架设计
多线程面向对象JUC、JVM 内存模型高并发、性能调优
JUC多线程集合高并发、分布式锁
JVM语法、面向对象类加载、GC、内存模型性能调优
GCJVM内存模型性能调优
Spring反射、代理、注解Spring Boot、MyBatis微服务
MyBatis代理、数据库Spring分布式
数据库集合Redis、MyBatis分布式、高并发
Redis集合、多线程数据库高并发、分布式锁
MQ多线程、网络编程分布式微服务、高并发
微服务Spring Boot分布式、高并发架构思维
分布式数据库、多线程微服务、高并发架构思维
高并发多线程、Redis、MQ分布式、性能调优架构思维
设计模式面向对象、代理Spring、MyBatis框架设计
源码解读Spring、MyBatis、JVM框架设计架构思维

七、学习建议 ​

7.1 不要跳级 ​

很多人急着学微服务、分布式,但连 HashMap 原理、JVM 内存模型都不清楚。结果是:面试一问就倒,线上出问题不会排查。基础不牢,地动山摇。

7.2 带着问题学 ​

每个知识点都应该回答三个问题:

  1. 为什么需要它? —— 它解决了什么问题?没有它之前是怎么做的?
  2. 怎么实现的? —— 底层原理是什么?核心机制是怎样的?
  3. 用在哪里? —— 哪些框架/场景用到了?我怎么用?

7.3 交叉验证 ​

知识之间是相互关联的。学完 Spring 再回头看反射和代理,学完 Redis 再回头看集合和线程安全,会发现豁然开朗。别怕重复,每次回看都有新收获。

7.4 动手实践 ​

  • 基础篇:每个 API 写一遍
  • 进阶篇:看源码,写 Demo
  • 原理篇:调 JVM 参数,看 GC 日志
  • 框架篇:手写 Mini 框架
  • 分布式篇:本地搭环境,跑通流程

体系的力量: 孤立的知识点是散落的珍珠,知识体系是串起珍珠的线。有了体系,你看到的不是 34 个知识点,而是一张可以随时调用的思维网络。