我的新書《高性能Java系統權威指南》

各大書店正在銷售,停止內卷,學點實用的

節選

書中章節

第1章 Java代碼優化	
    1.1 可優化的代碼	
    1.2 性能監控	
    1.3 JMH
        1.3.1 使用JMH	
        1.3.2 JMH常用設置	
        1.3.3 注意事項	
        1.3.4 單元測試
第2章 字符串和數字操作	
    2.1 構造字符串	
    2.2 字符串拼接	
    2.3 字符串格式化	
    2.4 字符串查找	
    2.5 替換	
    2.6 intern方法	
    2.7 UUID	49
    2.8 StringUtils類	
    2.9 前綴樹過濾	
    2.10 數字裝箱	
    2.11 BigDecimal
第3章 併發編程和異步編程		 
    3.1 不安全的代碼	
    3.2 Java併發編程	
        3.2.1 volatile	
        3.2.2 synchronized	
        3.2.3 Lock	
        3.2.4 Condition	
        3.2.5 讀寫鎖	
        3.2.6 Semaphore	
        3.2.7 柵欄	
    3.3 Java併發工具	
        3.3.1 原子變量	
        3.3.2 Queue	
        3.3.3 Future	
        3.3.4 ThreadLocal	
    3.4 Java線程池	
    3.5 異步編程	
        3.5.1 創建異步任務	
        3.5.2 任務完成後執行回調	
        3.5.3 串行執行	
        3.5.4 並行執行	
        3.5.5 接收任務處理結果
第4章	代碼性能優化	
    4.1 int轉String	
    4.2 使用Native方法	
    4.3 日期格式化	
    4.4 switch優化	
    4.5 優先使用局部變量	
    4.6 預處理	
    4.7 預分配	
    4.8 預編譯	
    4.9 預先編碼	
    4.10 謹慎使用Exception
    4.11 批處理	
    4.12 展開循環	
    4.13 靜態方法調用
    4.14 高速Map存取	
    4.15 位運算	
    4.16 反射	
    4.17 壓縮	
    4.18 可變數組
    4.19 System.nanoTime()	
    4.20 ThreadLocalRandom	
    4.21 Base64	
    4.22 辨別重量級對象
    4.23 池化技術	
    4.24 實現hashCode	
    4.25 錯誤優化策略	
        4.25.1 final無法幫助內聯	
        4.25.2 subString內存泄漏	
        4.25.3 循環優化	
        4.25.4 循環中捕捉異常
第5章 高性能工具
    5.1 高速緩存Caffeine	
        5.1.1 安裝Caffeine	
        5.1.2 Caffeine的基本使用方法	
        5.1.3 淘汰策略	
        5.1.4 statistics功能	
        5.1.5 Caffeine高命中率	
        5.1.6 卓越的性能	
    5.2 映射工具Selma	
    5.3 JSON工具Jackson	
        5.3.1 Jackson的三種使用方式	
        5.3.2 Jackson樹遍歷	
        5.3.3 對象綁定	
        5.3.4 流式操作	
        5.3.5 自定義JsonSerializer	
        5.3.6 集合的反序列化	
        5.3.7 性能提升和優化	
    5.4 HikariCP	
        5.4.1 安裝HikariCP	
        5.4.2 HikariCP性能測試	
        5.4.3 性能優化說明	
    5.5 文本處理工具Beetl	
        5.5.1 安裝和配置	
        5.5.2 腳本引擎	
        5.5.3 Beetl的特點	
        5.5.4 性能優化	
    5.6 MessagePack	
    5.7 ReflectASM	
第六章 可讀性代碼	
    6.1 精簡註釋	
    6.2 變量	
        6.2.1 變量命名	
        6.2.2 變量的位置	
        6.2.3 中間變量	
    6.3 方法	
        6.3.1 方法簽名	
        6.3.2 短方法	
        6.3.3 單一職責	
    6.4 分支	
        6.4.1 if else	
        6.4.2 switch case	
    6.5 發現對象	
        6.5.1 不要使用String	
        6.5.2 不要用數組、Map	
    6.6 checked異常(可控異常)	
    6.7 其他事項	
        6.7.1 避免自動格式化	
        6.7.2 關於Null
第7章 JIT優化	
    7.1 編譯Java代碼	
    7.2 處理語法糖	
    7.3 解釋執行和即時編譯	
    7.4 C1和C2	
    7.5 代碼緩存	
    7.6 JITWatch	
    7.7 內聯	
    7.8 虛方法調用
第8章 代碼審查	281
    8.1 ConcurrentHashMap陷阱	
    8.2 字符串搜索	
    8.3 I/O輸出	
    8.4 字符串拼接	
    8.5 方法的入參和出參	
    8.6 RPC調用定義的返回值	
    8.7 Integer的使用	
    8.8 排序	
    8.9 判斷特殊的ID	
    8.10 優化if結構	
    8.11 文件複製	
    8.12 switch優化	
    8.13 Encoder	
    8.14 一個JMH例子	
    8.15 註釋	
    8.16 完善註釋	
    8.17 方法抽取	
    8.18 遍歷Map	
    8.19 日期格式化	
    8.20 日誌框架	
    8.21 持久化到數據庫	
    8.22 某個RPC框架	
    8.23 循環調用	
    8.24 lock的使用	
    8.25 字符集	
    8.26 處理枚舉值	
    8.27 任務執行	
    8.28 開關判斷	
    8.29 JDBC操作	
    8.30 Controller代碼	
    8.31 停止任務	
    8.32 縮短UUID	
第9章 Java字節碼	
    9.1 Java字節碼	
        9.1.1 基礎知識	
        9.1.2 .class文件的格式	
    9.2 Java方法的執行	
        9.2.1 方法在內存中的表示	
        9.2.2 方法在.class文件中的表示	
        9.2.3 指令的分類	
        9.2.4 HelloWorld字節碼分析	
        9.2.5 字符串拼接字節碼分析	
    9.3 字節碼IDE插件	
    9.4 ASM入門	
        9.4.1 生成類名和構造函數	
        9.4.2 生成main方法	
        9.4.3 調用生成的代碼	
    9.5 ASM增強代碼	
        9.5.1 使用反射實現	
        9.5.2 使用ASM生成輔助類	
        9.5.3 switch語句的分類	
        9.5.4 獲取Bean中的property	
        9.5.5 switch語句的實現	
        9.5.6 性能對比
第10章 JVM調優	
    10.1 JVM內存管理	
        10.1.1 JVM內存區域	
        10.1.2 堆內存區域	
    10.2 垃圾回收:自動內存管理	
        10.2.1 垃圾自動回收	
        10.2.2 Serial GC	
        10.2.3 Parallel GC	
        10.2.4  CMS GC	
        10.2.5  G1 GC	
    10.3 JVM參數設置	
        10.3.1 從GC Log入手	
        10.3.2 堆大小設置建議	
        10.3.3 其他參數的設置	
    10.4 內存分析工具	
        10.4.1 jstat命令	
        10.4.2 jmap命令	
        10.4.3 GCeasy	
        10.4.4 JMC	
        10.4.5 MAT	
        10.4.6 OQL	
    10.5 內存故障案例分析	
    10.5.1 一個簡單例子	
    10.5.2 線程池優化導致內存泄漏	
    10.5.3 finalize引發的嚴重事故	
    10.5.4 C++動態庫導致的內存泄漏	
                 		
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章