1、为什么使用BitMaps?
一般情况下,计算机用二进制存储,一个字符=2个字节,中文一个字符=3个字节,一个字节是8位bit;
在有些特殊的业务场景下(比如用户是否活跃),实际有效的存储只有1位,0或1,如果使用字符串的存储,8位的话会造成空间浪费;
如何解决?
a、引入BitMaps,使用1位来表示这种value值只有1位的数据类型,节约空间
b、BitMaps可以理解为是:boolean[] arry,
c、比如某个用户在哪个时间范围内是否活跃,使用BitMaps存储:setbit key(用户id+日期) 偏移量(在数组中的位置) value(0或1),在进行用户活跃数统计时,bitcount key得出用户活跃总数;
2、布隆过滤器,是一种程序或者方法,用来判断一个元素是否在一个集合中:
这种算法由一个二进制数组和一个Hash算法组成,是一种概率型的算法
这种算法有一个作用:判断某个元素是否在某个集合里面
那么问题来了:
集合的操作(交并补差不是用set集合也可以?)还是那个问题,set占用8个bit,而BitMaps只占用一位!
3、布隆过滤器的实现原理:
a、定义一个二进制数组:就是BitMaps(BitMaps就是一个二进制数组)
b、实现Hash算法:对setbit的va