原理介绍:
位图(BitMap), 可以使用极少的空间来标记海量的数据。底层是一个bit数组,使用0和1来标记数据是否存在。用8位空间就可以表示1到8的8个数字
如需要存储1至100000000一亿个整数,java用int 类型存储需要32位*100000000/8/1024/1024=381Mb空间,而bitmap需要100000000/8 /1024/1024=12Mb就可以。
实际应用:
1.记录每天登录过网站的用户id
2.对存储在文件中的1亿个大小范围的1到1亿的数字进行排序输出
对应语言实现:
1.jdk中的实现位图类BitSet
2.redis 缓存中有setbit bitCount bitop等实现命令 , 参考Fast easy realtime metrics using Redis bitmaps