1. Java基础
1.1 面向对象
1.2 基本数据类型
1.3 关键字
1.4 枚举
1.5 IO
1.6 反射
1.7 动态代理
1.8 序列化
1.9 注解
1.10 泛型
1.11 异常处理
1.12 时间处理
1.13 编码方式
1.14 语法糖
1.15 内部类
1.16 拷贝
1.17 集合类
2. JVM
2.1 内存结构
2.2 垃圾回收与算法
2.3 垃圾回收器
2.4 引用类型
2.5 JVM参数及调优
2.6 性能监控与故障处理
2.7 类加载机制
2.8 编译与反编译
3. 数据结构与算法
3.1 简单数据结构
栈、队列、链表、数组、哈希表
3.2 树
二叉树、字典树、平衡树、排序树、B树、B+ 树、R树、多路树、红黑树
3.3 堆
大根堆、小根堆
3.4 BitSet位图
3.5 图
有向图、无向图、拓扑
3.6 排序
3.7 查找
3.8 算法题
4. 数据库
4.1 Mysql
4.1.1 存储引擎
4.1.2 索引
4.1.3 数据库事务和隔离级别
4.1.4 并发策略与锁
4.1.5 范式
4.1.6 性能调优
4.1.7 集群
4.2 NoSQL
hbase
5. 网络
5.1 分层架构
5.2 TCP/IP
5.3 HTTP
5.4 HTTPS
5.5 cookie/session
5.5 CDN
5.6 DNS
5.7 反向代理
5.8 网络模型
5.9 网络连接
5.10 负载均衡
6. 操作系统
6.1 Linux常用命令
6.2 进程、线程与协程
6.3 进程间通信
6.4 进程同步
生产者消费者问题、哲学家就餐问题、读者写者问题
6.5 缓冲区溢出
6.6 分段和分页
6.7 虚拟内存与主存
6.8 虚拟内存管理
6.9 换页算法
7. 并发编程
7.1 线程
线程的实现、线程的状态、优先级、线程调度、创建线程的多种方式、守护线程,线程与进程的区别
7.2 线程池
7.3 Java锁
CAS、乐观锁与悲观锁、数据库相关锁机制、分布式锁、偏向锁、轻量级锁、重量级锁、monitor、锁优化、锁消除、锁粗化、自旋锁、可重入锁、阻塞锁、死锁。
7.4 死锁
7.5 关键字
synchronized、volatile
7.6 CAS
7.7 Java并发包
Thread、Runnable、Callable、ReentrantLock、ReentrantReadWriteLock、Atomic*、Semaphore、CountDownLatch、ConcurrentHashMap、Executors
8. 设计模式
8.1 六大原则
8.2 23种设计模式
8.3 设计模式使用场景
单例的七种写法:懒汉——线程不安全、懒汉——线程安全、饿汉、饿汉——变种、静态内部类、枚举、双重校验锁
工厂模式、适配器模式、策略模式、模板方法模式、观察者模式、外观模式、代理模式等。
设计模式在spring框架中的使用。
9. 后端常用框架与中间件
9.1 Spring
9.2 Mybatis
9.3 Tomcat
9.4 Nginx
9.5 缓存
9.6 RPC
9.7 MQ
9.8 配置中心
9.9 数据库中间层(如Sharding Jdbc)
9.10 日志系统
9.11 定时调度
9.12 API网关
9.13 阿里开源分布式事务框架FESCAR
9.14 Zookeeper
10. 分布式
10.1 分布式事务
2PC、3PC、CAP、BASE、 可靠消息最终一致性、最大努力通知、TCC
10.2 分布式数据库
怎样打造一个分布式数据库、什么时候需要分布式数据库、
mycat、otter、HBase
10.3 分布式文件系统
mfs、fastdfs
10.4 分布式缓存
缓存一致性、缓存命中率、缓存冗余、一致性Hash
10.5 限流降级
Hystrix、Sentinal
10.6 分布式算法
共识算法、Raft 协议、Paxos 算法与 Raft 算法、拜占庭问题与算法、2PC、3PC
10.7 分布式ID生成
10.8 分布式锁
11. 微服务
11.1 SOA、康威定律
11.2 服务注册与发现
11.3 API网关
11.4 配置中心
11.5 链路追踪
11.6 服务熔断
11.7 API管理
11.8 Docker & Kubernets
11.9 ServiceMesh
sidecar
11.10 Spring Boot
11.11 Spring Cloud
12. 性能优化
JVM、Tomcat、Mysql调优
12.1 方法论
12.2 常用策略
13. 网络安全知识
13.1 XSS
XSS 的防御
13.2 CSRF
13.3 注入攻击
SQL 注入、XML 注入、CRLF 注入
13.4 文件上传漏洞
13.5 加密与解密
对称加密、非对称加密、哈希算法、加盐哈希算法
MD5,SHA1、DES、AES、RSA、DSA
彩虹表
13.6 DDOS攻击
DOS 攻击、DDOS 攻击
memcached 为什么可以导致 DDos 攻击、什么是反射型 DDoS
如何通过 Hash 碰撞进行 DOS 攻击
13.7 SSL、TLS、HTTPS
13.8 授权、认证
RBAC、Oauth2.0、2FA、SSO、Shiro
14. 搜索引擎
Elasticsearch
15. 工具
15.1 Git
15.2 Maven
15.3 Intellij IDEA
16. 目前新技术
16.1 JDK新技术
16.2 其它渠道最新推送
17. 其它
17.1 监控
监控什么
CPU、内存、磁盘 I/O、网络 I/O 等
监控手段
进程监控、语义监控、机器资源监控、数据波动
监控数据采集
日志、埋点
Dapper
17.2 线上问题分析
dump 获取
线程 Dump、内存 Dump、gc 情况
dump 分析
分析死锁、分析内存泄露
dump 分析及获取工具
jstack、jstat、jmap、jhat、Arthas
自己编写各种 outofmemory,stackoverflow程序
HeapOutOfMemory、 Young OutOfMemory、
MethodArea OutOfMemory、ConstantPool OutOfMemory、
DirectMemory OutOfMemory、Stack OutOfMemory Stack OverFlow
Arthas
jvm 相关、class/classloader 相关、monitor/watch/trace 相关、
options、管道、后台异步任务
文档:https://alibaba.github.io/arthas/advanced-use.html
常见问题解决思路
内存溢出、线程死锁、类加载冲突
使用工具尝试解决以下问题,并写下总结
当一个 Java 程序响应很慢时如何查找问题
当一个 Java 程序频繁 FullGC 时如何解决问题
如何查看垃圾回收日志
当一个 Java 应用发生 OutOfMemory 时该如何解决
如何判断是否出现死锁
如何判断是否存在内存泄露
使用 Arthas 快速排查 Spring Boot 应用404/401问题
使用 Arthas 排查线上应用日志打满问题
利用 Arthas 排查 Spring Boot 应用 NoSuchMethodError
18. 项目梳理
参考链接
https://my.oschina.net/u/3954808/blog/2961420
https://mp.weixin.qq.com/s/hlAn6NPR1w-MAwqghX1FPg
http://www.wisexplore.com/visit/shared/6c8c3c34d3b878d142abef701ae14487