位向量工作原理?
位向量是由一些二進制位組成的向量。
位向量可以用很少的內(nèi)存存儲布爾變量。有些并行機增加了#34目錄內(nèi)存#34,內(nèi)存的每一頁在目錄內(nèi)存中都有一個條目,每個目錄條目主要由#34狀態(tài)#34和#34位向量#34組成。#34Status#34描述了目錄對應(yīng)的存儲頁面的當前情況,比如在其他緩存中是否有副本等。#34位向量#34的每一位對應(yīng)一個處理器的本地緩存,共n位,每一位用于指示對應(yīng)的緩存是否有存儲頁的副本。這樣,處理器在寫入一個頁面時,只需要根據(jù)位向量通知具有相應(yīng)副本的對象,而這些對象的數(shù)量n一般遠小于系統(tǒng)的規(guī)模,與系統(tǒng)的規(guī)模n無關(guān),支持了系統(tǒng)的可擴展性。
hashmap轉(zhuǎn)成紅黑樹的條件?
在jdk8及以上版本中處理哈希時,hashmap會在map中節(jié)點總數(shù)大于64且一個hashslot中的鏈表長度大于等于8時,將鏈表轉(zhuǎn)換為紅黑樹,以降低鏈表搜索的時間復(fù)雜度。
hash值不一致游戲斷開怎么處理?
1.開放定值法:
也稱為rehash方法,當關(guān)鍵字key的hash地址pH(key)時,基于P生成另一個hash地址p1,如果p1仍然,則基于P生成另一個hash地址p2,直到找到不的hash地址pi,并在其中存儲相應(yīng)的元素。
一般用以下公式計算:hi(h(key)di)%mi1,2,…,n。
其中H(key)是哈希函數(shù),m是表長,di稱為增量序列。增量序列的值不同,對應(yīng)的重散列方法也不同。主要有三種:線性檢測重散列(發(fā)生時,按順序查找表中的下一個單元格,直到找到空單元格或搜索整個表),二次檢測重散列(發(fā)生時,在表的左右兩側(cè)進行跳轉(zhuǎn)檢測,直到找到空單元格),偽隨機檢測重散列。
2.鏈地址方法:
這種方法的基本思想是將所有哈希地址為I的元素組成一個名為同義詞鏈的單鏈表,并將單鏈表的頭指針存儲在哈希表的第I個單元中,因此查找、插入和刪除主要在同義詞鏈中進行。鏈地址法適用于頻繁插入和刪除。我之前看到的HashMap就是用這種方法來解決哈希的。
3.重新散列:
多寫哈希函數(shù),如果一個哈希碼重復(fù),就用另一個哈希函數(shù),直到不一樣為止。
4.建立一個公共溢出區(qū),就是把所有的放在另一個地方,而不是放在表中。面條。