4006-998-758
3000+课程任你选择
Java 核心特性与性能优化
研发学院 Java Core、Java API 设计、Java 并发原理、应用优化 开课时间:2022-12-16
小马哥

曾获得 SUN Java(SCJP、SCWCD、SCBCD)以及 Oracle OCA 等的职业认证。作为 Apache Dubbo PMC 和 Spring Cloud Alibaba 架构师之一,主要负责中间件开源项目、微服务架构衍进,以及 Cloud Native 基础设施建设,所参与的项目现已运行在数以百万级的集群服务器上。

除了日常编码工作,小马哥还时常发表一些技术前瞻性文章,比如:
《2019 中国 Java 发展趋势报告》
《Reactive programming 一种技术 各自表述》
《Dubbo Cloud Native 实践与思考》

查看老师详情
课程内容

课程大纲


第一天上午:Java Core

第一部分 JDK 核心 API 总览(1 - 11)

  •  Java 基础类库:Java 语言(Lang)、数学(Math)、集合(Collections)、并发(Concurrency)和反射(Relfection)

  •   Java 其他类库:Java I/O、Java Beans、序列化(Serialization)、管理扩展(JMX)和网络(Networking)

第二部分 Java API 实践

  •   通用框架:介绍 JDK 中常见的工具方法,以及精选 Apache Commons 工程,减少重复劳动,提升开发效率和质量

  •   集合框架:主要讨论 JDK 中常见的数据结构的使用场景以及常见问题,包括 Apache commons-collection

  •  配置外部化:介绍从 Java SE 到 Java EE 配置外部化的实例,杜绝硬编码的方式,实现一套代码到处运行,并且结合流行的开源框架展开讨论,如 log4j(logback)、Spring Framework、Dubbo 等

 

第一天下午 Java API 设计

  •   第一部分 Java 通用 API 设计

  •   类/接口设计:介绍类、抽象类、接口命名、访问性设计以及“封装性、派生性、多态性”技巧

  •   枚举设计:理解枚举引入的意义以及变化,介绍 JDK 中常见枚举的设计

  •   泛型设计:了解泛型使用场景以及限制,通过 JDK 以及开源项目领悟其中的设计模式

  •   方法设计:介绍方法命名、返回类型、参数类型、名称以及数量的设计模式

  •   函数式设计:讨论函数式设计技巧,如 Supplier、Consumer 以及 Function 在日常开发中的运用

  •   模块设计:Java 9 模块化类库迁移、依赖管理分析、迁移案例等、模块解析、模块API 设计

第二部分 Java 设计模式

  •   GoF 23 设计模式:通过实例和开源实现的方式讲解 GoF 23 设计模式

  •   扩展设计模式:Fluent 、Reactive、Stream、模块驱动等设计模式

  •   开源框架的设计模式:介绍 Spring Framework 对 GoF 23 设计模式的运用,以及其特殊的,简介 Catalina 引擎设计、JSP 模板解析引擎 - Jasper 设计

 

第二天上午:Java 并发框架(J.U.C)实践

  •   Java 并发锁:介绍包括重进入锁(ReentrantLock)、重进入读写锁(ReentrantReadWriteLock)、邮票锁(StampedLock)等运用

  •   Java 原子操作:理解 Atomic* API 以及 *Adder API 使用场景

  •   Java 并发限制:包括 CountDownLatch、CyclicBarrier 以及 Semaphore

  •   Java 线程池:掌握 Executor、ThreadPoolExecutor 、ScheduledExecutorService 以及 Callable 和 Future API 正确使用

 

第二天下午:Java 并发原理

  •   Java 同步原语:从 JDK 级别到 JVM 级别,深度分析和理解 Java synchronized 、volatile 以及 CAS 操作等同步原语

  •   Java 内存模型:理解 Happens-before 、以及内存屏蔽在 Java 实践中的运用

  •   Java 并发 AQS 原理:通过分析 Java 线程池实现理解 AQS 实现原理

 

第三天上午:JVM 原理

第一部分 Java 类加载和内存管理

  •   Java Class:讲解 Java Class 解析、校验以及加载的过程

  •   Class 与 ClassLoader 之间的关系:通过源码级别理解 Class 与 ClassLoader 之间的关系

  •   ClassLoader 双亲委派原理:通过底层实现理解双亲委派的设计和局限性

  •   Java 类存储:Java 类对象存储细节

  •   Java 内存区域:介绍 Java 内存区域的组成,深入讨论 Java Heap、方法区、JVM Stack 等职责范围以及设计目的

第二部分 Java 垃圾回收器调优

  •   Serial 收集器特征和调优

  •   Parallel 收集器特征和调优

  •   CMS 收集器特征和调优

  •   G1 收集器特征和调优

 

第三天下午:Java Trouble-Shooting

第一部分 Java 故障案例分析

  •   CPU 过高案例:介绍高消耗CPU代码的常用分析方法,逐一排查可能性

  •   GC 案例:介绍 Young GC 和 Full GC 的基本表象,以及如何在代码实现中尽可能地避免 Full GC

  •   OOM 错误案例:分析 Java 内存泄露的症状,以及快速定位泄露位置(堆、Perm 或 Metasapce)以及解决方案

  •   诊断 JVM Crash :介绍 Java 内存泄露引起的 JVM 进程 Crash 的现象和排查手段

  •   诊断 Java 代码:讨论由 Java 代码引起的 Java 内存泄漏的特征以及如何借助诊断工具定位问题代码

  •   诊断 Native 代码:讨论由 Java Native 代码引起的 Java 内存泄漏的特征以及如何借助诊断工具定位问题代码

第二部分 Java 运维工具

  •  工具介绍:Java 进程工具(jps)、线程 dump 工具(jstack)、内存 dump 工具(jmap)、Java 调试工具(jdb)、图形化工具(jmc、jvisualvm、jconsole)

  •   工具与JMX:理解 JMX 运维 JVM 的适用范围,以及它与运维工具之间的关系

  •   Java Tools API:介绍 Java 编译器、Java Attatch API、Java Dump API 以及对象查询语言(OQL)

     

第四天上午:应用优化

第一部分 关系型数据库优化

  •   数据库优化:慢 SQL 查询和分析,索引优化、数据垂直拆分、水平拆分

  •   JDBC 事务:JDBC 事务原理以及 EJB 和 Spring 事务实现

  •  JDBC 优化:数据库连接池选型,PreparedStatement 性能优化以及 MyBatis 和 JPA 最佳实践

第二部分 分布式优化

  •   缓存优化:解决缓存并发、缓存穿透以及缓存雪崩问题

  •   分布式锁:理解和实现分布式锁(基于 Zookeeper 和 Redis)

  •   分布式事务:理解分布式事务原理,合理地选型实现

 

第四天下午:分布式优化

第一部分 Web 优化

  •   异步 Web:异步 Servlet 提升系统吞吐量

  •   分布式 Session:实现分布式 Session 实现单点登录

第二部分 其他优化

  •   异步优化:使用并发框架实现异步特性

  •   日志优化:比较 Java Logging、logback、Log4j 1 和 2 的特点和优势,合理地使用日志

  •   I/O 优化:文件锁、修改通知,零拷贝等优化手段

  •   网络优化:合理地设置 Socket 连接数量、TCP 网络参数优化

  •   内存优化:理解 OS OOM 原理,堆外内存、虚拟内存等合理使用

 

 

 


返回上一级