需要分開處理一些wait-notify,reentrantlock裡面的condition應用,能夠控制notify哪個執行緒,鎖可以繫結多個條件。
具有公平鎖功能,每個到來的執行緒都將排隊等候。
經常與其他表進行連線的表,在連線欄位上應該建立索引
經常出現在where子句中的字段
經常出現用作查詢選擇的字段
controller呼叫業務邏輯處理後,返回modelandview
dispatcherservlet查詢乙個或多個viewresoler視**析器,找到modelandview指定的檢視
檢視負責將結果顯示到客戶端
共享這些session儲存在乙個分布式快取中,可以隨時寫入和讀取,而且效能要很好,如memcache,tair。
封裝乙個類繼承自httpsession,將session存入到這個類中然後再存入分布式快取中
由於cookie不能跨域訪問,要實現session同步,要同步sessionid寫到不同網域名稱下。
實現了陣列+鍊錶的特性,查詢快,插入刪除也快。
對於每個key,他對應的陣列索引下標是 int i = hash(key.hashcode)&(len-1);
每個新加入的節點放在鍊錶首,然後該新加入的節點指向原煉表首
concurrenthashmap 是在每個段(segment)中線程安全的
linkedhashmap維護乙個雙鏈表,可以將裡面的資料按寫入的順序讀出
如果當前池大小 poolsize 大於 corepoolsize ,且等待佇列未滿,則進入等待佇列
如果當前池大小 poolsize 大於 corepoolsize 且小於 maximumpoolsize ,且等待佇列已滿,則建立新執行緒執行任務。
如果當前池大小 poolsize 大於 corepoolsize 且大於 maximumpoolsize ,且等待佇列已滿,則呼叫拒絕策略來處理該任務。
執行緒池裡的每個執行緒執行完任務後不會立刻退出,而是會去檢查下等待佇列裡是否還有執行緒任務需要執行,如果在 keepalivetime 裡等不到新的任務了,那麼執行緒就會退出。
占有並等待
非搶占迴圈等待
有名管道 (named pipe) : 有名管道也是半雙工的通訊方式,但是它允許無親緣關係程序間的通訊。
訊號量( semophore ) : 訊號量是乙個計數器,可以用來控制多個程序對共享資源的訪問。它常作為一種鎖機制,防止某程序正在訪問共享資源時,其他程序也訪問該資源。因此,主要作為程序間以及同一程序內不同執行緒之間的同步手段。
訊息佇列( message queue ) : 訊息佇列是由訊息的鍊錶,存放在核心中並由訊息佇列識別符號標識。訊息佇列克服了訊號傳遞資訊少、管道只能承載無格式位元組流以及緩衝區大小受限等缺點。
訊號 ( sinal ) : 訊號是一種比較複雜的通訊方式,用於通知接收程序某個事件已經發生。
共享記憶體( shared memory ) :共享記憶體就是對映一段能被其他程序所訪問的記憶體,這段共享記憶體由乙個程序建立,但多個程序都可以訪問。共享記憶體是最快的 ipc 方式,它是針對其他程序間通訊方式執行效率低而專門設計的。它往往與其他通訊機制,如訊號量,配合使用,來實現程序間的同步和通訊。
套接字( socket ) : 套解口也是一種程序間通訊機制,與其他通訊機制不同的是,它可用於不同機器間的程序通訊。
Java面試總結
大資料量資料庫 1.mybatis如何實現pojo類字段和資料庫欄位的對映。2.mybatis如何傳入多個引數。1.springboot啟動做了哪些事情。2.dubbo和springcloud的核心原理。3.springaop的原理。1.jvm有哪些優化點。2.gc 演算法。3.強引用和弱引用虛引用...
java面試總結1
一.假設有乙個池塘,裡面有無窮多的水.現有2個空水壺,容積分別為5公升和6公升.問題是如何只用這2個水壺從池塘裡取得3公升的水?6公升的叫做a,5公升的叫做b 1 裝a滿,把a倒入b滿,a的剩下1公升 2 b倒空,把a的1公升倒入b,這時候a和b分別為0和1 3 再裝a滿,倒入b讓它滿,由於b的可裝...
java後端面試 vipkid面試總結
一面 1 說說專案架構的過程 2 如果xml充當資料庫,dao層的實現 3 依賴注入的實現方式 4 寫乙個排序演算法 5 知道哪些設計模式,工廠模式有什麼用 6 談談怎麼保證併發安全,談到了不可變物件,同步容器,併發容器,堆疊封閉 7 談談物件建立的過程,變數物件是如何儲存的 8 談談微服務 9 談...