Java路线图:Java基础入门、Java核心技术、JVM和性能优化、web服务器、web开发框架、消息队列、容器、大数据
参考资料
准备
下载、配置 Maven
下载、安装 IntelliJ IDEA
准备一个 GitHub 仓库(或者码云),管理 Java 源代码
Java 基础入门
1)基本数据类型
8 种基本数据类型(boolean、char、byte、short、int、long、float、double)
整形中 byte、short、int、long 的取值范围
单精度和双精度
为什么不能使用“==”比较浮点数
基本类型和包装类型的区别
自动拆箱与装箱
Integer 的缓存机制
2)操作符
算术运算符
逻辑运算符
比较运算符
3)流程控制语句
条件分支(if/else/else if、三元运算符、switch)
循环或者遍历(for、while、do-while)
break 和 continue
4)包
创建包
导入包
包全名
5)main 方法详解
public 关键字
static 关键字
void 关键字
main 方法
字符串数组参数(String[] args)
6)数组
什么是数组?
访问数组
遍历数组
打印数组
可变参数
数组排序
数组转成 Stream
数组转成 List
数组搜索
java.util.Arrays
数组越界
7)注释
单行注释
多行注释
文档注释
注释真的不会被执行吗?
优秀的程序员真的不写注释吗
8)字符串
双引号字符串和 new 字符串对象
字符串为什么是不可变的?
String、StringBuilder 和 StringBuffer 之间的区别
字符串拼接的几种方式
字符串常量池
关于 intern
字符串比较(== 和 equals)
字符串拆分
字符串操作小技巧
字符串转整形
生成 UUID(多谢知友的提醒,链接已更新)
字符串可以引用传递吗?
字符串长度
关于 substring
Java 核心技术
2)常用工具类
字符串相关的工具类
日期时间相关的工具类
枚举
随机数
正则表达式
Apache-commons 工具库
Guava 工具库
3)集合框架
ArrayList
LinkedList
ArrayList 和 LinkedList 之间的区别
不可变 List
CopyOnWriteArrayList
HashMap
LinkedHashMap
TreeMap
ConcurrentHashMap
fail-fast
4)反射机制
什么是反射?
反射有什么用?
Class 类
5)异常处理
为什么需要异常处理机制?
Error 和 Exception
try-catch-finally
try-with-resource
自定义异常
尽量捕获原始异常
不要打印堆栈后再抛出异常
不要用异常处理机制代替判断
不要过早捕获异常
6)注解
注解是什么?
注解的生命周期
注解装饰的目标
自定义注解
使用注解
7)IO 流
字符流、字节流
输入流、输出流
同步、异步
阻塞、非阻塞
BIO、NIO 和 AIO
NIO 2.0
8)序列化
什么是序列化和反序列化
Java 如何实现序列化和反序列化
Serializbale 和 Externalizable
serialVersionUID
9)泛型
什么是泛型?
类型擦除
泛型带来的问题
泛型中 K T V E 这些特殊字幕的含义
通配符
上下界限定符 extends 和 super
不要在集合中使用 Java 原始类型
10)单元测试
Junit
TestNG
11)编码方式
ASCII
Unicode
UTF-8
GBK、GB2312
如何解决乱码问题
12)并发编程
什么是并发
什么是并行
什么是线程
什么是进程
线程的状态
线程的优先级
创建线程
创建线程池
什么是线程安全
多级缓存和一致性问题
CPU 时间片和原子性问题
指令重排和有序性问题
线程安全和内存模型
happens-before
可重入锁
阻塞锁
乐观锁
悲观锁
分布式锁
CAS
ABA
偏向锁
轻量级锁
重量级锁
自旋锁
什么是死锁
如果避免死锁
synchronized
volatile
ThreadLocal
Executors
CountDownLatch
Thread
Runnable
Callable
ReentrantLock
ReentrantReadWriteLock
Atomic 相关类
13)Java 8 新特性
Lambda 表达式
Stream流
Optional
14)源码阅读
String
Integer
ArrayList
LinkedList
CopyOnWriteArrayList
HashMap
TreeMap
LinkedHashMap
ConcurrentHashMap
CopyOnWriteArrayList
JVM 和性能优化
1)JVM
Java 内存结构
堆
栈
垃圾回收
JVM 参数调优
Java 对象模型
HotSpot
类加载机制
编译和反编译
反编译工具
JIT
虚拟机性能监控和故障处理工具(jps、jstack、jmap、jstat、jconsole、javap)
2)性能优化
使用单例
使用线程池
减少上下文切换
减小锁粒度
数据压缩
Stream 并行流
GC 调优
JVM 内存分配调优
btrace
web服务器
Tomcat
jetty
Nginx
web开发框架
Spring
MyBatis
Spring MVC
Spring Boot
Spring Security
Spring Cloud
Netty
Dubbo
消息队列
RabbitMQ
Kafka
容器
Docker
K8s
大数据
搜索(Elasticsearch 、Solr)
流式计算(Storm、Spark、Flink)
Hadoop
Make Up Forever