課程簡介
隨著大數(shù)據(jù)時代的快速到來,以及大數(shù)據(jù)在生產(chǎn)生活中迅速應(yīng)用,大數(shù)據(jù)領(lǐng)域如雨后春筍般的出現(xiàn)大量的新技術(shù),如Go語言等技術(shù),其中Go語言已經(jīng)成為編程語言中重要的一部分,被越來越多的企業(yè)所使用。為了使Go語言處理速度更快,效率更高,在使用過程中不可避免的需要進行一系列的性能優(yōu)化。本培訓(xùn)尹老師總結(jié)和歸納多年Go語言工作經(jīng)驗,對Go語言技術(shù)的性能調(diào)優(yōu)進行深入剖析,使學(xué)員從實操層面、架構(gòu)層面到核心原理層面進行調(diào)優(yōu),并通過生動的案例展示優(yōu)化過程與效果,調(diào)優(yōu)的范圍包括Go的GC,網(wǎng)絡(luò)優(yōu)化,性能優(yōu)化工具介紹及其使用以及Go內(nèi)存模型,常見性能優(yōu)化手段,常用的系統(tǒng)及網(wǎng)絡(luò)優(yōu)化參考,使用不規(guī)范造成的性能問題,成功優(yōu)化案例講解等。
目標收益
1、Go語言性能優(yōu)化,主要包括Go語言的GC、Go語言的性能優(yōu)化工具介紹及其使用;
2、Go語言內(nèi)存模型,常見性能優(yōu)化手段;
3、Go語言網(wǎng)絡(luò)優(yōu)化、Go語言常用的系統(tǒng)及網(wǎng)絡(luò)優(yōu)化參考;
4、Go語言使用不規(guī)范造成的性能問題,成功優(yōu)化案例講解;
培訓(xùn)對象
1、本課程適合于Go語言開發(fā)工程師;
2、本課程適合于高級開發(fā)工程師、項目經(jīng)理、技術(shù)總監(jiān);
3、本課程適合于企業(yè)技術(shù)管理人員;
4、本課程適合于IT運維人員;
課程大綱
Go語言性能優(yōu)化 |
1、Go語言性能優(yōu)化 2、Go語言性能優(yōu)化主要方面 a)CPU性能優(yōu)化 b)內(nèi)存性能優(yōu)化 c)堆棧性能優(yōu)化 d)Goroutine性能優(yōu)化 e)鎖性能優(yōu)化 f)網(wǎng)絡(luò)性能優(yōu)化 g)代碼編寫性能優(yōu)化 h)架構(gòu)設(shè)計性能優(yōu)化 3、使用不規(guī)范造成的性能問題 4、實操演示:Go語言性能優(yōu)化 |
Go語言的GC原理 |
1、Go語言的GC原理 2、什么是垃圾回收 3、內(nèi)存泄露檢測工具 4、智能指針 5、Golang的GC背景 6、Golang的GC相關(guān)問題 7、Go語言的GC特征 8、三色標記法 9、Mark and Sweep算法 10、三色標記法觸發(fā)條件 11、三色標記法的具體過程 12、Golang中的GC是如何工作的 13、如何優(yōu)化GC 14、硬性參數(shù) 15、使用gdb調(diào)優(yōu) 16、減少對象分配盡量重用對象 17、函數(shù)編碼參數(shù)調(diào)優(yōu) 18、數(shù)組的空間規(guī)劃 19、寫代碼時要避免要用string+操作 20、盡量復(fù)用小對象 21、局部變量盡量少聲名 22、多個小對象可以放到一個結(jié)構(gòu)體中 23、如何測量GC 24、案例:Go語言的GC案例 |
Go語言的性能優(yōu)化工具介紹及其使用 |
1、Go語言的性能優(yōu)化工具介紹及其使用 2、Go語言采集性能數(shù)據(jù) 3、Go語言內(nèi)置采集程序運行數(shù)據(jù)的工具 4、runtime/pprof 5、net/http/pprof 6、利用runtime/pprof工具采集運行數(shù)據(jù) 7、利用runtime/pprof應(yīng)用性能分析 8、利用net/http/pprof工具采集運行數(shù)據(jù) 9、利用net/http/pprof應(yīng)用性能分析 10、獲取函數(shù)占用的CPU以及內(nèi)存資源 11、profiling報告保存到文件 12、CPU性能分析 13、開啟CPU性能分析 14、停止CPU性能分析 15、使用go tool pprof工具進行CPU性能分析 16、內(nèi)存性能優(yōu)化 17、記錄程序的堆棧信息 18、使用go tool pprof工具進行內(nèi)存性能分析 19、實操演示:Go語言的性能優(yōu)化工具介紹及其使用案例 |
Go語言內(nèi)存模型 |
1、Go語言內(nèi)存模型 2、常見的垃圾回收模型 3、引用計數(shù)(reference counting) 4、標記-清除(mark and sweep) 5、分代收集(generation) 6、GO語言的垃圾回收器 7、GO語言的垃圾回收器歷史介紹 8、GO語言的內(nèi)存回收存在的問題 9、Go程序內(nèi)存占用大的問題 10、Go的垃圾回收觸發(fā)閾值 11、操作系統(tǒng)采取“延遲回收”策略 12、GC時間長的問題 13、Goroutine內(nèi)存泄露的問題 14、堆內(nèi)存泄漏(Heap leak) 15、系統(tǒng)資源泄露(Resource Leak) 16、實操演示:Go語言內(nèi)存模型案例剖析 |
Go語言常見性能優(yōu)化手段 |
1、Go語言常見性能優(yōu)化手段 2、go tool pprof命令 3、命令行交互界面 4、go tool pprof命令參數(shù)解讀 5、圖形化界面 6、安裝graphviz圖形化工具 7、go-torch和火焰圖 8、火焰圖(Flame Graph) 9、安裝go-touch 10、安裝FlameGraph 11、壓測工具wrk 12、使用go-torch 13、pprof與性能測試結(jié)合 14、Gin框架中使用pprof 15、下載Gin框架專用pprof包 16、項目中添加Gin框架 17、編譯并運行代碼生成/debug/pprof的API 18、使用go tool pprof采集數(shù)據(jù) 19、go tool pprof命令行交互界面 20、實操演示:Go語言常見性能優(yōu)化手段調(diào)優(yōu)案例 |
Go語言網(wǎng)絡(luò)優(yōu)化 |
1、Go語言網(wǎng)絡(luò)優(yōu)化 2、服務(wù)型應(yīng)用 3、WEB應(yīng)用 4、使用net/http/pprof庫分析HTTP服務(wù) 5、gin框架 6、HTTP服務(wù)的/debug/pprof endpoint 7、/debug/pprof/profile 8、/debug/pprof/heap 9、/debug/pprof/block 10、/debug/pprof/goroutines 11、實操演示:Go語言網(wǎng)絡(luò)優(yōu)化案例 |
Go語言常用的系統(tǒng)及網(wǎng)絡(luò)優(yōu)化參考 |
1、Go語言常用的系統(tǒng)及網(wǎng)絡(luò)優(yōu)化參考 2、Linux內(nèi)核參數(shù) 3、硬性參數(shù) 4、系統(tǒng)運行參數(shù)設(shè)置 5、Go語言網(wǎng)絡(luò)優(yōu)化參考 6、使用gdb調(diào)優(yōu) 7、實操演示:Go語言常用的系統(tǒng)及網(wǎng)絡(luò)優(yōu)化參考案例 |
Go語言使用不規(guī)范造成的性能問題 |
1、Go語言使用不規(guī)范造成的性能問題 2、Go語言代碼編寫不規(guī)范造成的性能問題 3、Go語言運行環(huán)境參數(shù)設(shè)置造成的性能問題 4、案例:Go語言使用不規(guī)范造成的性能問題 |
Go語言成功優(yōu)化案例講解 |
1、Go語言成功優(yōu)化案例講解 2、優(yōu)化案例代碼介紹 3、編譯過程優(yōu)化 4、代碼優(yōu)化 5、參數(shù)優(yōu)化 6、案例:Go語言成功優(yōu)化案例講解 |
Go語言性能優(yōu)化 1、Go語言性能優(yōu)化 2、Go語言性能優(yōu)化主要方面 a)CPU性能優(yōu)化 b)內(nèi)存性能優(yōu)化 c)堆棧性能優(yōu)化 d)Goroutine性能優(yōu)化 e)鎖性能優(yōu)化 f)網(wǎng)絡(luò)性能優(yōu)化 g)代碼編寫性能優(yōu)化 h)架構(gòu)設(shè)計性能優(yōu)化 3、使用不規(guī)范造成的性能問題 4、實操演示:Go語言性能優(yōu)化 |
Go語言的GC原理 1、Go語言的GC原理 2、什么是垃圾回收 3、內(nèi)存泄露檢測工具 4、智能指針 5、Golang的GC背景 6、Golang的GC相關(guān)問題 7、Go語言的GC特征 8、三色標記法 9、Mark and Sweep算法 10、三色標記法觸發(fā)條件 11、三色標記法的具體過程 12、Golang中的GC是如何工作的 13、如何優(yōu)化GC 14、硬性參數(shù) 15、使用gdb調(diào)優(yōu) 16、減少對象分配盡量重用對象 17、函數(shù)編碼參數(shù)調(diào)優(yōu) 18、數(shù)組的空間規(guī)劃 19、寫代碼時要避免要用string+操作 20、盡量復(fù)用小對象 21、局部變量盡量少聲名 22、多個小對象可以放到一個結(jié)構(gòu)體中 23、如何測量GC 24、案例:Go語言的GC案例 |
Go語言的性能優(yōu)化工具介紹及其使用 1、Go語言的性能優(yōu)化工具介紹及其使用 2、Go語言采集性能數(shù)據(jù) 3、Go語言內(nèi)置采集程序運行數(shù)據(jù)的工具 4、runtime/pprof 5、net/http/pprof 6、利用runtime/pprof工具采集運行數(shù)據(jù) 7、利用runtime/pprof應(yīng)用性能分析 8、利用net/http/pprof工具采集運行數(shù)據(jù) 9、利用net/http/pprof應(yīng)用性能分析 10、獲取函數(shù)占用的CPU以及內(nèi)存資源 11、profiling報告保存到文件 12、CPU性能分析 13、開啟CPU性能分析 14、停止CPU性能分析 15、使用go tool pprof工具進行CPU性能分析 16、內(nèi)存性能優(yōu)化 17、記錄程序的堆棧信息 18、使用go tool pprof工具進行內(nèi)存性能分析 19、實操演示:Go語言的性能優(yōu)化工具介紹及其使用案例 |
Go語言內(nèi)存模型 1、Go語言內(nèi)存模型 2、常見的垃圾回收模型 3、引用計數(shù)(reference counting) 4、標記-清除(mark and sweep) 5、分代收集(generation) 6、GO語言的垃圾回收器 7、GO語言的垃圾回收器歷史介紹 8、GO語言的內(nèi)存回收存在的問題 9、Go程序內(nèi)存占用大的問題 10、Go的垃圾回收觸發(fā)閾值 11、操作系統(tǒng)采取“延遲回收”策略 12、GC時間長的問題 13、Goroutine內(nèi)存泄露的問題 14、堆內(nèi)存泄漏(Heap leak) 15、系統(tǒng)資源泄露(Resource Leak) 16、實操演示:Go語言內(nèi)存模型案例剖析 |
Go語言常見性能優(yōu)化手段 1、Go語言常見性能優(yōu)化手段 2、go tool pprof命令 3、命令行交互界面 4、go tool pprof命令參數(shù)解讀 5、圖形化界面 6、安裝graphviz圖形化工具 7、go-torch和火焰圖 8、火焰圖(Flame Graph) 9、安裝go-touch 10、安裝FlameGraph 11、壓測工具wrk 12、使用go-torch 13、pprof與性能測試結(jié)合 14、Gin框架中使用pprof 15、下載Gin框架專用pprof包 16、項目中添加Gin框架 17、編譯并運行代碼生成/debug/pprof的API 18、使用go tool pprof采集數(shù)據(jù) 19、go tool pprof命令行交互界面 20、實操演示:Go語言常見性能優(yōu)化手段調(diào)優(yōu)案例 |
Go語言網(wǎng)絡(luò)優(yōu)化 1、Go語言網(wǎng)絡(luò)優(yōu)化 2、服務(wù)型應(yīng)用 3、WEB應(yīng)用 4、使用net/http/pprof庫分析HTTP服務(wù) 5、gin框架 6、HTTP服務(wù)的/debug/pprof endpoint 7、/debug/pprof/profile 8、/debug/pprof/heap 9、/debug/pprof/block 10、/debug/pprof/goroutines 11、實操演示:Go語言網(wǎng)絡(luò)優(yōu)化案例 |
Go語言常用的系統(tǒng)及網(wǎng)絡(luò)優(yōu)化參考 1、Go語言常用的系統(tǒng)及網(wǎng)絡(luò)優(yōu)化參考 2、Linux內(nèi)核參數(shù) 3、硬性參數(shù) 4、系統(tǒng)運行參數(shù)設(shè)置 5、Go語言網(wǎng)絡(luò)優(yōu)化參考 6、使用gdb調(diào)優(yōu) 7、實操演示:Go語言常用的系統(tǒng)及網(wǎng)絡(luò)優(yōu)化參考案例 |
Go語言使用不規(guī)范造成的性能問題 1、Go語言使用不規(guī)范造成的性能問題 2、Go語言代碼編寫不規(guī)范造成的性能問題 3、Go語言運行環(huán)境參數(shù)設(shè)置造成的性能問題 4、案例:Go語言使用不規(guī)范造成的性能問題 |
Go語言成功優(yōu)化案例講解 1、Go語言成功優(yōu)化案例講解 2、優(yōu)化案例代碼介紹 3、編譯過程優(yōu)化 4、代碼優(yōu)化 5、參數(shù)優(yōu)化 6、案例:Go語言成功優(yōu)化案例講解 |