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