Skip to content

Latest commit

 

History

History
852 lines (651 loc) · 49.8 KB

File metadata and controls

852 lines (651 loc) · 49.8 KB

JAVA高级架构师技术栈 CookBook

GitHub Release GitHub Stars License Last Commit

任何技能都可以通过"刻意练习"达到融会贯通的境界。

就像烹饪一样,CookBook 希望用一份系统化的 Java 技术手册,陪你把每一次练习都变成可复用的能力。

欢迎关注与支持

如果这些内容对你有帮助,欢迎点一个 Star 支持一下仓库。

你的每一个 Star,都是我持续更新高质量 Java 技术内容的动力,也能让更多开发者更快发现这份资料。


项目总览

CookBook 是一个以 Java 技术栈为核心的全栈式知识仓库,覆盖从 基础语法 → 并发编程 → JVM 调优 → 分布式系统 → 微服务架构 → 云原生的完整技术链路。

仓库结构

CookBook/
├── 📚 知识文档层          # 按技术域沉淀的专题内容(Markdown)
│   ├── 数据结构和算法      # 28 篇文档:基础结构 + 算法 + 工程实践
│   ├── Java核心           # 枚举、注解、反射、动态代理、线程池
│   ├── JVM               # 参数、调优、GC、内存模型
│   ├── Spring生态         # Spring / SpringBoot / SpringCloud
│   ├── 数据存储            # MySQL / Redis / MyBatis
│   ├── 消息队列            # RocketMQ / Kafka
│   ├── 分布式系统          # Zookeeper / Dubbo / 分布式事务
│   ├── 网络与通信          # Netty / Nginx / HTTP
│   ├── 架构设计            # 高可用 / 微服务 / 缓存一致性
│   ├── 工程工具            # Maven / Git / Linux / Jenkins
│   ├── 设计模式            # 12 种经典模式详解
│   └── 其他专题            # Python / Lua / JSON / 测试...
│
├── 💻 示例代码层          # 可运行、可阅读的实践代码
│   └── src/main/java/org/byron4j/cookbook/
│       ├── javacore/      # Java 核心机制演示
│       ├── netty/         # NIO/Netty 网络编程
│       ├── rocketmq/      # 消息队列生产者/消费者
│       ├── zk/            # Zookeeper 分布式协调
│       └── ...
│
├── 🔧 工程化层            # 标准化构建与测试
│   ├── pom.xml            # Maven 构建配置
│   ├── mvnw               # Maven Wrapper
│   └── src/test/          # 单元测试与集成测试
│
└── 📋 项目文档
    ├── README.md          # 本文件(全库导航)
    ├── PROJECT_OVERVIEW.md # 项目架构总览
    └── README-CHANGELOG.md # 更新日志

核心关键词

Java Spring Boot Spring Cloud 微服务架构 分布式系统 高并发 JVM 调优 Netty RocketMQ Redis MySQL Zookeeper Dubbo Nginx 设计模式 数据结构与算法 限流算法 布隆过滤器 一致性哈希 分布式锁 负载均衡 工程实践 面试准备


学习深度分层(基础 → 中级 → 高级 → 资深专家)

1) 基础层

目标:夯实 Java 基础语法、常用机制与基础框架认知。

  • 推荐先读:Java核心(枚举、注解、反射、动态代理)
  • 配套基础:数据结构和算法Spring/1-IOC相关.md
  • 产出能力:能独立完成常规业务编码与基础问题排查

2) 中级层

目标:形成并发、JVM、数据库与主流框架的系统理解。

  • 推荐重点:Java核心/线程池JVMSpringAOPSpring事务MyBatisRedis
  • 代码建议:阅读 src/main/java/org/byron4j/cookbook/javacore
  • 产出能力:能负责模块设计、性能基础优化与常见故障定位

3) 高级层

目标:掌握高并发与分布式系统核心组件及治理能力。

  • 推荐重点:分布式高并发SpringCloudRocketMQNginxZookeeper
  • 代码建议:阅读 src/main/java/org/byron4j/cookbook/nettyrocketmqzk
  • 产出能力:能完成服务治理、限流降级、消息异步化与高可用设计

4) 资深专家层

目标:建立架构方法论与源码级分析、性能调优与工程治理能力。

  • 推荐重点:架构/内容/架构内容.md架构/高可用架构/云原生RocketMQ源码片段阅读javassist指南
  • 综合能力:架构权衡、容量评估、可观测性建设、复杂问题根因分析
  • 作者向建议:持续维护目录一致性与版本化标记,保持"知识图谱 + 示例代码"同步演进

学习深度分层(基础 → 中级 → 高级 → 资深专家)

1) 基础层

目标:夯实 Java 基础语法、常用机制与基础框架认知。

  • 推荐先读:Java核心(枚举、注解、反射、动态代理)
  • 配套基础:数据结构和算法Spring/1-IOC相关.md
  • 产出能力:能独立完成常规业务编码与基础问题排查

2) 中级层

目标:形成并发、JVM、数据库与主流框架的系统理解。

  • 推荐重点:Java核心/线程池JVMSpringAOPSpring事务MyBatisRedis
  • 代码建议:阅读 src/main/java/org/byron4j/cookbook/javacore
  • 产出能力:能负责模块设计、性能基础优化与常见故障定位

3) 高级层

目标:掌握高并发与分布式系统核心组件及治理能力。

  • 推荐重点:分布式高并发SpringCloudRocketMQNginxZookeeper
  • 代码建议:阅读 src/main/java/org/byron4j/cookbook/nettyrocketmqzk
  • 产出能力:能完成服务治理、限流降级、消息异步化与高可用设计

4) 资深专家层

目标:建立架构方法论与源码级分析、性能调优与工程治理能力。

  • 推荐重点:架构/内容/架构内容.md架构/高可用架构/云原生RocketMQ源码片段阅读javassist指南
  • 综合能力:架构权衡、容量评估、可观测性建设、复杂问题根因分析
  • 作者向建议:持续维护目录一致性与版本化标记,保持“知识图谱 + 示例代码”同步演进

技术全景图

                         Java 架构师技术栈全景
                         
    ┌─────────────────────────────────────────────────────┐
    │                     基础层                           │
    │  Java SE │ 数据结构与算法 │ 设计模式 │ SQL基础        │
    └────────────────────┬────────────────────────────────┘
                         │
    ┌────────────────────┼────────────────────────────────┐
    │                     ▼                                │
    │                  中级层                              │
    │  ┌──────────┐ ┌──────────┐ ┌──────────┐            │
    │  │  Spring  │ │  MyBatis │ │  MySQL   │            │
    │  │  核心    │ │  ORM框架 │ │  数据库   │            │
    │  └──────────┘ └──────────┘ └──────────┘            │
    │  ┌──────────┐ ┌──────────┐ ┌──────────┐            │
    │  │  JVM     │ │  并发编程 │ │  Redis   │            │
    │  │ 调优     │ │  多线程  │ │  缓存    │            │
    │  └──────────┘ └──────────┘ └──────────┘            │
    └────────────────────┬────────────────────────────────┘
                         │
    ┌────────────────────┼────────────────────────────────┐
    │                     ▼                                │
    │                  高级层                              │
    │  ┌──────────┐ ┌──────────┐ ┌──────────┐            │
    │  │SpringCloud│ │ RocketMQ │ │ Netty   │            │
    │  │ 微服务   │ │ 消息队列 │ │ 网络通信│            │
    │  └──────────┘ └──────────┘ └──────────┘            │
    │  ┌──────────┐ ┌──────────┐ ┌──────────┐            │
    │  │Zookeeper │ │  Nginx   │ │  Docker │            │
    │  │ 协调服务 │ │ 网关负载 │ │ 容器化  │            │
    │  └──────────┘ └──────────┘ └──────────┘            │
    └────────────────────┬────────────────────────────────┘
                         │
    ┌────────────────────┼────────────────────────────────┐
    │                     ▼                                │
    │                资深专家层                            │
    │  ┌──────────┐ ┌──────────┐ ┌──────────┐            │
    │  │ 架构设计 │ │ 源码阅读 │ │ 性能调优 │            │
    │  │ 高可用   │ │ AQS/Netty│ │ 全链路   │            │
    │  └──────────┘ └──────────┘ └──────────┘            │
    │  ┌──────────┐ ┌──────────┐ ┌──────────┐            │
    │  │ 分布式   │ │ 云原生   │ │ 工程治理 │            │
    │  │ 事务/锁  │ │ K8s/ServiceMesh │  CI/CD  │            │
    │  └──────────┘ └──────────┘ └──────────┘            │
    └─────────────────────────────────────────────────────┘

快速导航建议

  • 新读者:按"基础 → 中级 → 高级 → 资深专家"顺序阅读,建议从 数据结构和算法 开始。
  • 面试准备:重点复习 Java核心JVM数据结构和算法RedisSpring设计模式分布式系统
  • 作者/维护者:优先维护 README 导航与目录一致性,减少失效链接与重复入口。
  • 进阶读者:文档学习与 src 示例代码并行阅读,优先关注 Netty、RocketMQ、Zookeeper 三类链路示例。
  • 架构师:直接跳到 架构分布式高并发Nginx 板块。

快速开始

环境准备

# 1. 克隆仓库
git clone https://github.com/Byron4j/CookBook.git
cd CookBook

# 2. 编译运行示例代码
./mvnw clean compile

# 3. 运行测试
./mvnw test

# 4. 运行特定测试类
./mvnw -Dtest=AlgorithmBasicsTest test

阅读建议

第 1 周:Java 基础强化
├── Java核心/1-Java枚举.md
├── Java核心/2-Java注解.md
├── Java核心/3-Java反射.md
└── Java核心/4-动态代理.md

第 2-3 周:数据结构与算法
├── 数据结构:线性表 → 链表 → 栈/队列 → 哈希 → 树 → 图
└── 算法:排序(快排/归并/堆排) → 二分查找 → DFS/BFS → DP/贪心

第 4 周:并发与 JVM
├── Java核心/5-线程池.md
├── Java核心/6-AQS-抽象队列同步器.md
├── Java核心/7-ReentrantLock重入锁.md
├── Java核心/8-Java并发编程核心机制.md
├── JVM/1-JVM参数.md
└── JVM/2-jstat命令详解.md

第 5-6 周:数据库与缓存
├── MySQL/2-MySql存储引擎.md
├── MySQL/3-InnoDB存储引擎.md
├── Redis/1-Redis内存淘汰策略.md
├── Redis/2-Redis数据类型以及数据结构实现.md
└── Redis/6-Redis分布式锁.md

第 7-8 周:框架与微服务
├── Spring/1-IOC相关.md
├── Spring/3-SpringAOP.md
├── Spring/6-Spring事务.md
├── SpringBoot/1-SpringBoot自动装配原理.md
├── SpringBoot/2-SpringBoot起步依赖与Actuator.md
├── SpringCloud/1-Eureka服务注册发现.md
└── SpringCloud/2-Ribbon负载均衡.md

第 9-10 周:分布式系统
├── 数据结构和算法/算法/14-一致性哈希.md
├── 数据结构和算法/算法/16-分布式ID生成算法.md
├── 数据结构和算法/算法/17-分布式锁算法.md
├── RocketMQ/1-RocketMQ核心知识.md
└── Zookeeper/第1章-Zk概览.md

第 11-12 周:架构与高可用
├── 架构/微服务/01-为什么大公司一定要使用微服务.md
├── 架构/高可用/01-高可用、负载均衡不得不说的事.md
├── Nginx/2-Nginx基础入门.md
└── Nginx/7-负载均衡实现实践.md

推荐阅读顺序(可跳转)

路线 A:基础到中级

  1. 数据结构和算法
  2. JAVA核心高级知识点
  3. Spring
  4. MySQL
  5. Redis

路线 B:中级到高级

  1. JVM
  2. SpringCloud
  3. RocketMQ
  4. NIO/Netty
  5. Zookeeper

路线 C:高级到资深专家

  1. 架构
  2. Nginx
  3. Maven
  4. Javassist
  5. 设计模式

JAVA程序猿笔试面试干货分享

IDEA-2019-1永久激活教程

刷题吧

数据结构和算法

数据结构

  • 🎉01-线性表 - 数组实现、扩容策略、随机访问 O(1)
  • 🎉02-链表 - 单链表、双链表、循环链表、LRU 缓存实现
  • 🎉03-栈、队列 - LIFO/FIFO、双端队列、括号匹配、循环队列
  • 🎉04-哈希 - 哈希函数、拉链法/开放寻址、负载因子、Java HashMap 原理
  • 🎉05-树 - 二叉树、满二叉树、完全二叉树、前序/中序/后序/层序遍历
  • 🎉06-二叉查找树 - BST 性质、插入删除、三种删除场景、退化问题
  • 🎉07-红黑树 - 自平衡、颜色约束、插入修复、TreeMap/TreeSet 实现
  • 🎉08-AVL树 - 严格平衡、平衡因子、LL/RR/LR/RL 四种旋转
  • 🎉09-B树 - 多路平衡查找树、B+树、MySQL InnoDB 索引、分裂合并
  • 🎉10-图 - 邻接矩阵/邻接表、DFS/BFS、Dijkstra 最短路径

基础算法

排序算法

  • 🎉1-快速排序 - 分治策略、分区过程、基准选择、时间复杂度分析
  • 🎉2-归并排序 - 分治合并、稳定排序、链表排序、递归树
  • 🎉3-堆排序 - 大顶堆/小顶堆、堆化过程、原地排序、Top K 问题
  • 🎉4-冒泡排序 - 交换排序、优化版本、鸡尾酒排序、教学用途
  • 🎉5-选择排序 - 选择类排序、交换次数少、不稳定排序、堆排序对比
  • 🎉6-插入排序 - 插入类排序、二分插入优化、小数据量首选、近乎有序 O(n)

搜索算法

  • 🎉7-二分查找 - 有序数组查找、边界问题、lower_bound/upper_bound、查找边界

图算法

  • 🎉8-深度优先搜索 - DFS 递归/迭代实现、回溯算法、路径搜索、连通性判断、拓扑排序
  • 🎉9-广度优先搜索 - BFS 队列实现、层级遍历、无权图最短路径、社交网络分析

算法思想

  • 🎉10-动态规划 - 最优子结构、重叠子问题、无后效性、爬楼梯、0-1 背包、最长公共子序列
  • 🎉11-贪心算法 - 贪心选择性质、活动选择问题、霍夫曼编码、分数背包、区间调度

工程实践算法(Java 技术栈)

  • 🎉12-限流算法 - 计数器/滑动窗口/令牌桶/漏桶算法、Sentinel、Redis 分布式限流、Guava RateLimiter
  • 🎉13-布隆过滤器 - 概率型数据结构、缓存穿透防护、误判率计算、计数布隆过滤器、Guava/RedisBloom
  • 🎉14-一致性哈希 - 哈希环、虚拟节点、数据倾斜处理、Redis Cluster、Nginx 负载均衡、Ketama 算法
  • 🎉15-负载均衡算法 - 轮询/加权轮询/随机/最少连接/源地址哈希、Ribbon、Nginx、Kubernetes Service
  • 🎉16-分布式ID生成算法 - Snowflake、Leaf(号段模式/Snowflake模式)、美团/百度/滴滴方案、时钟回拨
  • 🎉17-分布式锁算法 - Redis RedLock/Redisson、数据库排他锁、Zookeeper Curator、etcd、锁续期、死锁处理
  • 🎉18-跳表 - 概率性多层链表、Redis ZSet 实现、Java ConcurrentSkipListMap、LevelDB MemTable、范围查询

Git

快速导航

场景 推荐文档
Git 入门 基础入门与核心概念
团队协作 分支管理与工作流
进阶技巧 高级技巧与实战
代码审查 多人协作与代码审查
CI/CD Jenkins自动构建集成
微服务 大型项目与微服务架构

原有资源

Javassist

JAVA面试汇总

JAVA核心高级知识点

🌰SE专题

🌰并发专题

  • 🌰并发源码解读类
    • 1.AQS: AbstractQueuedSynchronizer
    • 2.重入锁:ReentrantLock
  • 🌰Java并发编程核心机制 - volatile、synchronized、CAS、ThreadLocal、CompletableFuture、并发集合

XML

MySQL

Spring

SpringBoot

SpringCloud

Nginx

Maven

Jenkins

设计模式

MyBatis

Redis

Kafka

RocketMQ

NIO/Netty

Tomcat(建设中)

计划内容:Tomcat 架构原理、连接器(Connector)、容器(Container)、类加载机制、线程模型、性能调优、嵌入式 Tomcat 启动流程

HttpClient4(建设中)

计划内容:HttpClient 连接池配置、请求超时设置、SSL/TLS 配置、代理设置、异步请求、连接复用与 Keep-Alive 机制

  • 🎽基础

  • 🎽高级

JVM

Zookeeper

Dubbo

Atomikos分布式事务方案

Code Refactoring(代码重构)

Lua

Linux

原有资源

Python3

JSON

  • 🎉0-JSON框架概览与对比 - JSON发展历程、Jackson/Gson/Fastjson2对比、性能测试、安全分析、选型建议、迁移指南
  • 🎉1-Jackson深度指南 - ObjectMapper配置、注解详解、树模型、流式API、自定义序列化器、视图、Mixin、Spring Boot集成、性能优化
  • 🎉2-Gson使用指南 - TypeToken泛型处理、TypeAdapter自定义、@SerializedName/@Expose注解、树模型操作、Spring Boot集成
  • 🎉3-Fastjson2使用指南 - 性能优化、JSONPath查询、JSONB二进制格式、安全配置、autoType白名单、Spring Boot集成
  • 🎉5-SpringBoot-JSON集成最佳实践 - Jackson/Gson/Fastjson2集成、统一响应格式、自定义序列化器、JSON视图、安全配置、性能优化

快速导航

场景 推荐框架 文档
Spring Boot 项目 Jackson 深度指南
追求极致性能 Fastjson2 使用指南
Android 移动端 Gson 使用指南
企业级应用 Jackson 最佳实践

单元测试与Mockito

快速导航

场景 推荐文档
JUnit 5 入门 单元测试基础与JUnit5
Mock 依赖 Mockito核心用法详解
高级 Mock Mockito高级特性与最佳实践
Spring Boot 测试 SpringBoot测试实战
覆盖率与质量 测试覆盖率与质量保障

原有资源

分布式配置中心

百度Disconf

加密算法与安全

架构

🏡SOA面向服务架构

🏡微服务

外部资源

🏡云原生

面试专区

专为 Java 面试准备的知识汇总,覆盖阿里、字节、腾讯等大厂高频考点:

数据结构与算法面试

  • 必会排序:快速排序、归并排序、堆排序(手写代码 + 时间复杂度分析)
  • 必会查找:二分查找及变体(查找第一个/最后一个、旋转数组查找)
  • 高频 DP:爬楼梯、最长递增子序列、最长公共子序列、0-1 背包
  • 工程算法:一致性哈希、限流算法、布隆过滤器、分布式锁(场景题)

Java 基础面试

  • 集合框架:HashMap 源码(扰动函数、扩容、树化)、ConcurrentHashMap 分段锁/CAS
  • 并发编程:AQS 原理、ReentrantLock 与 synchronized 对比、线程池参数与拒绝策略
  • JVM:内存模型、GC 算法(CMS/G1/ZGC)、类加载机制、OOM 排查

框架面试

  • Spring:IOC/AOP 原理、事务传播机制、循环依赖解决、Bean 生命周期
  • SpringBoot:自动装配原理、Starter 自定义、Actuator 监控
  • SpringCloud:Eureka 服务发现、Ribbon 负载均衡、Hystrix 熔断、Gateway 网关

分布式面试

  • Redis:缓存穿透/击穿/雪崩解决方案、持久化 RDB/AOF、Cluster 分片、分布式锁 Redisson
  • RocketMQ:消息模型、事务消息、顺序消息、重复消费、消息堆积处理
  • MySQL:索引原理(B+树)、事务隔离级别、MVCC、慢 SQL 优化、分库分表
  • 分布式理论:CAP/BASE、分布式事务(2PC/3PC/TCC/Seata)、幂等性设计

架构设计面试

  • 高并发:限流降级(Sentinel)、秒杀系统设计、短链系统、排行榜设计
  • 微服务:服务拆分原则、注册中心选型、配置中心、链路追踪(SkyWalking)
  • 网络:TCP/HTTP 原理、Netty 线程模型、WebSocket、长连接与短连接

工程实践面试

  • 单元测试:JUnit 5、Mockito、Spring Boot Test、TDD、代码覆盖率
  • 安全:JWT、OAuth2、HTTPS、SQL注入、XSS、CSRF防护
  • 性能优化:JVM调优、SQL优化、缓存优化、JMeter压测

生产线上问题处理

50个真实生产环境问题案例,涵盖CPU、内存、磁盘、网络、数据库、JVM、中间件等场景

  • 🎉0-生产问题处理总览 - 问题分类体系、排查通用流程、常用排查工具、50个案例索引
  • 🎉1-CPU相关问题案例 - 案例1-8:正则表达式灾难性回溯、死循环、频繁GC、序列化CPU飙高、锁竞争
  • 🎉2-内存相关问题案例 - 案例9-16:大List导致OOM、缓存未过期、文件流未关闭、线程泄漏、元空间溢出、堆外内存泄漏
  • 🎉3-磁盘IO相关问题案例 - 案例17-22:日志打满磁盘、临时文件未清理、inode耗尽、IO等待、文件句柄泄漏
  • 🎉4-网络连接相关问题案例 - 案例23-28:连接池耗尽、TIME_WAIT过多、CLOSE_WAIT泄漏、端口耗尽、DNS超时
  • 🎉5-数据库相关问题案例 - 案例29-36:慢查询、锁等待、连接池耗尽、主从延迟、索引失效、死锁、深度分页
  • 🎉6-JVM相关问题案例 - 案例37-42:频繁Full GC、GC停顿过长、类加载冲突、线程死锁、线程池耗尽、栈溢出
  • 🎉7-中间件相关问题案例 - 案例43-50:缓存穿透/雪崩/溢出、MQ消息堆积/消费失败、Nginx 502/504、Feign超时

快速导航

场景 推荐文档 案例范围
CPU 飙高 CPU相关问题案例 案例 1-8
内存溢出 内存相关问题案例 案例 9-16
磁盘问题 磁盘IO相关问题案例 案例 17-22
网络问题 网络连接相关问题案例 案例 23-28
数据库问题 数据库相关问题案例 案例 29-36
JVM 问题 JVM相关问题案例 案例 37-42
中间件问题 中间件相关问题案例 案例 43-50

研发管理

Scrum

如何贡献

欢迎提交 PR 或 Issue,共同完善这份 Java 技术 CookBook:

  1. Fork 本仓库
  2. 创建你的分支git checkout -b feature/your-feature
  3. 提交改动git commit -am 'Add some feature'
  4. 推送到分支git push origin feature/your-feature
  5. 创建 Pull Request

贡献规范

  • 文档采用 Markdown 格式,代码块标注语言类型
  • 图片放在 pictures/ 目录,使用相对路径引用
  • 新增文档后同步更新本 README.md 的导航索引
  • 保持与现有文档风格一致(标题层级、代码注释、ASCII 图示)

待办清单

  • Tomcat 架构与调优专题
  • HttpClient4 高级用法
  • Jenkins Pipeline 流水线
  • Kafka 高级特性与源码分析
  • Docker / Kubernetes 容器化专题
  • Seata 分布式事务实战
  • ELK 日志采集与分析
  • Prometheus + Grafana 监控体系

术语

常用技术术语速查:

术语 说明
QPS 每秒查询数(Queries Per Second)
TPS 每秒事务数(Transactions Per Second)
RT 响应时间(Response Time)
CAP 一致性、可用性、分区容错性定理
BASE 基本可用、软状态、最终一致性
ACID 原子性、一致性、隔离性、持久性
OOM 内存溢出(Out Of Memory)
GC 垃圾回收(Garbage Collection)
IO 输入/输出,常指磁盘/网络 IO
NIO 非阻塞 IO(New IO)
AIO 异步 IO(Asynchronous IO)
RPC 远程过程调用(Remote Procedure Call)
SOA 面向服务架构(Service Oriented Architecture)
ESB 企业服务总线(Enterprise Service Bus)
CI/CD 持续集成/持续部署
SLA 服务等级协议(Service Level Agreement)

精华资源链接阅读

GitHub资源分享

Star History

Star History Chart