深入拆解Tomcat Jetty 六

2021-10-04 18:36:06 字數 1344 閱讀 1953

下圖是對於tomcat處理請求內部的流轉過程.也描述了tomcat元件的靜態關係.

如果讓乙個系統能夠對外提供服務,需要建立,組裝並啟動這些元件,在停止的時候,需要釋放資源,銷毀元件,這個過程都是動態的,所以tomcat需要動態管理這些元件的生命週期.

在tomcat的啟動過程中,每個元件都要經歷建立,初始化,啟動這幾個過程,而這幾個狀態的轉變都是固定的,但是具體元件的初始化邏輯和啟動方式都不一樣,所以tomcat把元件的生命週期方法抽象到lifecycle介面,讓每個具體的元件去實現介面的方法.

可以看到紅框內的方法就是對元件生命週期的抽象

lifecycle的監聽事件

為了解耦元件,所以lifecycle中的方法都是由父元件進行呼叫,如果要對子元件新增邏輯,就需要用到元件的狀態監聽.

這裡用到了觀察者模式.上圖中的listener相關方法就是監聽元件狀態變化的方法.lifecyclestats列舉類定義了元件的所有狀態

lifestate定義的元件狀態

lifecycle依賴關係

lifecycle依賴關係中,可以看到有乙個實現類lifecyclebase,實現了lifecycle介面的所有方法,定義了相應的抽象方法交給子類實現,這是經典的模板設計模式.

可以看到初始化方法是synchronized修飾的,證明不能多執行緒進行元件的建立.

狀態變化會通知所有的觀察者

具體位置在standardhost#addchild方法

數字拆解 1

題目1083 特殊乘法 題目描述 寫個演算法,對2個小於1000000000的輸入,求結果。特殊乘法舉例 123 45 1 4 1 5 2 4 2 5 3 4 3 5 輸入 兩個小於1000000000的數 輸出 輸入可能有多組資料,對於每一組資料,輸出input中的兩個數按照題目要求的方法進行運算...

c c 分數拆解

對於任意乙個整數 k,請找出在 x y 時有多少種情況使得 1 k 1 x 1 y,x 與y 均為正整數。輸入乙個整數 n,代表要被分解的整數 輸出有多少種情況 sample output 首先可以知道 k y 2 k,因為y k 時,1 y 1 k,與題意不服 而 y 2 k 時,有 x 2 k ...

IP首部拆解

ip資料報的格式如圖3 1所示。普通的ip首部長為20個位元組,除非含有選項字段。圖3 1 ip資料報格式及首部中的各欄位 分析圖3 1中的首部。最高位在左邊,記為0bit 最低位在右邊,記為31bit。4個位元組的32bit值以下面的次序傳輸 首先是0 7bit,其次8 15bit,然後16 23...