-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程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書號: 43894
詢問書籍請說出此書號!

缺書
NT售價: 445

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

譯者序:

前言:



最大的思想紊亂是相信人們想要相信的事情。
——路易斯?巴斯德(Louis Pasteuer)

Michael周是個具有豐富程序經歷的架構師和項目管理者,他從國內作坊式的軟件開發公司起步,經歷了著名的咨詢公司凱捷的歐洲工作洗禮,后來于美國花旗軟件擔任高級軟件技術總監,平時常常思考和總結21世紀以來我國軟件開發者,特別是Java開發工程師的困惑。
我們通常情況下,一開始可以有條不紊地進行軟件需求定義和分析,隨著上線時間的不斷追近,面對客戶的咄咄逼人的需求修改和即刻變更需求上線壓力,程序員作為弱勢群體,往往會考慮時間優先原則,很難守住按部就班的開發計劃和開發方式,從而導致出現了軟件質量的大幅度下降。軟件一定存在修改的余地,但是程序員們通常不相信自己的系統存在諸多問題,尤其是感覺自己已經做得相當完美。系統調優在軟件的后續改進和重構中占有很大的地位,能夠彌補前述的不足,本書以通俗的語言和引人入勝的故事,重點講述軟件性能調優的方法論和具體實現路徑,讀者可以根據自己的實際情況進行參照比對,就像進了兵器庫挑選合適自己的順手武器。
程序湊合著上線是一回事,而能夠優美地運行在壓力下往往很不容易。本書對于所有有志于進行軟件高級管理的人員而言,具有非常重要的意義。

海適云承CEO兼首席架構師 沈英桓(Sam Shen)



前  言

7歲那年,當我合上《上下五千年》一套三冊書籍時,我對自己說,我想當個作家。這一晃27年了,等待了27年,我的第一本書《大話Java性能優化》即將面世了。我是多么的忐忑、驚喜,就像第一次面對我的女兒“小頑子”,給她取這個小名,希望她頑強到底,因為我相信,你若頑強到底,一切皆有可能。
從15歲擁有自己第一臺電腦算起,已經有接近20年的計算機學習時間,加上11年的工作經歷,我對于工作,對于工程師這個職業,有一些自己的感悟。我認為,職業素養非常重要。
1929年,在汪精衛的支持下,余云岫等人提出了全面廢除中醫、禁止中醫的提案,并很快獲得初審通過。在這樣的局面下,全國各地中醫師多次到南京請愿,雖有孫科等人的支持,但反響不大。相持階段,無獨有偶,汪精衛的岳母身患痢疾,西醫師醫治無效,京城四大名醫之一的施今墨先生毅然赴汪府。施今墨憑脈,每言必中,使汪精衛的岳母心服口服,頻頻點頭稱是。處方時施今墨說:“安心服藥,一診可愈,不必復診。”病危至此,一診可愈?眾人皆疑。據此處方僅服數劑,果如施今墨所言。汪精衛不得不服中醫,最終撤回提案。施老先生醫德高尚,死后遺體都捐獻出來供科學研究,絕不是阿諛奉承之人,他赴汪府,完全是因為對中醫生這個職業的尊重,為了讓人知道中醫的深奧。
戒口
佛教五戒之一的不妄語,要求我們不欺騙他人、不在不清楚實際情況的時候胡亂說話,放到職場,也可以加上信息安全的要求。
《越絕書》載文種述九術時說:“故曰九者勿患,戒口勿傳,以取天下不難,況于吳乎?”文種希望勾踐秘而不宣,以免人多口雜,泄露機密。每個人都有自己的崗位、職責,我們要做的是做好自己的事情,不對不屬于自己工作范圍內的事情評價、傳播,不在背后說同事的壞話。作為一名技術人員,如果不能做到戒口、靜心、專心,那我覺得你應該盡早轉行,你不適合,也絕不會成為一名技術大拿。
氣場
一位職業的工作者,他身上有一種稱為氣場的東西存在。人的氣場是看不見的,但這種力量是巨大的,就像萬有引力一樣,我們每個人身上的這種氣場無時無刻不在影響你的人生。這種氣場的行程與你的觀念、信仰、環境、朋友、呼吸、事物、欲望、靜息與睡眠相關。一個人的氣質很好,外表精神、有修養、有道德,這個人的氣場就好,就會吸引好的事,吸引好的運氣。每個人都會遇到各種各樣的苦難,但是我堅信,你若頑強到底,一切皆有可能。
教養
看不見的教養很難。在烏合之眾中誰能保持優雅和教養?在群體無意識中誰能保持清醒和判斷?更難的是那些“慎獨”的教養。日本有一種文化,叫作“不給別人添麻煩”的文化,我們每個人在做事之前都應該考慮是否自己的行為會給別人造成麻煩。教養不是道德規范,也不是小學生行為準則,其實也并不跟文化程度、社會發展、經濟水平掛鉤,它更是一種體諒,體諒別人的不容易,體諒別人的處境和習慣。對于教養,我個人的理解是,謙遜是一種教養,自尊更是。
心態
尼克?胡哲說過,人們經常埋怨什么也做不來,但如果我們只記掛著想擁有或欠缺的東西,而不去珍惜所擁有的,那根本改變不了問題!真正改變命運的,并不是我們的機遇,而是我們的態度。
一個人的心態很是重要,心量小的人,芝麻大小的事情也能在心里翻江倒海。心量大的人,即使在危機面前也能鎮靜自若。同樣一件事情,掀起的波瀾大小卻因人而異。有一句話很好,用于技術人員我覺得尤其合適,“想要成為一棵大樹,就不要去和草爭”。
一個人的成就,不得以金錢衡量,而是一生中,你善待過多少人,有多少人懷念你。成功并非單指事業,無論是愛好或職業上的成功都只是成就。成功應該是多元化的,如人的一生包含了很多追求一樣,而非單一指向。然后,無論你多有成就,真正的成功,就是陪伴家人。所有的情感都是需要陪伴的,這些陪伴成為一個個美好的回憶,這些都是整個家庭最寶貴、最重要的財富,這些遠遠超越物質的重要性。在中國,因為價值觀相對比較單一,社會顯得很浮躁、很物質,所以大多以物質的追求為主,越多越好,內心也想過美好的生活。但當你的心完全趨向金錢的時候,很多美好的東西就會自動屏蔽了,不會出現在生活中。別讓忙碌空白了回憶。
此外,作為一名技術人員,我覺得,職業生涯中可能很多次需要面對工作的變換、角色的變化,有很多知識需要學習,所以,我們應該把“歸零”當成一種生活的新常態。
勸學
我覺得有一句話總結得特別好,“能干工作、干好工作是職場生存的基本保障”。
荀子是儒家八派中一派的創始人,其思想學說以儒家為本,兼采道、法、名、墨諸家之長。荀子在他的著作《勸學》一文中這樣寫道,“君子曰:學不可以已。青,取之于藍,而青于藍;冰,水為之,而寒于水。”這段文字大體表達了學習是不可以停止的,君子廣泛學習并且每天反省自己,就會明白道理,行為上也不會有什么過錯。
全球成功的科技型企業,無論是微軟的比爾?蓋茨,還是蘋果的喬布斯,Facebook的扎克伯格,無一不是技術專家,創新型企業必須由這樣的企業家帶隊,懂技術,就會站在前沿。對于大型科技企業而言,光懂技術不夠,還要懂市場。
諸葛亮在給他的兒子寫的著名的《誡子書》中指出,寧靜才能夠修養身心,靜思反省。不能夠靜下來,則不可以有效地計劃未來,而且學習的首要條件,就是有寧靜的環境。審慎理財,量入為出,不但可以擺脫負債的困擾,更可以過著簡樸的生活,不會成為物質的奴隸。要計劃人生,不要事事講求名利,才能夠了解自己的志向,要靜下來,才能夠細心計劃將來。學習需要專注,平靜心境才能事半功倍。學習的過程中,決心和毅力非常重要,因為缺乏了意志力,就會半途而廢。拖延就不能夠快速地掌握要點。時光飛逝,意志力也會隨著時間消磨。
歸屬感
每個足球隊有11位球員在球場上比賽,估計最不引人注目的應該是守門員了吧,他要忍受著大多數時間的無聊,還要保持著警惕。當危機發生時,很有可能還要一個人戰斗,需要勇敢地面對對方前鋒,唯一的目標是,絕對不讓你攻破球門。我們很多時候可能也是如此,苦苦奮斗,當解決了某個問題,或是幫助公司拿到某個招標,我們都會感到自豪感、成就感,這就是歸屬感,對于技術領域的歸屬感。

最后,自我介紹一下,我叫周明耀,研究生學歷,一名九三學社社員,12年工作經驗,IBM開發者論壇專家作者。我是一名IT技術狂熱愛好者,一名頑強到底的工程師。我推崇技術創新、思維創新,對于新技術非常熱愛。
感謝我的家人,和諧的家庭幫助我完成了這本書,我的妻子,她美麗、細心、博學、偶爾不那么溫柔,但是我很愛她。我的小頑子,她天生的性格很像我,希望她能夠踏踏實實做人,保持創新精神,平平安安、健健康康地生活下去。感謝我妻子父母、我的父母,他們幫我照顧小孩,我才有時間編寫此書。感謝浙江省特級教師、杭州高級化學老師鄭克良老師,鄭老師的一句“永遠不要放棄”,推動著我多年的發展。感謝數學老師張老師在公開場合對我智商的褒獎,第一次收獲這樣的贊賞,對我這樣性格的孩子是多么的重要,謝謝。感謝王芳同學,因為你的插畫天賦,讓這本書的內容更加豐富、可讀,不要忽視了自己的才華,你很有天賦。
我相信這本書不是終點,它是麥克叔叔此生一系列技術書籍的開端,下一本書籍見。
內容簡介:

本書主要提供Java性能調優方面的參考建議及經驗交流。作者力求做到知識的綜合傳播,而不是僅僅只針對Java虛擬機調優進行講解,另外力求每一章節都有實際的案例支撐。具體包括:性能優化策略、程序編寫及硬件服務器的基礎知識、Java API優化建議、算法類程序的優化建議、并行計算優化建議、Java程序性能監控及檢測、JVM原理知識、其他相關優化知識等。
通讀本書后,讀者可以深入了解Java性能調優的許多主題及相關的綜合性知識。讀者也可以把本書作為參考,對于感興趣的主題,直接跳到相應章節尋找答案。
總的來說,性能調優在很大程度上是一門藝術,解決的Java性能問題越多,技藝才會越精湛。我們不僅要關心JVM的持續演進,也要積極地去了解底層的硬件平臺和操作系統的進步。

目錄:

第1章 性能調優策略概述 1
1.1 為什么需要調優 1
1.2 性能優化的參考因素 5
1.2.1 傳統計算機體系的分歧 5
1.2.2 導致系統瓶頸的計算資源 7
1.2.3 程序性能衡量指標 8
1.2.4 性能優化目標 9
1.2.5 性能優化策略 10
1.3 性能調優分類方法 11
1.3.1 業務方面 12
1.3.2 基礎技術方面 12
1.3.3 組件方面 17
1.3.4 架構方面 19
1.3.5 層次方面 20
1.4 本章小結 21
第2章 優化前的準備知識 22
2.1 服務器知識 23
2.1.1 內存 23
2.1.2 GPU/CPU 44
2.1.3 硬盤 49
2.1.4 網絡架構 51
2.2 新興技術 53
第3章 Java API調用優化建議 54
3.1 面向對象及基礎類型 55
3.1.1 采用Clone()方式創建對象 55
3.1.2 避免對boolean判斷 55
3.1.3 多用條件操作符 56
3.1.4 靜態方法代替實例方法 56
3.1.5 有條件地使用final關鍵字 58
3.1.6 避免不需要的instanceof操作 58
3.1.7 避免子類中存在父類轉換 59
3.1.8 建議多使用局部變量 60
3.1.9 運算效率最高的方式——位運算 60
3.1.10 用一維數組代替二維數組 62
3.1.11 布爾運算代替位運算 64
3.1.12 提取表達式優化 65
3.1.13 不要總是使用取反操作符(!) 66
3.1.14 不要重復初始化變量 66
3.1.15 變量初始化過程思考 66
3.1.16 對象的創建、訪問過程 69
3.1.17 在switch語句中使用字符串 70
3.1.18 數值字面量的改進 73
3.1.19 優化變長參數的方法調用 74
3.1.20 針對基本數據類型的優化 75
3.1.21 空變量 76
3.2 集合類概念 77
3.2.1 快速刪除List里面的數據 78
3.2.2 集合內部避免返回null 80
3.2.3 ArrayList、LinkedList比較 82
3.2.4 Vector、HashTable比較 85
3.2.5 HashMap使用經驗 87
3.2.6 EnumSet、EnumMap 91
3.2.7 HashSet使用經驗 92
3.2.8 LinkedHashMap、TreeMap比較 96
3.2.9 集合處理優化新方案 99
3.2.10 優先考慮并行計算 107
3.3 字符串概念 108
3.3.1 String對象 108
3.3.2 善用String對象的SubString方法 111
3.3.3 用charat()代替startswith() 113
3.3.4 在字符串相加的時候,使用’ ’代替" " 114
3.3.5 字符串切割 114
3.3.6 字符串重編碼 117
3.3.7 合并字符串 118
3.3.8 正則表達式不是萬能的 122
3.4 引用類型概念 123
3.4.1 強引用(Strong Reference) 126
3.4.2 軟引用(Soft Reference) 131
3.4.3 弱引用(Weak Reference) 135
3.4.4 引用隊列 141
3.4.5 虛引用(Phantom Reference) 142
3.5 其他相關概念 146
3.5.1 JNI技術提升 146
3.5.2 異常捕獲機制 150
3.5.3 ExceptionUtils類 154
3.5.4 循環技巧 155
3.5.5 替換switch 157
3.5.6 優化循環 158
3.5.7 使用arrayCopy() 159
3.5.8 使用Buffer進行I/O操作 161
3.5.9 使用clone()代替new 164
3.5.10 I/O速度 166
3.5.11 Finally方法里面釋放或者關閉資源占用 167
3.5.12 資源管理機制 167
3.5.13 犧牲CPU時間 169
3.5.14 對象操作 172
3.5.15 正則表達式 172
3.5.16 壓縮文件處理 174
3.6 本章小結 175
第4章 程序設計優化建議 176
4.1 算法優化概述 176
4.1.1 常用算法邏輯描述 177
4.1.2 多核算法優化原理 186
4.1.3 Java算法優化實踐 188
4.2 設計模式 196
4.2.1 設計模式的六大準則 196
4.2.2 單一對象控制 200
4.2.3 并行程序設計模式 202
4.2.4 接口適配 205
4.2.5 訪問方式隔離 219
4.3 I/O及網絡相關優化 225
4.3.1 I/O操作優化 225
4.3.2 Socket編程 231
4.3.3 NIO 2.0文件系統 235
4.4 數據應用優化 236
4.4.1 關系型數據庫優化 236
4.4.2 向HBase插入大量數據 240
4.4.3 解決海量數據緩存 251
4.5 其他優化 256
4.5.1 Web系統性能優化建議 256
4.5.2 死鎖情況解決方案 259
4.5.3 JavaBeans組件 268
4.6 本章小結 269
第5章 Java并行程序優化建議 270
5.1 并行程序優化概述 270
5.1.1 資源限制帶來的挑戰 271
5.1.2 進程、線程、協程 272
5.1.3 使用多線程的原因 281
5.1.4 線程不安全范例 282
5.1.5 重排序機制 284
5.1.6 實例變量的數據共享 286
5.1.7 生產者與消費者模式 288
5.1.8 線程池的使用 290
5.2 鎖機制對比 296
5.2.1 鎖機制概述 296
5.2.2 Synchronized使用技巧 298
5.2.3 Volatile的使用技巧 303
5.2.4 隊列同步器 304
5.2.5 可重入鎖 307
5.2.6 讀寫鎖 308
5.2.7 偏向鎖和輕量級鎖 309
5.3 增加程序并行性 310
5.3.1 并發計數器 311
5.3.2 減少上下文切換次數 312
5.3.3 針對Thread類的更新 314
5.3.4 Fork/Join框架 314
5.3.5 Executor框架 318
5.4 JDK類庫使用 319
5.4.1 原子值 320
5.4.2 并行容器 324
5.4.3 非阻塞隊列 332
5.4.4 阻塞隊列 338
5.4.5 并發工具類 365
5.5 本章小結 376
第6章 JVM性能測試及監控 377
6.1 監控計算機設備層 378
6.1.1 監控CPU 380
6.1.2 監控內存 405
6.1.3 監控磁盤 417
6.1.4 監控網絡 423
6.2 監控JVM活動 428
6.2.1 監控垃圾收集目的 429
6.2.2 GC垃圾回收報告分析 430
6.2.3 圖形化工具 431
6.2.4 GC跟蹤示例 437
6.3 本章小結 438
第7章 JVM性能調優建議 439
7.1 JVM相關概念 439
7.1.1 內存使用相關概念 440
7.1.2 字節碼相關知識 443
7.1.3 自動內存管理 448
7.2 JVM系統架構 451
7.2.1 JVM的基本架構 451
7.2.2 JVM初始化過程 453
7.2.3 JVM架構模型與執行引擎 456
7.2.4 解釋器與JIT編譯器 456
7.2.5 類加載機制 457
7.2.6 虛擬機 458
7.3 垃圾回收機制相關 459
7.3.1 GC相關概念 459
7.3.2 垃圾回收算法 468
7.3.3 垃圾收集器 476
7.4 實用JVM實驗 490
7.4.1 將新對象預留在年輕代 490
7.4.2 大對象進入年老代 494
7.4.3 設置對象進入年老代的年齡 495
7.4.4 穩定與震蕩的堆大小 497
7.4.5 吞吐量優先案例 498
7.4.6 使用大頁案例 499
7.4.7 降低停頓案例 499
7.4.8 設置最大堆內存 499
7.4.9 設置最小堆內存 500
7.4.10 設置年輕代 503
7.4.11 設置持久代 504
7.4.12 設置線程棧 504
7.4.13 堆的比例分配 505
7.4.14 堆分配參數總結 508
7.4.15 垃圾回收器相關參數總結 509
7.4.16 查詢GC命令 515
7.5 本章小結 515
第8章 其他優化建議 516
8.1 Java現有機制及未來發展 516
8.1.1 Java體系結構變化歷史 516
8.1.2 Java語言面臨的挑戰 520
8.1.3 Java 8的新特性 522
8.1.4 Java語言前景 523
8.1.5 物聯網:Java和你是一對 524
8.1.6 Java模塊化發展 525
8.1.7 OpenJDK的發展 527
8.2 系統架構優化建議 528
8.2.1 系統架構調優 528
8.2.2 Java項目優化方式分享 530
8.2.3 面向服務架構 534
8.2.4 程序隔離技術 538
8.2.5 團隊并行開發準則 544
8.3 與編程無關 546
8.3.1 工程師品格 546
8.3.2 如何成為技術大牛 547
8.3.3 編程方法分享 548
8.4 本章小結 549
序: