天天看點

大資料開發學習:一定要學會的Java小知識點

Java作為大資料技術的必備基礎程式設計語言,是想要轉行學習大資料的小夥伴必須要熟練掌握的一項技術。今天大資料就為大家帶來了Java裡的小知識點講解,希望對你的大資料學習有所幫助啦。

大資料開發學習:一定要學會的Java小知識點

1.類加載子系統的作用:根據給定的全限定名類名(如java.lang.Object)來裝載class檔案的内容到運作時資料區中的方法區

2.雙親委派機制:當一個類收到了類加載請求時,不會自己先去加載這個類,而是将其委派給父類,由父類去加載,如果此時父類不能加載,回報給子類,由子類去完成類的加載。

3.類加載過程:加載、連結(驗證、準備、解析)、初始化

加載階段,虛拟機需要完成以下3件事情:

1)通過一個類的全限定名來擷取定義此類的二進制位元組流(并沒有指明要從一個Class檔案中擷取,可以從其他管道,譬如:網絡、動态生成、資料庫等)。

2) 将這個位元組流所代表的靜态存儲結構轉化為方法區的運作時資料結構。

3)在記憶體中生成一個代表這個類的java.lang.Class對象,作為方法區這個類的各種資料的通路入口。

驗證階段大緻會完成4個階段的檢驗動作:

1)檔案格式驗證

2)中繼資料驗證

3)位元組碼驗證

4)符号引用驗證

準備階段是正式為類變量配置設定記憶體并設定類變量初始值的階段,這些變量所使用的記憶體都将在方法區中進行配置設定。

解析階段是虛拟機将常量池内的符号引用替換為直接引用的過程。

在初始化階段,則根據程式猿通過程式制定的主觀計劃去初始化類變量和其他資源,或者說:初始化階段是執行類構造器()方法的過程。

大資料開發學習:一定要學會的Java小知識點

棧的記憶體要遠遠小于堆記憶體

-Xss選項設定棧記憶體的大小。

-Xms選項可以設定堆的開始時的大小,-Xmx選項可以設定堆的最大值。

大資料開發學習:一定要學會的Java小知識點

在Java中,每一個對象都擁有一個鎖标記(鎖),也稱為螢幕,多線程同時通路某個對象時,線程隻有擷取了該對象的鎖才能通路。

Lock和synchronized有以下幾點不同:

1)Lock是一個接口,而synchronized是Java中的關鍵字,synchronized是内置的語言實作;

2)采用synchronized不需要使用者去手動釋放鎖,當synchronized方法或者synchronized代碼塊執行完後,系統會自動讓線程釋放對鎖的占用;synchronized在發生異常時,會自動釋放線程占有的鎖,是以不會導緻死鎖現象發生;而Lock在發生異常時,如果沒有主動通過unLock()去釋放鎖,則很可能造成死鎖現象,是以使用Lock時需要在finally塊中釋放鎖;

3)響應中斷Lock可以讓等待鎖的線程響應中斷,而synchronized卻不行,使用synchronized時,等待的線程會一直等待下去,不能夠響應中斷;

4)Lock可以是否擷取鎖,synchronized不行。

5)Lock可以提高多個線程進行讀操作的效率。

6) 公平鎖Lock可以設定為公平鎖,synchronized就是非公平鎖

單獨調用interrupt()方法不能中斷正在運作過程中的線程,隻能中斷阻塞過程中的線程。

當通過lockInterruptibly()方法擷取某個鎖時,如果不能擷取到,隻有進行等待的情況下,是可以響應中斷的(線程B調用threadB.interrupt()方法能夠中斷線程B的等待過程)。

而用synchronized修飾的話,當一個線程處于等待某個鎖的狀态,是無法被中斷的,隻有一直等待下去。

Java作為大資料技術的重要基礎語言,大家一定要牢牢掌握住它的知識點,為自己的将來打好基礎。

在這裡我還是要推薦下我自己建的大資料學習交流qq裙:522189307 , 裙 裡都是學大資料開發的,如果你正在學習大資料 ,小編歡迎你加入,大家都是軟體開發黨,不定期分享幹貨(隻有大資料開發相關的),包括我自己整理的一份最新的大資料進階資料和進階開發教程,歡迎進階中和進想深入大資料的小夥伴。上述資料加群可以領取

繼續閱讀