BitMap的巧用 簡單示例 Python

2021-10-06 20:39:12 字數 1498 閱讀 5919

最近一周都沒怎麼更新博文,實際上也沒有做什麼有用的事情,感覺這樣下去把自己剛剛開的頭又半途而廢了。唉!不能讓自己生活在舒適圈啊,要努力學習,加油!

今天要說的是bitmap的使用,了解bitmap的人都知道bitmap可以在短時間內對海量資料去重,排序和查詢,用處還是很大的。

一、bitmap簡介

二、bitmap**實現

一、bitmap簡介 bitmap演算法在中文裡叫做位圖演算法,它是指記憶體中連續的二進位制(bit)所組成的資料結構,該演算法主要用於對大量整數做去重和查詢操作。 bitmap的位運算是其另乙個優勢,擁有非常高的效能。 在使用bitmap時,我們需要先對自己儲存的資料做乙個估計,看看大約要申請多少位。

二、bitmap**實現

class

mybitmap

:def

__init__

(self,size)

: self.words=[0

]*(self.get_word_index(size-1)

+1)#因為get_word_index()函式返回結果是向下取整,所以需要 + 1

self.size=size

defget_bit

(self,bit_index)

:if bit_index<

0or bit_index>self.size-1:

raise exception(

"超過bitmap的有效範圍!"

) word_index=self.get_word_index(bit_index)

return

(self.words[word_index]&(

1<0# 該函式的作用是給點陣圖中的某64位賦值

defset_bit

(self,bit_index)

:if bit_index<

0or bit_index>self.size-1:

raise exception(

"超過bitmap的有效範圍!"

) word_index=self.get_word_index(bit_index)

self.words[word_index]|=

(1<# 函式的功能是計算我們需要申請幾個長整型的資料(乙個長整型是64位)

defget_word_index

(self,bit_index)

:# bit_index傳入的是我們需要儲存的資料的總個數

# 右移6位,相當於除以64,向下取整

return bit_index>>

6bitmap=mybitmap(

128)

bitmap.set_bit(

126)

bitmap.set_bit(75)

print

(bitmap.get_bit(

126)

)print

(bitmap.get_bit(78)

)

1 簡單的unittest示例 py

import requests import unittest class mytestcase unittest.testcase 類名可以自定義 但必須繼承 unittest.testcase def runtest self runtest就是測試用例 response requests.ge...

BIT MAP的簡單實現

主要是參考guisu同學的 確實很漂亮 我是顯得主要功能是把txt中存在的ip位址在map中的位元位置1,從而方便後續的判斷,判斷是否出現過ip欄位,其中上篇文中自己津津樂道的strtok 竟然被淘汰了啊,我都不知道,這裡換成了strseq char char 這裡使用的時候注意char 指向的內容...

Bit Map演算法的簡單實現

bitmap的定義 所謂的bit map就是用乙個bit位來標記某個元素對應的value,而key即是該元素。由於採用了bit為單位來儲存資料,因此在儲存空間方面,可以大大節省。使用bitmap實現8位 號碼的儲存,能夠實現 號碼的插入 刪除 查詢。使用bitmap演算法。8位 號碼總共有0 999...