课程大纲
第一部分:Java Core
第一节 JDK 核心 API 总览(1 - 9)
1. Java 基础类库:Java 语言(Lang)、数学(Math)、集合(Collections)、并发(Concurrency)和反射(Relfection)
2. Java 其他类库:Java I/O、Java Beans、序列化(Serialization)、管理扩展(JMX)和网络(Networking)
第二节 Java API 实践
1. 通用框架:介绍 JDK 中常见的工具方法,以及精选 Apache Commons 工程,减少重复劳动,提升开发效率和质量
2. 集合框架:主要讨论 JDK 中常见的数据结构的使用场景以及常见问题,包括 Apache commons-collection
3. 配置外部化:介绍从 Java SE 到 Java EE 配置外部化的实例,杜绝硬编码的方式,实现一套代码到处运行,并且结合流行的开源框架展开讨论,如 log4j(logback)、Spring Framework、Dubbo 等
第三节 Java 数据结构与通用算法
1. 数据结构:系统性介绍 JDK 1 到 9 数据结构接口以及使用场景
2. 排序算法:主要讨论 JDK 中出现过的排序算法,如 Insertion Sort、Merge Sort 、以及 TimSort,包括基本思路、时间和空间复杂度
3. 搜索算法:讨论二进制搜索算法,如 Collections#binarySearch 方法
第二部分 Java API 设计
第一节 Java 通用 API 设计
1. 类/接口设计:介绍类、抽象类、接口命名、访问性设计以及“封装性、派生性、多态性”技巧
2. 枚举设计:理解枚举引入的意义以及变化,介绍 JDK 中常见枚举的设计
3. 泛型设计:了解泛型使用场景以及限制,通过 JDK 以及开源项目领悟其中的设计模式
4. 方法设计:介绍方法命名、返回类型、参数类型、名称以及数量的设计模式
5. 函数式设计:讨论函数式设计技巧,如 Supplier、Consumer 以及 Function 在日常开发中的运用
6. 模块设计:Java 9 模块化类库迁移、依赖管理分析、迁移案例等、模块解析、模块API 设计
第二节 Java 设计模式
1. GoF 23 设计模式:通过实例和开源实现的方式讲解 GoF 23 设计模式
2. 扩展设计模式:Fluent 、Reactive、Stream、模块驱动等设计模式
第三节 Java 开源软件设计模式
1. Spring Framework 设计模式:介绍 Spring Framework 对 GoF 23 设计模式的运用,以及其特殊的
2. Apache Tomcat 设计模式:简介 Catalina 引擎设计、JSP 模板解析引擎 - Jasper 设计
第三部分:Java 高并发
第一节 Java 并发框架(J.U.C)实践
1. Java 并发锁:介绍包括重进入锁(ReentrantLock)、重进入读写锁(ReentrantReadWriteLock)、邮票锁(StampedLock)等运用
2. Java 原子操作:理解 Atomic* API 以及 *Adder API 使用场景
3. Java 并发限制:包括 CountDownLatch、CyclicBarrier 以及 Semaphore
4. Java 线程池:掌握 Executor、ThreadPoolExecutor 、ScheduledExecutorService 以及 Callable 和 Future API 正确使用
第二节 Java 并发原理
1. Java 同步原语:从 JDK 级别到 JVM 级别,深度分析和理解 Java synchronized 、volatile 以及 CAS 操作等同步原语
2. Java 内存模型:理解 Happens-before 、以及内存屏蔽在 Java 实践中的运用
3. Java 并发 AQS 原理:通过分析 Java 线程池实现理解 AQS 实现原理
第三节 JVM 并发原理
1. Java Thread 底层实现:深入 JVM 源码,理解 Java Thread 实现细节,如线程启动、等待、以及同步操作
2. CAS 操作底层实现:讨论 Java Unsafe 工具类方法实现细节,包括内存屏障、volatile、happens-before
3. Java 同步(锁)底层实现:介绍 Java 偏向锁、轻量级以及重量级实现
第四部分:Java 运维管理
第一节 Java ClassLoading
1. Java Class:讲解 Java Class 解析、校验以及加载的过程
2. Class 与 ClassLoader 之间的关系:通过源码级别理解 Class 与 ClassLoader 之间的关系
3. ClassLoader 双亲委派原理:通过底层实现理解双亲委派的设计和局限性
4. Java 类存储:Java 类对象存储细节
第二节 Java Trouble-Shooting
1. OOM 错误案例:分析 Java 内存泄露的症状,以及快速定位泄露位置(堆、Perm 或 Metasapce)以及解决方案
2. CPU 过高案例:介绍高消耗CPU代码的常用分析方法,逐一排查可能性
3. GC 案例:介绍 Young GC 和 Full GC 的基本表象,以及如何在代码实现中尽可能地避免 Full GC
第三节 Java 运维工具
1. 工具介绍:Java 进程工具(jps)、线程 dump 工具(jstack)、内存 dump 工具(jmap)、Java 调试工具(jdb)、图形化工具(jmc、jvisualvm、jconsole)
2. 工具与JMX:理解 JMX 运维 JVM 的适用范围,以及它与运维工具之间的关系
3. Java Tools API:介绍 Java 编译器、Java Attatch API、Java Dump API 以及对象查询语言(OQL)