更新時間:2020-08-25 15:35:29 來源:動力節點 瀏覽2099次
1.spring的生命周期
Spring作為當前Java最流行、最強大的輕量級容器框架,了解熟悉spring的生命周期非常有必要;
首先容器啟動后,對bean進行初始化
按照bean的定義,注入屬性
檢測該對象是否實現了xxxAware接口,并將相關的xxxAware實例注入給bean,如BeanNameAware等
以上步驟,bean對象已正確構造,通過實現BeanPostProcessor接口,可以再進行一些自定義方法處理。如:postProcessBeforeInitialzation。
BeanPostProcessor的前置處理完成后,可以實現postConstruct,afterPropertiesSet,init-method等方法,增加我們自定義的邏輯,
通過實現BeanPostProcessor接口,進行postProcessAfterInitialzation后置處理
接著Bean準備好被使用啦。
容器關閉后,如果Bean實現了DisposableBean接口,則會回調該接口的destroy()方法
通過給destroy-method指定函數,就可以在bean銷毀前執行指定的邏
2.TCP三次握手,四次揮手
tcp的三次握手四次揮手是每個程序員都應該熟悉的。
三次握手:
第一次握手(SYN=1,seq=x),發送完畢后,客戶端進入SYN_SEND狀態
第二次握手(SYN=1,ACK=1,seq=y,ACKnum=x+1),發送完畢后,服務器端進入SYN_RCVD狀態。
第三次握手(ACK=1,ACKnum=y+1),發送完畢后,客戶端進入ESTABLISHED狀態,當服務器端接收到這個包時,也進入ESTABLISHED狀態,TCP握手,即可以開始數據傳輸。
四次揮手:
第一次揮手(FIN=1,seq=a),發送完畢后,客戶端進入FIN_WAIT_1狀態
第二次揮手(ACK=1,ACKnum=a+1),發送完畢后,服務器端進入CLOSE_WAIT狀態,客戶端接收到這個確認包之后,進入FIN_WAIT_2狀態
第三次揮手(FIN=1,seq=b),發送完畢后,服務器端進入LAST_ACK狀態,等待來自客戶端的最后一個ACK。
第四次揮手(ACK=1,ACKnum=b+1),客戶端接收到來自服務器端的關閉請求,發送一個確認包,并進入TIME_WAIT狀態,等待了某個固定時間(兩個最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,沒有收到服務器端的ACK,認為服務器端已經正常關閉連接,于是自己也關閉連接,進入CLOSED狀態。服務器端接收到這個確認包之后,關閉連接,進入CLOSED狀態。
3.線程池執行流程圖
Java線程池:一種線程使用模式。線程過多會帶來調度開銷,進而影響緩存局部性和整體性能。而線程池維護著多個線程,等待著監督管理者分配可并發執行的任務,這避免了在處理短時間任務時創建與銷毀線程的代價。線程池執行流程是每個開發必備的。
執行流程
提交一個任務,線程池里存活的核心線程數小于線程數corePoolSize時,線程池會創建一個核心線程去處理提交的任務。
如果線程池核心線程數已滿,即線程數已經等于corePoolSize,一個新提交的任務,會被放進任務隊列workQueue排隊等待執行。
當線程池里面存活的線程數已經等于corePoolSize了,并且任務隊列workQueue也滿,判斷線程數是否達到maximumPoolSize,即最大線程數是否已滿,如果沒到達,創建一個非核心線程執行提交的任務。
如果當前的線程數達到了maximumPoolSize,還有新的任務過來的話,直接采用拒絕策略處理。
JDK提供了四種拒絕策略處理類
AbortPolicy(拋出一個異常,默認的)
DiscardPolicy(直接丟棄任務)
DiscardOldestPolicy(丟棄隊列里最老的任務,將當前這個任務繼續提交給線程池)
CallerRunsPolicy(交給線程池調用所在的線程進行處理
以上就是動力節點java培訓機構的小編針對“Java主流技術,Java軟件開發必學項”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習