1. 程式人生 > >漫畫:Bitmap演算法 整合版

漫畫:Bitmap演算法 整合版

兩個月之前——

為滿足使用者標籤的統計需求,小灰利用Mysql設計瞭如下的表結構,每一個維度的標籤都對應著Mysql表的一列

要想統計所有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後' ;

兩個月之後——


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

1. 給定長度是10的bitmap,每一個bit位分別對應著從0到9的10個整型數。此時bitmap的所有位都是0。

2. 把整型數4存入bitmap,對應儲存的位置就是下標為4的位置,將此bit置為1。

3. 把整型數2存入bitmap,對應儲存的位置就是下標為2的位置,將此bit置為1。

4. 把整型數1存入bitmap,對應儲存的位置就是下標為1的位置,將此bit置為1。

5. 把整型數3存入bitmap,對應儲存的位置就是下標為3的位置,將此bit置為1。

要問此時bitmap裡儲存了哪些元素?顯然是4,3,2,1,一目瞭然。

Bitmap不僅方便查詢,還可以去除掉重複的整型數。

1. 建立使用者名稱和使用者ID的對映:

2. 讓每一個標籤儲存包含此標籤的所有使用者ID,每一個標籤都是一個獨立的Bitmap。

3. 這樣,實現使用者的去重和查詢統計,就變得一目瞭然:

1. 如何查詢使用蘋果手機的程式設計師使用者?

2. 如何查詢所有男性或者00後的使用者?

一週之後......

我們以上一期的使用者資料為例,使用者基本資訊如下。按照年齡標籤,可以劃分成90後、00後兩個Bitmap:

用更加形象的表示,90後用戶的Bitmap如下:

這時候可以直接求得90後的使用者嗎?直接進行非運算?

顯然,非90後用戶實際上只有1個,而不是圖中得到的8個結果,所以不能直接進行非運算。

同樣是剛才的例子,我們給定90後用戶的Bitmap,再給定一個全量使用者的Bitmap。最終要求出的是存在於全量使用者,但又不存在於90後用戶的部分。

如何求出呢?我們可以使用異或操作,即相同位為0,不同位為1。

25769803776L  =  11000000000000000000000000000000000B

8589947086L = 1000000000000000000011000011001110B

1.解析Word0,得知當前RLW橫跨的空Word數量為0,後面有連續3個普通Word。

2.計算出當前RLW後方連續普通Word的最大ID是  64 X  (0 + 3) -1 = 191。

3. 由於 191 < 400003,所以新ID必然在下一個RLW(Word4)之後。

4.解析Word4,得知當前RLW橫跨的空Word數量為6247,後面有連續1個普通Word。

5.計算出當前RLW

相關推薦

漫畫Bitmap演算法 整合

兩個月之前——為滿足使用者標籤的統計需求,小灰利用Mysql設計瞭如下的表結構,每一個維度的標籤都對應著Mysql表的一列:要想統計所有90後的程式設計師該怎麼做呢?用一條求交集的SQL語句即可:Select count(distinct Name) as 使用者數 from

漫畫什麼是動態規劃?(整合

題目: 有一座高度是10級臺階的樓梯,從下往上走,每跨一步只能向上1級或者2級臺階。要求用程式來求出一共有多少種走法。 比如,每次走1級臺階,一共走10步,這是其中一種走法。我們可以簡寫成 1,1,1,1,1,1,1,1,1,1。 解法1:暴力列舉法(

大量資料去重Bitmap點陣圖演算法和布隆過濾器(Bloom Filter)

Bitmap演算法 與其說是演算法,不如說是一種緊湊的資料儲存結構。是用記憶體中連續的二進位制位(bit),用於對大量整型資料做去重和查詢。其實如果並非如此大量的資料,有很多排重方案可以使用,典型的就是雜湊表。 實際上,雜湊表為每一個可能出現的數字提供了一個一一對映的關係,每個元素都相當於有

漫畫什麼是LRU演算法

————— 兩個月前 ————— 使用者資訊當然是存在資料庫裡。但是由於我們對使用者系統的效能要求比較高,顯然不能每一次請求都去查詢資料庫。 所以,小灰在記憶體中建立了一個雜湊表作為快取,每次查詢一個使用者的時候先在雜湊表中查詢,以此提高訪問效能。 很

漫畫如何實現搶紅包演算法

點選上方“程式設計師小灰”,選擇“置頂公眾號”有趣有內涵的文章第一時間送達!發出一個固定金額的紅

漫畫什麼是MD5演算法

來自:夢見(微訊號:dreamsee321) 摘要雜湊生成的正確姿勢是什麼樣呢?分三步: 1.收集相關業務引數,在這裡是金額和目標賬戶。當然,實際應用中的引數肯定比這多得多,這裡只是做了簡化。 2.按照規

漫畫什麼是Base64演算法

Value Char Value Char Value Char Value Char 0 A 16 Q 32 g 48

漫畫什麼是LRU(Least Recently Used)演算法

    —————  兩個月前  —————           使用者資訊當然是存在資料庫裡。但是由於我們對使用者系

漫畫三種 “奇葩” 的排序演算法程式碼實現

  1: 睡眠排序 public class Main2 { public static void sleepSort(int[] array) { for (int i : array) { new Thread(()->{

開源解決方案一快速搭建單機 LAMP 網站

opera clas 資源管理 都在 ger source environ 本地 tin LAMP 通常表示 Linux + Apache + MySQL/MariaDB + Perl/PHP/Python,LAMP 的各個組件不是一成不變的,並不局限於它最初的選擇。作為一

windows Tomcat免安裝環境變量配置 + jdk配置

.cn 安裝配置 管理器 files pac 3.3 打開 系統變量 tom 1. 下載後解壓,我解壓的目錄為:D:\Tomcat\apache-tomcat-9.0.1-windows-x64 2. 安裝jdk和jre, 並配置環境變量; 2.1 用戶變量新建J

嬌詩泉這款國貨的DDS鮭魚精華到底是什麽鬼?

嬌詩泉 最近在朋友圈又一款很火爆的護膚品,它的成分竟然可以吃!是什麽呢?它就是鮭魚精華! 對於鮭魚的印象,很多人一直停留在《深夜食堂》裏的鮭魚茶泡飯。其實,鮭魚不僅僅是一種美味的食物,國內外眾多的權威機構安全測試和臨床試驗均顯示,鮭魚子成分是極佳的天然肌膚抗衰老成分,對祛除細紋、淡化色斑、減少紅血

漫畫什麽是紅黑樹?

target srv image activity ocr cu2 主體 noi ted 要理解紅黑數,先要了解二叉查找樹,二叉查找樹(BST)具備什麽特性呢? 1.左子樹上所有結點的值均小於或等於它的根結點的值。 2.右子樹上所有結點的值均大於或等於它的根結點的值。

2Bitmap和Base64轉換

jpg itl print stat nbsp res param ima ati import java.io.ByteArrayOutputStream; import java.io.IOException; import android.annotation.S

漫畫程序員,你能“管理”好你的產品經理嗎?

重構 -c 強行 發的 cbe 基本功 能效 開發人員 alt 一、第三選擇 在工作中,你面對產品經理的各種需求變動、項目經理對關鍵點的 Deadline,總會有一些沖突發生。而對於事情最終執行的開發人員來說,如果這些沖突處理的不好,可能就會變成你個人的問題。 做為最終

spring boot 系列之三spring boot 整合JdbcTemplate

closed com context boot pin pan url wired ace 前面兩篇文章我們講了兩件事情: 通過一個簡單實例進行spring boot 入門 修改spring boot 默認的服務端口號和默認context path 這篇文章我們來看下怎

spring boot 系列之四spring boot 整合JPA

rom prop pos output UNC actor href ali div 上一篇我們講了spring boot 整合JdbcTemplate來進行數據的持久化, 這篇我們來說下怎麽通過spring boot 整合JPA來實現數據的持久化。 一、代碼實現  修改

漫畫性能、可用性和鎖

傳統 這樣的 動作 idt base 失敗 http 程序 方法 經過了幾天的熟悉環境,小魚開始讓飛鳥嘗試負責解決一些問題。分配的第一個問題現象是這樣的: 接口有偶爾的超時現象。平時的時候接口可以在2s響應調用的上遊。但是偶爾會有幾次,超

漫畫什麽是HashMap?

只需要 AR font col 解決 頭插法 span 一個 tar 漫畫系列摘抄自程序員小灰的博客https://blog.csdn.net/bjweimengshu/article/list/3?t=1 ---------------------

漫畫高並發下的HashMap

urn BL0 指向 遍歷 java代碼 LG 不存在 技術 hsl 這一期我們來講解高並發環境下,HashMap可能出現的致命問題。 HashM