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