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 原理解析

  • 有状态服务部署


Java大纲
http://yething.github.io/posts/2302726656.html
作者
Odyssey
发布于
2024年10月31日
许可协议