.資深大數據工程師開發經驗分享
.循序漸進介紹Scala核心語法
.透過實際操作用Scala進行應用開發
本書是作者在Scala 學習、工作實作及教育訓練過程中的心得體會和系統歸納,是學習Scala進行應用開發必備工具書。
本書涵蓋三大主要部分:
(1) Scala 語言基礎篇,主要介紹Scala 語言入門基礎知識、變數的定義、程式控制結構、Scala 集合。
(2) Scala 語言中級篇,主要介紹Scala 函數式程式設計、Scala 物件導向程式設計、Scala 模式比對。
(3) Scala 語言進階篇,主要介紹Scala 類型參數、自動轉型、Scala 平行處理程式設計、Scala 與Java 互動操作。
全書運用大量的實際案例來說明Scala 語言的應用,既能夠掌握核心語法,又能夠了解其背後的深層原理。
適用:Scala語言初學者、有興趣者,大數據開發人員、大數據框架運維工程師、軟體培訓機構以及電腦相關科系學生。
作者簡介:
周志湖 電子科技大學電腦軟體與理論碩士,研究機器學習與模式識別,任職綠城房地產集團資訊管理部,擔任平台架構師、資料開發主管。對傳統資料倉、基於Hadoop和Spark的大資料倉架構有深入的研究。
牛亞真 中國科學院大學電腦資訊處理與檢索方向碩士,Hadoop大資料工程師,目前主要從事分散式環境下的資料分析、資料採擷相關工作。
作者序
前 言
為什麼要寫這本書
Apache Spark、Apache Kafka 等以Scala 語言實現為基礎的架構在大數據生態圈內佔有舉足輕重的地位,它們某種程度上領導著大數據最先進的技術方向,另外Akka、Apache Gearpump 等以Scala 語言實現為基礎的架構在大數據生態圈內也備受關注,工業實作已經證明了Scala 語言的強大,這使Scala 語言近一兩年名聲大噪,進而引起許多程式語言同好及各大公司的親睞,國內外也因此掀起了一場學習Scala 語言的熱潮。
Scala 語言基於JVM 平台,能夠與Java 語言進行良好地互動操作,它最大的特點是可以將物件導向程式語言與函數式程式語言的特點結合起來。Scala語言的簡潔性和表達能力,使得Scala 語言與Java 語言相比,同樣的功能用
Scala 實現程式量要少很多。Scala 語言的許多優點,讓許多業內名家對其推崇備至, 這其中便有Java 之父James Gosling 和Groovy 語言創始人JamesStrachan。
"If I were to pick a language to use today other than Java, it would be Scala."
(如果現在讓我選擇使用除Java 之外的一種語言的話,那一定是Scala)——Java 之父James Gosling
"Though my tip though for the long term replacement of javac is Scala. I'mvery impressed with it! I can honestly say if someone had shown me theProgramming in Scala book by Martin Odersky, Lex Spoon & Bill Vennersback in 2003 I'd probably have never created Groovy."(我認為將來可能替代javac 的就是Scala ,它相當大地震撼了我,老實說如果有人在2003 年把Martin Odersky、Lex Spoon 和Bill Venners 寫的《Programming in Scala》書拿給我,我可能就不會再去發明Groovy 語言了)——Groovy(另一種以JVM平台為基礎的語言)創始人James Strachan。
目前中文Scala 方面教材的短缺某種程度上限制了Scala 語言的普及,本書試圖彌補這一空白。
本書內容
本書是筆者在Scala 學習、工作實作及教育訓練過程中的心得體會和系統歸納。內容涵蓋Scala 語言基礎知識,包含變數的定義、程式控制結構、Scala集合操作;Scala 語言中級知識,包含Scala 函數式程式設計、Scala 物件導向程式設計、Scala 模式比對;Scala 語言進階程式設計知識,包含Scala 類型參數、自動轉型、Scala 平行處理程式設計、Scala 與Java 互動操作。書中利用大量的實際案例來說明Scala 語言的應用,既能夠掌握核心語法,又能夠了解其背後的深層原理。
適合讀者群
(1)Spark、Kafka 等架構延伸開發人員
Spark、Kafka 等大數據處理 架構目前在穩定性、擴充性方面雖然已經獲得了長足的進步,但在實際使用時難免遇到問題,此時需要深入到核心原始程式碼中分析問題,在了解其架構原理與實現細節的基礎上透過修改核心原始程式碼來解決問題,這需要開發人員有很強的Scala 語言功力。
(2)Spark、Kafka 等架構應用程式開發人員
在學習Spark、Kafka 等Scala 語言實現的大數據技術架構時,這些架構大多都提供了Java、Scala、Python 等上層應用API 程式設計介面,但僅學會使用其上層API 是不夠的,因為上層API 抽象程度較高,各架構的底層實現細節、設計原理等對開發人員來說是一個黑盒子,在遇到效能等問題時,開發人員如果對底層實現細節不熟悉的話可能很難進行程式的效能最佳化。
(3)Spark、Kafka 等架構運行維護工程師
目前Spark、Kafka 等大數據處理架構基本上已經成為各大公司大數據解決方案的標準配備,但基於開放原始碼解決方案常常會面臨一些技術風險,架構本身的問題及實際應用場景的不同可能會遇到很多故障,因此對於這些使用Scala 語言實現的架構而言,運行維護工程師也需要知曉各架構的底層細節,這樣才能夠迅速定位問題並找到合適的解決辦法。
(4)從事大數據技術的Java 開發人員
Scala 語言完全相容Java 語言,Scala 語言中大量使用了Java 語言現有的函數庫,因此如果你是一個Java 大數據開發人員,在此建議學習Scala 語言,相信它會給你帶來全新的感受,甚至有拋棄Java 的念頭。
(5)大數據技術開放原始碼同好
Spark、Kafka 等是大數據技術架構中的明星,Scala 語言已經通過了工業界的檢驗,學習Scala 語言為學習這些架構的設計原理打下堅實的基礎,為以後參與開放原始碼、學習工業界最先進的大數據技術架構的優秀思想打下了堅實的基礎。
如何閱讀本書
本書涵蓋三大主要部分:
(1) Scala 語言基礎篇,主要介紹Scala 語言入門基礎知識、變數的定義、程式控制結構、Scala 集合。
(2) Scala 語言中級篇,主要介紹Scala 函數式程式設計、Scala 物件導向程式設計、Scala 模式比對。
(3) Scala 語言進階篇,主要介紹Scala 類型參數、自動轉型、Scala 平行處理程式設計、Scala 與Java 互動操作。
如果你是一名初學者,請按照書的順序從第一章基礎理論部分開始學習,學習時先認真看書中的程式範例和說明,然後照著程式親自動手實作,這樣可以達到事半功倍的學習效果;如果你是一名Scala 資深使用者,你可以自由閱讀各章內容,相信書中部分內容一定能夠給你帶來一些新的啟發。
資源下載
本書程式可以從本公司官網http://www.topteam.cc 下載。
勘誤和支援
由於筆者水準有限,加之撰寫時間倉促,書中難免出現一些錯誤或不準確的地方,懇請讀者批評指正。有任何問題,可以透過電子郵件403408607@qq.com 聯繫,將盡最大努力為讀者提供對應的解答。
前 言
為什麼要寫這本書
Apache Spark、Apache Kafka 等以Scala 語言實現為基礎的架構在大數據生態圈內佔有舉足輕重的地位,它們某種程度上領導著大數據最先進的技術方向,另外Akka、Apache Gearpump 等以Scala 語言實現為基礎的架構在大數據生態圈內也備受關注,工業實作已經證明了Scala 語言的強大,這使Scala 語言近一兩年名聲大噪,進而引起許多程式語言同好及各大公司的親睞,國內外也因此掀起了一場學習Scala 語言的熱潮。
Scala 語言基於JVM 平台,能夠與Java 語言進行良好地互動操作,它最大的特點是可以將物件導向程式語言與...
目錄
前言
Chapter01 Scala 入門
1.1 Scala 簡介
1.2 Scala 開發環境架設
1.3 Scala Hello World
1.4 Intellij IDEA 常用快捷鍵
1.5 互動式指令行使用
Chapter02 變數及基本資料型別
2.1 變數
2.2 基本資料型態
2.3 基本類型操作
2.4 運算子的優先順序
2.5 元組類型
2.6 符號類型
Chapter03 程式控制結構
3.1 if 敘述
3.2 while 循環敘述
3.3 for 循環敘述
Chapter04 集合
4.1 集合簡介
4.2 陣列
4.3 列表(List)
4.4 集合(Set)
4.5 對應(Map)
4.6 佇列(Queue)
4.7 堆疊(Stack)
Chapter05 函數
5.1 函數
5.2 值函數
5.3 高階函數
5.4 閉包
5.5 函數柯里化(Currying)
5.6 部分應用函數
5.7 偏函數
Chapter06 Scala 物件導向程式設計(上)
6.1 類別與物件
6.2 主建構函數
6.3 輔助建構函數
6.4 繼承與多形
6.5 成員存取控制
6.6 抽象類別
6.7 內部類別與內建物件
6.8 匿名類別
Chapter07 Scala 物件導向程式設計(下)
7.1 trait 簡介
7.2 trait 的使用
7.3 trait 與類別
7.4 多重繼承問題
7.5 本身類型
Chapter08 套件(package)
8.1 套件的定義
8.2 套件的使用和作用域
8.3 套件物件
8.4 import 進階特性
Chapter09 模式比對
9.1 模式比對簡介
9.2 模式符合的7 大類型
9.3 模式比對原理
9.4 正規表示法與模式比對
9.5 for 循環中的模式比對
9.6 模式比對與範例類別、範例物件
Chapter10 自動轉型
10.1 自動轉型簡介
10.2 自動轉型函數
10.3 隱式類別與隱式物件
10.4 隱式參數與隱式值
10.5 自動轉型規則與問題
Chapter11 型態參數
11.1 類別與類型
11.2 泛型
11.3 類型變數界定
11.4 視圖界定
11.5 上下文界定
11.6 多重界定
11.7 協變與逆變
11.8 進階類型
Chapter12 Scala 平行處理程式設計基礎
12.1 Scala 平行處理程式設計簡介
12.2 Actor
12.3 Typed Actor
12.4 Dispatcher
12.5 Router
12.6 容錯
Chapter13 Scala 與Java 的互動操作
13.1 Java 與Scala 集合互動操作
13.2 Scala 與Java 泛型互動操作
13.3 Scala trait 在Java 中的使用
13.4 Scala 與Java 異常處理互動操作
前言
Chapter01 Scala 入門
1.1 Scala 簡介
1.2 Scala 開發環境架設
1.3 Scala Hello World
1.4 Intellij IDEA 常用快捷鍵
1.5 互動式指令行使用
Chapter02 變數及基本資料型別
2.1 變數
2.2 基本資料型態
2.3 基本類型操作
2.4 運算子的優先順序
2.5 元組類型
2.6 符號類型
Chapter03 程式控制結構
3.1 if 敘述
3.2 while 循環敘述
3.3 for 循環敘述
Chapter04 集合
4.1 集合簡介
4.2 陣列
4.3 列表(List)
4.4 集合(Set)
4.5 對應(Map)
4.6 佇列(Queue)
4.7 堆疊(Stack)
Chapter05 函數
5.1 函數
5...
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。