Java从入门到入坑(高级篇)
01:新技术
1:Java 8
lambda 表达式、Stream API、时间 API
2:Java 9
Jigsaw、Jshell、Reactive Streams
3:Java 10
局部变量类型推断、G1 的并行 Full GC、ThreadLocal 握手机制
4:Java 11
ZGC、Epsilon、增强 var
5:Spring 5
响应式编程
6:Spring Boot 2.0
7:HTTP/2
8:HTTP/3
02:性能优化
使用单例、使用 Future 模式、使用线程池
选择就绪、减少上下文切换、减少锁粒度、数据压缩、结果缓存
03:线上问题分析
1:dump 获取
线程 Dump、内存 Dump、gc 情况
2:dump 分析
分析死锁、分析内存泄露
3:dump 分析及获取工具
jstack、jstat、jmap、jhat、Arthas
4:自己编写各种 outofmemory,stackoverflow 程序
HeapOutOfMemory、 Young OutOfMemory、
MethodArea OutOfMemory、ConstantPool OutOfMemory、
DirectMemory OutOfMemory、Stack OutOfMemory Stack OverFlow
5:Arthas
jvm 相关、class/classloader 相关、monitor/watch/trace 相关、
options、管道、后台异步任务
文档:https://alibaba.github.io/arthas/advanced-use.html
6:常见问题解决思路
内存溢出、线程死锁、类加载冲突
7:使用工具尝试解决以下问题,并写下总结
当一个 Java 程序响应很慢时如何查找问题
当一个 Java 程序频繁 FullGC 时如何解决问题
如何查看垃圾回收日志
当一个 Java 应用发生 OutOfMemory 时该如何解决
如何判断是否出现死锁
如何判断是否存在内存泄露
使用 Arthas 快速排查 Spring Boot 应用404/401问题
使用 Arthas 排查线上应用日志打满问题
利用 Arthas 排查 Spring Boot 应用 NoSuchMethodError
04:编译原理知识
1:编译与反编译
2:Java 代码的编译与反编译
3:Java 的反编译工具
javap 、jad 、CRF
4:即时编译器
5:编译过程
词法分析,语法分析(LL 算法,递归下降算法,LR 算法)
语义分析,运行时环境,中间代码,代码生成,代码优化
05:操作系统知识
1:Linux 的常用命令
2:进程间通信
3:进程同步
生产者消费者问题、哲学家就餐问题、读者写者问题
4:缓冲区溢出
5:分段和分页
6:虚拟内存与主存
7:虚拟内存管理
8:换页算法
06:数据库知识
1:MySQL 执行引擎
2:MySQL 执行计划
如何查看执行计划,如何根据执行计划进行 SQL 优化
3:索引
Hash 索引、B 树索引(B+树、和B树、R树)
普通索引、唯一索引
覆盖索引、最左前缀原则、索引下推
4:SQL 优化
5:数据库事务和隔离级别
事务的隔离级别、事务能不能实现锁的功能
6:数据库锁
行锁、表锁、使用数据库锁实现乐观锁、
7:连接
内连接,左连接,右连接
8:数据库主备搭建
9:binlog
10:redolog
11:内存数据库
h2
12:分库分表
13:读写分离
14:常用的 NoSql 数据库
redis、memcached
15:分别使用数据库锁、NoSql 实现分布式锁
16:性能调优
17:数据库连接池
07:数据结构与算法知识
1:简单的数据结构
栈、队列、链表、数组、哈希表、
栈和队列的相同和不同之处
栈通常采用的两种存储结构
2:树
二叉树、字典树、平衡树、排序树、
B 树、B+ 树、R 树、多路树、红黑树
3:堆
大根堆、小根堆
4:图
有向图、无向图、拓扑
5:排序算法
稳定的排序:冒泡排序、插入排序、鸡尾酒排序、桶排序、计数排序、归并排序、原地归并排序、二叉排序,树排序、鸽巢排序、基数排序、侏儒排序、图书馆排序、块排序
不稳定的排序:选择排序、希尔排序、Clover 排序算法、梳排序、堆排序、平滑排序、快速排序、内省排序、耐心排序
各种排序算法和时间复杂度
6:两个栈实现队列,和两个队列实现栈
7:深度优先和广度优先搜索
8:全排列、贪心算法、KMP 算法、hash 算法
9:海量数据处理
分治,hash 映射,堆排序,双层桶划分,Bloom Filter,bitmap,数据库索引,mapreduce 等。
08:大数据知识
1:Zookeeper
基本概念、常见用法
2:Solr,Lucene,ElasticSearch
在 linux 上部署 solr,solrcloud,新增、删除、查询索引
3:Storm,流式计算,了解 Spark,S4
在 linux 上部署 storm,用 zookeeper 做协调,运行 storm hello world,local 和 remote 模式运行调试 storm topology。
4:Hadoop,离线计算
HDFS、MapReduce
5:分布式日志收集 flume,kafka,logstash
6:数据挖掘,mahout
09:网络安全知识
1:XSS
XSS 的防御
2:CSRF
3:注入攻击
SQL 注入、XML 注入、CRLF 注入
4:文件上传漏洞
5:加密与解密
对称加密、非对称加密、哈希算法、加盐哈希算法
MD5,SHA1、DES、AES、RSA、DSA
彩虹表
6:DDOS攻击
DOS 攻击、DDOS 攻击
memcached 为什么可以导致 DDos 攻击、什么是反射型 DDoS
如何通过 Hash 碰撞进行 DOS 攻击