想象這樣一種狀況,咱們設計了一個網絡爬蟲,咱們爬到了幾十億(甚至幾百億)個url,爲了加快爬取的速度,對於相同的url,咱們的爬蟲將再也不進行重複下載。這時候,如何快速在由數十億個元素組成的集合中快速發現是否有重複的元素?布隆提出了一種複雜度爲O(1)的查找算法——Bloom Filter。html
布隆過濾器(英語:Bloom Filter)是1970年由布隆提出的。它其實是一個很長的二進制向量和一系列隨機映射函數。布隆過濾器能夠用於檢索一個元素是否在一個集合中。它的優勢是空間效率和查詢時間都遠遠超過通常的算法,缺點是有必定的誤識別率和刪除困難。git
雖然存在必定的偏差,可是在大規模應用的狀況下,布隆過濾器,經過HASH和創建二進制向量,可以很是出色地完成一些工做,在暑假,我和同窗進一步拓展了布隆的工做,將其實現了Bloom Filter的分佈式部署。算法
做者在文章中從信息論角度討論了排序算法時間複雜度的下限,角度仍是挺新奇的,尤爲是見到熟悉的交叉熵,除了用在神經網絡算法裏面,信息論還能用來計算算法複雜度。而後做者還介紹了一種來自Concrete Math特別酷炫的計算快速排序算法複雜度的方法,我渾淪吞棗的看完了,思路確實是很是精彩。
網絡
沒有問題。數據結構
沒有問題。分佈式
這周過的很倉促,連着幾天熬夜,很大部分的時間都用來忙校慶了。由於全身心地獻給祖國獻給黨,因此學習上就無法兼顧,包括請了一節程序設計課的假。但願下週開始好好學習,fighting💪函數
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | - | 1 | 10 | |
第一週 | - | 2 | 20 |
計劃學習時間:20小時學習
實際學習時間:10小時ui
改進狀況:url