课程简介
在互联网+的今天,人们在PC、手机、Pad 上安装了各式各样的软件服务或APP,享受着互联网技术带来的高效和便捷。随着这些产品的高速发展,大家对高性能、稳定性、安全性、扩展性等方面有了更高的要求,而诞生于20多年前的Java平台,一直紧跟时代脉搏,兼收并蓄,持续优化,在编程领域交出最满意的答卷,最终成为现代互联网服务端开发的王者。本课程涵盖Java中大部分高级进阶知识,内容包括:Java多线程并发编程、线程池调优、NIO/Netty高性能网络服务编程、JVM内存模型与GC调优、线上事故诊断及排查工具等。
目标收益
1、熟练掌握Java并发编程及应用场景
2、熟练掌握Java并发包的使用,线程池配置及调优
3、熟练掌握NIO/Netty高性能网络服务编程
4、对Java体系下整体性能与调优有全面的认知
5、熟练掌握JVM内存模型以及GC调优全过程(命令行、JVisualVM、Arthas等工具 )
6,熟练掌握服务器端调优策略与最佳实践(线程模型、任务类型区分
培训对象
课程大纲
第一部分 第一单元 Java并发编程基础(4h) |
1.多线程基础 1.1. 多线程基础介绍 1.2. 线程创建之Thread/Runnable 1.3. 线程状态及生命周期(NEW、RUNNABLE、RUNNING、BLOCKED、TERMINATED) 1.4. Thread API(sleep、yield、join等) 2.线程安全 2.1线程安全问题的本因 (案例:如何避免编写一个不安全的业务逻辑?) 2.2Synchronized关键字详解 2.3线程间数据隔离之ThreadLocal (案例:调用链跟踪系统是如何使用ThreadLocal的) 3.线程间通信 3.1了解wait、notify 3.2生产者-消费者模式(案例:队列缓冲在任务处理中的应用) |
第二单元 Java线程池(2h) |
4.线程池基础 4.1线程池概要 4.2线程池基本原理 4.3线程池类型 4.3.1newFixedThreadPool(int nThreads) 4.3.2newSingleThreadExecutor() 4.3.3newCachedThreadPool() 4.4线程池实战演练(案例:线程池在服务端处理时的选型、调优及注意事项) |
第三单元 异步与函数式编程(2h) |
5.异步编程 5.1为什么需要异步? 5.2Java对异步编程的支持 5.3使用Future编写异步功能 5.4Future的增强版:CompletableFuture 5.5组合式CompletableFuture 5.6结合Stream(案例:整合异步计算结果) |
第二部分 第一单元 JVM基础(2h) |
1.JVM组成及运行机制 2.Java内存模型 2.1内存结构 2.2内存与线程 3.JVM参数概要 3.1启动参数格式 3.2启动参数设置 3.3常见启动参数 4.GC基础分析 4.1GC信息查看 4.2GC问题排查 (案例:快速查看线上的GC问题) 4.3常见GC算法浅析 |
第二单元 JVM内存及调优(6h) |
5.堆内存分析 5.1堆内存结构 5.2堆内存信息分析 5.3OOM问题及内存dump文件 5.4GC日志文件深度分析 (案例:一次线上GC导致的系统卡顿问题排查过程/OOM dump信息分析) 6.实战启动参数设置 6.1GC日志配置 6.2内存配置 7.内置可视化诊断工具JVisualVM 7.1功能概览与基础配置 7.2线程监控与分析 7.3内存监控与分析 7.4CPU采样分析 8.线上问题诊断工具Arthas 8.1Arthas功能概览 8.2使用Arthas查看系统全景运行时状态 8.3Arthas常见命令工具 8.4线程问题诊断 (案例:快速找到最忙执行线程/代码) 8.5耗时问题诊断 (案例:快速排查线上调用链耗时问题) 8.6 如何线上诊断代码级故障 |
第三部分 第一单元 NIO基础(1.5h) |
1.BIO与NIO概念详述与对比 2.NIO模型详解 2.1Channel(通道) 2.2Buffer(缓冲区) 2.3Selector(选择器) 3.快速开发网络客户端与服务端 |
第二单元 Netty实战开发(3.5h) |
4.Netty基础介绍 5.Netty客户端与服务端通信 6.认识ByteBuf及相关API的应用 7.Netty组件之Pipeline 与ChannelHandler 8.Netty线程模型分析 |
第一部分 第一单元 Java并发编程基础(4h) 1.多线程基础 1.1. 多线程基础介绍 1.2. 线程创建之Thread/Runnable 1.3. 线程状态及生命周期(NEW、RUNNABLE、RUNNING、BLOCKED、TERMINATED) 1.4. Thread API(sleep、yield、join等) 2.线程安全 2.1线程安全问题的本因 (案例:如何避免编写一个不安全的业务逻辑?) 2.2Synchronized关键字详解 2.3线程间数据隔离之ThreadLocal (案例:调用链跟踪系统是如何使用ThreadLocal的) 3.线程间通信 3.1了解wait、notify 3.2生产者-消费者模式(案例:队列缓冲在任务处理中的应用) |
第二单元 Java线程池(2h) 4.线程池基础 4.1线程池概要 4.2线程池基本原理 4.3线程池类型 4.3.1newFixedThreadPool(int nThreads) 4.3.2newSingleThreadExecutor() 4.3.3newCachedThreadPool() 4.4线程池实战演练(案例:线程池在服务端处理时的选型、调优及注意事项) |
第三单元 异步与函数式编程(2h) 5.异步编程 5.1为什么需要异步? 5.2Java对异步编程的支持 5.3使用Future编写异步功能 5.4Future的增强版:CompletableFuture 5.5组合式CompletableFuture 5.6结合Stream(案例:整合异步计算结果) |
第二部分 第一单元 JVM基础(2h) 1.JVM组成及运行机制 2.Java内存模型 2.1内存结构 2.2内存与线程 3.JVM参数概要 3.1启动参数格式 3.2启动参数设置 3.3常见启动参数 4.GC基础分析 4.1GC信息查看 4.2GC问题排查 (案例:快速查看线上的GC问题) 4.3常见GC算法浅析 |
第二单元 JVM内存及调优(6h) 5.堆内存分析 5.1堆内存结构 5.2堆内存信息分析 5.3OOM问题及内存dump文件 5.4GC日志文件深度分析 (案例:一次线上GC导致的系统卡顿问题排查过程/OOM dump信息分析) 6.实战启动参数设置 6.1GC日志配置 6.2内存配置 7.内置可视化诊断工具JVisualVM 7.1功能概览与基础配置 7.2线程监控与分析 7.3内存监控与分析 7.4CPU采样分析 8.线上问题诊断工具Arthas 8.1Arthas功能概览 8.2使用Arthas查看系统全景运行时状态 8.3Arthas常见命令工具 8.4线程问题诊断 (案例:快速找到最忙执行线程/代码) 8.5耗时问题诊断 (案例:快速排查线上调用链耗时问题) 8.6 如何线上诊断代码级故障 |
第三部分 第一单元 NIO基础(1.5h) 1.BIO与NIO概念详述与对比 2.NIO模型详解 2.1Channel(通道) 2.2Buffer(缓冲区) 2.3Selector(选择器) 3.快速开发网络客户端与服务端 |
第二单元 Netty实战开发(3.5h) 4.Netty基础介绍 5.Netty客户端与服务端通信 6.认识ByteBuf及相关API的应用 7.Netty组件之Pipeline 与ChannelHandler 8.Netty线程模型分析 |