日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

漫画:什么是布隆算法

發布時間:2023/12/3 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 漫画:什么是布隆算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自?玻璃貓 程序員小灰

兩周之前——

爬蟲的原理就不細說了,無非是通過種子URL來順藤摸瓜,爬取出網站關聯的所有的子網頁,存入自己的網頁庫當中。

但是,這其中涉及到一個小小的問題......

URL去重方案第一版:HashSet

創建一個HashSet集合,把每一個URL字符串作為HashSet的key插入到集合當中,利用HashSet的Key唯一性來對URL做去重。

這個方案看似沒毛病,但是經過幾輪壓測之后......

每一個URL按照20字節來算,一億個URL就是20億字節,也就是大約占了1.8G以上的空間。這么大的HashSet集合顯然是不可取的。

于是小灰又思考了一番......

URL去重方案第二版:Bitmap

具體怎么做呢?獲取每一個URL的HashCode,根據HashCode的值來插入到Bitmap的對應位置。如果要插入位置的值已經是1,說明該URL已重復。

使用Bitmap以后,每一個Url只占了1個Bit,一億個Url占約12MB。假設整個Bitmap的空隙比較多,額外空間占90%,總空間也不過是120MB,相比HashSet來說大大節省了內存空間。

這個方案貌似好了很多,可是......

String的Hashcode方法雖然盡可能做到均勻分布,但仍然免不了會有沖突的情況。HashCode的沖突意味著什么呢?意味著兩個原本并不相同的Url被誤判為重復Url。

———————————————

聽起來有點繞,我們來詳細描述一下:

1.把第一個URL按照三種Hash算法,分別生成三個不同的Hash值。

2.把第二個URL也按照三種Hash算法,分別生成三個不同的Hash值。

3.依次比較每一個Hash結果,只有當全部結果都相等時,才判定兩個URL相同。

具體怎樣映射呢?流程如下:

1.創建一個空的Bitmap集合。

2.把第一個URL按照三種Hash算法,分別生成三個不同的Hash值。

3.分別判斷5,17, 9 在Bitmap的對應位置是否為1,只要不同時為1,就認為該Url沒有重復,于是把5,17,9的對應位置設置為1。

4.把第二個URL按照三種Hash算法,分別生成三個不同的Hash值。

5.分別判斷10,12, 9 在Bitmap的對應位置是否為1,只要不同時為1,就認為該Url沒有重復,于是把10,12, 9 的對應位置設置為1。

6.把第三個URL按照三種Hash算法,分別生成三個不同的Hash值。

7.分別判斷4,16, 11 在Bitmap的對應位置是否為1,只要不同時為1,就認為該Url沒有重復,于是把4,16, 11 的對應位置設置為1。

8.把第四個URL按照三種Hash算法,分別生成三個不同的Hash值。

9.分別判斷5,17, 9?在Bitmap的對應位置是否為1。判斷的結果是?5,17, 9?在Bitmap對應位置的值都是1,所以判定該Url是一個重復的Url。

1.URL按照三個Hash算法得到三個結果。

2.分別判斷10,12, 17?在Bitmap的對應位置是否為1。判斷的結果是?10,12, 17?在Bitmap對應位置的值都是1,所以判定該Url是一個重復的Url

—————END—————


創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的漫画:什么是布隆算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。