RoaringBitmap在方法的丰富性上,以及性能上都有提高。
第2个是roaringbitmap,但是一块贴上了啊。
<dependency>
<groupId>uk.gov.gchq.gaffer</groupId>
<artifactId>bitmap-library</artifactId>
<version>1.21.1</version>
</dependency>
<dependency>
<groupId>org.roaringbitmap</groupId>
<artifactId>RoaringBitmap</artifactId>
<version>0.9.22</version>
</dependency>
public static void main(String[] args) throws Exception{
String filePath="d://bit.txt";
RoaringBitmap roaringBitmap = new RoaringBitmap ();
roaringBitmap.add(1);
roaringBitmap.add(20000);
serialize(roaringBitmap,filePath);
RoaringBitmap deserialize = deserialize(filePath);
// RoaringBitmap 最大的特点就是 带有压缩,例如 添加一个很大的数,基数不会跳跃
logger.info("getCardinality:{}",deserialize.getCardinality());
}
// 序列化 保存
public static void serialize(RoaringBitmap roaringBitmap,String filePath) throws IOException {
roaringBitmap.serialize(new DataOutputStream(new FileOutputStream(filePath)));
}
// 反序列化 读取
public static RoaringBitmap deserialize(String filePath) throws IOException {
RoaringBitmap roaringBitmap = new RoaringBitmap ();
roaringBitmap.deserialize(new DataInputStream(new FileInputStream(filePath)));
return roaringBitmap;
}
还有很多,如:
ArrayContainer
RunContainer
数据库设计可以为
t_bitset
category 大类(如性别,设备类型等)
type 类型(如男、女,android、ios等)
fileName 文件名
filePath 文件路径