(4)求容量:int getSize()返回该CoolBitSet的容量大年夜小
(5)调试查看:String toString(int num)返回该CoolBitSet的二进制字符串,为了削减长度,参数num为须要查看的byte数,如num=5表示查看前5个byte的二进制串
和java的bitmap的实现差别:jdk自带的BitSet类是以long数组实现,并且只能初始化大年夜小,无法限制大年夜小,每个bitset要耗用几百m的内存,多个bitmap轻易造抽空间大年夜量浪费,BitSet类只是本地内存实现,没有分布式存储引擎持久化支撑。
StringBitMap实现了String类型的bitMap,经由过程对hash算法的改进,可以或许做到1亿字符串数据只有200多的碰撞率,5000万内数据几乎没有碰撞率,对于不跨越1亿的数据是很合适的,但1亿以上的字符串数量仍然不合适,碰撞率会大年夜幅上升。开源包指南附带CountDemo.java里的stringBitMapTest办法演示了模仿1000万随机生成的15位IMEI设备号,并返回碰撞个数。
2. 引擎端持久化实现,CoolHashClient供给了以下接口用来操作存储引擎:
(1)int putBitSet(String key, int index):
- 单项操作,类似CoolBitSet的put,第一个参数为bitmap的key,第二个参数将该bitmap的index地位设为1。
(2)boolean getBitSet(String key, int index):
- 单项操作,类似CoolBitSet的get,第一个参数为bitmap的key,第二个参数须要获取的index地位的值。
(3)int putBitSet(String key, CoolBitSet cbs):
- 批量操作,类似CoolBitSet的批量set,将别的一个bitmap对象归并到指定key的bitmap,并返回新增的数量。获取CoolBitSet对象仍然应用get接口Object get(String key)
(4)Object putBitSet(String key, CoolBitSet cbs, String logical):
- 聚合操作,参数logical可以设置为“and”,“or”,“xor”,“andnot”,”new”之一,对于“andnot”,参数cbs并不起感化,可以传入随便率性不为空的CoolBitSet对象。聚合操作会感化到该key指定的bitmap上,返回值为聚合后的CoolBitSet对象。
以上操作遵守CoolHash的k/v存储束缚,k为字符串,v不跨越2m(可修改默认设备大年夜小)。
留意CoolBitSet对象可以用三种方法进行k/v存储和紧缩:
- 存储为bitSet格局,归并数据:putBitSet(String key, CoolBitSet cbs)
- 存储为bitSet格局,直接覆盖:put(String key, CoolBitSet cbs)
- 通俗kv存储格局,非bitSet格局:put(String key, cbs.getBytes());
2. Object putNx(String key, T value)
因为是对象存储,三种put方法都邑对value数据进行紧缩,采取紧缩率和耗时比较均衡的gzip紧缩。
前两种bitSet格局存储方法,会验证CoolBitSet大年夜小不克不及跨越1亿,不然不克不及提交。
第三种通俗kv存储格局,没有1亿的限制,只要紧缩后大年夜小不跨越2m,可以正常提交,但因为不是CoolBitSet格局,存储引擎无法辨认做聚合等操作。
和redis的bitmap的实现差别:redis实现了bitmap的单项操作和聚合操作,然则没有批量操作,也没有紧缩,经由过程offset指定偏移量的方法分派空间轻易造成浪费。
1. 本地内存实现,CoolBitSet实现了以下bitmap功能:
开源包指南附带CountDemo.java里的演示:
bitSetTest办法:先演示了全量存储,写入10亿数据到1个bitmap,耗时不到1秒;再演示了分区存储,将1亿大年夜小的数据分成10个1000万大年夜小的bitmap存储。
realtimeStatistics办法:演示基于bitmap做用户去重、活泼用户、非活泼用户、重度用户、新增用户等及时F算。
retainLocal办法和retainServer办法:
分别演示了若何应用本地内存和存储引擎计算用户留存。
3. 增长String类型的bitmap支撑:
4. 17.10版本同时供给jdk1.8.0_151编译下”fourinone.jar”包和jdk1.7.0_80编译下”fourinone-jdk7.jar”包。4.17.10版本更新github code和gitee code,本版本所有开源内容已经进行了公司报备,感激对开源的支撑。
【编辑推荐】
- 除了数据照样数据?2018年5大年夜 AI (人工智能)猜测
- 大年夜咖说:2017年,我眼里的大年夜数据范畴惊喜
- 态牛-Tech Neo 11月刊:容器平台治理实践
- 史上最污技巧解读 看完妙懂
- 大年夜数据和AI怎么竽暌闺现代教导相结合?
推荐阅读
编者按:本文来自每日经济消息,编辑:卢祥勇,36氪经授权宣布。时光似箭,还有两周,2017年就要画上句号了。在这一年迈,互联网行业产生很多重大年夜事宜,比如微信小法度榜样上线、顺丰菜鸟互撕、共享>>>详细阅读
地址:http://www.17bianji.com/lsqh/40088.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示