自己学习 Java 和用 Java 过程中的理解和备忘的知识点。
JDK 11
- Oracle 不在免费提供 LTS 版本了,包括 JDK 8
- ZGC, 可伸缩的、低延迟的垃圾收集器,STW 时间不超过 10ms
- Nashorn 标记为 Deprecate 了
JDK 9
- module
- try-catch 简化
- _ 为保留关键字
- var 将在 JDK 10 中作为关键字, 作为本地变量类型推断关键字
- 字符串相关,主要是 Compact String, 用 byte[] 替换了 char[], char 在 Java 中占两个字节
- G1 作为默认垃圾回收器
JVM
- 启动 JVM 相关的命令行参数
- G1 垃圾回收器
内存
- JVM(Hotspot) 内存结构
- 制造各种 OutOfMemery 和 StackOverflow
- 各种 JVM 相关工具(jstat/jmap/jstack/jps 等)
- 解决 FullGC 的问题
- 引用:WeakRefrence/PhantomReference/SoftRefrence/FinalRefrence 等
- ClassLoader/URLClassLoader
- Spring Boot 的 ClassLoader
- 自定义 ClassLoader
多线程和并发
- JVM 的线程模型 1:1
- 协程
- 创建线程的方法
- 线程同步 synchronzied/对象锁/类锁/锁方法/锁锁代码块
- 线程池
- 锁相关(Lock 接口和实现类)
- Condition
- volatile
- ThreadLocal 用途和实现
- 并发(CAS/乐观锁/无锁/无等待/无阻塞)
字节码
- 基本结构
- 操作字节码的工具 Javassist/ASM
- AOP
集合
- Collection,List,ArrayList,Vector,LinkedList, SkipList, Stack
- Queue
- HashMap/HashTable
- HashMap 扩容死循环问题
- LinkedHashMap
- TreeMap
- HashSet,TreeSet
- WeakHashMap
- 并发相关的集合
- ConcurrentHashMap
- CopyOnWriteArrayList
IO
- IO 模型
- NIO
- Non-blocking IO
- Java 8 IO 相关的接口和类
- Netty
- Vert.x
时间/日期
- SimpleDateFormat 问题
- Java 8
- Joda
数值和二进制
- 数值类型在 Java 中的范围
- 浮点类型有什么问题
- BigDecimal
- 位运算
- 格式化,有效数字
泛型
- 泛型使用中的一些点:类型擦除/父类中使用泛型的函数如何返回子类对象
异常
- 编译异常
- 运行时异常
- 非运行时异常