大数据算法
火柴头9527
这个作者很懒,什么都没留下…
展开
-
再看不懂BitMap算法,我请你吃饭(五)
通过一个小故事认识布隆过滤器(Bloom Filter) 某男生着几个朋友去KTV唱歌,他出示自己的身份证,KTV管理员根据身份证号“计算”出3个房间号,这伙人只能去这些房间,把灯都打开,开始K歌。(这里的“3”是假设,可能会调整) 再有客人来,KTV管理员重复上述操作。每次“计算”出来的3个房间号,几乎不可能重复,言外之意,可能重复,只是几率极低。而且,每次计算的结果都一样。如果不幸,重复了,那也只能将就了。 有个女士心急火燎地来寻找她男朋友,由于房间太多,得有数亿间,逐个去查看几乎不可能。KTV管理员向原创 2020-11-06 13:24:17 · 225 阅读 · 0 评论 -
再看不懂BitMap算法,我请你吃饭(四)
java.util.BitSet 自定义的BitMapV1 EWAHCompressedBitmap BitSet.set(…) BitMapV1.add(…) set(…) BitSet.get(…) BitMapV1.isExist(…) get(…) BitSet.clear(…) BitMapV1.clear(…) clear(…)原创 2020-10-16 13:47:39 · 639 阅读 · 1 评论 -
再看不懂BitMap算法,我请你吃饭(三)
用户信息的标签化 《漫画:Bitmap算法 整合版》写的非常好,一定要拜读下。这里,我想把文中提到的“用户信息的标签化”这个需求用代码实现一下。 系统维护一个标签字典表t_tag,可能有成百上千个标签,这里仅定义10个标签示意: id tag 1 男 2 女 3 90后 4 00后 5 程序员 6 学生 7 苹果 8 三星 9 小米 10 华为 用户信息表t_user: id user_name 1 小灰 2 小黄 3 小白原创 2020-10-14 15:45:36 · 293 阅读 · 1 评论 -
再看不懂BitMap算法,我请你吃饭(二)
java.util.BitSet 其实,Java API中有类似的BitMap实现。为了方便理解,假设要完成如下的算法: 将[0, M]之间的整数集合记为A 在[0, M)范围内,随机生成X个整数,其集合记为B 计算:A - B 举例:在[0, 10)之间,随机生成了0, 9, 3这三个数,计算结果,即A - B等于1, 2, 4, 5, 6, 7, 8, 10 import org.junit.Test; import java.util.BitSet; import java.util.Rando原创 2020-10-14 15:45:03 · 160 阅读 · 0 评论 -
再看不懂BitMap算法,我请你吃饭(一)
基础 在Java语言中,一个int类型变量占用4Byte,即32Bit内存空间。 提问:10亿个int类型变量,需要占用多少内存空间? 回答:(10亿 * 4) ÷ (1024 * 1024 * 1024) ≈ 3.73G 如果要对10亿个,不重复的,int值进行排序,将至少需要3.73G内存。还有更好的办法吗?BitMap算法登场。 做个游戏 画8个相邻的小正方形,表示1Byte,即8Bit,给它起个名字叫byte[0],在它的下方同样画8个小正方形,起名叫byte[1]。 每个正方形内安装了一个灯泡,它原创 2020-10-14 13:23:41 · 222 阅读 · 0 评论