原理介紹:
位圖(BitMap), 可以使用極少的空間來標(biāo)記海量的數(shù)據(jù)纺且。底層是一個(gè)bit數(shù)組列牺,使用0和1來標(biāo)記數(shù)據(jù)是否存在。用8位空間就可以表示1到8的8個(gè)數(shù)字
如需要存儲(chǔ)1至100000000一億個(gè)整數(shù),java用int 類型存儲(chǔ)需要32位*100000000/8/1024/1024=381Mb空間草冈,而bitmap需要100000000/8 /1024/1024=12Mb就可以。
實(shí)際應(yīng)用:
1.記錄每天登錄過網(wǎng)站的用戶id
2.對(duì)存儲(chǔ)在文件中的1億個(gè)大小范圍的1到1億的數(shù)字進(jìn)行排序輸出
對(duì)應(yīng)語言實(shí)現(xiàn):
1.jdk中的實(shí)現(xiàn)位圖類BitSet
2.redis 緩存中有setbit bitCount ?bitop等實(shí)現(xiàn)命令 , ?參考Fast easy realtime metrics using Redis bitmaps