高性能Java系統權威指南 版權信息
- ISBN:9787121446245
- 條形碼:9787121446245 ; 978-7-121-44624-5
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>
高性能Java系統權威指南 本書特色
適讀人群 :從事Java開發的人員20多個優化技巧:說明Java性能優化的各種方法。
30多個具有“壞味道”的代碼片段:實戰演練優化技巧。
常用的高性能工具:以Caffeine、Jackson、HikariCP為例進行講解,并對其高性能的原因做一定的源碼解析。
容易閱讀的代碼:從代碼注釋、代碼分解和面向對象三方面講解如何編寫容易閱讀的代碼。
高性能Java系統權威指南 內容簡介
對于程序員和架構師來說,Java系統的性能優化是一個超常規的挑戰。這是因為Java語言和Java運行平臺,以及Java生態的復雜性決定了Java系統的性能優化不再是簡單的升級配置或者簡單的 "空間換時間”的技術實現,這涉及Java的各種知識點,如編寫高性能Java代碼,Java代碼的編譯優化,運行時刻的JIT優化,JVM的內存管理優化等,還包括如何使用高性能的第三方開源工具,以及微服務和分布式系統設計需要關注的性能事項。
本書從高性能、易維護、代碼增強,以及在微服務系統中編寫Java代碼的角度來描述如何實現高性能Java系統。書中的大部分例子都是作者從事Java開發20年來,在頭部IT企業的高并發系統中摘錄而來的,極具參考意義。
高性能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
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章 可讀性代碼
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 關于
第7章 JIT優化
7.1 編譯Java代碼
7.2 處理語法糖
7.3 解釋執行和即時編譯
7.4 C1和C2
7.5 代碼緩存
7.6 JITWatch
7.7 內聯
7.8 虛方法調用
第8章 代碼審查
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++動態庫導致的內存泄漏
展開全部
高性能Java系統權威指南 作者簡介
李家智,從事Java研發和架構工作22年,曾在亞信、中國HP等IT企業從事BOSS系統和計費系統的研發工作,曾在網易、京東(T8)從事基礎電商交易系統的性能優化工作,也曾在斯坦福教授李飛飛的AI創業公司擔任物聯云技術總監,現任海爾優家物聯云架構師。工作中涉及的大部分系統都是公司高價值核心系統,具備高性能、高并發、高可用、高復雜業務度的四高特點。 工作之余,熱愛技術分享,熱愛開源,擁有3個star數超千的開源軟件,以閑大賦為昵稱開源了高性能的Beetl和BeetlSQL,得到國內廣泛應用和贊譽。