Java高级级最终完整版学习路线图
·
简介:学习顺序初级->中级->高级
Java 高级(架构师底盘|完整版)
1. JMM 内存模型、volatile、synchronized 底层
- JMM Java 内存模型核心:主内存、工作内存、内存交互 8 大原子操作
- 并发三大特性:原子性、可见性、有序性
- volatile 底层原理:
- 可见性实现(缓存行失效、MESI 协议)
- 禁止指令重排(内存屏障 LoadLoad、StoreStore、LoadStore、StoreLoad)
- volatile 为什么不保证原子性
- synchronized 底层深度:
- 对象头结构:Mark Word、Klass Pointer
- 锁升级机制:无锁 → 偏向锁 → 轻量级锁 → 重量级锁
- 监视器锁 Monitor 原理(ObjectMonitor)
- 锁粗化、锁消除、自旋锁、自适应自旋
- Happens-Before 规则
- DCL 单例双重校验为什么需要 volatile
2. AQS、线程池、CompletableFuture、异步编程
- AQS 抽象队列同步器(Java 锁核心)
- CLH 队列、state 状态、共享式 / 独占式获取锁
- 底层:acquire、release、tryAcquire、tryRelease
- ReentrantLock、CountDownLatch、Semaphore、CyclicBarrier 底层全是 AQS
- 线程池高级
- 线程池状态 RUNNING/SHUTDOWN/STOP/TIDYING/TERMINATED
- 线程池执行全过程(addWorker、runWorker)
- 动态线程池、线程池监控、线上线程池优化
- 线程池死锁、OOM 场景
- CompletableFuture 异步编排
- 异步任务创建、链式调用、异常处理
- 多任务组合:allOf、anyOf、thenCompose、thenCombine
- 异步线程池隔离、异步最佳实践
- 异步编程模型:异步回调、事件驱动、非阻塞
3. JVM 高级:内存结构、类加载、GC(CMS/G1/ZGC)
- JVM 运行时数据区高级
- 直接内存、元空间、栈帧、局部变量表、操作数栈
- OOP-Klass 对象模型、对象内存布局
- 类加载机制深度
- 类加载全过程(加载、验证、准备、解析、初始化)
- 双亲委派模型破坏场景(SPI、Tomcat 类加载)
- 类卸载条件、反射类加载
- GC 垃圾回收高级
- 垃圾判断:引用计数、可达性分析
- 四种引用:强、软、弱、虚引用
- CMS 收集器:运作流程、优缺点、浮动垃圾、Concurrent Mode Failure
- G1 收集器:Region 分区、SATB、RSet、CSet、mixed GC
- ZGC 收集器:染色指针、读屏障、低延迟原理
- GC 日志解读、GC 性能指标(吞吐量、暂停时间)
4. 线上问题排查:OOM、死锁、CPU 高、GC 调优
- CPU 占用 100% 排查
- top、top -Hp、jstack、线程栈定位
- 死锁排查
- jstack 自动检测死锁
- 死锁成因、避免方案
- OOM 异常全面分析
- Java heap space
- Metaspace
- Direct buffer memory
- Unable to create new native thread
- GC overhead limit exceeded
- 线上排查工具
- jps、jstat、jmap、jstack、jinfo、arthas
- JVM 调优实战
- 堆内存参数配置
- GC 收集器选择
- GC 频繁、停顿时间长优化
- 内存泄漏定位与解决
5. Spring 源码、MyBatis 源码、框架问题定位
Spring 源码
- IOC 容器启动流程(refresh () 12 大步)
- Bean 生命周期源码级流程
- 三级缓存解决循环依赖源码
- AOP 动态代理创建时机
- Spring 事务传播行为源码
- @Transactional 事务提交 / 回滚机制
- Spring 事件驱动、SPI 机制
MyBatis 源码
- SqlSessionFactory 构建过程
- Mapper 接口 JDK 动态代理
- SQL 执行流程(Executor、StatementHandler、ParameterHandler、ResultSetHandler)
- 一级缓存、二级缓存原理
- MyBatis 插件机制(Interceptor)
框架问题定位
- Spring 循环依赖、Bean 提前暴露
- 事务不生效、AOP 不生效源码定位
- MyBatis 参数绑定、SQL 执行异常
- SpringBoot 自动配置原理
- 框架启动慢、内存占用高、线程泄漏定位
更多推荐
所有评论(0)