大資料時代怎樣深入淺出的掌握Scala實戰技能?

網際網路發展發表於2016-03-28
Scala是一門以JVM為目標執行環境並將物件導向和函數語言程式設計語言的最佳特性結合在一起的程式語言。從的搭建起步,基於純粹動手實戰的原則,循序漸進的覆蓋Scala基礎、Scala物件導向程式設計、Scala函數語言程式設計、集合的操作深度實戰、Scala測試等實用實戰內容,是《Scala深入淺出實戰中級---進階經典》和《Scala深入淺出實戰高階---高手之巔》的前置課程。
第1講:Scala開發環境搭建和HelloWorld解析
本影片介紹了Scala語言的特性,Java的安裝,詳細介紹了Scala的下載、Scala的環境變數配置,ScalaIDE工具的安裝。在Scala的環境安裝完成後又動手演示了一個在ScalaIDE中建立Scala工程的例子,並演示執行結果。
第2講:定義、流程控制、異常處理入門實戰
本影片以具體的例子程式碼詳細介紹了1)Scala中函式的定義格式,以main函式為例介紹了main函式中的引數意義和返回值,同時還介紹了無引數函式的呼叫方式和有引數函式的呼叫方式。
2)介紹了Scala中流程控制do-while迴圈、for迴圈的使用方式。
3)Scala中的異常處理try-catch-finally的使用流程。
第3講:Tuple、Array、Map與檔案操作入門實戰
本影片以具體的例子程式碼詳細介紹了
1)Scala中的元組的定義、元組的元素訪問方式。
2)Scala中陣列的定義、陣列的遍歷方式。
3)Scala中Map集合的定義和訪問方式。
4)Scala中網路檔案和本地檔案的訪問方式。
第4講:For與Function進階實戰、Lazy的使用
本影片以具體的例子程式碼詳細介紹
1)雙重for迴圈的使用方式。
2)for迴圈中的守衛的使用方式。
3)函式作為引數傳遞給另外一個函式。
4)匿名函式的定義、匿名函式作為。
5)函式的返回值。
6)遞迴呼叫中函式的使用方式。
7)函式中的預設引數。
8)可變引數的函式的定義和使用方式。
第5講:Scala陣列操作實戰詳解
本影片以具體的例子程式碼詳細介紹了
1)固定長度陣列的宣告與元素操作。
2)變長陣列的宣告與元素操作。
3)陣列的的各種操作方法:陣列的增刪改查操作、陣列的+=與++=操作、陣列的yield操作、陣列的過濾filter操作、陣列的求和操作、陣列的求最大值操作、 陣列的升序sorted排序、陣列的快速quickSort排序、陣列的mkString操作、陣列的矩陣ofDim操作。
第6講:Map、Tuple、Zip實戰解析
本影片以具體的例子程式碼詳細介紹了
1)可變Map集合的操作。
2)不可變Map集合的操作。
3)使用模式匹配獲取Map集合的元素。
4)使用getOrElse方法獲取 Map集合的元素。
5)使用+=為Map集合新增元素。
6)使用-=刪除Map集合的元素。
7)使用SortedMap給Map集合的元素排序。
8)使用模式匹配訪問元組中的值。
9)使用partition方法將一個字串拆分成一個元組。
10)使用陣列的zip方法將兩個陣列中的元素進行壓縮組裝成新的陣列。
第7講:Scala類的屬性和物件私有欄位實戰詳解
本影片以具體的例子程式碼詳細介紹了:
1)Scala類的實現和使用。
2)Scala類中用var關鍵字修飾的屬性(或者稱欄位)自動帶有getter方法和setter方法。
3)Scala類中用val關鍵字修飾的屬性只帶getter方法。4)最後著重介紹了Scala類的物件私有欄位,該特性在用Scala語言編寫的大資料計算框架Spark原始碼中經常用到。
第8講:Scala主構造器、私有構造器、構造器過載實戰詳解
本影片以具體的例子程式碼詳細介紹了:
1)Scala類的主構造器的定義以及如何讓主構造器變成私有的。
2)除了主構造器,Scala類還有任意多的輔助構造器,輔助構造器是如何定義和使用的。
3)和Java語言有多個構造方法一樣,Scala類的構造器是可以透過過載實現多個構造器,當然其中只有一個是主構造器。對於輔助構造器的使用而言,都是在對其他先前定義的輔助構造器和主構造器進行呼叫開始的。
第9講:Scala的內部類實戰詳解
本影片以具體的例子程式碼詳細介紹了Scala的內部類,Java語言的內部類和Scala語言的內部類有本質的區別,Java語言的內部類是從屬於外部類的,而Scala語言的內部類是從屬於外部類的每個具體例項物件的。
第10講:Scala單例物件、伴生物件實戰詳解
本影片以具體的例子程式碼詳細介紹了Scala語言的單例物件和伴生物件: (1)與Java語言中有靜態方法和靜態屬性(欄位)不同,Scala語言是通過提供object關鍵字修飾的單例物件達到此目的,也就是說在Scala語言的單例物件.
第11講:Scala中的apply實戰詳解
本影片以具體的例子程式碼詳細介紹了Scala語言的非常重要的apply方法的定義和使用: 
(1)對於apply方法而言,它可以是伴生類中的apply方法,也可以是伴生物件中的apply方法,我們通常使用的就透過伴生物件中的apply方法來實例化它的伴生類。 
(2)針對apply方法在伴生物件和伴生類中如何使用,我們透過程式碼進行了演示,並檢視了Scala原始碼中的伴生物件Array是如何透過apply方法來實例化它的伴生物件的。 
(3)最後特別列舉了大資料計算框架Spark中的圖計算部分(Spark GraphX),在構造一個圖的時候(圖是用Graph這個抽象類表示的),一種方法是透過使用Graph類的伴生物件的apply方法來實現的,而在這個apply方法中,實際上是new了一個Graph抽象類的子類 GraphImpl的例項。
第12講:Scala中的繼承:超類的構造、重寫欄位、重寫方法實戰
本影片以具體的例子程式碼詳細介紹了Scala語言的非常重要的繼承特性: (1)與Java語言一樣,Scala語言也是使用extends關鍵字實現子類對父類的繼承。 
(2)子類中的方法和欄位可以使用 override 關鍵字實現對它的超類(父類)中同名的方法或欄位進行覆寫(重寫)。 
(3)當子類使用主構造器進行例項化時,與父類的主構造器中同名的引數也會直接傳遞具體的引數值給父類使用。
第13講:抽象類、抽象欄位、抽象方法
本影片以具體的例子程式碼詳細介紹了Scala語言中抽象類、抽象欄位和抽象方法的定義和使用: 
(1)與Java語言一樣,Scala中的抽象類也是使用 abstract 關鍵字修飾的。 
(2)抽象欄位和抽象方法都是隻有欄位或者方法的定義,而沒有欄位或者方法的具體實現。
第14講:Scala中作為介面的trait、在物件中混入trait程式碼
本影片以具體的例子程式碼詳細介紹了Scala語言中trait的定義和使用: (1)與Java語言中的介面(interface)中只含有抽象方法不同,Scala語言中的特質(trait)可以包含抽象欄位、抽象方法或者實現了方法體的方法。 
(2)在使用Scala語言構建物件時,可以為該物件新增特質。
第15講:Scala多重繼承、多重繼承構造器執行順序及AOP實現
本影片以具體的例子程式碼詳細介紹了Scala語言的多重繼承、多重繼承構造器執行順序及AOP實現: 
(1)多重繼承的trait程式碼實戰;
(2)多重繼承構造器執行順序;
(3)基於trait的AOP程式碼實戰。
第16講:Scala中包的定義、包物件、包的引用、包的隱式引用實戰
本影片以具體的例子程式碼詳細介紹了Scala語言中包的定義、包物件、包的引用、包的隱式引用:   (1)與在Java中一樣,在Scala語言中,也可以透過包來組織大型工程(專案)。在Scala中,可以透過鏈式和巢狀來實現包的定義。   (2)藉助包物件可以把工具函式或者常量新增到包而不是某個工具物件中。   (3)Scala語言中可以在任何地方宣告引用,並可以對引用進行重新命名。同時在Scala程式中都隱式引用了三個包:import java.lang._ 、import scala._ 、import Predef._
第17講:Scala中包、類、物件、成員、伴生類、伴生物件訪問許可權
本影片以具體的例子程式碼詳細介紹了Scala語言中包、類、物件、成員、伴生類、伴生物件訪問許可權:   
(1)在Scala語言中,可以透過 private[包名] 這個修飾符來擴充套件包、類等的訪問許可權。   
(2)在Scala中,private[this] 這個修飾符修飾的成員是物件私有的,這樣即使是同一個類的不同物件也不可以訪問對方的成員。   
(3)在伴生物件和伴生類中,可以訪問彼此的私有成員。
第18講:Scala中檔案的讀取、寫入、控制檯輸入操作程式碼實戰
本影片以具體的例子程式碼詳細介紹了Scala語言中檔案的讀取、寫入、控制臺輸入操作程式碼實戰: 
(1)透過Source.fromFile( )方法讀取本地檔案;
(2)透過Source.fromURL( )方法讀取網路檔案;
(3)透過使用Java語言的PrintWriter類寫入內容到本地檔案;
(4)透過Console.readLine方法從控制檯輸入內容。
第19講:Scala中的正規表示式、與模式匹配結合的的Reg程式碼實戰
本影片以具體的例子程式碼詳細介紹了Scala語言的正規表示式、與模式匹配結合的的正規表示式: 
(1)在Scala中,與正規表示式相關的類是scala.util.matching.Regex類。要構造一個Regex物件,使用String類的r方法即可。如果正規表示式中包含反斜槓或引號之類的需要轉義的字元,那麼最好是使用原始(raw)字符串,以三個 ” 號包圍。 
(2)使用Regex物件的findAllIn( )方法可以返回所有匹配項的迭代器;使用Regex物件的findFirstIn( )方法可以找到Regex的首個匹配項。 
(3)正規表示式和模式匹配的結合形成正規表示式組。分組可以使得獲取正規表示式的子表示式更加方便。在想要提取的子表示式兩側加上圓括號,匹配組將正規表示式(Regex)物件當做“提取器”來使用。
第20講:Scala中的本地函式與作為語言一等公民的函式詳解
本影片以具體的例子程式碼詳細介紹了Scala語言的本地函式與作為語言一等公民的函式: 
(1)在Scala中,函式是一等公民,可以在變數中存放函式,作為值的函數。 
(2)在Scala中,不需要給每一個函式命名,這種不需要命名的函式,稱為匿名函式。 
(3)在Scala 中,可以在函式內部定義函式,這種定義在函式內部的函式可以成為本地函。
第21講:Scala中的偏函式實戰詳解
本影片以具體的例子程式碼詳細介紹了Scala語言的偏函式:(1)在Scala中,偏函式是具有型別PartialFunction[-A,+B]的一種函式。A是其接受的函式型別,B是其返回的結果型別。偏函式最大的特點就是它只接受和處理其引數定義域的一個子集,而對於這個子集之外的引數則丟擲執行時異常。   
(2)偏函式是一種表示式,你不需要提供函式需要的所有引數。代之以僅提供部分,或不提供所需引數。比如,要建立不提供任何三個所需引數的呼叫sum方法(“def sum(a: Int, b: Int, c: Int) = a + b + c”)的偏應用表示式,只要在“sum”之後放一個下劃線即可。然後可以把得到的函式存入變數。
第22講:Scala中的閉包實戰詳解
本影片以具體的例子程式碼詳細介紹了Scala語言的閉包:在Scala中,你可以在任何作用域內定義函式:包、類甚至是另一個函式或方法。在函式體內,你可以訪問到相應作用域內的任何變數。同時你的函式可以在變數不再處於作用域內時被呼叫,這樣的一個函式被稱為閉包(closure)。
第23講:Scala高階函式實戰詳解
本影片以具體的例子程式碼詳細介紹了Scala語言的高階函式: 
(1)由於Scala語言中混合了物件導向和函數語言程式設計的特性,所以在Scala語言中,函式可以像任何其他資料型別一樣被傳遞和操作。 
(2)要熟悉高階函式,本影片透過練習使用Scala集合庫的一些常用的接受函式引數的方法(map方法、filter方法、reduceLeft方法、split方法和sortWith方法等)來具體演示。 
(3)把函式(包括匿名函式)作為值(或者稱為值函式)傳遞給Scala集合的常用方法的引數來對集合中的每一個元素進行計算是Scala語言中常見的操作方式。
第24講:Scala中SAM轉換實戰詳解
在Scala中,當需要告訴另一個函式做某件事的時候,會傳一個函式引數給它,並且這個函式引數透過Scala語言的隱式轉換把這個函式引數轉換為一個包含了具體的動作方法的物件例項來實現。
第25講:Scala中Curring實戰詳解_controller
柯里化(Curring)指的是將原來接受兩個引數的函式變成新的接受一個參數的函式的過程,新的函式返回一個以原有第二個引數作為引數的函式。
第26講:Scala中模式匹配入門實戰詳解
本影片以具體的例子程式碼詳細介紹了Scala語言模式匹配的入門: 
(1)match/case模式匹配。 
(2)帶條件表示式的模式匹配。 
(3)Foreach迭代器中模式匹配的使用方式。
第27講:Type、Array、List、Tuple模式匹配實戰解析
本影片以具體的例子程式碼詳細介紹了Scala語言的Type、Array、List、Tuple模式匹配實戰: 
(1)type模式匹配,以對函式的引數型別的判斷為例。 
(2)Array模式匹配,以對陣列中的元素的個數的判斷為例。 
(3)List模式匹配,以右結合運算子為例。 
(4)Tuple模式匹配,以元組中對特定位置的元素的判斷為例。
第28講:Scala提取器Extractor實戰詳解
本影片以具體的例子程式碼詳細介紹了Scala語言的提取器Extractor: 
(1)陣列中對元素的提取。 
(2)正規表示式中的提取器。 
(3)提取器的背後原理。 
(4)提取器的unapplySeq原始碼解析。
第29講:Case class和Case object程式碼實戰解析
本影片以具體的例子程式碼詳細介紹了Scala語言的Case class和Case object程式碼實戰: 
(1)Case class 和 Case object的常見用途:這是Scala為我們最佳化的語言特性,常用於傳遞訊息和模式匹配。 
(2)Scala 為 Case class 所做的最佳化:1)新增與類名一致的工廠方法(對應伴生物件的apply方法)、模式匹配中常用的抽取器(對應伴生物件的unapply方法);2)引數列表中的所有引數隱式獲得了val 字首,被當做欄位保護,並且是不可變的(由於變數的不可變特性,在分散式訊息通信中的使用更廣泛);3)為類新增了諸如toString,hashCode,equals和copy等方法。 
(3)介紹了Case class 和 Case object在模式匹配中使用的幾種模式,包括:1)常量模式(Case Object 單例物件可以視作常量);2)構造器模式;3)通配模式等
第30講:模式匹配高階實戰:巢狀的Case class
本影片以具體的例子程式碼詳細介紹了Scala語言巢狀的Case class: 
(1)介紹巢狀的Case class在模式匹配中非常重要的一個應用場景:以Case class作為元素的集合的模式匹配。 
(2)利用模式匹配中常用的匹配模式,序列模式講解巢狀Case Class的應用實戰。 
(3)透過模式匹配中的變數繫結,講解巢狀Case Class的應用實戰。
第31講:Option使用和實現內幕原始碼揭秘
本影片以具體的例子程式碼詳細介紹了Scala語言Option使用和實現內幕: 
(1)從Option的實戰入手解析其內部實現。 
(2)Option的原始碼解析 : 著重解析 sealed關鍵字的含義及其作用,sealed關鍵字的作用主要有:1)sealed關鍵字可以限制繼承子類必須在同一個檔案中;2)用於模式匹配時,編譯器會幫我們檢查是否所有的匹配子項都已經列在case中,避免出現 MatchError的異常。 
(3)給出Option在實際應用中的一個常見案例 。
第32講:List的基本操作實戰與基於模式匹配的List排序演算法實現
本影片以具體的例子程式碼詳細介紹了Scala語言中List的基本操作實戰與基於模式匹配的List排序演算法實現: 
(1)List的定義有兩種方式:一種透過apply()方法的方式定義,一種是透過" :: "(兩個冒號的方式)來生成List集合; 
(2)接下來講解了List的一些常見的操作方法,像isEmpty方法、head方法、tail方法等; 
(3)最後用一個sortList()方法的程式碼例項來講解基於模式匹配的List排
序演算法實現。
第33講:List的一階函式操作程式碼實戰詳解
本影片以具體的例子程式碼詳細介紹了Scala語言中List的一階函式操作: 
(1)List的drop、take、splitAt、apply、indices、toString、
mkString等方法的實戰操作; 
(2)List的toIterator,toArray,copyToArray等方法的實戰操作。
第34講:對List進行高效的排序和倒排序程式碼實戰
本影片以具體的例子程式碼詳細介紹了Scala語言風格的歸併排序,所謂Scala的風格,在本例中用到了Scala語言的模式匹配、柯里化以及作為函數引數的值函式等知識點。歸併排序是建立在歸併操作上的一種有效的排序演算法。該演算法是採用分治法(Divide and Conquer)的一個非常典型的應用。 將已有序的子序列合併,得到完全有序的序列;即先使每個子序列有序,再使子序列段間有序。若將兩個有序表合併成一個有序表,稱為2-路歸併。
第35講:List的map、flatMap、foreach等操作
本影片以具體的例子程式碼詳細介紹了Scala語言中List常見的一些方法(函數)操作:map、flatMap、foreach、filter操作。
第36講:List的partition、takeWhile等操作
本影片同樣以具體的例子程式碼詳細介紹了Scala語言中List常見的一些方法操作:partition、find、takeWhile、dropWhile、span、forall、exsists等方法操作
第37講:List的foldLeft、foldRight、sort操作程式碼實戰
本影片以具體的例子程式碼詳細介紹了Scala語言中List常見的一些方法(函數)操作:foldLeft、foldRight、sort等方法操作程式碼實戰。
第38講:List伴生物件操作方法程式碼實戰
本影片以具體的例子程式碼詳細介紹了Scala語言中List伴生物件的常見操作方法,具體的方法有:apply、make、range、unzip、flatten、contact、map2等操作方法。
第39講:ListBuffer、ArrayBuffer、Queue、Stack操作程式碼實戰
ListBuffer和ArrayBuffer分別是List、Array的新的版本,Queue和Stack是兩種經典的資料結構。本影片以具體的例子程式碼詳細介紹了Scala語言中ListBuffer、ArrayBuffer、Queue、Stack的操作實現。
第40講:Set、Map、TreeSet、TreeMap操作程式碼實戰
Set、Map、TreeSet、TreeMap操作程式碼實戰。
第41講:List繼承體系實現內幕和方法操作原始碼揭秘
本影片以具體的例子程式碼詳細介紹了Scala語言中:
(1)List的繼承體系分析和原始碼解讀;
(2)List方法操作原始碼解讀實戰。
課程地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30605389/viewspace-2065319/,如需轉載,請註明出處,否則將追究法律責任。

相關文章