《高性能Scala》將為你武裝創建高性能Scala應用所需的知識,從如何定義性能這樣的基礎知識開始,探索瞭Scala語言特性及函數式編程技術,同時在所有主題上都密切關注著性能。
我們虛構瞭一傢名為MV的交易公司,你將作為一個新加入這傢公司中的軟件工程師開始工作。隨著不斷學習降低延遲提高吞吐量的新技術和新方法,你將會把它們應用到解決MV交易公司的業務問題上。學習完本書之後,你將得到充分的知識儲備,能使用函數式編程範式來解決真實世界中的問題,並能編寫可以用於生産環境的高性能Scala軟件。
√ 通過開發JMH基準測試,以及使用Flight Recorder做profiling去分析JVM應用的性能。
√ 發掘齣Scala語言特性的使用場景及性能摺衷的情況,瞭解急切集閤及惰性集閤。
√ 研究流式處理管道,探索使用事件溯源模式來提升性能。
√ 深入異步編程,使用Scala的Future和Scalaz的Task來榨取多核係統的性能。
√ 利用最終一緻性的優勢,結閤無衝突復製的數據結構(CRDTs)來設計無須同步的分布式係統。
√ 理解隊列對係統性能的影響,應用Free monad模式來構建具有高等級吞吐量的健壯的係統。
Scala是一種錶達能力非常強的語言,能夠用非常簡潔的代碼錶達豐富的業務含義。為瞭在生産上充分發揮Scala的能力,除瞭掌握其簡潔的語法外,理解Scala在性能上的特點和優化點也是非常重要的事。本書通過解析一個金融領域高頻交易的實際例子,引領讀者掌握如何對Scala程序(以及一般JVM程序)進行基準測試和性能分析,從而找齣瓶頸。隨後作者介紹瞭Scala語言、Scala標準庫(尤其是集閤庫)以及Scalaz庫裏解決相應瓶頸的各種技巧。並行計算和分布式架構作為性能調優的重要手段,更是本書的重中之重,作者對Scala的並行計算和分布式架構中存在的問題都進行瞭充分的討論和講解,非常值得學習。本書適閤已經具有Scala編程基礎、能夠較好地使用Scala風格代碼實現業務功能的程序員,作為在性能優化方麵的深造閱讀資料。
楊雲,網名大魔頭,ThoughtWoks資深谘詢師,Scala多年實踐者及布道者。發錶有多篇Scala相關博客及文章,譯有多部Scala技術專著。博客:
Vincent Theron是一個擁有 9年工作經驗的專業軟件工程師。他在 6年前發現瞭 Scala並將之應用於構建高伸縮性、高可靠的應用。他在多個行業設計軟件來解決商業上的問題,包括在綫博彩、金融交易,以及昀近的廣告行業。在巴黎東部 Marne-la-Vallée,Vincent獲得瞭計算機科學及軟件工程碩士學位。他和妻子、孩子以及兩隻毛茸茸的貓一起在波士頓區域生活。
感謝在 Packt齣版社的每一個人,是你們的努力工作纔能讓這本書麵世。感謝柴塔尼亞-耐爾,帶著這個齣書項目找到我。感謝 Nikhil Borkar,一路上給我提供指引。感謝 Michael Diamant,我的閤作作者,我的同事,同時也是朋友,感謝你給這本書帶來的知識以及充滿靈感的每一天。感謝我的父母,感謝你們的愛和支持,以及你們給我買的*一颱電腦。昀後,感謝我的妻子,Julie,感謝你一直的鼓勵,感謝你給瞭我一個這麼絕妙的兒子。
Michael Diamant是一個專業的軟件工程師,熱衷於函數式編程。他在 2009年開始自己的事業,專注於 Java和麵嚮對象的編程範式。在 2011年學習 Scala之後,他專注於使用 Scala和函數式編程範式來構建金融交易和廣告領域的軟件係統。邁剋爾畢業於伍斯特理工學院,居住在波士頓區域。
我能在這本書裏麵分享的知識來源於他人在我一生中給予的支持和教導。我想要特彆感謝我的同事文森特,感謝你推動我付齣這些努力,感謝所有在一起的時間,讓我們可以發展這些書中的想法。我所有的現在和之前的同事都幫助我提高瞭工程技術,沒有你們慷慨地分享你們的所學,我將不可能編寫這本書。除瞭 Vincent,我還想特彆提及一些我覺得尤其想感謝的同事:Dave Stevens、Gary Malouf、Eugene Kolnick和 Johnny Everson。感謝我的父母和兄弟,你們支持我,將我培養成現在的我。我尤其想深深地感謝我的女友 Anna在整個寫書過程中給予我的支持。昀後,同樣的感謝送給 Packt齣版社,在你們的幫助下我們寫瞭我們的*一本書。
關於審閱者
Nermin ?rifovi?是一個從 2009年開始就熱衷 Scala的人,他從 2011年開始在專業領域應用 Scala。在大部分工作生涯中,他專注於使用 JVM技術構建後端平颱。昀近,作為 Pingup的研發總監,他正在一個本地化服務預訂係統上領導開發工作。
Nermin是一個哈佛大學延伸教育學院的導師,他在那裏與人閤作教授 Scala並行編程的課程,他還在多個學術會議上發錶瞭演講。
作為一個 Scala社區的活躍會員,Nermin組織瞭波士頓區域的 Scala愛好者群,同時他也是中東 Scala座談基金會一員。他是 Scala Puzzlers一書的閤作作者,Scala解惑網站的閤作創建者。
Nermin擁有康奈爾大學計算機科學碩士學位,他感興趣的領域包括分布式係統及伴隨著的並行,響應式和函數式編程。
前言 iX
1 高性能之路 1
性能的定義 2
高性能軟件 2
硬件資源 3
時延和吞吐率 4
瓶頸 5
性能總結 5
平均數的問題 6
百分位數來救場 8
指標搜集 9
用基準數據(benchmark)來衡量性能 9
通過Profiling來定位瓶頸 10
結閤基準測試和profiling 10
案例分析 11
工具鏈 11
小結 12
2 在JVM上度量性能 13
金融領域一瞥 13
意外的市場波動毀掉瞭利潤 16
重現故障 17
吞吐量基準測試 17
時延基準測試 20
定位瓶頸 25
微基準取得大進步 42
小結 49
3 釋放Scala的性能 51
值類 52
字節碼錶示 52
性能考慮 54
標記類型――值類的一種替代品 55
專門化 57
字節碼錶示 58
性能考慮 60
元組 65
字節碼錶示 65
性能考慮 66
模式匹配 68
字節碼錶示 68
性能考慮 70
尾遞歸 75
字節碼錶示 78
性能考慮 79
Option數據類型 83
字節碼錶示 83
性能考慮 84
案例研究――性能更高的Option 85
小結 89
4 探索集閤API 91
高吞吐量係統 - 改進指令簿 91
理解過去實現上的摺中 - list實現 92
當前的指令簿 - queue實現 101
通過惰性計算來提升取消操作的性能 104
曆史數據分析 114
滯後時序收益率(lagged time series returns) 114
處理多個收益率序列 122
小結 127
5 惰性集閤及事件溯源 129
提升用戶報錶生成速度 129
深入報錶生成代碼 130
使用視圖提速報錶生成 133
視圖的注意事項 141
打包報錶生成結果 145
重新思考報錶架構 146
Stream概覽 149
事件變換 152
構建事件源管道 158
馬爾可夫流式鏈 162
流的注意事項 166
小結 169
6 Scala的並發 171
並行迴測(backtesting)策略 171
探索Future 173
Future和crazy ideas 177
Future使用時的考量 179
提交執行妨礙性能 185
處理阻塞調用和迴調 188
ExecutionContext和阻塞調用 189
用Promise轉化迴調 193
受命進一步提升迴測性能 196
介紹Scalaz Task 197
用Task為交易日模擬建模 204
總結迴測 209
小結 210
7 高性能架構 211
分布式自動化交易員(Distributed automated traders) 211
分布式架構概述 212
第一次嘗試分布式自動化交易係統 212
引入CRDT 214
CRDT和自動化交易係統 219
當餘額不足時 220
免費交易策略性能提升 222
為交易策略做基準測試 222
無界隊列(unbounded queue)的危險 225
應用背壓(back pressure) 226
應用負載控製策略 227
Free monad 233
小結 240
Scala是一個大膽的(audacious)編程語言,在JVM平颱上,它將麵嚮對象和函數式編程的概念融閤到一起。Scala從一個相對小眾的語言成長為瞭一個開發健壯且可維護的JVM應用的首選語言。然而,如果不深入瞭解這門語言和它提供的高級特性,編寫高性能應用依然是一個挑戰性的任務。
從2011年開始,我們就使用Scala來解決復雜的業務上的挑戰,這些挑戰常常有很高的性能要求。在本書中,我們分享瞭在這些年中所學到的東西及在編寫軟件中應用過的技術。我們在書中瀏覽瞭這門語言及其生態係統,包括周邊工具和使用廣泛的庫。
我們編寫這本書的目標是幫助你理解Scala語言提供給你的選擇。你有權在書中收集必要的信息,以便在你自己的軟件係統中做齣更有知識基礎的設計和實現決定。我們將不僅給你Scala之魚,帶你上路,還將傳授漁魚之技,並給你相關工具讓你寫齣更函數式性能更高的軟件。一路上,我們將通過精心設計的業務問題來激發技術討論,這些業務問題將能讓你迴想起真實世界的問題。希望通過閱讀本書,你能體會到Scala的強大能力,並找到閤適的工具去編寫函數式性能更好的應用。
本書的內容包含什麼
第1章,通往性能之路,介紹瞭性能的概念及關於這個主題的一些重要術語。
第2章,在JVM上衡量性能,詳細介紹瞭JVM上可用於衡量和評估性能的工具,包括JMH和Flight Recorder。
第3章,釋放Scala的性能,對多項利用Scala語言特性來提升程序性能的技術和模式提供瞭引導。
第4章,探索集閤API,討論瞭Scala標準庫提供的幾個集閤抽象。在這一章中我們專注於急切執行的集閤。
第5章,惰性集閤和事件溯源,是一個高級技術章節,討論瞭兩類延遲序列:視圖和流。我們還對事件源範式進行瞭簡要的介紹。
第6章,Scala的並發,討論瞭編寫健壯的並行代碼的重要性。我們深入介紹瞭Scala標準庫提供的Future API,並介紹瞭Scalaz庫中提齣的任務抽象。
第7章,高性能架構,作為最後一章,覆蓋瞭前麵章節講過的主題的更深入的相關知識,並探索瞭使用CRDT作為分布式係統的構建塊。這一章還探索瞭在麵臨高吞吐量時,使用free monald實現負載控製策略,以構建響應延時可控的係統。
你需要準備什麼
你應該要在你的操作係統上安裝好Java Development Kit 8版本或更高,以便你可以運行所有的示例代碼。本書討論瞭Oracle HotSpot JVM,並演示瞭在Oracle JDK中包含的工具。你應該還需要從獲取最新版的sbt(在寫作本書的時候,版本為0.13.11)。
這本書為誰而寫
你應該具備關於Scala編程語言的基本知識,熟悉一些基本的函數式編程概念,並具有編寫産品級JVM軟件的經驗。我們建議剛接觸Scala和函數式編程的讀者在讀本書之前花一些時間學習其他的資源,以便可以從書中獲取到更多的知識。兩個傑齣的以Scala為中心的資源是Artima齣版社的《Scala編程》(Programming in Scala)及Manning齣版社的《Scala函數式編程》(Functional Programming in Scala)。前一個最適用於具有堅實的麵嚮對象Java編程知識,同時想要先理解這門語言然後理解函數式編程範式的開發者。後者則聚焦於函數式編程範式而少於討論某一個具體語言中的概念。
坦白說,我對Scala的瞭解還停留在初步階段,但它強大的錶達能力和在分布式係統領域的廣泛應用,一直吸引著我。特彆是“高性能”這個關鍵詞,直接擊中瞭我的痛點。目前我麵臨著一些項目,需要處理海量數據,並且對響應速度有極高的要求,而傳統的Java方案在某些方麵顯得力不從心。我希望這本《高性能Scala》能夠成為我的“救星”。我非常期待書中能夠詳細講解Scala是如何通過其函數式特性來簡化並發編程,並有效地避免競態條件等問題。同時,對內存使用效率、CPU利用率等方麵的優化,我也是重點關注的對象。書中是否會介紹一些Scala特有的數據結構和算法,它們在性能方麵有著顯著的優勢?我希望能夠學到如何在Scala中編寫齣既易於理解又高效的代碼,並且能夠應對復雜的業務場景。
評分這本《高性能Scala》的齣現,簡直是開發者們翹首以盼的福音。我一直在尋找一本能夠深入剖析Scala性能優勢的書籍,並且能夠提供切實可行的優化方案。市麵上關於Scala的入門書籍並不少,但真正能觸及“高性能”這個深層主題的,卻相對稀少。我尤其關注Scala在處理大數據、構建高吞吐量API方麵的能力。書中是否會涵蓋JVM的底層優化技巧,以及Scala特有的性能調優方法?例如,如何利用Scala的模式匹配、惰性求值、以及高效的集閤庫來編寫齣性能卓越的代碼?我希望書中不僅僅是羅列一些理論概念,更能提供一些經過驗證的性能分析工具和方法,幫助讀者找齣代碼中的性能瓶頸,並給齣具體的改進建議。對作者的專業背景和實際項目經驗,我也有很高的期待,相信能夠從他們的經驗中汲取寶貴的教訓,避免走彎路。
評分這本書的封麵設計讓我印象深刻,簡潔卻又不失專業感。我一直對Scala這門語言充滿好奇,它在並發處理和函數式編程方麵的特性,讓我覺得它是一種能夠構建高效、健壯係統的強大工具。雖然我目前的工作主要使用Java,但我深知在快速發展的技術浪潮中,學習和掌握新的語言和技術是保持競爭力的關鍵。特彆是“高性能”這個詞,它直接觸及瞭我作為開發者最核心的需求之一。我相信,通過學習這本書,我能夠更深入地理解Scala在性能優化方麵的設計理念和實際應用技巧。我期待能夠瞭解到如何利用Scala的特性來編寫齣更優雅、更高效的代碼,尤其是在處理大數據、高並發場景下,Scala的錶現力一直備受贊譽。這本書是否能夠真正幫助我打開Scala高性能編程的大門,是衡量它價值的重要標準。我希望它不僅僅停留在理論層麵,更能提供豐富的實戰案例和代碼示例,讓我能夠快速上手,並將學到的知識應用到實際項目中,從而提升我的開發能力和解決問題的效率。
評分這本書的裝幀設計透露著一種沉穩和專業,封麵上的字體選擇和配色方案都非常契閤“高性能”的主題。作為一個對技術追求極緻的開發者,我一直在尋找能夠幫助我突破性能瓶頸的利器。Scala憑藉其融閤瞭靜態類型、函數式編程和麵嚮對象的特性,在構建可伸縮、高可靠性的係統方麵,展現齣瞭巨大的潛力。我希望這本《高性能Scala》能夠深入探討Scala在JVM上的運行機製,以及如何通過精妙的代碼設計和配置,來最大化程序的性能。書中是否會涉及一些高級的並發模型,比如CSP(Communicating Sequential Processes)在Scala中的實現,以及它們如何幫助我們構建齣更具彈性和高效的並發係統?我同樣期待書中能夠提供一些關於內存管理、垃圾迴收器調優,以及綫程池配置等方麵的深度解析,幫助我從更底層的角度去理解和優化Scala程序的性能。
評分這本書在我書架上占據瞭一個顯眼的位置,它的厚度和印刷質量都相當不錯,一看就知道是經過精心打磨的作品。我從事後端開發多年,接觸過多種編程語言,但Scala以其獨特的融閤瞭麵嚮對象和函數式編程的特性,一直是我心目中的“下一代語言”的有力競爭者。尤其是在微服務架構日益普及的今天,對係統性能和穩定性的要求越來越高,而Scala在這方麵展現齣的潛力,讓我無法忽視。我希望通過閱讀這本書,能夠係統地學習Scala的語法、核心概念,並重點關注它在提升程序運行效率、降低資源消耗方麵的獨到之處。比如,它在內存管理、垃圾迴收、並發模型等方麵是否有彆於其他語言的創新之處?書中是否會深入剖析Scala編譯器的工作原理,以及如何通過代碼設計和JVM調優來最大化性能?我對書中可能涉及到的並發模式,如Actor模型,以及它們在實際高並發場景下的應用,非常感興趣。如果這本書能夠提供清晰的解釋和可行的指導,那我將非常樂意投入時間去深入研讀。
評分垃圾,建議不要買,看一下官網都比這強!!!
評分垃圾,建議不要買,看一下官網都比這強!!!
評分可以的 可以的 可以的 可以的可以的 可以的 可以的 可以可以的 可以的 可以的 可以的
評分感覺還不錯
評分商品可以,質量不錯
評分買瞭很多書、京東618很給力~
評分這是本好書!
評分5分
評分商品可以,質量不錯
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有