导图社区 Java架构师进阶
Java架构师,首先要是一个Java程序员,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池等文图。本思维导图Java架构师进阶知识图谱,自学、巩固知识必备!
编辑于2019-12-02 02:37:18Java架构师进阶
架构师硬核编码能力
mybatis
架构和流程分析
重要对象之Configuration、SqlSessionFactory、SqlSession、SqlSource、SqlNode、TypeHandler等的分析及讲解
手写mybatis框架之解析配置文件
SqlSource与SqlNode解析分析
解析配置文件源码阅读
全局配置文件加载流程
创建Configuration对象
mappers子标签解析流程
映射文件加载流程
sql子标签解析流程
select\insert\update\delete子标签解析流程
创建MapperStatement对象
获取SqlSource对象
获取StatementType
手写mybatis框架之SqlSession执行流程
SqlSource与SqlNode执行逻辑分析
SqlSession执行流程源码阅读
获取BoundSql流程
获取Statement流程
设置参数流程
处理结果集映射流程
四大组件介绍
Executor
StatementHandler
ParameterHandler
ResultSetHandler
自定义插件开发
设计模式
七大设计原则
开闭原则
单一职责原则
接口隔离原则
依赖倒置原则
里式替换原则
组合复用原则
迪米特法则
23种设计模式
创建型
简单工厂模式
工厂方法模式
抽象工厂模式
原型模式
单例模式
构建者模式
结构型
适配器模式
装饰器模式
代理模式
行为型
模版方法模式
策略模式
spring
spring家族体系介绍及核心概念介绍
架构分析
Ioc概念分析
Aop概念分析
spring Ioc源码阅读
Ioc容器初始化流程
加载解析xml流程
解析BeanDefinition流程
创建BeanDefinition流程
PropertyValues属性解析流程
注册BeanDefinition流程
Bean创建流程
bean实例化流程
构造器反射创建对象
属性填充流程(DI)
StringTypeValue属性处理流程
类型转换
RuntimeBeanReference属性处理流程
bean初始化流程
BeanPostProcessor执行流程
aop产生动态代理对象流程
手写spring ioc模块基础容器BeanFactory
分析BeanFactory继承体系
分析BeanDefinition继承体系
分析ApplicationContext继承体系
阅读spring ioc源码高级容器ApplicationContext
分析循环依赖问题
spring aop核心概念及原理介绍
spring aop源码阅读
spring事务源码阅读
spring常见面试问题分析
springmvc
springmvc执行流程分析
六大组件介绍
mvc三大组件分析
DispatcherServlet
Handler
View
其他三大组件分析
HandlerMapping
HandlerAdapter
ViewResolver
策略模式与适配器模式讲解
手写springmvc1.0版本
手写springmvc2.0版本
注解方式处理器handler
@Controller
@RequestMapping
@ResponseBody
注解方式的处理器映射器的初始化和执行流程
注解方式的处理器适配器的初始化和执行流程
参数设置
返回值处理
springmvc源码阅读
DispatcherServlet主流程
初始化流程
HandlerMapping初始化流程
HandlerAdapter初始化流程
ViewResolver初始化流程
访问处理流程
获取Handler流程
执行Handler流程
拦截器处理流程
RequestMappingHandlerMapping工作流程
初始化流程
获取RequestMappingInfo对象
创建HandlerMethod对象,并建立映射关系
处理流程
获取请求url
匹配RequestMappingInfo
找到HandlerMethod对象
RequestMappingHandlerAdapter工作流程
初始化流程
HandlerMethodArgumentResolver初始化
HandlerMethodReturnValueResolver初始化
处理流程
参数绑定流程
类型转换
返回值处理流程
架构师进阶置分布式技术栈
nginx
ngin介绍与安装
nginx核心功能
配置说明
woker_process
woker_cpu_affinity
event
http
server
location
expires
proxy_pass
rewrite
try_files
ssl
openssl证书
log
gzip
include
upstream
nginx性能调优
全局模块下的调优
events模块下的调优
反向代理高性能配置
零拷贝
多路复用器
缓存配置
页面压缩配置
日志管理与自动切割
功能性配置
集群搭建
静态代理
反向代理
负载均衡
动静分离
虚拟主机
分布式协调服务器zookeeper
zookeeper理论基础
zookeeper的安装与搭建
安装单机zookeeper
搭建zookeeper集群
伪集群的搭建
Leader的选举机制
zookeeper源码如何导入Idea
zookeeper源码工程结构
leader选举算法源码解析
zookeeper技术内幕
重要理论
数据模型Znode
会话及相关源码解析
watcher机制
客户端命令
可视化客户端
ZooView
ZooInspector
代码客户端
ZKClient客户端
Curator客户端
zookeeper典型应用场景
配置维护
命名服务
DNS服务
Master服务
分布式同步
集群管理
分布式锁
分布式队列
nio网络编程框架Netty
Netty入门
Netty简介
Netty执行流程
Netty核心概念
Channel
EventLoopGroup
ServerBootStrap/BootStrap
ChannelPipeline
ChannelFuture
牛刀小试
Socket编程
TCP的拆包与粘包
拆包/粘包简介
发送方拆包
发送方粘包
接收方粘包拆包
LineBaseFrameDecoder
DelimiterBasedFrameDecoder
FixedLengthFrameDecoder
LengthFieldBasedFrameDecoder
Netty高级应用
WebSocket长连接
手写Tomcat
网络聊天
读写空闲检测
心跳机制
手写RPC框架
手写Dubbo框架
Netty与SpringBoot整合
Netty源码解析
IdleStateHandler处理器源码解析
In/Outbound处理器中消息的传递与处理源码解析
异常的传递与处理源码解析
Netty服务端启动源码解析
NioEventLoop源码解析
Pipline源码解析
Dubbo
Dubbo入门
Dubbo分布式服务模块划分
基于Dubbo的分布式架构实战
服务治理平台安装部署
Dubbp高可用
Dubbo容错机制
Dubbo服务降级
Dubbo服务限流
服务暴露延迟
结果缓存应用
多版本控制
多注册中心
Dubbo高级应用
Dubbo负载均衡策略与自定义实现
仅订阅与仅注册
提供者的异步调用、异步执行
Dubbo源码解析
Dubbo的SPI
Dubbo对spring配置文件的加载与解析
provider的服务暴露
consumer的服务消费
架构突破之必备中间件
mysql
mysql架构
逻辑架构
执行流程
物理结构
binlog
error log
query log
slow query log
redo/undo log
relay log
mysql索引
索引介绍
索引的存储结构
B+Tree树的理解
聚簇索引和非聚簇索引的理解
主键索引与次要索引(辅助索引)的理解
InnoDB和MyISAM存储引擎中索引的理解
索引原理分析
组合索引
使用组合索引的好处
如何使用组合索引
最左前缀原则的理解
索引失效分析
多个索引使用案例分析
如何查看执行计划
select_type参数分析
simple
primary
subquery
union
type参数分析
const
eq_ref
ref
range
index
all
extra参数分析
using index
using where
using index condition
ICP的理解
index filter的理解
using filesort
mysql锁
锁的介绍和分类
表级锁
元数据锁
行级锁
记录锁
间隙锁
Next-Key锁
mysql事务
事务介绍及ACID特性
InnoDB架构分析
原子性、一致性和持久性实现原理
隔离性实现原理
事务并发
事务隔离级
一致性非锁定读理解
InnoDB的MVCC实现
行锁原理分析
一条简单SQL的加锁分析
RC级别下的主键索引、唯一索引、非唯一索引、无索引分析
RR级别下的主键索引、唯一索引、非唯一索引、无索引分析
一条复杂SQL的加锁分析
where条件如何拆分
Index Key
Index Filter
Table Filter
死锁原理分析
两个Session的两条SQL产生死锁分析
两个Session的一条SQL产生死锁分析
性能分析和性能优化
性能分析
性能分析思路
慢查询日志
何时开启慢查询日志
设置慢查询超时时间多长合适
查询计划分析
profile分析
性能优化
服务器层面
Innodb_buffer_pool_size设置
内存预热
Innodb_log_file_size设置
选择SSD磁盘提高读写能力
表设计层面
中间表的设计
冗余字段的设计
拆表字段
拆表数据(分库分表)
SQL性能优化
limit优化
索引优化
如何创建索引并正确使用组合索引
order by group by 与索引设计的关联
其他优化项
Mysql集群
主从复制原理和实现
原理分析
binlog
relay log
读写分离原理和实现
原理分析
Mysql分库分表
分库分表的概念
数据切片方案
切分规则
切分原则
分库分表要解决的问题
分库分表实现方案
Sharding JDBC实现分库分表
架构介绍和安装
核心组件
分片策略
读写分离
项目案例
MyCat实现分库分表
架构介绍和安装
核心概念
分片策略
十大分片算法
Mycat集群搭建与分库分表应用
Mycat读写分离方式设置
项目案例
redis
Redis高级应用
Redis事务
事务介绍
事务命令
事务失败处理
事务应用场景-乐观锁实现
Redis与lua整合
如何编写包含redis api的lua脚本
redis命令行之eval、eval sha、script命令
redis-cli ——eval执行lua脚本文件
Redis持久化
RDB
快照触发时机
快照实现原理
优缺点分析
AOF
同步磁盘数据分析
aof重写原理分析
文件损坏如何恢复
如何选择rdb和aof
是否要开持久化
Redis实现分布式锁
set命令实现
redis的setnx
Redisson实现
使用分布式锁存在的问题
常见缓存问题
缓存穿透
缓存击穿
缓存雪崩
缓存双写一致性
Redis底层原理
Redis内存模型
内存统计
内存分配
Redis数据结构
SDS
链表
字典
跳跃表
整数集合
压缩列表
对象
IO多路复用
同步IO和异步IO
阻塞IO和非阻塞IO
IO设计模式之Reactor
五种IO模型
Redis IO多路复用技术
redis epoll底层实现
缓存淘汰策略
Redis数据淘汰策略(6种)
LRU原理
Redis集群
主从复制
主从复制原理
主从复制配置
数据延迟、丢失以及思考
哨兵机制
哨兵集群简介
哨兵进程作用
集群故障判断原理
哨兵集群配置
故障判断原理分析
ODOWN
SDOWN
法定人数理解
Redis-Cluster
架构图分析
hash槽算法
数据迁移
容错投票
RedisCluster配置
RedisCluster节点维护
Redis消息模式
队列模式
发布订阅模式
非主流
mongodb
MongoDB架构
RDBMS与MongoDB的区别
Wiredtiger存储引擎实现
Transport Layer业务层
写请求
Journling
一致性
原理分析
router server、config server、data server工作原理
replica set(副本集)工作原理
分片策略以及shard和chunk的理解
MongoDB集群原理
主从复制原理
副本集集群原理
副本集与分片混合部署原理
MongoDB集群搭建
MongoDB主从搭建
主机配置
从机配置
测试集群
读写分离配置
MongoDB副本集集群
有仲裁副本集
无仲裁副本集
两种副本集的区别
MongoDB混合方式集群
数据服务器集群配置
配置服务器集群配置
路由服务器集群配置
关联切片和路由
mongodb使用注意事项与案例
FastDFS
FastDFS介绍
Nginx附加资料
location配置详解
rewrite语法
FastDFS安装
FastDFS的Nginx模块原理分析
背景
概要介绍
FastDFS整合Nginx的参考架构
几个概念
实现原理
源码包说明
初始化
加载配置文件
读取扩展模块配置
加载服务端配置
下载过程(重点)
解析访问路径
防盗链检查
获取文件元数据
检查本地文件是否存在
文件不存在的处理
输出本地文件
配置FastDFS的Nginx模块
FastDFS架构分析
架构整体分析
Tracker Server
Storage Server
同组的好处
不同组的好处
Client
文件上传流程分析
field理解及好处
文件同步分析
Binlog目录结构
Mark文件
Binlog文件
Binlog同步流程
文件同步时间戳
文件下载流程分析
storage状态收集
新增storage server分析
合并存储(重点)
为什么要合并存储
FastDFS合并存储
合并存储介绍
合并存储前后的filedid介绍
Trunk文件内部结构
合并存储配置
合并存储空闲空间管理
空闲空间概述
为什么产生空余空间
如何管理空余空间
如何使用空闲平衡树
TrunkServer空闲空间分配
TrunkFile同步
空闲平衡树重建
为什么要重建空闲平衡树
TrunkBinlog压缩
Tracker-Leader选择TrunkServer
tracker选择trunk server问题描述
Tracker-Leader选择TrunkServer时机
Tracker-Leader选择TrunkServer的过程
实现图片压缩
FastDFS主从文件
应用背景
解决方法
Nginx生成缩略图
image_filter模块
检测nginx模块安装情况
安装步骤
访问普通图片
访问FastDFS图片
nginx_image
安装nginx_image模块
访问普通图片
访问FastDFS图片
配置参数说明
Java客户端
查看错误日志
安装Nginx(Apache)
消息中间件
ActiveMQ
消息中间件在分布式架构中的应用场景
networkconnetor
消息回流
静态网络连接(static)
动态网络连接(multicast)
模型讲解
activemq组件介绍
消息确认与重发策略
ActiveMQ高可用企业级方案
ack模式
AUTO_ACKNOWLEDGE
SESSION_TRANSACTED
CLIENT_ACKNOWLEDGE
DUPS_OK_ACKNOWLEDGE
INDIVIDUAL_ACKNOWLEDGE
acktype
redelivered
standard
delivered
持久化策略
kahadb
mms
jdbc
leveldb
通信协议类型
tcp
nio
amqt
ws
mqtt
stomp
与Spring整合实战
分布式消息系统kafka
Kafka概述
kafka系统架构分析
kafka应用场景介绍
kafka高吞吐率实现
kafka高可用集群搭建
kafka的下载/安装/配置
三台Broker集群搭建
kafka集群操作
kafka工作原理与过程
kafka术语
Replicas of Partition
Partition Leader
Partition Follower
ISR/OSR/AR
Broker Controller
HW/LEO
Coordinater
Rebalance
Offset Commit
kafka核心原理
消息路由策略
消息写入算法
HW截断机制
消息发送的可靠性机制
Partition Leader选举范围
重复消费问题及解决方案
kafka api
Kaka原生API
Spring Boot Kafka
kafka应用场景
kafka在SpringCloudBus中的应用
SpringCloudSleuth+Kafka+Zipkin实现调用链跟踪
SpringCloudStream+Kafka的消息系统整合应用
RabbitMQ
RabbitMQ核心概念
选择使用RabbitMQ的理由
RabbitMQ高性能如何实现
认识AMQP高级协议
AMQP的核心概念
RabbitMQ的整体架构模型
RabbitMQ消息的流转形式
RabbitMQ消息生产&消费
RabbitMQ交换机、队列、绑定、虚拟机、消息
RabbitMQ高级特性
消息如何保证百分百可靠投递?
幂等性
如何避免消息的重复消费问题?
确认消息&返回消息
自定义消费者
消息的ACK&重回队列
消息的限流
TTL消息
死信队列
RabbitMQ集群架构
RabbitMQ整合Spring AMQP
RabbitMQ整合Spring Boot
RabbitMQ整合Spring Cloud
SET化架构与设计
SET架构的演进
企业如何实现SET化
SET化架构的设计与解决方案
RabbitMQ SET化架构的实现
RocketMQ
前置知识
链式调用
木桶理论
MQ理论
MQ实例
异步处理
应用解耦
流量削峰
日志处理
消息通信
事务处理
MQ产品
ActiveMQ
RabbitMQ
RocketMQ
产品选型
RocketMQ原理
消息流程
消息存储
广播消息
集群消息
网络架构
RocketMQ架构
nameserver
可用性
可靠性
消息清理
读写性能
消息分区
RocketMQ进阶
消息负载均衡
消息存储原理
顺序消息
消息去重
消息堆积
定时消息
事务消息
半消息机制
ElasticSearch
思考与认识
大规模数据如何检索
传统数据库解决方案
非关系型数据库解决方案
内存数据解决方案
全文检索
全文检索的认识及应用原理
ES的前世与今生
ES与solr对比
ES使用场景
索引原理及流程
ES架构原理
ES集群结构
伪集群
ES节点类型
ES分片存储的原理
ES索引的原理
ES文档
ES实时搜索
ES分片复制
ES数据恢复
工作原理
索引分片存储&负载均衡
集群选举
脑裂问题
文档集群路由
ES实战
机房需要多少集群服务
索引分片如何规划
分片副本如何规划
架构主流架构之微服务专题
快速开发框架SpringBoot
SpringBoot入门
SpringBoot基本使用
自定义异常页面
单元测试
多环境选择
读取自定义配置
SpringBoot下使用JSP
SpringBoot的事务支持
SpringBoot的日志控制
SpringBoot拦截器使用
SpringBoot中使用Servlet
SpringBoot中使用Filter
集成Mybatis
集成Redis
集成Dubbo
Resful+swagger
Actuator监控器
SpringBootActuator Endpoints
开放所有Web管理Endpoints
服务上下文与管理上线独立
获取环境端口
原理部分
自动配置源码解析
yml加载过程解析
SpringBoot与Redis整合过程解析
Mybatis与SpringBoot整合过程解析
手写Stater
微服务框架SpringCloud
SpringCloud入门
SpringCloud简介
SpringCloud在线资源
SpringCloud版本系统
微服务中心Eureka
Eureka概述
Eureka集群搭建
服务发现Discovery
Eureka的自我保护机制
服务平滑上下线
Eureka Client源码解析
Eureka Client下载应用列表对象
Eureka Client微服务注册
定时更新应用列表对象
定时发送心跳
Eureka Client服务下架
Eureka Server源码解析
处理服务注册
处理服务续约
处理服务下架
定时清除失联Client
OpenFeign与Ribbon
声明式客户端OpenFegin的使用
更换负载均衡策略
配置式
JavaConfig式
自定义负载均衡算法
RestTemplate原理与扩展
HttpMessageConverter分析
判断是否可读可写
支持的媒体类型
反序列化
RestTemplate在HttpMessageConverter设计
扩展Http客户端
RestTemplate核心的调用器
负载均衡示例编写
OpenFeign源码解析
Feign Client的创建源码解析
网络请求的发出源码解析
对提供者的负载均衡源码解析
Ribbon负载均衡算法IRule
RoundRobinRule算法源码解析
RandomRule算法源码解析
RetryRule算法源码解析
BestAvailableRule算法源码解析
AvailabilityFilteringRule算法源码解析
ZoneAvoidanceRule算法源码解析
WeightedResponseTimeRule算法源码解析
Hystrix熔断机制与服务降级
基本概念
服务熔断
雪崩效应
服务雪崩
服务降级
Hystrix简介
熔断与降级实现
fallbackMethod降级
fallbackFactory降级
Hystrix高级属性配置
Dashboard监控仪表盘
服务降级报警机制
微服务网关zuul
zuul简介
服务路由
路由过滤
路由策略配置
路由前缀
服务屏蔽
敏感请求屏蔽
负载均衡
服务降级
请求过滤
ZuulFilter
路由过滤架构
令牌桶限流
多维请求限流
灰度发布
zuul的高可用
分布式配置管理Spring Cloud Config
spring cloud config概述
spring cloud config简介
分布式配置管理工作原理
分布式配置管理工程搭建
搭建config server
搭建config client
配置自动更新
Webhooks
spring cloud bus实现原理
使用spring cloud bus实现
调用链跟踪Spring Cloud Stream+Zipkin
概述
zipkin服务端搭建
使用via创建zipkin客户端
sleuth+kafka+zipkin
消息系统整合框架Spring Cloud Stream
spring cloud stream简介
spring cloud stream程序模型
spring cloud stream+kafka
反应式web开发框架Webflux
架构殿堂之高并发微服务实战篇
容器化
docker
docker前言
docker实战应用场景
虚拟化
docker组件
容器
镜像
注册中心
docker基本概念
容器技术概念
docker容器和虚拟化的异同点
docker入门
docker安装
docker命令
构建私有镜像
拉取hub仓库镜像
根据镜像创建容器
容器操作
docker镜像上传仓库
构建私有仓库
docker进阶
dockerfile
docker网络
数据挂载
迁移与备份
docker实战
开课吧微服务电商项目容器化部署
容器监控工具
快速扩容
k8s
k8s前言
k8s基本概念
k8s在实战环境的作用
k8s入门
k8s集群架构原理
k8s集群搭建
k8s基于本地镜像构建容器
YAML构建容器
k8s进阶
构建k8s高可用集群
k8s集群网络方案
k8s实战
k8s可视化工具
开课吧微服务电商项目部署方案
jenkins
jenkins前言
CI/DI的认识
持续集成
持续交付
持续部署
jenkins入门
安装
环境配置
持续构建
持续部署
jenkins进阶
集成docker
构建docker私有仓库镜像
自动部署
jenkins实战
项目持续集成
项目持续部署
项目集成docker容器化部署
互联网电商项目
秒杀系统
Jvm知识图谱概述
JVM基础知识
JVM基本常识
JVM实现
Oracle的Hotspot
一个解释器
两个编译器(JIT)
Server模式
Client模式
Java是解释性语言还是编译性语言
BEA的JRockit
IBM的J9
Eclipse的OpenJ9
程序执行方式
JIT即时编译器的详解及优化
公共子表达式的消除
方法内联
逃逸分析
栈上内存分配
标量替换
同步锁消除
class文件结构
文件结构概览
魔数
class文件的版本
常量池
访问标志
类索引、父类索引、接口索引集合
字段表集合
方法表集合
属性表集合
class常量池
int、float如何存储
long、double如何存储
String类型如何存储
Class类型如何存储
class文件中引用和特殊字符串
符号引用
直接引用
引用替换时机
类的全限定名
描述符
特殊方法的方法名
class文件案例分析
class文件解读
javap命令结果解读
JVM构成
类装载器子系统
类加载器概述
类与类加载器
双亲委派模型
破坏双亲委派模型
类加载的时机分析
类加载的过程
加载
验证
准备
解析
初始化
运行时数据区
程序计数器
Java堆
Java虚拟机栈
本地方法栈
方法区
执行引擎
字节码指令简介
字节码与数据类型
同步指令
运算指令
类型转换指令
对象创建与访问指令
加载和存储指令
控制转移指令
子主题
方法调用和返回指令
异常处理指令
操作数栈管理指令
案例演示
本地方法接口
垃圾收集模块
JVM内存结构
JVM运行时数据区
程序计数器
Java虚拟机栈
本地方法栈
java堆
方法区
运行时常量池
直接内存
虚拟机对象剖析
对象创建
new
类加载
分配空间
分配方式
指针碰撞
空闲列表
分配线程安全解决方案
CAS加失败重试
TLAB
内存空间初始化
对象布局
对象头
运行时数据部分
类型指针
实例数据
对齐填充
对象访问
句柄访问
直接地址访问
垃圾回收
垃圾回收
判断算法
引用计数法
可达性分析算法
引用介绍
强引用
软引用
弱引用
虚引用
回收算法
标记-清除算法
复制算法
标记-整理算法
分代回收算法
垃圾回收器
新生代
Seriail收集器
ParNew收集器
Parallel Scavenge收集器
老年代
Serial Old收集器
Parallel Old收集器
CMS
G1
GC日志分析
JVM优化
JVM性能监控与故障处理工具
JDK命令行工具
jps
jstat
jinfo
jmap
jhat
jstack
HSDIS
JDK可视化工具
JConsole
VisualVM
调优案例分析与实战
JMM与并发
Java内存模型
主内存与工作内存
内存间交互操作
对于valatile型变量的特色规则
原子性、可见性与有序性
先行发生原则
Java与线程
线程实现
线程调度
状态转换
线程安全与锁优化
线程安全
Java语言中的线程安全
线程安全的实现方法
锁优化
自旋锁与自适应自旋
锁消除
锁细化
轻量级锁
偏向锁