美文网首页漫画算法
漫画算法:什么是 Bitmap 算法?

漫画算法:什么是 Bitmap 算法?

作者: 大胡子商人 | 来源:发表于2018-01-03 17:09 被阅读158次
image image image image

两个月之前——

image image image image image

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

image

要想统计所有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后' ;

image

两个月之后——

image image image image

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

image image image image image

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

![image](https://img.haomeiwen.com/i1765518/f9ec1bad6a81d7ca?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

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

image

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

image

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

image

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

image

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

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

image image image image image image

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

image

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

image

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

image image image image image

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

image

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

image image image image image image image image image

几点说明:

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

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

相关文章

  • 漫画算法:什么是 Bitmap 算法?

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

  • 漫画:什么是Bitmap算法?

    原文来自公众号“程序员小灰”(ID:chengxuyuanxiaohui),原载于知乎。 两个月之前—— 为满足用...

  • 漫画算法:Bitmap算法(进阶篇)

    之前分享了Bitmap算法的基本概念,小伙伴们的互动十分积极,在此很感谢大家的热情。 没看过上一期漫画的朋友们可以...

  • 【算法与数据结构专场】BitMap算法基本操作代码实现

    上篇我们讲了BitMap是如何对数据进行存储的,没看过的可以看一下【算法与数据结构专场】BitMap算法介绍 这篇...

  • 算法相关

    算法复杂度相关概念:漫画:什么是时间复杂度?算法的时间复杂度和空间复杂度详解算法题库:力扣 一、排序算法 排序算法...

  • No.14 【大数据算法】BitMap的原理和实现

    0x00 前言 本篇是大数据算法系列 第一篇《BitMap的原理和实现》,BitMap 的思想的和原理是很多算法的...

  • 4. 动态规划算法

    1. 动态规划算法总结2. 漫画:什么是动态规划?3.算法之动态规划4. 动态规划-算法

  • 算法:BitMap

    BitMap 算法 引导 如果我们现在有一堆数据,[0 ,3 ,4 ,7 ,9 ,1 ,2 ,5 ,6 ,8 ,2...

  • 算法 - BitMap

    基本思想: 所谓的BitMap就是用一个bit位来标记某个元素所对应的value,而key即是该元素,由于BitM...

  • bitmap算法

    所谓bitmap算法就是,用一个bit来标记,当前元素是否或者存在这个标签。是标签和另外一个维度的映射关系。比如1...

网友评论

    本文标题:漫画算法:什么是 Bitmap 算法?

    本文链接:https://www.haomeiwen.com/subject/rcfknxtx.html