1. 程式人生 > >如何從海量IP中提取訪問最多的10個IP

如何從海量IP中提取訪問最多的10個IP

演算法思想:分而治之+Hash

1、IP地址最多有2^32=4G種取值情況,所以不能完全載入到記憶體中處理;

2、可以考慮採用分而治之的思想,按照IP地址的Hash(IP) % 1024的值,把海量IP日誌分別儲存到1024個小檔案中,這樣,每個小檔案最多包含4MB個IP地址;

這樣的話,通過計算IP的Hash值,相同IP肯定會放到一個檔案中,當然不同的IP的Hash值也可能相同,就存在一個小檔案中。

3、對於每一個小檔案,可以構建一個IP為key,出現的次數為value的Hash Map,同時記錄當前出現次數最多的那個IP地址;

4、可以得到1024個小檔案中的出現次數最多的那個IP,再依據常規的排序演算法得出總體上出現次數最多的IP。