bitmap 位图算法

原创 2017年08月30日 10:25:55

位图算法简单介绍


1.业务场景

有一批用户数据

id分别为 :1,2,3,4,5,6,7,8,9,10 ( int );

如果依赖java内存来进行存储的话,从数据大小的角度来说,1 int 32bit,存储该批数据内存大小使用 10 * 32 bit ,但此时我们的用户数据3000W条,

继续使用内存的情况下将使用 960000000bit 即0.11G ,如果用户数据3亿条…


2.bitmap结构

引出位图算法。给出长度是10的bit数组,每一个bit位分别对应着从0到9的10个

整型数(用户id),初始bit数组所有元素值都为0,  bit为二进制位,0表示没有值,1表示有值。



图1 数据结构为bit数组  大小为10 , 现在将用户id为 2,4两个用户写入bit数组,写入bit数组2跟4的位置,同时将bit的值从0调整到1

现在图2表示,一个10个大小bit的数组,存入了 2,4 。 



3.bitmap场景


用户画像功能 会给一个用户打上不同的标签,结构化场景如下:




为每一个用户标签创建一个bitmap数组,一个标签对应N多个用户,例如游泳bitmap,旅行bitmap …...




4.bitmap运算


业务需求要查询出 用户标签是 爱好上网并且喜欢旅行的用户,

爱好旅行bitmap数组内容如下.



爱好上网的bitmap数组内容如下.



                                                            


直接对不同标签进行位运算0000011000&0000010000 = 0000010000;根据bitmap算法求出用户id为4的用户满足要求,或运算同理。


5.持久化

bitmap持久化可以简单的理解成 一个数字N就是一个用户标签A。

例如  N=123  二进制转换成 1111011, 根据bitmap算法推算出 A标签下存了0,1,3,4,5,6 元素。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

采用bitmap位图算法对大量不重复数据进行线性时间排序

/*********************************************************************************  问题描述 输入:一个最多包含n个...

java实现位图算法

1、利用java自带的BitSet来 package lpc.Algorithm; import java.util.BitSet; public class BitMap ...

位图算法在用户验证上的应用

前几天在博客园看到一个帖子,讨论两个整数集合比较的算法问题。呵呵,其实任何整数集合的问题都是可以通过位图算法解决。简单地说,就是把值转化为数组下标,将O(n)复杂度降低到O(1)复杂度来获得最高效率。...

Ucos优先级位图算法详解

Ucos优先级位图算法详解                                       &#...

linux 进程的pid分配策略——pid位图算法

在研究进程fork()的时候,这个调用了do_fork(),其中do_fork()又涉及到进程的pid分配,这个东西的源代码有许多个版本,而且各自都不是一样的。昨天晚上研究了一晚上,今天从下午研究到现...

OJ-位图算法

题目描述: 位图法就是bitmap的缩写,是用每一个bit位来存放某种状态,适用于大规模数据的查找和排序。位图算法称的上是最简单的算法,只需要一个for循环就能够搞定排序和查找,但是同时它也是对待操作...

位图算法(编程珠玑例题)

输入:一个最多包含n个正整数的文件,最大不超过一千万,每个数最多只出现一次,数据之间没有明显的关联输出:升序排列的整数列表要求:只有大约1MB的内存可用,磁盘空间充足,运行时间最多不超过1分钟,10秒...

位图bitmap算法2

简单的说就是用数组存放若有数据就标志为1或true,若不存在标志为0或false。比如1,2,2,5,这里最大值为5,0至5中不存0,3,4,所以: Array[0]=0,Array[1]=1,Ar...

位图bitmap算法

简单的说就是用数组存放若有数据就标志为1或true,若不存在标志为0或false。比如1,2,2,5,这里最大值为5,0至5中不存0,3,4,所以: Array[0]=0,Array[1]=1,Ar...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)