# Java进阶

### 1. JVM进阶

1. JVM 基础知识、Java 字节码技术、JVM 类加载器、JVM 内存模型、JVM 启动参数详解；
2. JDK 内置命令行工具、JDK 内置图形界面工具、JDWP 简介、JMX 与相关工具；
3. 常见的 JVM GC 算法（Parallel GC/CMS GC/G1 GC）基本原理和特点；
4. 新一代 GC 算法（Java11 ZGC/Java12 Shenandoah) 和 Oracle GraalVM；
5. GC 日志解读与分析、JVM 的线程堆栈等数据分析、内存 dump 和内存分析工具；
6. fastThread 相关工具以及面临复杂问题时的几个高级工具的使用；
7. JVM 问题排查分析的常用手段、性能调优的最佳实践经验等；
8. JVM 相关的常见面试问题必知必会、全面分析。

### 2. NIO 技术

1. 同步/异步、阻塞/非阻塞、BIO、NIO、AIO、Reactor/Proactor；
2. ByteBuff/Acceptor/Channel/Handler、NioEventLoopGroup/EventLoop、bossGroup/workerGroup；
3. Netty 的启动和执行过程、线程模型、事件驱动、服务端和客户端的使用方式；
4. 常见的 API Gateway/HTTP Server、SEDA 原理、业务 API 网关的功能和结构；
5. Throughout/TPS/QPS、Latency/P99/P95/P90、ApacheBench/Wrk/JMeter/LoadRunner。

### 3. 并发编程

1. Java 多线程基础：线程、锁、synchronized、volatile/final、sleep/await/notify/fork/join；
2. Java 并发包基础：线程池 Executor、AQS/CAS、Atomic 原子操作、Lock/ReadWriteLock/Condition、Callable/Future；
3. Java 并发容器与工具：BlockingQueue/CopyOnWriteList/ConcurrentHashMap、CountDownLatch/CyclicBarrier/Semaphore等；
4. 其他：万金油 ThreadLocal，化繁为简 Java8 parallelStream 等。

### 4. 开发框架

1. Spring 技术体系（Spring Core/Web/MVC/Data/Messaging、Spring Boot 等）；
2. ORM 技术体系（JPA、Hibernate、MyBatis 等）。

### 5. 系统性能优化

1. 系统可观测性（日志、调用链跟踪、指标度量），80/20 优化原则，CPU、内存、磁盘/网络 IO 等分析；
2. MySQL 的锁、事务、索引、并发级别、死锁、执行计划、慢 SQL 统计、缓存失效、参数优化；
3. 库表设计优化，引擎选择，表结构优化设计，列类型选择，索引设计，外键等；
4. SQL 查询优化，索引选择，连接优化，聚合查询优化，Union 优化，子查询优化，条件优化等；
5. 场景分析，主键生成与优化，高效分页，快速导入导出数据，解决死锁问题等。

### 6. 超越分库分表

1. MySQL 主从复制，Binlog，Row/Statement 模式，主从切换，读写分离，数据库扩容；
2. 数据库垂直拆分与水平拆分，分库分表，分布式主键，分表算法，SQL 限制，数据迁移，实时同步；
3. Spring 动态切换数据库，TDDL/Sharding-JDBC 框架，MyCat/Sharding-Proxy 中间件；
4. 数据库拆分的最佳实践，分布式事务最佳实践，多租户的最佳实践。

### 7. 分布式服务

1. 基础知识：RPC、通信与数据协议、WebService、Hessian、REST、gRPC、Protocol Buffers 等；
2. 服务化：服务治理、配置管理、注册发现、服务分组、版本管理、集群管理、负载均衡、限流与降级熔断等；
3. 框架：Apache Dubbo 的功能与原理分析，Spring Cloud 体系，具体的案例实践；
4. 微服务：微服务架构的 6 个最佳实践，从微服务到服务网格、云原生的介绍。

### 8. 分布式缓存

1. 缓存的应用场景，缓存加载策略与失效策略，缓存与数据库同步等；
2. 缓存预热、缓存失效、缓存击穿、缓存雪崩、多级缓存、缓存与 Spring+ORM 框架集成；
3. 缓存中间件，Redis（几种常用数据结构、分布式锁、Lua 支持、集群），Hazelcast（Java 数据结构、内存网格、事务支持、集群）；
4. 缓存的应用场景，排行数据展示，分布式 ID 生成，Session 共享，热点账户操作等。

### 9. 分布式消息

1. 消息队列的基本知识，Broker 与 Client，消息模式（点对点、发布订阅），消息协议（STOMP、JMS、AMQP、OpenMessaging 等），消息 QoS（最多一次、最少一次、有且仅有一次），消息重试，延迟投递，事务性，消息幂等与去重；
2. 消息中间件：ActiveMQ 的简单入门，Kafka 的基本功能与使用，高可用（集群、分区、副本）、性能，RabbitMQ 和 RocketMQ，Pulsar 的简单介绍；
3. 消息的 4 个主要功能，搭建一个 Kafka 集群，实现常用的消息发送、消息消费功能；
4. 典型使用场景，使用 MQ 实现交易订单的处理，动手实现一个简化版的消息队列。

### 10. 业务系统重构

1. 分析系统现状，给出明确的各项指标，了解各方对指标的期望和差距；
2. 给出多个可选的改造或重做方案，明确各方案的优缺点，提供决策依据；
3. 方案上的适当妥协，各方达成一致，快速推动重构工作启动和展开；
4. 细化具体的方案细节，形成路径，争取足够的资源，恰当的时间窗口；
5. 小步快跑，迅速取得阶段性成果，不影响业务整体的规划和发展；
6. 保持业务连续性，多做监控、兼容和特性开关，给改造加上保险丝和缓冲区；
7. 及时评估改进进展，更新方案和路线、资源和时间，推动改造顺利进行；
8. 复盘总结相关经验，提出更多建议和改进办法，实现经验分享，方法复用。

### 11. 架构师修炼之道

1. 分享我个人的成长第一手经验，升级打怪，成为架构师、技术专家、技术总监；
2. 六个硬能力：技术能力、设计能力、抽象能力、管理能力、结构化思考能力、系统化分析能力；
3. 七个软实力：大局观能力、沟通协作能力、持续学习能力、关注力、探索力、决策力、自我驱动力。
