Java架構(gòu)師實戰(zhàn)核心知識整理,由于每篇的細節(jié)內(nèi)容實在太多啦,所以只把部分知識點截圖出來粗略的介紹,每個小節(jié)點里面都有各種細化講解內(nèi)容!
JVM
JVM是可運行Java代碼的假想計算機,包括一套字節(jié)碼指令集、一組寄存器、一個棧、一個垃圾回收,堆和一個存儲方法域。JVM是運行在操作系統(tǒng)之上的,它與硬件沒有直接的交互。
運行過程:
我們都知道Java源文件,通過編譯器,能夠生產(chǎn)相應的.Class文件,也就是字節(jié)碼文件,而字節(jié)碼文件又通過Java虛擬機中的解釋器,編譯成特定機器上的機器碼。
也就是如下:
?、貸ava源文件—->編譯器—->字節(jié)碼文件
?、谧止?jié)碼文件—->JVM—->機器碼
每一種平臺的解釋器是不同的,但是實現(xiàn)的虛擬機是相同的,這也就是Java為什么能夠跨平臺的原因了,當一個程序從開始運行,這時虛擬機就開始實例化了,多個程序啟動就會存在多個虛擬機實例。程序退出或者關(guān)閉,則虛擬機實例消亡,多個虛擬機實例之間數(shù)據(jù)不能共享。
Java集合
接口繼承關(guān)系和實現(xiàn)
集合類存放于Java.util包中,主要有3種:set(集)、list(列表包含Queue)和map(映射)。
1.Collection:Collection是集合List、Set、Queue的最基本的接口。
2.Iterator:迭代器,可以通過迭代器遍歷集合中的數(shù)據(jù)
3.Map:是映射表的基礎(chǔ)接口
Java多線程并發(fā)
Java并發(fā)知識庫
Java線程實現(xiàn)/創(chuàng)建方式
繼承Thread類
Thread類本質(zhì)上是實現(xiàn)了Runnable接口的一個實例,代表一個線程的實例。啟動線程的唯一方法就是通過Thread類的start()實例方法。start()方法是一個native方法,它將啟動一個新線程,并執(zhí)行run()方法。
實現(xiàn)Runnable接口
如果自己的類已經(jīng)extends另一個類,就無法直接extendsThread,此時,可以實現(xiàn)一個Runnable接口。
publicclassMyThreadextendsOtherClassimplementsRunnable{
publicvoidrun(){
System.out.println("MyThread.run()");
}
}13/04/2018Page55of283
//啟動MyThread,需要首先實例化一個Thread,并傳入自己的MyThread實例:
MyThreadmyThread=newMyThread();
Threadthread=newThread(myThread);
thread.start();
//事實上,當傳入一個Runnabletarget參數(shù)給Thread后,Thread的run()方法就會調(diào)用
target.run()
publicvoidrun(){
if(target!=null){
target.run();
}
}
Java基礎(chǔ)
如果某個方法不能按照正常的途徑完成任務(wù),就可以通過另一種路徑退出方法。在這種情況下會拋出一個封裝了錯誤信息的對象。此時,這個方法會立刻退出同時不返回任何值。另外,調(diào)用這個方法的其他代碼也無法繼續(xù)執(zhí)行,異常處理機制會將代碼執(zhí)行交給異常處理器。
Spring原理
它是一個全面的、企業(yè)應用開發(fā)一站式的解決方案,貫穿表現(xiàn)層、業(yè)務(wù)層、持久層。但是Spring仍然可以和其他的框架無縫整合。
6.1.1.Spring特點
6.1.1.1.輕量級
6.1.1.2.控制反轉(zhuǎn)
6.1.1.3.面向切面
6.1.1.4.容器
6.1.1.5.框架集合
微服務(wù)
客戶端注冊(zookeeper)
客戶端注冊是服務(wù)自身要負責注冊與注銷的工作。當服務(wù)啟動后向注冊中心注冊自身,當服務(wù)下線時注銷自己。期間還需要和注冊中心保持心跳。心跳不一定要客戶端來做,也可以由注冊中心
負責(這個過程叫探活)。這種方式的缺點是注冊工作與服務(wù)耦合在一起,不同語言都要實現(xiàn)一套注冊邏輯。
Netty與RPC
Netty原理
Netty是一個高性能、異步事件驅(qū)動的NIO框架,基于JAVANIO提供的API實現(xiàn)。它提供了對TCP、UDP和文件傳輸?shù)闹С?,作為一個異步NIO框架,Netty的所有IO操作都是異步非阻塞的,通過Future-Listener機制,用戶可以方便的主動獲取或者通過通知機制獲得IO操作結(jié)果。
Netty高性能
在IO編程過程中,當需要同時處理多個客戶端接入請求時,可以利用多線程或者IO多路復用技術(shù)進行處理。IO多路復用技術(shù)通過把多個IO的阻塞復用到同一個select的阻塞上,從而使得系統(tǒng)在單線程的情況下可以同時處理多個客戶端請求。與傳統(tǒng)的多線程/多進程模型比,I/O多路復用的最大優(yōu)勢是系統(tǒng)開銷小,系統(tǒng)不需要創(chuàng)建新的額外進程或者線程,也不需要維護這些進程和線程的運行,降低了系統(tǒng)的維護工作量,節(jié)省了系統(tǒng)資源。
與Socket類和ServerSocket類相對應,NIO也提供了SocketChannel和ServerSocketChannel兩種不同的套接字通道實現(xiàn)。
多路復用通訊方式
Netty架構(gòu)按照Reactor模式設(shè)計和實現(xiàn),它的服務(wù)端通信序列圖如下: