0°

漫画:什么是Bitmap算法?

内容预览:
  • 此时bitmap的所有位都是0~
  •      2. 把整型数4存入bitmap,对应存储的位置就是下标...~
  • 4. 把整型数1存入bitmap,对应存储的位置就是下标为1的位置,将此bit置为1~

始发于微信公众号: Python那些事

(点击上方公众号,可快速关注一起学Python)


来源:玻璃猫   微信公众号:梦见

链接:

https://mp.weixin.qq.com/s/ZMqCwoV3CuDwGuD_rAIsbg


漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



两个月之前——



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



为满足用户标签的统计需求,小灰利用Mysql设计了如下的表结构,每一个维度的标签都对应着Mysql表的一列


漫画:什么是Bitmap算法?


要想统计所有90后的程序员该怎么做呢?


用一条求交集的SQL语句即可:


Select count(distinct Name) as 用户数 from table whare age = ’90后’ and Occupation = ‘程序员’ ;



要想统计所有使用苹果手机或者00后的用户总合该怎么做?


用一条求并集的SQL语句即可:


Select count(distinct Name) as 用户数 from table whare Phone = ‘苹果’ or age = ’00后’ ;



漫画:什么是Bitmap算法?



两个月之后——



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



———————————————



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



1. 给定长度是10的bitmap,每一个bit位分别对应着从0到9的10个整型数。此时bitmap的所有位都是0。

    漫画:什么是Bitmap算法?


2. 把整型数4存入bitmap,对应存储的位置就是下标为4的位置,将此bit置为1。


漫画:什么是Bitmap算法?


3. 把整型数2存入bitmap,对应存储的位置就是下标为2的位置,将此bit置为1。


漫画:什么是Bitmap算法?


4. 把整型数1存入bitmap,对应存储的位置就是下标为1的位置,将此bit置为1。


漫画:什么是Bitmap算法?


5. 把整型数3存入bitmap,对应存储的位置就是下标为3的位置,将此bit置为1。


漫画:什么是Bitmap算法?



要问此时bitmap里存储了哪些元素?显然是4,3,2,1,一目了然。


Bitmap不仅方便查询,还可以去除掉重复的整型数。



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



1. 建立用户名和用户ID的映射:


漫画:什么是Bitmap算法?



2. 让每一个标签存储包含此标签的所有用户ID,每一个标签都是一个独立的Bitmap。


漫画:什么是Bitmap算法?



3. 这样,实现用户的去重和查询统计,就变得一目了然:


漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



1. 如何查找使用苹果手机的程序员用户?


漫画:什么是Bitmap算法?



2. 如何查找所有男性或者00后的用户?


漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?



漫画:什么是Bitmap算法?






几点说明:


1. 本文的灵感来源于京东金融数据部张洪雨同学的项目经历,感谢这位大神的技术分享。


2. 该项目最初的技术选型并非MySQL,而是内存数据库hana。本文为了便于理解,把最初的存储方案写成了MySQL数据库。


—————END—————


小编补充:

bitmap 可以应用于很多场景,小编在进行订单系统的设计的时候也用过bitmap,主要是用订单系统下一步可以进行的操作,比如第一比特位表示可以取消订单,第二比特位表示可以去支付订单,如此等等。所以,此种设计实现高性能用户画像分析,很适用于机器学习相关算法。


看完本文有收获?请转发分享给更多人

关注「Python那些事」,提升Python技能

以上就是:漫画:什么是Bitmap算法? 的全部内容。

本站部分内容来源于互联网和用户投稿,如有侵权请联系我们删除,谢谢。
Email:[email protected]


0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论