基础篇
01 面向对象
02 Java 基础知识
String
集合类
枚举
IO
反射
动态代理
序列化
注解
JMS
JMX
泛型
单元测试
正则表达式
常用的 Java 工具库
API & SPI
异常
时间处理
编码方式
语法糖
03 阅读源代码
String
Integer
Long
Enum
BigDecimal
ThreadLocal
ClassLoader & URLClassLoader
ArrayList & LinkedList、
HashMap & LinkedHashMap & TreeMap & CouncurrentHashMap
HashSet & LinkedHashSet & TreeSet
04 Java 并发编程
并发与并行
什么是线程,与进程的区别
线程池
线程安全
锁
死锁
synchronized
volatile
sleep 和 wait
wait 和 notify
notify 和 notifyAll
ThreadLocal
写一个死锁的程序
写代码来解决生产者消费者问题
并方包
底层篇
01 JVM
JVM 内存结构
Java 内存模型
垃圾回收
JVM 参数及调优
Java 对象模型
HotSpot
虚拟机性能监控与故障处理工具
02 类加载机制
classLoader
类加载过程
双亲委派(破坏双亲委派)
模块化(jboss modules、osgi、jigsaw)
03 编译与反编译
什么是编译(前端编译、后端编译)
什么是反编译
JIT
JIT 优化(逃逸分析、栈上分配、标量替换、锁优化)
编译工具:javac
反编译工具:javap 、jad 、CRF
进阶篇
01 Java底层知识
字节码、class 文件格式
CPU 缓存,L1,L2,L3 和伪共享
尾递归
位运算
用位运算实现加、减、乘、除、取余
02 设计模式
设计模式的六大原则
了解 23 种设计模式
会使用常用设计模式
不用 synchronized 和 lock,实现线程安全的单例模式
实现 AOP
实现 IOC
nio 和 reactor 设计模式
03 网络编程知识
tcp、udp、http、https 等常用协议
http/1.0 http/1.1 http/2 之前的区别
http/3
Java RMI,Socket,HttpClient
cookie 与 session
用 Java 写一个简单的静态文件的 HTTP 服务器
了解 nginx 和 apache 服务器的特性并搭建一个对应的服务器
用 Java 实现 FTP、SMTP 协议
进程间通讯的方式
什么是 CDN?如果实现?
DNS
反向代理
04 框架知识
Servlet
Hibernate
Spring
Spring MVC
Spring Boot
Spring Security
Spring Cloud
05 应用服务器知识
JBoss
tomcat
jetty
Weblogic
06 工具
git & svn
maven & gradle
Intellij IDEA
常用插件:Maven Helper 、FindBugs-IDEA、阿里巴巴代码规约检测、GsonFormatLombok plugin、.ignore、Mybatis plugin
高级篇
01 新技术
Java 8
Java 9
Java 10
Java 11
Spring 5
Spring Boot 2.0
HTTP/2
HTTP/3
02 性能优化
使用单例
使用 Future 模式
使用线程池
选择就绪
减少上下文切换
减少锁粒度
数据压缩
结果缓存
03 线上问题分析
dump 获取
dump 分析
dump 分析及获取工具
自己编写各种 outofmemory,stackoverflow 程序
Arthas
常见问题解决思路
04 编译原理知识
编译与反编译
Java 代码的编译与反编译
Java 的反编译工具
即时编译器
编译过程
05 操作系统知识
Linux 的常用命令
进程间通信
进程同步
缓冲区溢出
分段和分页
虚拟内存与主存
虚拟内存管理
换页算法
06 数据库知识
MySQL 执行引擎
MySQL 执行计划
索引
SQL 优化
数据库事务和隔离级别
数据库锁
连接
数据库主备搭建
binlog
redolog
内存数据库
分库分表
读写分离
常用的 NoSql 数据库
分别使用数据库锁、NoSql 实现分布式锁
性能调优
数据库连接池
07 数据结构与算法知识
简单的数据结构
树
堆
图
排序算法
两个栈实现队列,和两个队列实现栈
深度优先和广度优先搜索
全排列、贪心算法、KMP 算法、hash 算法
海量数据处理
08 大数据知识
Zookeeper
Solr,Lucene,ElasticSearch
Storm,流式计算,了解 Spark,S4
Hadoop,离线计算
分布式日志收集 flume,kafka,logstash
数据挖掘,mahout
09 网络安全知识
XSS
CSRF
注入攻击
文件上传漏洞
加密与解密
DDOS攻击
SSL、TLS,HTTPS
用 openssl 签一个证书部署到 apache 或 nginx
架构篇
01 分布式
分布式事务
Dubbo
分布式数据库
分布式文件系统
分布式缓存
限流降级
算法
02 微服务
ServiceMesh
Docker & Kubernets
Spring Boot
Spring Cloud
03 高并发
分库分表
CDN 技术
消息队列
04 监控
监控什么
监控手段
监控数据采集
Dapper
05 负载均衡
tomcat 负载均衡
Nginx 负载均衡
四层负载均衡
七层负载均衡
06 DNS
DNS 原理
DNS 的设计
07 CDN
数据一致性
推荐书籍
《深入理解 Java 虚拟机》
《Effective Java》
《深入分析 Java Web 技术内幕》
《大型网站技术架构》
《代码整洁之道》
《架构整洁之道》
《Head First 设计模式》
《maven 实战》
《区块链原理、设计与应用》
《Java 并发编程实战》
《鸟哥的 Linux 私房菜》
《从Paxos 到 Zookeeper》
《架构即未来》