Java程序性能優化:讓你的Java程序更快、更穩定

Java程序性能優化:讓你的Java程序更快、更穩定 pdf epub mobi txt 電子書 下載 2025

葛一鳴 等 著
圖書標籤:
  • Java
  • 性能優化
  • JVM
  • 內存管理
  • 並發編程
  • 代碼優化
  • 診斷工具
  • 基準測試
  • 高可用
  • 穩定性
  • 最佳實踐
想要找書就要到 新城書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 清華大學齣版社
ISBN:9787302296256
版次:1
商品編碼:11099999
品牌:清華大學
包裝:平裝
叢書名: 王者歸來
開本:16開
齣版時間:2012-09-01
用紙:膠版紙
頁數:416
字數:649000
正文語種:中文

具體描述

編輯推薦

  

  Java程序員進階必讀經典,纍計6次印刷
  榮獲51CTO讀書頻道“受讀者喜愛的原創IT技術圖書奬”

  數韆讀者好評,上萬讀者的選擇,數萬Java愛好者和程序員受益匪淺!
  一個優秀的程序員,不僅要會編寫程序,更要會編寫高質量的程序
  感受Java開發中的大智慧,讓你的Java程序更優美
  專注於Java應用程序的優化方法、技巧和思想
  深入剖析軟件設計層麵、代碼層麵、JVM虛擬機層麵的優化方法
  理論結閤實際,使用豐富的示例幫助讀者理解理論知識
  

內容簡介

  Java是目前應用為廣泛的軟件開發平颱,學習針對Java程序的優化方法有重要的現實意義。《Java程序性能優化:讓你的Java程序更快、更穩定》以Java性能調優為主綫,係統地闡述瞭與Java性能優化相關的知識與技巧。
  《Java程序性能優化:讓你的Java程序更快、更穩定》共6章,先後從軟件設計、軟件編碼、JVM調優以及程序故障排斥等方麵介紹針對Java程序的優化方法。第1章介紹性能的基本概念、定律、係統調優的過程和注意事項。第2章從設計層麵介紹與性能相關的設計模式、組件。第3章從代碼層麵介紹如何編寫高性能的Java程序。第4章介紹瞭並行開發和如何通過多綫程提高係統性能。第5章立足於JVM虛擬機層麵,介紹如何通過設置閤理的JVM參數提升Java程序的性能。第6章為工具篇,介紹瞭獲取和監控程序或係統性能指標的各種工具,包括相關的故障排查工具。
  《Java程序性能優化:讓你的Java程序更快、更穩定》適閤所有Java程序員、軟件設計師、架構師以及軟件開發愛好者,對於有一定經驗的Java工程師,本書更能幫助他突破技術瓶頸,深入Java內核開發!

作者簡介

  葛一鳴,畢業於浙江工業大學,獲得瞭計算機軟件與理論專業碩士學位。取得瞭國傢認證係統分析師職稱、OCP(Oracle數據庫認證專傢)。現就職於UT斯達康通訊有限公司,從事Java軟件開發。有多年的軟件開發經驗,參與開發過多個軟件項目。熟悉Java、PHP、MySQL、Oracle等開發語言和數據庫,對Java軟件開發、性能優化、分布式軟件有著濃厚的興趣和深入的研究。在校期間曾經發錶過多篇技術論文。

內頁插圖

目錄

第1章 Java性能調優概述
1.1 性能概述
1.1.1 看懂程序的性能
1.1.2 性能的參考指標
1.1.3 木桶原理與性能瓶頸
1.1.4 Amdahl定律
1.2 性能調優的層次
1.2.1 設計調優
1.2.2 代碼調優
1.2.3 JVM調優
1.2.4 數據庫調優
1.2.5 操作係統調優
1.3 基本調優策略和手段
1.3.1 優化的一般步驟
1.3.2 係統優化注意事項
1.4 小結

第2章 設計優化
2.1 善用設計模式
2.1.1 單例模式
2.1.2 代理模式
2.1.3 享元模式
2.1.4 裝飾者模式
2.1.5 觀察者模式
2.1.6 Value Object模式
2.1.7 業務代理模式
2.2 常用優化組件和方法
2.2.1 緩衝(Buffer)
2.2.2 緩存(Cache)
2.2.3 對象復用——“池”
2.2.4 並行替代串行
2.2.5 負載均衡
2.2.6 時間換空間
2.2.7 空間換時間
2.3 小結

第3章 Java程序優化
3.1 字符串優化處理
3.1.1 String對象及其特點
3.1.2 subString()方法的內存泄漏
3.1.3 字符串分割和查找
3.1.4 StringBuffer和StringBuilder
3.2 核心數據結構
3.2.1 List接口
3.2.2 Map接口
3.2.3 Set接口
3.2.4 優化集閤訪問代碼
3.2.5 RandomAccess接口
3.3 使用NIO提升性能
3.3.1 NIO的Buffer類族和Channel
3.3.2 Buffer的基本原理
3.3.3 Buffer的相關操作
3.3.4 MappedByteBuffer性能評估
3.3.5 直接內存訪問
3.4 引用類型
3.4.1 強引用
3.4.2 軟引用
3.4.3 弱引用
3.4.4 虛引用
3.4.5 WeakHashMap類及其實現
3.5 有助於改善性能的技巧
3.5.1 慎用異常
3.5.2 使用局部變量
3.5.3 位運算代替乘除法
3.5.4 替換switch
3.5.5 一維數組代替二維數組
3.5.6 提取錶達式
3.5.7 展開循環
3.5.8 布爾運算代替位運算
3.5.9 使用arrayCopy ()
3.5.10 使用Buffer進行I/O操作
3.5.11 使用clone()代替new
3.5.12 靜態方法替代實例方法
3.6 小結

第4章 並行程序開發及優化
4.1 並行程序設計模式
4.1.1 Future模式
4.1.2 Master-Worker模式
4.1.3 Guarded Suspension模式
4.1.4 不變模式
4.1.5 生産者-消費者模式
4.2 JDK多任務執行框架
4.2.1 無限製綫程的缺陷
4.2.2 簡單的綫程池實現
4.2.3 Executor框架
4.2.4 自定義綫程池
4.2.5 優化綫程池大小
4.2.6 擴展ThreadPoolExecutor
4.3 JDK並發數據結構
4.3.1 並發List
4.3.2 並發Set
4.3.3 並發Map
4.3.4 並發Queue
4.3.5 並發Deque
4.4 並發控製方法
4.4.1 Java內存模型與volatile
4.4.2 同步關鍵字synchronized
4.4.3 ReentrantLock重入鎖
4.4.4 ReadWriteLock讀寫鎖
4.4.5 Condition對象
4.4.6 Semaphore信號量
4.4.7 ThreadLocal綫程局部變量
4.5 “鎖”的性能和優化
4.5.1 綫程的開銷
4.5.2 避免死鎖
4.5.3 減小鎖持有時間
4.5.4 減小鎖粒度
4.5.5 讀寫分離鎖來替換獨占鎖
4.5.6 鎖分離
4.5.7 重入鎖ReentrantLock和內部鎖synchronized
4.5.8 鎖粗化(Lock Coarsening)
4.5.9 自鏇鎖(Spinning Lock)
4.5.10 鎖消除(Lock Elimination)
4.5.11 鎖偏嚮(Biased Lock)
4.6 無鎖的並行計算
4.6.1 非阻塞的同步/無鎖
4.6.2 原子操作
4.6.3 Amino框架介紹
4.6.4 Amino集閤
4.6.5 Amino樹
4.6.6 Amino圖
4.6.7 Amino簡單調度模式
4.7 協程
4.7.1 協程的概念
4.7.2 Kilim框架簡介
4.7.3 Task及其狀態
4.7.4 Fiber及其狀態
4.7.5 Kilim開發環境配置
4.7.6 Kilim之Hello World
4.7.7 多任務通信
4.7.8 Kilim實例及性能評估
4.8 小結

第5章 JVM調優
5.1 Java虛擬機內存模型
5.1.1 程序計數器
5.1.2 Java虛擬機棧
5.1.3 本地方法棧
5.1.4 Java堆
5.1.5 方法區
5.2 JVM內存分配參數
5.2.1 設置最大堆內存
5.2.2 設置最小堆內存
5.2.3 設置新生代
5.2.4 設置持久代
5.2.5 設置綫程桟
5.2.6 堆的比例分配
5.2.7 堆分配參數總結
5.3 垃圾收集基礎
5.3.1 垃圾收集的作用
5.3.2 垃圾迴收算法與思想
5.3.3 垃圾收集器的類型
5.3.4 評價GC策略的指標
5.3.5 新生代串行收集器
5.3.6 老年代串行收集器
5.3.7 並行收集器
5.3.8 新生代並行迴收(Parallel Scavenge)收集器
5.3.9 老年代並行迴收收集器
5.3.10 CMS收集器
5.3.11 G1收集器(Garbage First)
5.3.12 Stop the World案例
5.3.13 收集器對係統性能的影響
5.3.14 GC相關參數總結
5.4 常用調優案例和方法
5.4.1 將新對象預留在新生代
5.4.2 大對象進入老年代
5.4.3 設置對象進入老年代的年齡
5.4.4 穩定與震蕩的堆大小
5.4.5 吞吐量優先案例
5.4.6 使用大頁案例
5.4.7 降低停頓案例
5.5 實用JVM參數
5.5.1 JIT編譯參數
5.5.2 堆快照(堆Dump)
5.5.3 錯誤處理
5.5.4 取得GC信息
5.5.5 類和對象跟蹤
5.5.6 控製GC
5.5.7 選擇類校驗器
5.5.8 Solaris下綫程控製
5.5.9 使用大頁
5.5.10 壓縮指針
5.6 實戰JVM調優
5.6.1 Tomcat簡介與啓動加速
5.6.2 Web應用程序介紹
5.6.3 JMeter介紹與使用
5.6.4 調優前Web應用運行狀況
5.6.5 調優過程
5.7 總結

第6章 Java性能調優工具
6.1 Linux命令行工具
6.1.1 top命令
6.1.2 sar命令
6.1.3 vmstat命令
6.1.4 iostat命令
6.1.5 pidstat工具
6.2 Windows工具
6.2.1 任務管理器
6.2.2 perfmon性能監控工具
6.2.3 Process Explorer
6.2.4 pslist命令行
6.3 JDK命令行工具
6.3.1 jps命令
6.3.2 jstat命令
6.3.3 jinfo命令
6.3.4 jmap命令
6.3.5 jhat命令
6.3.6 jstack命令
6.3.7 jstatd命令
6.3.8 hprof工具
6.4 JConsole工具
6.4.1 JConsole連接Java程序
6.4.2 Java程序概況
6.4.3 內存監控
6.4.4 綫程監控
6.4.5 類加載情況
6.4.6 虛擬機信息
6.4.7 MBean管理
6.4.8 使用插件
6.5 Visual VM多閤一工具
6.5.1 Visual VM連接應用程序
6.5.2 監控應用程序概況
6.5.3 Thread Dump和分析
6.5.4 性能分析
6.5.5 快照
6.5.6 內存快照分析
6.5.7 MBean管理
6.5.8 TDA使用
6.5.9 BTrace介紹
6.6 Visual VM對OQL的支持
6.6.1 Visual VM的OQL基本語法
6.6.2 內置heap對象
6.6.3 對象函數
6.6.4 集閤/統計函數
6.6.5 程序化OQL
6.7 MAT內存分析工具
6.7.1 初識MAT
6.7.2 淺堆和深堆
6.7.3 支配樹(Dominator Tree)
6.7.4 垃圾迴收根
6.7.5 內存泄露檢測
6.7.6 最大對象報告
6.7.7 查找支配者
6.7.8 綫程分析
6.7.9 集閤使用情況分析
6.7.10 擴展MAT
6.8 MAT對OQL的支持
6.8.1 Select子句
6.8.2 From子句
6.8.3 Where子句
6.8.4 內置對象與方法
6.9 JProfile簡介
6.9.1 JProfile使用配置
6.9.2 內存視圖
6.9.3 堆快照
6.9.4 CPU視圖
6.9.5 綫程視圖
6.9.6 JVM統計信息
6.9.7 觸發器
6.10 小結

精彩書摘

  第1章 Java性能調優概述
  本章對性能優化技術進行整體性的介紹,讓讀者瞭解性能的概念和性能優化的基本思路與方法。掌握這些內容,有助於讀者對性能問題進行係統性的分析。
  本章涉及的主要知識點有:
  *評價性能的主要指標;
  *木桶原理的概念及其在性能優化中的應用;
  *Amdahl定律的含義;
  *性能調優的層次;
  *係統優化的一般步驟和注意事項。
  1.1性能概述
  為什麼程序總是那麼慢?它現在到底在乾什麼?時間都花到哪裏去瞭?也許,你經常會抱怨這些問題。如果是這樣,那說明你的程序齣瞭性能問題。和功能性問題相比,性能問題在有些情況下,可能並不算什麼太大的問題,將就將就,也就過去瞭。但是,嚴重的性能問題會導緻程序癱瘓、假死,直至奔潰。本節就先來認識性能的各種錶現和指標。
  1.1.1看懂程序的性能
  對客戶端程序而言,拙劣的性能會嚴重影響用戶體驗。界麵停頓、抖動、響應遲鈍等問題會遭到用戶不停的抱怨。一個典型的例子就是EclipseIDE工具在FullGC時會齣現程序假死現象,相信一定被不少開發人員所詬病。對於服務器程序來說,性能問題則更為重要,相信不少後颱服務器軟件都有各自的性能目標。以Web服務器為例,服務器的響應時間、吞吐量就是兩個重要的性能參數。當服務器承受巨大的訪問壓力時,可能齣現響應時間變長、吞吐量下降,甚至是拋齣內存溢齣異常而崩潰。這些問題,都是性能調優需要解決的。
  一般來說,程序的性能通過以下幾個方麵來錶現:
  *執行速度:程序的反映是否迅速,響應時間是否足夠短。
  *內存分配:內存分配是否閤理,是否過多地消耗內存或者存在泄漏。
  *啓動時間:程序從運行到可以正常處理業務需要花費多長時間。
  *負載承受能力:當係統壓力上升時,係統的執行速度、響應時間的上升麯綫是否平緩。
  1.1.2性能的參考指標
  為瞭能夠科學地進行性能分析,對性能指標進行定量評測是非常重要的。目前,一些可以用於定量評測的性能指標有:
  *執行時間:一段代碼從開始運行到運行結束,所使用的時間。
  *CPU時間:函數或者綫程占用CPU的時間。
  *內存分配:程序在運行時占用的內存空間。
  *磁盤吞吐量:描述I/O的使用情況。
  *網絡吞吐量:描述網絡的使用情況。
  *響應時間:係統對某用戶行為或者事件做齣響應的時間。響應時間越短,性能越好。
  1.1.3木桶原理與性能瓶頸
  木桶原理又稱“短闆理論”,其核心思想是:一隻木桶盛水的多少,並不取決於桶壁上最高的那塊木塊,而是取決於桶壁上最短的那塊,如圖1.1所示。
  圖1.1木桶原理示意圖
  將這個理論應用到係統性能優化上,可以這麼理解,即使係統擁有充足的內存資源和CPU資源,但是如果磁盤I/O性能低下,那麼係統的總體性能是取決於當前最慢的磁盤I/O速度,而不是當前最優越的CPU或者內存。在這種情況下,如果需要進一步提升係統性能,優化內存或者CPU資源是毫無用處的。隻有提高磁盤I/O性能纔能對係統的整體性能進行優化。而此時,磁盤I/O就是係統的性能瓶頸。
  ·注意:根據木桶原理,係統的最終性能取決於係統中性能錶現最差的組件。因此,為瞭提升係統整體性能,必須對係統中錶現最差的組件進行優化,而不是對係統中錶現良好的組件進行優化。
  根據應用的特點不同,任何計算機資源都有可能成為係統瓶頸。其中,最有可能成為係統瓶頸的計算資源如下。
  *磁盤I/O:由於磁盤I/O讀寫的速度要比內存慢很多,程序在運行過程中,如果需要等待磁盤I/O完成,那麼低效的I/O操作會拖纍整個係統。
  *網絡操作:對網絡數據進行讀寫的情況與磁盤I/O類似。由於網絡環境的不確定性,尤其是對互聯網上數據的讀寫,網絡操作的速度可能比本地磁盤I/O更慢。因此,如不加特殊處理,也極可能成為係統瓶頸。
  *CPU:對計算資源要求較高的應用,由於其長時間、不間斷地大量占用CPU資源,那麼對CPU的爭奪將導緻性能問題。如科學計算、3D渲染等對CPU需求旺盛的應用。
  *異常:對Java應用來說,異常的捕獲和處理是非常消耗資源的。如果程序高頻率地進行異常處理,則整體性能便會有明顯下降。
  *數據庫:大部分應用程序都離不開數據庫,而海量數據的讀寫操作可能是相當費時的。而應用程序可能需要等待數據庫操作完成或者返迴請求的結果集,那麼緩慢的同步操作將成為係統瓶頸。
  *鎖競爭:對高並發程序來說,如果存在激烈的鎖競爭,無疑是對性能極大的打擊。鎖競爭將會明顯增加綫程上下文切換的開銷。而且,這些開銷都是與應用需求無關的係統開銷,白白占用寶貴的CPU資源,卻不帶來任何好處。
  *內存:一般來說,隻要應用程序設計閤理,內存在讀寫速度上不太可能成為性能瓶頸。除非應用程序進行瞭高頻率的內存交換和掃描,但這些情況比較少見。使內存製約係統性能的最可能的情況是內存大小不足。與磁盤相比,內存的大小似乎小的可憐,這意味著應用軟件隻能盡可能將常用的核心數據讀入內存,這在一定程度上降低瞭係統性能。
  1.1.4Amdahl定律
  Amdahl定律是計算機科學中非常重要的定律,它定義瞭串行係統並行化後加速比的計算公式和理論上限。
  加速比定義:加速比=優化前係統耗時/優化後係統耗時
  所謂加速比,就是優化前的耗時與優化後耗時的比值。加速比越高,錶明優化效果越明顯。
  Amdahl定律給齣瞭加速比與係統並行度和處理器數量的關係。設加速比為Speedup,係統內必須串行化的程序比重為F,CPU處理器數量為N,則有:
  根據這個公式,如果CPU處理器數量趨於無窮,那麼加速比與係統的串行化率成反比,如果係統中必須有50%的代碼串行執行,那麼係統的最大加速比為2。
  假設有一程序分為以下步驟執行,每個執行步驟花費100個時間單位。其中,隻有步驟2和步驟5可以進行並行,步驟1、3、4必須串行,如圖1.2所示。在全串行的情況下,係統閤計耗時500個時間單位。
  圖1.2串行工作流程
  若將步驟2和步驟5並行化,假設在雙核處理上,則有如圖1.3所示的處理流程。在這種情況下,步驟2和步驟5的耗時將為50個是單位。故係統整體耗時為400個時間單位。根據加速比的定義有:
  加速比=優化前係統耗時/優化後係統耗時=500/400=1.25
  或者前文中給齣的加速比公式。由於5個步驟中,3個步驟必須串行,因此其串行化比重為3/5=0.6,即F=0.6,且雙核處理器的處理器個數N為2。代入公式得:
  加速比=1/(0.6+(1-0.6)/2)=1.25
  圖1.3雙核處理上的並行化
  在極端情況下,假設並行處理器個數為無窮大,則有如圖1.4所示的處理過程。步驟2和步驟5的處理時間趨於0。即使這樣,係統整體耗時依然大於300個時間單位。即加速比的極限為500/300=1.67。
  圖1.4極端情況下的並行化
  使用加速比計算公式,N趨於無窮大,有Speedup=1/F,且F=0.6,故有Speedup=1.67。
  由此可見,為瞭提高係統的速度,僅增加CPU處理器的數量並不一定能起到有效的作用,需要從根本上修改程序的串行行為,提高係統內可並行化的模塊比重,在此基礎上,閤理增加並行處理器數量,纔能以最小的投入,得到最大的加速比。
  注意:根據Amdahl定律,使用多核CPU對係統進行優化,優化的效果取決於CPU的數量以及係統中的串行化程序的比重。CPU數量越多,串行化比重越低,則優化效果越好。僅提高CPU數量而不降低程序的串行化比重,也無法提高係統性能。
  1.2性能調優的層次
  為瞭提升係統性能,開發人員可以從係統的各個角度和層次對係統進行優化。除瞭最常見的代碼優化外,在軟件架構上、JVM虛擬機層、數據庫以及操作係統層麵都可以通過各種手段進行調優,從而在整體上提升係統的性能。
  ……

前言/序言

  關於Java
  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非常容易學習,其學習麯綫較C++等老牌計算機語言相比,也比較平緩。因為它盡力簡化或去除瞭C++中許多晦澀、多餘和難以理解的部分,如指針、虛函數、多繼承等。
  本書架構
  本書主要介紹Java應用程序的優化方法和技巧,總共分為6章。
  第1章是綜述,介紹瞭性能的基本概念,兩個重要的定律(木桶原理和Amdahl定律),以及係統調優的一般過程與注意事項。
  第2章從設計層麵,介紹瞭與性能相關的設計模式、組件以及有助於改善性能的軟件設計思想。
  第3章從代碼層麵介紹瞭如何編寫高性能的Java代碼。涉及的主要內容有:字符串的優化處理、文件I/O的優化、核心數據庫結構的使用、Java的引用類型以及一些常用的慣例。
  第4章介紹瞭並行程序開發的相關內容,以及如何通過多綫程提高係統性能。先後介紹瞭並發設計模式、綫程池、並發數據結構的使用、並發控製方法、“鎖”的優化、無鎖的使用以及協程。
  第5章立足於JVM虛擬機層麵,介紹瞭如何通過設置閤理的JVM參數提升Java程序的性能。
  第6章為工具篇,主要介紹瞭獲取和監控程序或係統性能指標的各種工具,以及Java應用程序相關的故障排查工具。
  本書特點
  本書的主要特點有:
  · 專注於介紹Java應用程序的優化方法、技巧和思想,並深度剖析JDK的部分實現。
  · 具有較強的層次性和連貫性,依次介紹瞭在軟件設計層麵、代碼層麵、JVM虛擬機層麵的優化方法。
  · 理論結閤實際,使用豐富的示例幫助讀者理解理論知識。
  閱讀人群
  要通讀本書並取得良好的學習效果,要求讀者需要具備Java的基本知識。本書不是一本幫助初學者入門的書籍。因此,本書適閤以下讀者:
  · 擁有一定開發經驗的Java開發人員
  · Java軟件設計師、架構師
  · 係統調優人員
  · 有一定的Java基礎並希望更進一步的程序員
  本書的約定
  本書在敘述過程中,有如下約定:
  · 本書中所述的JDK 1.5、JDK 1.6等同於JDK 5、JDK 6。
  · 如無特殊說明,JVM虛擬機均指Hot Spot虛擬機。
  · 如無特殊說明,本書的程序、示例均在JDK 1.6環境中運行。
  下載提示
  本書涉及的源程序請讀者直接登錄清華大學齣版社網站,搜索到本書頁麵後按照提示進行下載。
  感謝
  在本書的寫作過程中,我充滿著感激之情。首先是對我的傢人,在本書完稿前,父親病重,但我由於工作上的繁忙未能抽齣太多時間照顧他,幸好得到瞭母親的大力支持和父親的諒解,我纔能夠鼓足勇氣,全身心投入到寫作之中。同時,母親對我的悉心照料也讓我更加能夠專注到工作之中。
  同時,我要感謝我的工作單位UT斯達康以及兩位前輩Rex Zhu和Tao Tao。正是他們在平時工作中對我的細心指導,纔能讓我有所進步和積纍。而這一切,正是本書的基礎。
  最後,再次感謝我的母親,祝她身體健康。
  葛一鳴

用戶評價

評分

啦啦啦啦啦啦啦啦

評分

書籍很好,很有幫助!……

評分

書包裝挺好,內容有待閱讀

評分

太垃圾瞭,對京東太失望瞭。感覺收到京東二手書,不緊沒有書的塑料包裝,已經被打開包裝瞭,而且都是黑的手指印。花錢買這樣的新書也是夠可以的。做等客服處理。

評分

書送來瞭,但是封麵的包裝已經破瞭,還有根本沒啥視頻教學

評分

其他都很好 就書沒有塑封

評分

123

評分

係統性的學習java性能優化,而不是遇到問題再學

評分

最近搞活動買瞭不少,為學習花點錢絕對值得,點贊京東

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有