├── v1.0 ├── v1.0.jpg ├── v1.0.png ├── v1.0.xmind └── v1.0.md ├── README.md └── .gitignore /v1.0/v1.0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaCourse00/java-knowledge-map/HEAD/v1.0/v1.0.jpg -------------------------------------------------------------------------------- /v1.0/v1.0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaCourse00/java-knowledge-map/HEAD/v1.0/v1.0.png -------------------------------------------------------------------------------- /v1.0/v1.0.xmind: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JavaCourse00/java-knowledge-map/HEAD/v1.0/v1.0.xmind -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Java知识图谱(Java进阶训练营) 2 | 3 | [TOC] 4 | 5 | ## 图谱 6 | 7 | ![v1.0](v1.0/v1.0.jpg) 8 | 9 | ## MD结构 10 | 11 | [Java 知识图谱 v1.0.md](v1.0\v1.0.md) 12 | 13 | ## Xmind文件 14 | 15 | [Java 知识图谱 v1.0.xmind](v1.0\v1.0.xmind) -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled class file 2 | *.class 3 | 4 | # Log file 5 | *.log 6 | 7 | # BlueJ files 8 | *.ctxt 9 | 10 | # Mobile Tools for Java (J2ME) 11 | .mtj.tmp/ 12 | 13 | # Package Files # 14 | *.jar 15 | *.war 16 | *.nar 17 | *.ear 18 | *.zip 19 | *.tar.gz 20 | *.rar 21 | 22 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 23 | hs_err_pid* 24 | -------------------------------------------------------------------------------- /v1.0/v1.0.md: -------------------------------------------------------------------------------- 1 | # Java进阶训练营 2 | 3 | ## 分布式服务 4 | 5 | ### 基础知识 6 | 7 | - RPC 8 | - 通信与数据协议 9 | - WebService 10 | - Hessian 11 | - REST 12 | - gRPC 13 | - Protocol Buffers 14 | 15 | ### 服务化 16 | 17 | - 服务治理 18 | - 配置管理 19 | - 注册发现 20 | - 服务分组 21 | - 版本管理 22 | - 集群管理 23 | - 负载均衡 24 | - 限流与降级熔断等 25 | 26 | ### 框架 27 | 28 | - Apache Dubbo的功能与原理分析 29 | - Spring Cloud体系 30 | - 案例实践 31 | 32 | ### 微服务 33 | 34 | - 微服务架构的6个最佳实践 35 | - 从微服务到服务网格、云原生的介绍 36 | 37 | ## 分布式缓存 38 | 39 | - 缓存的应用场景,缓存加载策略与失效策略,缓存与数据库同步等 40 | - 缓存预热、缓存失效、缓存击穿、缓存雪崩、多级缓存、缓存与 Spring+ORM 框架集成 41 | - 缓存中间件,Redis(几种常用数据结构、分布式锁、Lua 支持、集群),Hazelcast(Java 数据结构、内存网格、事务支持、集群) 42 | - 缓存的应用场景,排行数据展示,分布式 ID 生成,Session 共享,热点账户操作等 43 | 44 | ## 分布式消息 45 | 46 | ### 消息队列的基本知识 47 | 48 | - Broker 与 Client 49 | - 消息模式(点对点、发布订阅) 50 | - 消息协议(STOMP、JMS、AMQP、OpenMessaging 等) 51 | - 消息 QoS(最多一次、最少一次、有且仅有一次) 52 | - 消息重试 53 | - 延迟投递 54 | - 事务性 55 | - 消息幂等与去重 56 | 57 | ### 消息中间件 58 | 59 | - ActiveMQ 的简单入门 60 | - Kafka 的基本功能与使用 61 | - 高可用(集群、分区、副本) 62 | - 性能 63 | - RabbitMQ 和 RocketMQ,Pulsar 的简单介绍 64 | 65 | ### 消息的 4 个主要功能 66 | 67 | - 搭建一个 Kafka 集群 68 | - 实现常用的消息发送、消息消费功能 69 | 70 | ### 典型使用场景 71 | 72 | - 使用 MQ 实现交易订单的处理 73 | - 动手实现一个简化版的消息队列 74 | 75 | ## 分布式系统架构 76 | 77 | 业务分析、功能性需求、非功能性需求、高可用、高性能、稳定性、易用性、扩展性、可维护性、安全性等 78 | 79 | “4+1” Views、TOGAF、架构方案、业务架构、数据架构、设计文档、技术选型、部署文档、运维文档等 80 | 81 | 分布式服务化、分布式消息中间件、分布式缓存、分布式文件系统、监控告警系统、权限与认证中心等 82 | 83 | ## 业务系统重构 84 | 85 | - 分析系统现状,给出明确的各项指标,了解各方对指标的期望和差距 86 | - 给出多个可选的改造或重做方案,明确各方案的优缺点,提供决策依据 87 | - 方案上的适当妥协,各方达成一致,快速推动重构工作启动和展开 88 | - 细化具体的方案细节,形成路径,争取足够的资源,恰当的时间窗口 89 | - 小步快跑,迅速取得阶段性成果,不影响业务整体的规划和发展 90 | - 保持业务连续性,多做监控、兼容和特性开关,给改造加上保险丝和缓冲区 91 | - 及时评估改进进展,更新方案和路线、资源和时间,推动改造顺利进行 92 | - 复盘总结相关经验,提出更多建议和改进办法,实现经验分享,方法复用 93 | 94 | ## 架构师修炼之道 95 | 96 | - 分享我个人的成长第一手经验,升级打怪,成为架构师、技术专家、技术总监 97 | - 六个硬能力:技术能力、设计能力、抽象能力、管理能力、结构化思考能力、系统化分析能力 98 | - 七个软实力:大局观能力、沟通协作能力、持续学习能力、关注力、探索力、决策力、自我驱动力 99 | 100 | ## 超越分库分表 101 | 102 | ### 数据库多种扩容模式 103 | 104 | - Binlog,Row/Statement 模式 105 | - 读写分离/主从复制 106 | - 主从切换 107 | 108 | ### 数据库垂直拆分与水平拆分 109 | 110 | - 分库分表 111 | - 分布式主键 112 | - 分表算法 113 | - SQL 限制 114 | - 数据迁移 115 | - 实时同步 116 | 117 | ### 分库分表框架 118 | 119 | - TDDL 120 | - Sharding-JDBC 121 | - MyCat 122 | - Sharding-Proxy 123 | 124 | ### 最佳实践 125 | 126 | - 数据库拆分 127 | - 分布式事务 128 | - 多租户 129 | 130 | ## 系统性能优化 131 | 132 | ### 系统可观测性 133 | 134 | - 日志 135 | - 调用链 136 | - 指标度量 137 | - CPU、内存、磁盘/网络 IO 138 | 139 | ### MySQL 140 | 141 | - 锁 142 | - 事务 143 | - 索引 144 | - 并发级别 145 | - 死锁 146 | - 执行计划 147 | - 慢SQL统计 148 | - 参数优化 149 | 150 | ### 库表设计优化 151 | 152 | - 引擎选择 153 | - 表结构优化设计 154 | - 列类型选择 155 | - 索引设计 156 | - 外键 157 | 158 | ### SQL查询优化 159 | 160 | - 索引选择 161 | - 连接优化 162 | - 聚合查询优化 163 | - Union 优化 164 | - 子查询优化 165 | - 条件优化 166 | 167 | ### 场景分析 168 | 169 | - 主键生成与优化 170 | - 高效分页 171 | - 快速导入导出数据 172 | - 解决死锁问题 173 | 174 | ## 开发框架 175 | 176 | ### Spring技术体系 177 | 178 | - core 179 | - Web 180 | - MVC 181 | - Data 182 | - messaging 183 | - Boot 184 | 185 | ### ORM 技术体系 186 | 187 | - JPA 188 | - Hibernate 189 | - Mybatis 190 | 191 | ## 并发编程 192 | 193 | ### 多线程基础 194 | 195 | - 线程、锁、synchronized、volatile/final、sleep/await/notify/fork/join 196 | 197 | ### 并发包基础 198 | 199 | - 线程池 Executor 200 | - AQS/CAS 201 | - Atomic 原子操作 202 | - Lock/ReadWriteLock/Condition 203 | - Callable/Future 204 | 205 | ### 并发容器与工具 206 | 207 | - BlockingQueue/CopyOnWriteList/ConcurrentHashMap 208 | - CountDownLatch/CyclicBarrier/Semaphore 209 | 210 | ### 其它 211 | 212 | - 万金油 ThreadLocal,化繁为简 Java8 parallelStream 213 | 214 | ## NIO 技术 215 | 216 | ### 基础概念 217 | 218 | - 同步/异步 219 | - 阻塞/非阻塞 220 | - BIO、NIO、AIO 221 | - Reactor/Proactor 222 | 223 | ### 核心基础类 224 | 225 | - ByteBuff/Acceptor/Channel/Handler 226 | - NioEventLoopGroup/EventLoop、bossGroup/workerGroup 227 | 228 | ### Netty技术原理 229 | 230 | - Netty 的启动和执行过程 231 | - 线程模型 232 | - 事件驱动 233 | - 服务端和客户端的使用方式 234 | 235 | ### Netty应用场景 236 | 237 | - 常见的 API Gateway/HTTP Server 238 | - SEDA 原理 239 | - 业务 API 网关的功能和结构 240 | 241 | ### 性能指标 242 | 243 | - Throughout/TPS/QPS 244 | - Latency/P99/P95/P90 245 | - ApacheBench/Wrk/JMeter/LoadRunner 246 | 247 | ## JVM进阶 248 | 249 | ### 核心知识 250 | 251 | - JVM 基础知识 252 | - Java 字节码技术 253 | - JVM 类加载器 254 | - JVM 内存模型 255 | - JVM 启动参数详解 256 | 257 | ### 工具介绍 258 | 259 | - JDK 内置命令行工具 260 | - JDK 内置图形界面工具 261 | - JDWP 简介 262 | - JMX 与相关工具 263 | 264 | ### GC讲解 265 | 266 | - 常见的 JVM GC 算法(Parallel GC/CMS GC/G1 GC)基本原理和特点 267 | - 新一代 GC 算法(Java11 ZGC/Java12 Shenandoah) 和 Oracle GraalVM 268 | 269 | ### 系统调优 270 | 271 | - GC 日志解读与分析 272 | - JVM 的线程堆栈等数据分析 273 | - 内存 dump 和内存分析工具 274 | - fastThread 相关工具以及面临复杂问题时的几个高级工具的使用 275 | - JVM 问题排查分析的常用手段、性能调优的最佳实践经验等 276 | 277 | ### JVM 相关的常见面试问题必知必会、全面分析 278 | 279 | --------------------------------------------------------------------------------