Java大纲
本文最后更新于 2024年10月31日 上午
Java存活路线
一阶段:Java 进阶必备技术栈
01 项目性能优化
性能问题分析理论:3S 定理
性能指标:RT、TPS、并发数…
压测监控平台:Docker、InfluxDB、Grafana、Prometheus 和 node_exporter 环境搭建
梯度压测:分析接口性能瓶颈
分布式压测:构建百万次请求的压力
服务容器优化:Tomcat、I/O 模型、Undertow 调优
数据库调优:影响数据库性能因素
OpenResty 调优
多级缓存调优
JVM 调优
02 JVM虚拟机
JVM 基本常识与整体架构
类加载子系统:加载时机、加载过程
类加载器详解
JVM 加载机制剖析:一个类的一生
双亲委派与打破双亲委派
自定义类加载器
JVM 运行时数据区:堆、虚拟机栈、本地方法栈、方法区、字符串常量池、程序计数器
JVM 内存模型变迁
栈帧剖析与栈异常案例
字符串常量池如何存储和查找数据
方法区存储什么,永久代与元空间是什么关系
一个对象的一辈子:对象创建流程与内存分配
对象怎样才会进入老年代?内存担保机制
解剖对象这只小麻雀:对象内存布局,对象头 Header 的 MarkWord 和 KlassPoint
如何定位一个对象
GC 基本原理:什么是垃圾、如何找到垃圾、如何清除垃圾、用什么清除垃圾
垃圾收集器剖析:Parallel、Serial、CMS、G1、ZGC
Minor GC 、Major GC 和 Full GC
JVM 核心参数:标准参数、非标准参数、不稳定参数
JVM 常用指令:jps、jstat、jinfo、jhat、jmap
JVM 调优工具:VisualVM、GC Easy、PerfMa、MAT
GC 日志分析
GC 日志分析工具
内存溢出与泄露案例
检测死锁案例
JVM 调优实战案例:
堆内存和元空间优化
堆栈优化
吞吐量优先策略
响应时间优先策略
G1 全功能垃圾收集策略
JVM调优实战案例
- 堆内存和元空间优化
- 堆栈优化
- 吞吐量优先策略
- 响应时间优先策略
- G1 全功能垃圾收集策略
03 多线程与并发编程
线程和进程、并发与并行、上下文切换
多线程并发中的线程安全问题
多线程并发的三个特性:原子性、可见性、顺序性分析
指令重排序、happens-before 规则
JMM 模型深度剖析:JSR-133: Java Memory Model and Thread Specification
Synchronized 原理分析
锁优化&锁升级
Volatile 原理与源码分析
多线程在 JVM 中的实现原理剖析
CAS 算法和 ABA 问题
显示锁和 AQS 底层原理分析
AQS 共享锁实现原理
ReentrantLock 重入锁源码分析
ReentrantReadWriteLock 读写锁
并发容器深度剖析
CAS 原子操作及相关类
基本数据类型:AtomicInteger、AtomicLong、AtomicBoolean
数组:AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray
引用类型:AtomicReference
并发编程工具掌握:CountDownLatch、Semaphore、CyclicBarrier
Future 和 FutureTask
线程池工作原理
ThreadLocal 底层原理
04 网络编程
网络通信协议:TCP/IP 协议集
TCP/IP 五层模型和 OSI 模型详解
TCP 三次握手和四次挥手机制
TCP 与 UDP 协议
从输入 URL 地址到显示网页经历了哪些过程
HTTP/1.0 与 HTTP/1.1 的区别
URI 与 URL 的区别
HTTP 与 HTTPS 的区别
同步和异步、阻塞和非阻塞
五种 I/O 模型:阻塞 I/O 模型、非阻塞 I/O 模型、多路复用 I/O 模型、信号驱动 I/O 模型、异步 I/O 模型
JAVA 网络编程模型:BIO、NIO、AIO
NIO 多路复用深入剖析:Selector、Channel 与 SelectionKey
NIO 案例 01:客户端与服务器之间通信
NIO 案例 02:网络聊天室 V1.0
Netty 总体架构设计
Netty 线程模型:单线程、多线程与 Netty 线程模型
Netty 核心组件:Bootstrap、EventLoopGroup、Channel 与 ChannelHandlerContext 等
Netty 案例 03:客户端与服务器之间通信
Netty 案例 04:网络聊天室 V2.0
Netty 编解码器
RPC 通信原理
RPC 的设计架构与思想
RPC 架构完整调用流程
案例 05:手写一个 RPC 框架 HeroRPC
案例 06:手写一个 Tomcat
案例 07:600W+ 连接网络应用实战
二阶段:海量数据存储专题
01MySQL进阶
MySQL 应用架构:内存结构、磁盘结构
MySQL 体系架构
MySQL 运行机制
一条 SQL 语句的完整执行流程
Buffer Pool
日志缓冲
内存数据落盘
CheckPoint
Double Write
存储引擎原理:InnoDB、MyISAM
索引的数据结构:B+ 树、为什么不用红黑树、二叉树、B 树?
索引原理
索引分析与优化建议
索引下推 ICP
聚簇索引,辅助索引
查询分析与优化
事务 ACID 特性
事务控制的演进
事务隔离级别
LBCC 与 MVCC
ReadView:快照读、当前读
版本链
日志:Undo log、redo log、binlog
锁:全局锁、表锁、行锁【记录锁、间隙锁、临键锁、插入意向锁】、读锁、写锁
复杂 SQL 加锁分析
死锁原理
02 海量数据存储与优化
数据库压力测试
数据库的连接池优化
SQL 语句优化:执行计划
索引优化
Limit 优化
子查询优化
SQL 语句性能分析
慢查询日志
线程使用情况分析
集群架构设计
主从模式高可用
双主模式
分库分表
分库分表实战
ShardingSphere
Sharding-JDBC
数据分片剖析实战
读写分离剖析实战
分布式事务剖析实战
Sharding-Proxy 实战
Sharding Sphere 源码分析
MyCat 核心概念
MyCat 架构剖析
MyCat 配置详解
MyCat 管理命令详解
MyCat 分片规则详解
MyCat 分库分表
MyCat 读写分离
MyCat 强制路由
MyCat 注解技术
MyCat 核心技术分析
MyCat 分布式事务的实现
MyCat SQL 路由的实现
MyCat 跨库 JSON 的实现
MyCat 数据汇聚和排序的实现
03 MongoDB
MongoDB 体系结构
MongoDB 存储原理
MongoDB 存储引擎
MongoDB 索引和 explain 分析
MongoDB 索引底层原理分析
MongoDB 主备切换
MongoDB 企业实战
MongoDB 集群高可用
复制集 replica sets
分片集群 Shard Cluster
MongoDB 安全认证
监控服务(Mong oOps Manager)
MongoDB 备份
04 FastDFS
分布式文件系统
FastDFS 特性
FastDFS 的构成
Linux 下 FastDFS 的安装
Java 访问 FastDFS
FastDFS 系统架构
FastDFS 功能原理
FastDFS 集群和配置优化
FastDFS 企业实战
Spring Boot 访问 FastDFS
三阶段:常用开发框架解读专题
01 Spring 源码
Spring 源码阅读前沿
Spring 创建对象代码演变及 IoC 容器初始化
手写一个 Spring 框架案例
Spring 面向对象 OOAD 和七大设计原则
Spring-IoC 模块的面向对象设计
Spring 面向对象方式手写 IoC 流程
Spring-IoC 源码阅读
Spring-AOP 核心概念以及动态代理原理
Spring-AOP 三大核心流程图解
Spring-AOP 源码阅读
Spring 中的设计模式:责任链模式与反射调用
02 Spring MVC 源码
手写一个 Spring MVC Web 应用框架
Spring MVC 应用框架架构解析
手写一个 Spring 框架案例
图解 Spring MVC 执行流程
Spring MVC 源码阅读
解析 RequestMappingAdapter 流程
03 Spring Boot 应用
Spring Boot 与 Spring 的区别与联系
Spring Boot 启动流程源码解析
yml 配置文件加载流程解析
图解 Spring Boot 自动配置流程
Spring Boot&Redis&MyBatis 整合源码解析
使用自定义 starter 完成案例
04 MyBatis 源码
采用面向的对象方式手写一个 MyBatis 框架
解析 MyBatis 版本配置文件及对应存储类分析
MyBatis-SqlSession 执行流程解析
MyBatis-Mapper 代理底层原理解析
05 Tomcat 源码
Tomcat 底层原理解析
搭建 Tomcat 源码环境
手写 Tomcat 源码
阅读解析 Tomcat 启动流程
Tomcat 加载、创建 Servlet 流程源码解读
解析 Tomcat 请求处理流程
06 Nginx 应用
Nginx 使用原理解析
Web Server 技术选型
详解 Nginx 配置文件
Nginx 请求定位之 server 定位
Nginx 请求定位之 location 定位
Nginx 应用之 rewrite 重定向
Nginx 应用实战之静态资源服务器
Nginx 应用实战之反向代理应用
Nginx 应用实战之负载均衡
Nginx 应用实战之动静分离
Nginx 应用实战之虚拟主机应用
Nginx 应用实战之缓存配置
Nginx 应用实战之日志管理
四阶段:分布式缓存&搜索专题
01 Redis
Redis 底层数据结构的空间使用情况、时间复杂度
数据结构原理与场景实战
Redis 网络模型:阻塞&非阻塞
用户态&内核态
I/O 多路复用
Redis 单线程
Redis RESP 通信协议
Redis 的内存淘汰、内存布局、key 过期机制
Redis 最佳实践:key 设计原则,bigkey、hotkey 的发现方式和避免手段
Redis 批处理的场景和不足,分析 Redis 数据安全问题。
Redis 服务端优化之持久化原理和常见配置
Redis 服务端优化之命令安全、内存安全配置
Redis 运维之主从同步、哨兵、集群分片实现原理
Redis 场景实战
02 Elasticsearch
Elasticsearch 倒排索引
FOR 算法、RoaringBitMap 算法原理
前缀树、FST 原理解析
Elasticsearch 之集群分片
Elasticsearch 全文搜索 match、精准查询 term
Elasticsearch 过滤器
Elasticsearch 组合查询、模糊查询
scriptings 脚本
Elasticsearch 分词过滤
Elasticsearch 文档
外部词库更新
分词器 tokenizer
Elasticsearch 聚合查询
Elasticsearch 场景实战
五阶段:消息队列专题
01 消息中间件介绍
消息中间件使用场景
消息中间件需要解决的问题
消息中间件选型
领域模型介绍
RocketMQ 环境搭建、Debug 调试
02 RocketMQ 实战
消息发送 API 详解与版本变迁说明
消息发送核心参数与工作原理
消息发送常见错误与解决方案
事务消息以及定时消息发送实战
消息消费 API 详解与版本变迁说明
DefaultMQPushConsumer 核心参数与工作原理
DefaultMQPushConsumer 使用示例与注意事项
结合应用场景学习 DefaultMQPushConsumer
消息过滤实战
消息消费积压问题排查实战
订阅关系不一致实战
批量消费实战
03 RocketMQ 原理应用
Broker 启动流程分析
NameServer 路由注册机制
生产者的发送消息流程
消费者的接收消息流程
消息的可靠性应该如何保证
不同消息的有序性如何解决
Broker 接收消息的处理流程
04 RocketMQ 高级特性
消息在 Broker 端的文件布局
消息存储的高效与刷盘策略
Broker 快速读取消息机制
文件恢复与 CheckPoint 机制
消息大量堆积了该怎么办
部署架构与高可用机制
NameServer 的设计理念
05 Kafka 实战
Kafka 基础架构运行流程
生产者选择分区发送数据流程
生产者发送数据的可靠性保证
服务端的消息处理架构模型
服务端消息存储的文件布局
如何保证服务端数据的一致性
消费方如何消费数据/消费分区
Kafka 该如何实现顺序消费
消费者组重平衡流程解析
Kafka 有哪些高性能的设计
Kafka 与 RocketMQ 的主流功能对比
六阶段:微服务前沿技术栈专题
01 体系介绍
- Nacos Registry
- Nacos Config
- OpenFeign
- Gateway
- Dubbo
- Sentinel
- Seata
02 Spring Cloud 最佳实践
Provider + Consumer + Eureka 服务搭建
Provider + Consumer + Nacos 服务搭建
Consumer + Provider + Nginx 集群搭建
03 Nacos 注册与发现
Nacos 服务注册案例搭建
Nacos 服务订阅案例搭建
Nacos Client 发起注册流程
Nacos Server 处理注册流程
Nacos Client 发起订阅流程
Nacos 心跳与剔除机制
04 Nacos 配置中心
Nacos Config 动态更新端口案例搭建
Nacos Config 动态更新配置案例搭建
Nacos 配置中心源码分析
Nacos 动态更新机制
Nacos UDP 通知更新机制
Nacos 集群同步源码分析之 CP + AP 模式
Nacos 集群同步 Distro 一致性协议
Nacos 集群同步 Raft 一致性协议
05 OpenFeign 负载均衡
Ribbon 工程案例搭建
OpenFeign 负载均衡与降级案例搭建
OpenFeign 源码分析之 @FeignClient 注解扫描机制
OpenFeign 源码分析之 Feign 的上下文隔离机制
06 Gateway 网关路由
Gateway 路由案例搭建
自定义拦截过滤
转发重定向机制
07 Sentinel 限流降级
Sentinel 手动设置限流/降级案例搭建
Sentinel 接入 Nacos 案例搭建
探索 Sentinel 规则持久化机制
联动 Sentinel 与 Nacos 的持久化实现
核心 SphU.entry 源码分析
ProcessorSlotChain 过滤器链流程
StatisticSlot 核心处理逻辑分水岭
08 Dubbo 服务调用框架
Dubbo 工程案例环境搭建
Provider & Consumer 案例搭建
依赖检查 & 负载均衡案例搭建
广播调用 & 缓存操作案例搭建
点对点调用案例搭建
泛化调用案例搭建
Dubbo 源码分析
JDK SPI 与 Dubbo SPI 机制
Dubbo 服务发布流程
Dubbo 服务订阅流程
Dubbo Wrapper 机制
Dubbo 协议编解码
七阶段:持续集成与容器化专题
01 CI/CD、DevOps
软件生命周期概念
CI/CD 概念
DevOps 概念
搭建实验环境
初识 Jenkins
Jekins 集成 Maven 构建 Java 应用程序
Jekins 集成 Git 搭建 GitLab 服务器
Jenkins 集成 GitLab 管理 Java 应用程序
Jenkins Security 用户角色管理
Jenkins 自动化任务
Jenkins 流水线 Pipeline
Jenkins 实战之集成 Ansible
Jenkins 实战之搭建 CI/CD 流水线
02 Docker
Jenkins 基础&安装流程
虚拟化技术 vs 容器化原理
Docker client 命令详解
Docker 交互指令
Docker 镜像概念
Docker 实战部署 Web 服务
Docker-compose 部署多容器应用
Docker 进阶:container 概念详解
Docker 进阶:network 概念详解
Docker 进阶:image 概念详解
Docker 进阶:volume 概念详解
Docker Swarm:微服务项目容器化部署
Docker compose vs Docker Swarm
Docker 私服搭建
03 Kubernetes
K8s 集群搭建
Harbor 仓库搭建
K8s 基本指令入门
K8s 核心组件原理
K8s 网络原理
K8s 负载均衡
POD 调度详解、重启策略
容器探针
POD 核心原理剖析
Ingress 七层负载君合实战方案
ReplicaSet 剖析
configmap 资源对象剖析
K8s 存储解析
PVC 和 PV 深度剖析
headless Service 原理解析
statefulSet 原理解析
有状态服务部署