Bitset

在项目中用到bitset,其做用是把名单中的userid映射到bitset中,当uid请求时先从bitset中查找有木有,没有直接返回,有记录,则到db中去查具体的类型;这样能够优化系统查询算法


用户id:1-6000w数组

bitset的底层须要有 6000w个位bit,数据结构

大概 6000w/8 = 750w 字节BYTE = 750w/1024/1024  =7.2M优化


引用:BitSet的实现原理ui

一、BitSet介绍  spa

Bitset是Java中的一种数据结构。Bitset中主要存储的是二进制位,作的也都是位运算,每一位只用来存储0,1值,主要用于对数据的标记。  .net

Bitset的基本原理是,用1位来表示一个数据是否出现过,0为没有出现过,1表示出现过。使用的时候能够根据某一个位是否为0表示此数是否出现过。JDK中的BitSet集合对是布隆过滤器中常用的数据结构Bitmap的相对简单的实现。BitSet采用了Bitmap的算法思想。

使用场景:整数,无重复。 
日志

二、BitSet的底层实现是使用long数组做为内部存储结构的,这就决定了BitSet至少为一个long的大小,并且BitSet的大小为long类型大小(64位)的整数倍。 blog

long数组的每个元素均可以当作是64位的二进制数,也是整个BitSet的子集。在BitSet中把这些子集叫作[Word]。

三、BitSet常见的应用场景是对海量数据的处理,能够用于对大数量的查找,去重,排序等工做,相比使用其余的方法,占用更少的空间,显著提升效率;也能够使用BitSet进行一些统计工做,好比日志分析、用户数统计等;还能够使用其方法作一些集合方面的运算,好比求并集、交集和补集等。
排序

相关文章
相关标签/搜索