首先非常榮幸成為王家林老師3000門徒之一,以後此博客將會記錄學習王家林老師每節課程的筆記,作業。本人郵箱:[email protected]電話:15737606315下麵是第一天的學習筆記一:關於scala的產生背景,解決了什麼技術問題(內容大部分來自網路,我只寫一些個人總結,以後皆如此)scal...
首先非常榮幸成為王家林老師3000門徒之一,以後此博客將會記錄學習王家林老師每節課程的筆記,作業。
本人郵箱:[email protected]
電話:15737606315
下麵是第一天的學習筆記
一:關於scala的產生背景,解決了什麼技術問題(內容大部分來自網路,我只寫一些個人總結,以後皆如此)
scala是新一代的jvm語言,是一門多範式編程語言,scala集成函數式編程和麵向對象編程的各種優勢,成為Java語言後又一有重大價值的編程語言,scala語言目前已經運用在各種領域,目前在大數據領域最火爆的spark框架就是用scala編寫的,由於scala集成面向對象與函數式編程的各種優勢,這令scala語言成為處理大數據上面的不二選擇,scala相容所有的Java程式,能夠調用 java 類庫
二:scala基礎語法入門
1:首先要先裝好虛擬機(我用ubuntu14.04),在虛擬機中安裝好jvm1.8,設置環境變數,安裝scala最新版,運行命令scala啟用解釋器
2:scala讀取一求值一列印一迴圈 即REPL操作(這裡不方便插入圖片)
3:用var和val定義變數,var定義值可以改變的變數,val定義值不可變的變數
4:和java一樣有7種基本數據類型,scala的基本類型全部是類,可以有方法,例如可以“1.方法名”來調用一個基本數據類型的方法(不方便截圖)
5:scala方法帶有兩個參數,一個隱式的和一個顯式
6:scala算術運算符和Java基本一樣,出來一部分操作運算符可以當作方法用如:a.+(b),這裡的+號是方法
三:控制結構與函數入門
1:在scala中所有的表達式都有值,void類型在scala中用unit表示
可以將if/else表達式的值賦值給變數如:val num=if (x > 0) 1 else -1將表達式if(x>0)的值賦給不可變變數num
2:在 Scala中,{}塊包含一系列表達式,其結果也是一個表達式。塊中最後一個表達式的值就是塊的值
3:輸入輸出可以用print或println函數
4:在scala中可以遍歷while for迴圈表達式的所有的值(不方便截圖),比java中要方便很多
5:scala中方法和函數不是同一個定義,要定義函數,你需要給出函數的名稱、參數和函數體,必須指定所有參數類型(不方便截圖)
四:Array、Map、Tuple實戰(參考王家林老師博客scala學習筆記)
1:tuple
元組,元組中可以由很多數據,讀取Tuple數據時使用._的方式讀取,並且索引從1開始。經常用Tuple接受函數的返回值。
2:array
數組使用圓括弧()讀取,索引從0開始,向左的箭頭符號<-是賦值的意思。第二種迴圈方式是增強for迴圈的寫法。
Scala中的數組是以Java數組實現的。
3:map
只取key或只取value時,需要使用單下劃線_作為占位符,使用占位符後不能對其進行引用。
五:spark案例解釋,讀源代碼,運用前面所學的知識,理解spark內核源碼,嘗試理解spark內核架構
課後作業(參考快學scala)
移除一個數組中第一個負數後的所有負數
最有效方法:把非負數值拷貝到前端
收集需要保留的下標
var first = true
val indexes = for(i<-0 until a.length if first || a(i) >= 0)
yield{
if (a(i) < 0) first = false;
}
每次截斷數組長度
for (j <- 0 until indexes.length) a(j) = a(indexes(j))
a.trimEnd(a.length - indexes.length)