session的底層執行原理 詳細

2021-09-28 19:22:06 字數 934 閱讀 6100

判斷客戶端的請求中是否有乙個名字叫做"jsessionid"的cookie,如果沒有;就會新建立乙個session物件,並且將這個session物件的 id 以cookie的形式存放到客戶端,該cookie的 name 叫"jsessionid"

如果有:則取出cookie中的session的 id,到伺服器記憶體中,查詢 id 相同的session物件

首先,session是 存在於我們服務端的,那麼如果瀏覽器關閉,session會不會失效?

答案是:會失效 ! ! ! 為什麼瀏覽器關閉session會失效?是因為session物件銷毀了嗎?session物件沒銷毀,因為存放 id 的cookie銷毀了,所以就無法找到原來的那個session了。就拿不到原來那個session中的資料了

當我們反覆關閉瀏覽器,那就會在伺服器記憶體中建立很多個session物件,這樣會不會造成記憶體溢位呢?

答案是:不會,因為session有它自己的宣告週期,閒置 30 分鐘之後,就會銷毀。

什麼時候會銷毀session物件呢:

1、閒置 30 分鐘

2、關閉伺服器

3、手動呼叫sessioninvalidate()方法

Switch底層執行原理

s witch語句根據乙個整數索引值進行多重分支,底層採用跳轉表這種資料結構。跳轉表是乙個陣列,表項i對應 段的位址,當switch索引值等於表項i時採取對應的程式操作。簡單可理解為 執行 switch時生成乙個長度為最大case常量 1的陣列,程式首先判斷switch變數是否大於最大case 常量...

SparkSQL底層執行的原理詳解 面試必備

檢視執行計畫 explain 簡介 spark sql的核心是catalyst優化器,它以一種新穎的方式利用高階程式語言功能 例如scala的模式匹配和quasiquotes 來構建可擴充套件的查詢優化器 sparksql的catalyst優化器是整個sparksql pipeline的中間核心部分...

Voliate的底層原理

jvm 底層是通過乙個叫做 記憶體屏障 的東西來完成。記憶體屏障,也叫做記憶體柵欄,是一組處理器指令,用於實現對記憶體操作的順序限制。所以能禁止指令重排序,即volatile能在一定程度上保證有序性。一定程度理解如下 語句1和語句2的順序不保證 語句4和語句5的順序不保證 但是無論怎麼重排,語句3前...