博客
关于我
BitMap的巧用(简单示例)Python
阅读量:371 次
发布时间:2019-03-05

本文共 946 字,大约阅读时间需要 3 分钟。

最近一周都没怎么更新博文,实际上也没有做什么有用的事情,感觉这样下去把自己刚刚开的头又半途而废了。唉!不能让自己生活在舒适圈啊,要努力学习,加油!

今天要说的是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    def get_bit(self,bit_index):        if bit_index<0 or bit_index>self.size-1:            raise Exception("超过Bitmap的有效范围!")        word_index=self.get_word_index(bit_index)        return (self.words[word_index]&(1<
self.size-1: raise Exception("超过Bitmap的有效范围!") word_index=self.get_word_index(bit_index) self.words[word_index] |= (1<
>6bitMap=MyBitmap(128)bitMap.set_bit(126)bitMap.set_bit(75)print(bitMap.get_bit(126))print(bitMap.get_bit(78))

转载地址:http://udvg.baihongyu.com/

你可能感兴趣的文章
netlink2.6.32内核实现源码
查看>>
Netpas:不一样的SD-WAN+ 保障网络通讯品质
查看>>
NetScaler的常用配置
查看>>
netsh advfirewall
查看>>
NETSH WINSOCK RESET这条命令的含义和作用?
查看>>
netstat命令用法详解
查看>>
Netstat端口占用情况
查看>>
Netty WebSocket客户端
查看>>
netty 主要组件+黏包半包+rpc框架+源码透析
查看>>
Netty 异步任务调度与异步线程池
查看>>
Netty中集成Protobuf实现Java对象数据传递
查看>>
netty之 定长数据流处理数据粘包问题
查看>>
Netty事件注册机制深入解析
查看>>
Netty入门使用
查看>>
Netty原理分析及实战(三)-高可用服务端搭建
查看>>
Netty原理分析及实战(四)-客户端与服务端双向通信
查看>>
Netty发送JSON格式字符串数据
查看>>
Netty和Tomcat的区别已经性能对比
查看>>
Netty基础—1.网络编程基础二
查看>>
Netty基础—3.基础网络协议二
查看>>