Java系統性能最佳化實戰

Java系統性能最佳化實戰

《Java系統性能最佳化實戰》是2019年11月電子工業出版社出版的圖書,作者是李家智、 張世敏 。此書是一本Java開發規範和系統性能最佳化指南,從高性能、易維護、代碼增強,以及在微服務系統中編寫Java代碼的角度來描述如何實現高性能Java系統。書中的大部分例子都是從作者所在傳統企業套用,以及高並發系統中摘錄而來的,極具參考意義。

基本介紹

  • 中文名:Java系統性能最佳化實戰
  • 作者:李家智張世敏
  • 出版時間:2019年11月
  • 出版社:電子工業出版社
  • 頁數:376 頁
  • ISBN:9787121375668
  • 類別:代碼最佳化和設計技巧
  • 定價:89 元
  • 開本:16 開
  • 裝幀:平裝
  • 千字數:526 
  • 版次:01-01
內容簡介,圖書目錄,作者簡介,

內容簡介

《Java系統性能最佳化實戰》基於作者在實際工作中遇到的與系統相關的問題及解決之道,通過改善代碼來提高系統性能,解決因為代碼導致的系統故障。本書介紹了如何在系統中運用高性能開源工具,以及代碼最佳化和設計技巧來提升性能。另外,如何編寫維護性強的代碼也在本書的寫作範疇內。本書還介紹了一些底層技術,比如Java位元組碼、ASM和JSR269,這些技術同樣可以運用在項目中,以輔助提升性能和方便維護代碼。
《Java系統性能最佳化實戰》適合中高級程式設計師和架構師,以及有志從事基礎技術研發、開源工具研發的極客閱讀。本書涉及的知識面比較廣泛,也可以作為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 StringUtils類
2.8 前綴樹過濾
2.9 數字裝箱
2.10 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 錯誤最佳化策略
4.21.1 final無法幫助內聯
4.21.2 subString記憶體泄漏
4.21.3 循環最佳化
4.21.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章 Java注釋規範
6.1 Javadoc
6.2 Tag
6.2.1 {@link}
6.2.2 @deprecated
6.2.3 {@literal}
6.2.4 {@code}
6.2.5 {@value}
6.2.6 @author
6.2.7 @param和@return
6.2.8 @throws
6.2.9 @see
6.2.10 自動複製
6.3 Package-Info
6.4 HTML的生成
6.5 Markdown-doclet
第7章 可讀性代碼
7.1 精簡注釋
7.2 變數
7.2.1 變數命名
7.2.2 變數的位置
7.2.3 中間變數
7.3 方法
7.3.1 方法簽名
7.3.2 短方法
7.3.3 單一職責
7.4 分支
7.4.1 if else
7.4.2 switch case
7.5 發現對象
7.5.1 不要使用String
7.5.2 不要用數組、Map
7.6 checked異常(可控異常)
7.7 其他事項
7.7.1 避免自動格式化
7.7.2 關於Null
第8章 JIT最佳化
8.1 解釋和編譯
8.2 C1和C2
8.3 代碼快取
8.4 JITWatch
8.5 內聯
8.6 虛方法調用
第9章 代碼審查
9.1 ConcurrentHashMap陷阱
9.2 字元串搜尋
9.3 I/O輸出
9.4 字元串拼接
9.5 方法的入參和出參
9.6 RPC調用定義的返回值
9.7 Integer的使用
9.8 排序
9.9 判斷特殊的ID
9.10 最佳化if結構
9.11 檔案複製
9.12 switch最佳化
9.13 Encoder
9.14 一個JMH例子
9.15 注釋
9.16 完善注釋
9.17 方法抽取
9.18 遍歷Map
9.19 日期格式化
9.20 日誌框架設計的問題
9.21 持久化到資料庫
9.22 某個RPC框架
9.23 循環調用
9.24 lock的使用
9.25 字元集
9.26 處理枚舉值
9.27 任務執行
9.28 開關判斷
9.29 JDBC操作
9.30 Controller代碼
9.31 停止任務
第10章 ASM運行時增強
10.1.1 基礎知識
10.1.2 .class檔案的格式
10.2 Java方法的執行
10.2.1 方法在記憶體中的表示
10.2.2 方法在.class檔案中的表示
10.2.3 指令的分類
10.2.4 運算元棧的變化分析
10.3 Bytecode Outline外掛程式
10.4 ASM入門
10.4.1 生成類名和構造函式
10.4.2 生成main方法
10.4.3 調用生成的代碼
10.5 ASM增強代碼
10.5.1 使用反射實現
10.5.2 使用ASM生成輔助類
10.5.3 switch語句的分類
10.5.4 獲取Bean中的property
10.5.5 switch語句的實現
10.5.6 性能對比
第11章 JSR269編譯時增強
11.1 Java編譯的過程
11.2 註解處理器入門
11.3 相關概念介紹
11.3.1 AbstractProcessor
11.3.2 Element與TypeMirror
11.4 註解處理器進階
11.4.1 JsonWriter註解
11.4.2 處理器與生成輔助類
11.4.3 使用生成的Mapper類
11.4.4 註解處理器的使用
11.5 調試註解處理器
11.5.1 在Eclipse中調試註解處理器
11.5.2 在IDEA中調試註解處理
附錄A 使用OQL分析虛擬機記憶體

作者簡介

李家智:網名閒大賦,曾在電信行業、金融行業和網際網路電商行業任職資深架構師。從事軟體開發近20年,致力於Java和Java EE系統的架構和實現。
張世敏:目前就職於東方金科,7年Java軟體開發經驗,喜歡參與開源項目,熱衷於探索新的技術。

相關詞條

熱門詞條

聯絡我們