-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
6/20 新書到! 5/31 新書到! 5/24 新書到! 5/18 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Java程序性能優化實戰

( 簡體 字)
作者:葛一鳴類別:1. -> 程式設計 -> JAVA -> Java
譯者:
出版社:機械工業出版社Java程序性能優化實戰 3dWoo書號: 53772
詢問書籍請說出此書號!

有庫存
NT售價: 595

出版日:12/1/2020
頁數:418
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787111669432
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

  Java是目前應用最為廣泛的軟件開發平臺之一。隨著Java及Java社區的不斷壯大,Java早已不再是一門簡單的計算機語言了,它更是一個平臺、一種文化、一個社區。

  作為一個平臺,JVM虛擬機起著舉足輕重的作用。除了Java語言,任何一種能夠被編譯成字節碼的計算機語言都屬于Java這個平臺。Groovy、Scala和JRuby等都是Java平臺的一部分,它們依賴于JVM虛擬機,同時,Java平臺也因為它們而變得更加豐富多彩。

  作為一種文化,Java幾乎成為“開源”的代名詞。在Java平臺上,有大量的開源軟件和框架,如Tomcat、Struts、Hibernate和Spring等。就連JDK和JVM自身也有不少的開源實現版本,如OpenJDK和Harmony。可以說,“共享”的精神在Java世界里體現得淋漓盡致。

  作為一個社區,Java擁有無數的開發人員、數不清的論壇和資料。從桌面應用軟件和嵌入式開發,到企業級應用、后臺服務器和中間件,都可以看到Java的身影。其應用形式之復雜、參與人數之龐大也令人咂舌。可以說,Java社區已經成為一個良好而龐大的生態系統。

本書特色

  本書的主要特色有:

* 專注于Java應用程序的優化方法、技巧和思想,并深度剖析JDK部分的實現。

* 具有較強的層次性和連貫性,深入剖析軟件設計層面、代碼層面和JVM虛擬機層面的優化方法。

* 理論結合實踐,使用豐富的示例幫助讀者理解理論知識。

本書內容

  本書主要介紹Java應用程序的優化方法和技巧,共分為6章。

  第1章介紹性能的基本概念、兩個重要理論(木桶原理和Amdahl定律),以及系統調優的一般步驟與注意事項。

  第2章從設計層面介紹與性能相關的設計模式、組件及有助于改善性能的軟件設計思想。

  第3章從代碼層面介紹如何編寫高性能的Java代碼,涉及的主要內容有字符串的優化處理、文件I/O的優化、核心數據結構的使用、Java的引用類型及一些常用的慣例。

  第4章介紹并行程序開發的相關知識,以及如何通過多線程提高系統性能,涉及的主要內容有并發設計模式、多任務執行框架、并發數據結構的使用、并發控制方法、“鎖”的優化、無鎖的并行計算及協程。

  第5章立足于JVM虛擬機層面,介紹如何通過設置合理的JVM參數提升Java程序的性能。

  第6章主要介紹獲取和監控程序或系統性能指標的各種工具,以及Java應用程序相關的故障排查工具。

讀者對象

  想要通讀本書并取得良好的學習效果,讀者需要具備Java的基礎知識。本書不是一本幫助Java初學者入門的書籍,而是一本介紹如何編寫高質量Java程序的書籍,主要適合以下讀者閱讀:

* 擁有一定開發經驗的Java開發人員;

* Java軟件設計師和架構師;

* 系統調優人員;

* 有一定Java語言基礎而想進一步提高開發水平的程序員。

本書約定

  本書在講解的過程中有如下約定:

* 書中所述的JDK 1.5、JDK 1.6、JDK 1.7和JDK 1.8,分別等同于JDK 5、JDK 6、JDK 7和JDK 8。

* 如無特殊說明,JVM虛擬機均指Hot Spot虛擬機。

* 如無特殊說明,本書中的程序和示例均可在JDK 1.6、JDK 1.7和JDK 1.8環境中運行。

配書資源獲取方式

  本書涉及的所有源代碼需要讀者自行下載。請在華章公司的網站(www.hzbook.com)上搜索到本書,然后單擊“資料下載”按鈕,即可在本書頁面上找到下載鏈接。

致謝

  在本書的寫作過程中,我充滿著感激之情。首先感謝我的家人!在本書完稿前,父親病重,但由于我的工作繁忙,未能抽出太多時間照顧他,幸好得到了母親的大力支持和父親的諒解,我才能夠全身心投入到寫作之中。同時,母親對我的悉心照料也讓我能夠更加專注于寫作。

  其次,感謝我的工作單位UT斯達康對我的支持和理解,讓我能安心寫作。另外,還要感謝兩位前輩Rex Zhu和Tao Tao!正是他們在工作中對我的悉心指導,才能讓我有所進步,而這一切,正是寫作本書的基礎。

  最后,再次感謝我的母親,祝她身體健康!

售后支持

  Java程序性能優化涉及的知識較為龐雜,而且Java技術也在不斷地迭代和發展,加之筆者水平和成書時間所限,書中可能存在一些疏漏和不當之處,敬請各位讀者指正。
內容簡介:

Java是目前應用非常廣泛的軟件開發平臺,學習針對Java程序的優化方法有重要的現實意義。本書以Java程序性能優化為主線,系統地闡述與其相關的知識點與技巧,幫助讀者學習如何編寫高質量的Java程序。

本書共6章,先后從軟件設計、軟件編碼、JVM調優及程序故障排除等方面介紹Java程序性能優化的方法。第1章介紹性能的基本概念、木桶原理、Amdahl定律,以及系統調優的過程和注意事項;第2章從設計層面介紹與性能相關的設計模式及常用的優化組件;第3章從代碼層面介紹如何編寫高性能的Java程序;第4章介紹并行程序開發,以及如何通過多線程提高系統的性能;第5章立足于JVM 虛擬機層面,介紹如何通過設置合理的JVM參數,提升Java程序的性能;第6章介紹獲取和監控程序或系統性能指標的各種工具,包括相關的故障排查工具。

本書適合所有的Java程序員、軟件設計師、架構師及軟件開發愛好者閱讀。對于有一定經驗的Java工程師,本書更能幫助他們突破技術瓶頸,提高開發水平。



本書特色

通過大量示例全方位展現Java程序性能優化的技巧;

專注于Java程序性能優化的方法、技巧和思想,深度剖析JDK部分的實現;

深入剖析軟件設計層面、代碼層面、JVM虛擬機層面的優化方法;

理論結合實踐,能真正將性能優化的相關技巧應用到實踐中;

用豐富的示例幫助讀者理解理論知識。



配套資源獲取方式

本書涉及的源碼文件等配套資源需要讀者下載,下載方法見前言中的詳細說明。
目錄:

前言
第1章 Java性能調優概述 1
1.1 性能概述 1
1.1.1 看懂程序的性能 1
1.1.2 性能的參考指標 2
1.1.3 木桶原理與性能瓶頸 2
1.1.4 Amdahl定律 3
1.2 性能調優的層次 5
1.2.1 設計調優 5
1.2.2 代碼調優 6
1.2.3 JVM調優 6
1.2.4 數據庫調優 6
1.2.5 操作系統調優 7
1.3 基本調優策略和手段 7
1.3.1 優化的一般步驟 8
1.3.2 系統優化的注意事項 8
1.4 小結 9
第2章 設計優化 10
2.1 善用設計模式 10
2.1.1 單例模式 10
2.1.2 代理模式 15
2.1.3 享元模式 24
2.1.4 裝飾者模式 28
2.1.5 觀察者模式 34
2.1.6 值對象模式 38
2.1.7 業務代理模式 41
2.2 常用的優化組件和方法 44
2.2.1 緩沖 44
2.2.2 緩存 47
2.2.3 對象復用——池 51
2.2.4 并行替代串行 58
2.2.5 負載均衡 58
2.2.6 時間換空間 63
2.2.7 空間換時間 64
2.3 小結 66
第3章 Java程序優化 67
3.1 字符串優化處理 67
3.1.1 String對象及其特點 67
3.1.2 substring()方法的內存泄漏 69
3.1.3 字符串分割和查找 72
3.1.4 StringBuffer和StringBuilder 76
3.1.5 CompactStrings優化字符串存儲 80
3.2 核心數據結構 81
3.2.1 List接口 81
3.2.2 Map接口 88
3.2.3 Set接口 100
3.2.4 優化集合訪問代碼 101
3.2.5 RandomAccess接口 103
3.3 使用NIO提升性能 105
3.3.1 NIO中的Buffer類族和Channel 106
3.3.2 Buffer的基本原理 107
3.3.3 Buffer的相關操作 109
3.3.4 MappedByteBuffer性能評估 116
3.3.5 直接訪問內存 119
3.4 引用類型 121
3.4.1 強引用 121
3.4.2 軟引用 122
3.4.3 弱引用 123
3.4.4 虛引用 124
3.4.5 WeakHashMap類及其實現 127
3.5 性能測試工具JMH 129
3.5.1 JMH之Hello World 130
3.5.2 JMH之指定測量模式 131
3.5.3 JMH之對象作用域 134
3.5.4 JMH之代碼消除 135
3.6 有助于改善性能的技巧 137
3.6.1 使用局部變量 137
3.6.2 位運算代替乘除法 138
3.6.3 替換switch 139
3.6.4 一維數組代替二維數組 141
3.6.5 提取表達式 142
3.6.6 展開循環 143
3.6.7 布爾運算代替位運算 144
3.6.8 使用arrayCopy() 145
3.6.9 使用Buffer進行I/O操作 147
3.6.10 使用clone()代替new 149
3.6.11 慎用Java函數式編程 151
3.7 小結 152
第4章 并行程序開發及優化 153
4.1 并行程序設計模式 153
4.1.1 Future模式 153
4.1.2 Master-Worker模式 161
4.1.3 Guarded Suspension模式 165
4.1.4 不變模式 172
4.1.5 生產者-消費者模式 174
4.2 JDK多任務執行框架 178
4.2.1 無限制線程的缺陷 178
4.2.2 簡單的線程池實現 179
4.2.3 Executor框架 183
4.2.4 自定義線程池 185
4.2.5 優化線程池大小 189
4.2.6 擴展ThreadPoolExecutor 189
4.3 JDK并發數據結構 191
4.3.1 并發List 191
4.3.2 并發Set 193
4.3.3 并發Map 194
4.3.4 并發Queue 195
4.3.5 并發Deque 197
4.4 并發控制方法 199
4.4.1 Java內存模型與volatile 199
4.4.2 同步關鍵字synchronized 203
4.4.3 重入鎖 205
4.4.4 讀寫鎖 207
4.4.5 讀寫鎖的改進:StampedLock 209
4.4.6 Condition對象 210
4.4.7 信號量 212
4.4.8 線程局部變量ThreadLocal 214
4.5 鎖的性能和優化 215
4.5.1 線程的開銷 215
4.5.2 避免死鎖 215
4.5.3 減少鎖持有時間 219
4.5.4 減小鎖粒度 220
4.5.5 讀寫分離鎖來替換獨占鎖 221
4.5.6 鎖分離 222
4.5.7 重入鎖和內部鎖 224
4.5.8 鎖粗化 224
4.5.9 自旋鎖 226
4.5.10 鎖消除 226
4.5.11 鎖偏向 227
4.6 無鎖的并行計算 228
4.6.1 非阻塞的同步/無鎖 228
4.6.2 原子操作 228
4.6.3 Amino框架簡介 231
4.6.4 Amino集合 231
4.6.5 Amino樹 236
4.6.6 Amino圖 237
4.6.7 Amino簡單調度模式 238
4.7 協程 240
4.7.1 協程的概念 240
4.7.2 Kilim框架簡介 241
4.7.3 Task及其狀態 242
4.7.4 Fiber及其狀態 242
4.7.5 Kilim開發環境配置 243
4.7.6 Kilim之Hello World 244
4.7.7 多任務通信 246
4.7.8 Kilim實例及性能評估 247
4.8 小結 250
第5章 JVM調優 251
5.1 Java虛擬機內存模型 251
5.1.1 程序計數器 251
5.1.2 Java虛擬機棧 252
5.1.3 本地方法棧 258
5.1.4 Java堆 258
5.1.5 方法區 260
5.2 JVM內存分配參數 263
5.2.1 設置最大堆內存 264
5.2.2 設置最小堆內存 264
5.2.3 設置新生代 266
5.2.4 設置持久代 266
5.2.5 設置線程棧 267
5.2.6 堆的比例分配 269
5.2.7 堆分配參數總結 270
5.3 垃圾收集基礎 271
5.3.1 垃圾收集的作用 272
5.3.2 垃圾回收算法與思想 272
5.3.3 垃圾回收器的類型 277
5.3.4 評價GC策略的指標 278
5.3.5 新生代串行回收器 278
5.3.6 老年代串行回收器 279
5.3.7 并行回收器 280
5.3.8 新生代并行回收器 281
5.3.9 老年代并行回收器 282
5.3.10 CMS回收器 282
5.3.11 G1回收器 285
5.3.12 Stop the World案例 286
5.3.13 垃圾回收器對系統性能的影響 288
5.3.14 GC操作相關參數總結 289
5.4 常用調優案例和方法 291
5.4.1 將新對象預留在新生代 291
5.4.2 大對象進入老年代 294
5.4.3 設置對象進入老年代的年齡 296
5.4.4 穩定與振蕩的堆大小 296
5.4.5 吞吐量優先案例 298
5.4.6 使用大頁案例 298
5.4.7 降低停頓案例 299
5.5 實用JVM參數 299
5.5.1 JIT編譯參數 299
5.5.2 堆快照 301
5.5.3 錯誤處理 302
5.5.4 獲取GC信息 302
5.5.5 類和對象跟蹤 304
5.5.6 控制GC 305
5.5.7 選擇類校驗器 305
5.5.8 Solaris下的線程控制 306
5.5.9 使用大頁 306
5.5.10 壓縮指針 306
5.6 JVM調優實戰 306
5.6.1 Tomcat簡介與啟動加速 307
5.6.2 Web應用程序簡介 309
5.6.3 JMeter簡介與使用 310
5.6.4 調優前Web應用運行狀況 313
5.6.5 調優過程 314
5.7 小結 315
第6章 Java性能調優工具 316
6.1 Linux命令行工具 316
6.1.1 top命令 316
6.1.2 sar命令 318
6.1.3 vmstat命令 319
6.1.4 iostat命令 321
6.1.5 pidstat工具 322
6.2 Windows工具 326
6.2.1 任務管理器 326
6.2.2 perfmon性能監控工具 328
6.2.3 Process Explorer工具 331
6.2.4 pslist命令行 333
6.3 JDK命令行工具 334
6.3.1 jps命令 335
6.3.2 jstat命令 336
6.3.3 jinfo命令 339
6.3.4 jmap命令 340
6.3.5 jhat命令 341
6.3.6 jstack命令 343
6.3.7 jstatd命令 346
6.3.8 hprof工具 347
6.3.9 jcmd命令 349
6.4 JConsole工具 350
6.4.1 JConsole連接Java程序 350
6.4.2 Java程序概況 351
6.4.3 內存監控 352
6.4.4 線程監控 352
6.4.5 類加載情況 354
6.4.6 虛擬機信息 354
6.4.7 MBean管理 355
6.4.8 使用插件 356
6.5 Visual VM多合一工具 357
6.5.1 Visual VM連接應用程序 358
6.5.2 監控應用程序概況 359
6.5.3 Thread Dump和分析 361
6.5.4 性能分析 362
6.5.5 快照 365
6.5.6 內存快照分析 365
6.5.7 MBean管理功能 367
6.5.8 TDA的使用 367
6.5.9 BTrace簡介 368
6.6 Visual VM對OQL的支持 374
6.6.1 Visual VM的OQL基本語法 374
6.6.2 內置heap對象 375
6.6.3 對象函數 376
6.6.4 集合/統計函數 380
6.6.5 程序化OQL 384
6.7 MAT內存分析工具 386
6.7.1 初識MAT 386
6.7.2 淺堆和深堆 389
6.7.3 支配樹 392
6.7.4 垃圾回收根 394
6.7.5 內存泄漏檢測 395
6.7.6 最大對象報告 396
6.7.7 查找支配者 396
6.7.8 線程分析 397
6.7.9 集合使用情況分析 398
6.7.10 擴展MAT 399
6.8 MAT對OQL的支持 403
6.8.1 Select子句 404
6.8.2 From子句 406
6.8.3 Where子句 407
6.8.4 內置對象與方法 408
6.9 來自JRockit的禮物——JMC 411
6.9.1 得到JFR文件 412
6.9.2 Java程序的整體運行情況 413
6.9.3 CPU分析 413
6.9.4 內存分析 414
6.9.5 I/O分析 416
6.10 小結 418
序: