课程介绍
在互联网+的今天,人们在PC、手机、Pad 上安装了各式各样的软件服务或APP,享受着互联网技术带来的高效和便捷。随着这些产品的高速发展,大家对高性能、稳定性、安全性、扩展性等方面有了更高的要求,而诞生于20多年前的Java平台,一直紧跟时代脉搏,兼收并蓄,持续优化,在编程领域交出最满意的答卷,最终成为现代互联网服务端开发的王者。当然,一种语言再强大,也不能在任何时候都能达到我们理想的状态。在实际工作中,我们会遇到非常多故障或性能问题,有些问题是需要在开发设计前通过规范避免的,有些问题是需要根据线上生产环境“边查边看边调整”的。很多工程师在遇到这些问题时,会根据一些浅显的表现来做很“粗暴”的处理,比如:OOM了就升配内存,CPU飙高就升核,超时异常过多就延长超时时间。诚然,在紧急情况下,有些处理能马上解决问题,但毕竟不是长久之计,甚至有时候会弄巧成拙。
那么,Java工程师该如何才能做好故常排查和稳定性保障呢?
讲师认为,工程师除了要掌握日常编程技巧之外,还需要了解更多底层知识,这样才能在排查故障时快速分析根因,及时找到最合理的解决方案。本次课程会根据一些常见问题的核心底层基础知识讲起,然后分别对每个知识点以及可能产生的故障展开讲解,同时,讲师会介绍一系列问题排查工具的使用方法,让大家从理论到实操都有成长与收获!
课程收益
1、熟练掌握Java高并发之:多线程编程(JUC),并学会处理多线程故障处理;
2、熟练掌握Java高并发之:锁机制,并学会正确处理线程安全问题;
3、了解JVM类加载器及底层运行机制;
4、熟练掌握JVM内存调优、GC问题排查;
5、熟练掌握线上常见故障诊断;
6、熟练掌握常见的故障排查工具箱。
课程对象
从事Java的开发人员、测试人员以及对Java感兴趣的人员。
课程大纲
主题 | 内容 | 课程大纲 |
第一单元 Java多线程编程(5H)
|
该单元介绍Java多线程基础知识,比如Thread/Runnable API、线程状态/生命周期、同步锁
| 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.2 Synchronized关键字详解 2.3线程间数据隔离之ThreadLocal (案例:调用链跟踪系统是如何使用ThreadLocal的,可能会出现哪些问题?) | ||
3.线程池应用 3.1线程池基础 3.2使用并发包JUC 3.3锁机制及API支持 | ||
4.线程间通信 4.1 了解wait、notify 4.2 生产者-消费者模式(案例:队列缓冲在任务处理中的应用以及常见故障处理) | ||
第二单元 JVM类加载器及底层运行机制(2H) |
该单元会首先介绍Java类加载器基础知识,然后分别介绍根加载器、扩展类加载器、系统类加载器,最后会介绍自定义类加载器
| 1. Java类加载器概览 1.1 类加载器基础 1.2 类加载器过程 |
2. Java类加载器分类 2.1 根类加载器 2.2 扩展类加载器 2.3 系统类加载器 2.4 自定义类加载器 | ||
第三单元 JVM内存及调优(6H) |
该单元主要讲解JVM底层运行机制、Java内存模型(JMM)、GC日志分析、堆内存分析及问题排查 | 1. JVM运行机制 |
2. Java内存模型 | ||
3. GC分析 3.1 GC信息查看 3.2 GC问题排查 (案例:快速查看线上的GC问题) | ||
4. 堆内存分析 4.1 堆内存结构 4.2 堆内存信息分析 4.3 OOM问题及内存dump文件 (案例:一次线上GC导致的系统卡顿问题排查过程/OOM dump信息分析) | ||
5. 常见启动参数设置 5.1 GC日志配置 5.2 内存配置 5.3 其他常见配置 | ||
6. 线上问题诊断工具Arthas 6.1 线程问题诊断 (案例:快速找到最忙执行线程/代码) 6.2 耗时问题诊断 (案例:快速排查线上调用链耗时问题) 6.3 内存及CPU问题诊断
|