Java主流技術(shù),Java軟件開發(fā)必學項

Java主流技術(shù),Java軟件開發(fā)必學項

深圳達內(nèi)教育      2022-04-17 01:14:01     5

Java主流技術(shù),Java軟件開發(fā)必學項,1.spring的生命周期Spring作為當前Java最流行、最強大的輕量級容器框架,了解熟悉spring的生命周期非常有必要;首先容器啟動后,

課程價格 請咨詢

上課時段: 授課校區(qū):

詳細介紹

1.spring的生命周期

Spring作為當前Java最流行、最強大的輕量級容器框架,了解熟悉spring的生命周期非常有必要;

首先容器啟動后,對bean進行初始化

按照bean的定義,注入屬性

檢測該對象是否實現(xiàn)了xxxAware接口,并將相關(guān)的xxxAware實例注入給bean,如BeanNameAware等

以上步驟,bean對象已正確構(gòu)造,通過實現(xiàn)BeanPostProcessor接口,可以再進行一些自定義方法處理。如:postProcessBeforeInitialzation。

BeanPostProcessor的前置處理完成后,可以實現(xiàn)postConstruct,afterPropertiesSet,init-method等方法,增加我們自定義的邏輯,

通過實現(xiàn)BeanPostProcessor接口,進行postProcessAfterInitialzation后置處理

接著Bean準備好被使用啦。

容器關(guān)閉后,如果Bean實現(xiàn)了DisposableBean接口,則會回調(diào)該接口的destroy()方法

通過給destroy-method指定函數(shù),就可以在bean銷毀前執(zhí)行指定的邏

2.TCP三次握手,四次揮手

tcp的三次握手四次揮手是每個程序員都應(yīng)該熟悉的。

三次握手:

第一次握手(SYN=1,seq=x),發(fā)送完畢后,客戶端進入SYN_SEND狀態(tài)

第二次握手(SYN=1,ACK=1,seq=y,ACKnum=x+1),發(fā)送完畢后,服務(wù)器端進入SYN_RCVD狀態(tài)。

第三次握手(ACK=1,ACKnum=y+1),發(fā)送完畢后,客戶端進入ESTABLISHED狀態(tài),當服務(wù)器端接收到這個包時,也進入ESTABLISHED狀態(tài),TCP握手,即可以開始數(shù)據(jù)傳輸。

四次揮手:

第一次揮手(FIN=1,seq=a),發(fā)送完畢后,客戶端進入FIN_WAIT_1狀態(tài)

第二次揮手(ACK=1,ACKnum=a+1),發(fā)送完畢后,服務(wù)器端進入CLOSE_WAIT狀態(tài),客戶端接收到這個確認包之后,進入FIN_WAIT_2狀態(tài)

第三次揮手(FIN=1,seq=b),發(fā)送完畢后,服務(wù)器端進入LAST_ACK狀態(tài),等待來自客戶端的最后一個ACK。

第四次揮手(ACK=1,ACKnum=b+1),客戶端接收到來自服務(wù)器端的關(guān)閉請求,發(fā)送一個確認包,并進入TIME_WAIT狀態(tài),等待了某個固定時間(兩個最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,沒有收到服務(wù)器端的ACK,認為服務(wù)器端已經(jīng)正常關(guān)閉連接,于是自己也關(guān)閉連接,進入CLOSED狀態(tài)。服務(wù)器端接收到這個確認包之后,關(guān)閉連接,進入CLOSED狀態(tài)。

3.線程池執(zhí)行流程圖

Java線程池:一種線程使用模式。線程過多會帶來調(diào)度開銷,進而影響緩存局部性和整體性能。而線程池維護著多個線程,等待著監(jiān)督管理者分配可并發(fā)執(zhí)行的任務(wù),這避免了在處理短時間任務(wù)時創(chuàng)建與銷毀線程的代價。線程池執(zhí)行流程是每個開發(fā)必備的。

執(zhí)行流程

提交一個任務(wù),線程池里存活的核心線程數(shù)小于線程數(shù)corePoolSize時,線程池會創(chuàng)建一個核心線程去處理提交的任務(wù)。

如果線程池核心線程數(shù)已滿,即線程數(shù)已經(jīng)等于corePoolSize,一個新提交的任務(wù),會被放進任務(wù)隊列workQueue排隊等待執(zhí)行。

當線程池里面存活的線程數(shù)已經(jīng)等于corePoolSize了,并且任務(wù)隊列workQueue也滿,判斷線程數(shù)是否達到maximumPoolSize,即最大線程數(shù)是否已滿,如果沒到達,創(chuàng)建一個非核心線程執(zhí)行提交的任務(wù)。

如果當前的線程數(shù)達到了maximumPoolSize,還有新的任務(wù)過來的話,直接采用拒絕策略處理。

JDK提供了四種拒絕策略處理類

AbortPolicy(拋出一個異常,默認的)

DiscardPolicy(直接丟棄任務(wù))

DiscardOldestPolicy(丟棄隊列里最老的任務(wù),將當前這個任務(wù)繼續(xù)提交給線程池)

CallerRunsPolicy(交給線程池調(diào)用所在的線程進行處理

以上就是深圳達內(nèi)教育java培訓機構(gòu)的小編針對“Java主流技術(shù),Java軟件開發(fā)必學項”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。

培訓啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹慎!任何要求預(yù)付定金、匯款等方式均存在風險,謹防上當。