自己学习 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
  • 位运算
  • 格式化,有效数字

泛型

  • 泛型使用中的一些点:类型擦除/父类中使用泛型的函数如何返回子类对象

异常

  • 编译异常
  • 运行时异常
  • 非运行时异常