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