曙海教學(xué)優(yōu)勢
本課程,秉承二十一年積累的教學(xué)品質(zhì),以項(xiàng)目實(shí)現(xiàn)為導(dǎo)向,面向企事業(yè)項(xiàng)目實(shí)際需要,老師將會與您分享設(shè)計(jì)的全流程以及工具的綜合使用經(jīng)驗(yàn)、技巧。課程可定制,線上/線下/上門皆可,熱線:4008699035。
曙海培訓(xùn)的課程培養(yǎng)了大批受企業(yè)歡迎的工程師。大批企業(yè)和曙海
建立了良好的合作關(guān)系,合作企業(yè)30萬+。曙海培訓(xùn)的課程在業(yè)內(nèi)有著響亮的知名度。
JAVA高級使用技巧及性能調(diào)優(yōu)培訓(xùn)
培訓(xùn)大綱:
?1 代碼質(zhì)量???
?1.1 什么是代碼質(zhì)量???
?1.2 什么是軟件質(zhì)量???
?1.3 代碼質(zhì)量與軟件質(zhì)量???
?1.4 代碼質(zhì)量優(yōu)化理論???
?1.5 提高代碼質(zhì)量手段???
?1.6 代碼質(zhì)量優(yōu)化通用準(zhǔn)則???
?2 代碼質(zhì)量靜態(tài)檢查工具???
?2.1 靜態(tài)分析技術(shù)概述???
?2.2 靜態(tài)分析技術(shù)原理???
?2.3 靜態(tài)分析技術(shù)給我們帶來的好處???
?2.4 常用重要靜態(tài)分析工具???
?2.5 如何優(yōu)化靜態(tài)分析工具???
?3 代碼質(zhì)量優(yōu)化通用準(zhǔn)則???
?3.1 避免使用空塊???
?3.2 避免使用空類???
?3.3 去掉多余的import???
?3.4 剪切無效代碼???
?3.5 制定命名體系規(guī)約???
?3.6 去掉重復(fù)代碼???
?3.7 如何優(yōu)雅使用switch語句???
?3.8 用大寫L代替小寫l定義Long變量???
?3.9 避免在一條語句中聲明或賦值多個變量???
?3.10 去掉控制標(biāo)志的臨時變量???
?3.11 避免賦予臨時變量過多的角色???
?3.12 在for循環(huán)內(nèi)修正增量因子有什么弊端???
?3.13 10個溫馨提示內(nèi)容???
?3.14 8個代碼優(yōu)化技巧???
?3.15 1個編程解密???
?4 優(yōu)化類與接口???
?4.1 避免創(chuàng)建不必要的對象???
?4.2 避免使用對象的淺拷貝???
?4.3 如何正確放置靜態(tài)區(qū)位置???
?4.4 為什么不要使用靜態(tài)引入???
?4.5 如何正確使用instanceof???
?4.6 避免實(shí)例化特有工具類???
?4.7 避免有深度耦合的類關(guān)系???
?4.8 如何為臃腫的類進(jìn)行手術(shù)???
?4.9 如何優(yōu)化冗贅類???
?4.10 避免在接口中出現(xiàn)實(shí)現(xiàn)代碼???
?5 方法優(yōu)化技巧???
?5.1 最小化原則???
?5.2 hashcode()與equals()???
?5.3 使用string.equal(String)帶來的弊端???
?5.4 避免命名不具有繼承關(guān)系的同名方法???
?5.5 檢查參數(shù)的有效性???
?5.6 避免使用可變參數(shù)???
?5.7 如何優(yōu)化過長參數(shù)???
?5.8 為什么不要重寫靜態(tài)方法???
?5.9 避免使用過時的API???
?5.10 優(yōu)雅的集合運(yùn)算方法???
?5.11 避免重復(fù)發(fā)明輪子???
?5.12 如何對臃腫的方法進(jìn)行瘦身???
?6 優(yōu)化代碼性能???
?6.1 避免在大量字符串拼接時用“+”???
?6.2 避免在循環(huán)體內(nèi)生成臨時對象???
?6.3 在頻繁插入與刪除時使用LinkedList???
?6.4 在文件操作后要進(jìn)行清理動作???
?6.5 代碼重構(gòu):完美改造???
?6.6 避免顯示調(diào)用finalized()方法???
?7 正確使用異常???
?7.1 避免定義繼承Error或Throwable子類???
?7.2 避免拋出RuntimeException或Exception???
?7.3 避免捕獲NullPointerException或Error???
?7.4 避免在finally塊中處理返回值???
?7.5 避免使失敗失去原子性???
?7.6 如何對異常進(jìn)行封裝???
?7.7 將優(yōu)雅的異常信息反饋給用戶???
?7.8 避免亂用異常???
?8 保證多線程代碼質(zhì)量???
?8.1 為什么不要重寫start()方法???
?8.2 避免使用非線程安全的初始化方法???
?8.3 用final成員對象作為同期化對象鎖???
?8.4 在synchronized內(nèi)使用wait()方法???
?8.5 盡量縮小同期化代碼范圍???
?9 架構(gòu)優(yōu)化???
?9.1 單一職責(zé)原則???
?9.2 接口隔離原則???
?9.3 依賴倒置原則???
?9.4 里式替換原則???
?9.5 *少知道原則???
?9.6 如何擴(kuò)展外部類功能???
?9.7 如何梳理混雜的架構(gòu)體系???
?10 包優(yōu)化???
?10.1 發(fā)布等價原則???
?10.2 共同重用原則???
?10.3 共同封閉原則???
?10.4 無環(huán)依賴原則???
?10.5 如何保持包的清晰???
?10.6 如何抽出框架層次???
?10.7 如何提取框架工程???
?11 優(yōu)良代碼風(fēng)格???
?11.1 如何優(yōu)化代碼格式工具???
?11.2 如何統(tǒng)一標(biāo)準(zhǔn)的代碼格式???
?11.3 養(yǎng)成良好的代碼注釋習(xí)慣???
?11.4 里式替換原則???
?11.5 *少知道原則???
?11.6 如何擴(kuò)展外部類功能???
?11.7 如何梳理混雜的架構(gòu)體系???
?12 初識JVM???
?12.1 JVM的概念???
?12.2 JVM發(fā)展歷史???
?12.3 JVM種類???
?12.4 Java語言規(guī)范???
?12.5 JVM規(guī)范???
?13 JVM運(yùn)行機(jī)制???
?13.1 JVM啟動流程???
?13.2 JVM基本結(jié)構(gòu)???
?13.3 內(nèi)存模型???
?13.4 編譯和解釋運(yùn)行的概念???
?14 常用JVM配置參數(shù)???
?14.1 Trace跟蹤參數(shù)???
?14.2 堆的分配參數(shù)???
?14.3 棧的分配參數(shù)???
?15 GC算法與種類???
?15.1 GC的概念???
?15.2 GC算法、引用計(jì)數(shù)法、標(biāo)記清除、標(biāo)記壓縮、復(fù)制算法???
?15.3 可觸及性???
?15.4 Stop-The-World???
?16 GC參數(shù)???
?16.1 堆的回顧???
?16.2 串行收集器???
?16.3 并行收集器???
?16.4 CMS收集器???
?16.5 Tomcat實(shí)例演示???
?17 Java堆分析???
?17.1 內(nèi)存溢出(OOM)的原因???
?17.2 MAT使用基礎(chǔ)???
?17.3 淺堆(Shallow Heap)與深堆(Retained Heap)???
?17.4 顯示入引用(incoming)和出引用(outgoing)???
?17.5 支配樹???
?17.6 使用Visual VM分析堆???
?17.7 Tomcat OOM分析案例