課程簡介
在互聯(lián)網(wǎng)+的今天,人們?cè)赑C、手機(jī)、Pad 上安裝了各式各樣的軟件服務(wù)或APP,享受著互聯(lián)網(wǎng)技術(shù)帶來的高效和便捷。隨著這些產(chǎn)品的高速發(fā)展,大家對(duì)高性能、穩(wěn)定性、安全性、擴(kuò)展性等方面有了更高的要求,而誕生于20多年前的Java平臺(tái),一直緊跟時(shí)代脈搏,兼收并蓄,持續(xù)優(yōu)化,在編程領(lǐng)域交出最滿意的答卷,最終成為現(xiàn)代互聯(lián)網(wǎng)服務(wù)端開發(fā)的王者。本課程涵蓋Java中大部分高級(jí)進(jìn)階知識(shí),內(nèi)容包括:Java多線程并發(fā)編程、線程池調(diào)優(yōu)、NIO/Netty高性能網(wǎng)絡(luò)服務(wù)編程、JVM內(nèi)存模型與GC調(diào)優(yōu)、線上事故診斷及排查工具等。
目標(biāo)收益
1、熟練掌握J(rèn)ava并發(fā)編程及應(yīng)用場景
2、熟練掌握J(rèn)ava并發(fā)包的使用,線程池配置及調(diào)優(yōu)
3、熟練掌握NIO/Netty高性能網(wǎng)絡(luò)服務(wù)編程
4、對(duì)Java體系下整體性能與調(diào)優(yōu)有全面的認(rèn)知
5、熟練掌握J(rèn)VM內(nèi)存模型以及GC調(diào)優(yōu)全過程(命令行、JVisualVM、Arthas等工具?)
6,熟練掌握服務(wù)器端調(diào)優(yōu)策略與最佳實(shí)踐(線程模型、任務(wù)類型區(qū)分
培訓(xùn)對(duì)象
課程大綱
第一部分 第一單元 Java并發(fā)編程基礎(chǔ)(4h) |
1.多線程基礎(chǔ) 1.1. 多線程基礎(chǔ)介紹 1.2. 線程創(chuàng)建之Thread/Runnable 1.3. 線程狀態(tài)及生命周期(NEW、RUNNABLE、RUNNING、BLOCKED、TERMINATED) 1.4. Thread API(sleep、yield、join等) 2.線程安全 2.1線程安全問題的本因 (案例:如何避免編寫一個(gè)不安全的業(yè)務(wù)邏輯?) 2.2Synchronized關(guān)鍵字詳解 2.3線程間數(shù)據(jù)隔離之ThreadLocal (案例:調(diào)用鏈跟蹤系統(tǒng)是如何使用ThreadLocal的) 3.線程間通信 3.1了解wait、notify 3.2生產(chǎn)者-消費(fèi)者模式(案例:隊(duì)列緩沖在任務(wù)處理中的應(yīng)用) |
第二單元 Java線程池(2h) |
4.線程池基礎(chǔ) 4.1線程池概要 4.2線程池基本原理 4.3線程池類型 4.3.1newFixedThreadPool(int nThreads) 4.3.2newSingleThreadExecutor() 4.3.3newCachedThreadPool() 4.4線程池實(shí)戰(zhàn)演練(案例:線程池在服務(wù)端處理時(shí)的選型、調(diào)優(yōu)及注意事項(xiàng)) |
第三單元 異步與函數(shù)式編程(2h) |
5.異步編程 5.1為什么需要異步? 5.2Java對(duì)異步編程的支持 5.3使用Future編寫異步功能 5.4Future的增強(qiáng)版:CompletableFuture 5.5組合式CompletableFuture 5.6結(jié)合Stream(案例:整合異步計(jì)算結(jié)果) |
第二部分 第一單元 JVM基礎(chǔ)(2h) |
1.JVM組成及運(yùn)行機(jī)制 2.Java內(nèi)存模型 2.1內(nèi)存結(jié)構(gòu) 2.2內(nèi)存與線程 3.JVM參數(shù)概要 3.1啟動(dòng)參數(shù)格式 3.2啟動(dòng)參數(shù)設(shè)置 3.3常見啟動(dòng)參數(shù) 4.GC基礎(chǔ)分析 4.1GC信息查看 4.2GC問題排查 (案例:快速查看線上的GC問題) 4.3常見GC算法淺析 |
第二單元 JVM內(nèi)存及調(diào)優(yōu)(6h) |
5.堆內(nèi)存分析 5.1堆內(nèi)存結(jié)構(gòu) 5.2堆內(nèi)存信息分析 5.3OOM問題及內(nèi)存dump文件 5.4GC日志文件深度分析 (案例:一次線上GC導(dǎo)致的系統(tǒng)卡頓問題排查過程/OOM dump信息分析) 6.實(shí)戰(zhàn)啟動(dòng)參數(shù)設(shè)置 6.1GC日志配置 6.2內(nèi)存配置 7.內(nèi)置可視化診斷工具JVisualVM 7.1功能概覽與基礎(chǔ)配置 7.2線程監(jiān)控與分析 7.3內(nèi)存監(jiān)控與分析 7.4CPU采樣分析 8.線上問題診斷工具Arthas? 8.1Arthas功能概覽 8.2使用Arthas查看系統(tǒng)全景運(yùn)行時(shí)狀態(tài) 8.3Arthas常見命令工具 8.4線程問題診斷 (案例:快速找到最忙執(zhí)行線程/代碼) 8.5耗時(shí)問題診斷 (案例:快速排查線上調(diào)用鏈耗時(shí)問題) 8.6 如何線上診斷代碼級(jí)故障 |
第三部分 第一單元 NIO基礎(chǔ)(1.5h) |
1.BIO與NIO概念詳述與對(duì)比 2.NIO模型詳解 2.1Channel(通道) 2.2Buffer(緩沖區(qū)) 2.3Selector(選擇器) 3.快速開發(fā)網(wǎng)絡(luò)客戶端與服務(wù)端 |
第二單元 Netty實(shí)戰(zhàn)開發(fā)(3.5h) |
4.Netty基礎(chǔ)介紹 5.Netty客戶端與服務(wù)端通信 6.認(rèn)識(shí)ByteBuf及相關(guān)API的應(yīng)用 7.Netty組件之Pipeline 與ChannelHandler 8.Netty線程模型分析 |
第一部分 第一單元 Java并發(fā)編程基礎(chǔ)(4h) 1.多線程基礎(chǔ) 1.1. 多線程基礎(chǔ)介紹 1.2. 線程創(chuàng)建之Thread/Runnable 1.3. 線程狀態(tài)及生命周期(NEW、RUNNABLE、RUNNING、BLOCKED、TERMINATED) 1.4. Thread API(sleep、yield、join等) 2.線程安全 2.1線程安全問題的本因 (案例:如何避免編寫一個(gè)不安全的業(yè)務(wù)邏輯?) 2.2Synchronized關(guān)鍵字詳解 2.3線程間數(shù)據(jù)隔離之ThreadLocal (案例:調(diào)用鏈跟蹤系統(tǒng)是如何使用ThreadLocal的) 3.線程間通信 3.1了解wait、notify 3.2生產(chǎn)者-消費(fèi)者模式(案例:隊(duì)列緩沖在任務(wù)處理中的應(yīng)用) |
第二單元 Java線程池(2h) 4.線程池基礎(chǔ) 4.1線程池概要 4.2線程池基本原理 4.3線程池類型 4.3.1newFixedThreadPool(int nThreads) 4.3.2newSingleThreadExecutor() 4.3.3newCachedThreadPool() 4.4線程池實(shí)戰(zhàn)演練(案例:線程池在服務(wù)端處理時(shí)的選型、調(diào)優(yōu)及注意事項(xiàng)) |
第三單元 異步與函數(shù)式編程(2h) 5.異步編程 5.1為什么需要異步? 5.2Java對(duì)異步編程的支持 5.3使用Future編寫異步功能 5.4Future的增強(qiáng)版:CompletableFuture 5.5組合式CompletableFuture 5.6結(jié)合Stream(案例:整合異步計(jì)算結(jié)果) |
第二部分 第一單元 JVM基礎(chǔ)(2h) 1.JVM組成及運(yùn)行機(jī)制 2.Java內(nèi)存模型 2.1內(nèi)存結(jié)構(gòu) 2.2內(nèi)存與線程 3.JVM參數(shù)概要 3.1啟動(dòng)參數(shù)格式 3.2啟動(dòng)參數(shù)設(shè)置 3.3常見啟動(dòng)參數(shù) 4.GC基礎(chǔ)分析 4.1GC信息查看 4.2GC問題排查 (案例:快速查看線上的GC問題) 4.3常見GC算法淺析 |
第二單元 JVM內(nèi)存及調(diào)優(yōu)(6h) 5.堆內(nèi)存分析 5.1堆內(nèi)存結(jié)構(gòu) 5.2堆內(nèi)存信息分析 5.3OOM問題及內(nèi)存dump文件 5.4GC日志文件深度分析 (案例:一次線上GC導(dǎo)致的系統(tǒng)卡頓問題排查過程/OOM dump信息分析) 6.實(shí)戰(zhàn)啟動(dòng)參數(shù)設(shè)置 6.1GC日志配置 6.2內(nèi)存配置 7.內(nèi)置可視化診斷工具JVisualVM 7.1功能概覽與基礎(chǔ)配置 7.2線程監(jiān)控與分析 7.3內(nèi)存監(jiān)控與分析 7.4CPU采樣分析 8.線上問題診斷工具Arthas? 8.1Arthas功能概覽 8.2使用Arthas查看系統(tǒng)全景運(yùn)行時(shí)狀態(tài) 8.3Arthas常見命令工具 8.4線程問題診斷 (案例:快速找到最忙執(zhí)行線程/代碼) 8.5耗時(shí)問題診斷 (案例:快速排查線上調(diào)用鏈耗時(shí)問題) 8.6 如何線上診斷代碼級(jí)故障 |
第三部分 第一單元 NIO基礎(chǔ)(1.5h) 1.BIO與NIO概念詳述與對(duì)比 2.NIO模型詳解 2.1Channel(通道) 2.2Buffer(緩沖區(qū)) 2.3Selector(選擇器) 3.快速開發(fā)網(wǎng)絡(luò)客戶端與服務(wù)端 |
第二單元 Netty實(shí)戰(zhàn)開發(fā)(3.5h) 4.Netty基礎(chǔ)介紹 5.Netty客戶端與服務(wù)端通信 6.認(rèn)識(shí)ByteBuf及相關(guān)API的應(yīng)用 7.Netty組件之Pipeline 與ChannelHandler 8.Netty線程模型分析 |