要例項化乙個泛型的array[t],我們需要乙個classtag[t]物件。要想讓基本型別的陣列能正常工作的話,這是必需的。舉例來說,如果t是int,你會希望虛擬機器中對應的是乙個int陣列。如果你編寫的是乙個構造泛型資料的泛型函式,則你需要幫它一下,傳給它那個類標籤(class tag)物件。用上下文界定即可,就像這樣
import scala.reflect._
def makepair[t:classtag](first:t,second:t) =
如果你呼叫makepair(4,9),編譯器將定位到隱式的classtag[int]並實際上呼叫makepair(4,9)(classtag)。這樣一來,該方法呼叫的是classtag.newarray,在本例中這是乙個將構造出基本型別陣列int[2]的classtag[int]。
為什麼搞得這麼複雜?在虛擬機器中,泛型相關的型別資訊是被抹掉的。這時只會有乙個makepair方法,其卻要處理所有型別t
黑猴子的家 Hadoop Checkpoint機制
fsimage和edit log合併的過程如下圖所示 其實這個合併過程是乙個很耗i o與cpu的操作,並且在進行合併的過程中肯定也會有其他應用繼續訪問和修改hdfs檔案。所以,這個過程一般不是在單一的namenode節點上進行從。如果hdfs沒有做ha的話,checkpoint由secondname...
黑猴子的家 FileInputFormat切片機制
1 job提交流程原始碼詳解 waitforcompletion submit 1 建立連線 connect 1 建立提交job的 new cluster getconfiguration 2 判斷是本地yarn還是遠端 initialize jobtrackaddr,conf 2 提交job su...
黑猴子的家 Zookeeper Java API
1 code github 2 環境準備 1 建立乙個工程 2 解壓zookeeper 3.4.10.tar.gz檔案 3 拷貝zookeeper 3.4.10.jar jline 0.9.94.jar log4j 1.2.16.jar netty 3.10.5.final.jar slf4j ap...