hash 散列 哈希

關於hash

 

https://www.zhihu.com/question/26762707

csdn

 

前面提到了hash算法是一定會有衝突的,那麼如果我們如果遇到了hash衝突需要解決的時候應該怎麼處理呢?比較常用的算法是鏈地址法和開放地址法。vvn

 

 

鏈地址在處理的流程如下:

添加一個元素的時候,首先計算元素key的hash值,確定插入數組中的位置。如果當前位置下沒有重複數據,則直接添加到當前位置。當遇到衝突的時候,添加到同一個hash值的元素後面,行成一個鏈表。這個鏈表的特點是同一個鏈表上的Hash值相同。java的數據結構HashMap使用的就是這種方法來處理衝突,JDK1.8中,針對鏈表上的數據超過8條的時候,使用了紅黑樹進行優化。由於篇幅原因,這裏不深入討論相關數據結構,有興趣的同學可以參考這篇文章:

 

 

作者:騰訊技術工程

鏈接:https://www.zhihu.com/question/26762707/answer/890181997

來源:知乎

著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

 

 

 

 

我們活動開發經常遇到的應用場景是信息加密、數據校驗、負載均衡

 

 

 

 

 

5.3 布隆過濾器

布隆過濾器被廣泛用於黑名單過濾、垃圾郵件過濾、爬蟲判重系統以及緩存穿透問題。對於數量小,內存足夠大的情況,我們可以直接用hashMap或者hashSet就可以滿足這個活動需求了。但是如果數據量非常大,比如5TB的硬盤上放滿了用戶的參與數據,需要一個算法對這些數據進行去重,取得活動的去重參與用戶數。這種時候,布隆過濾器就是一種比較好的解決方案了。

 

 

作者:騰訊技術工程

鏈接:https://www.zhihu.com/question/26762707/answer/890181997

來源:知乎

著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章