`
dacoolbaby
  • 浏览: 1267229 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Bloom Filter布尔过滤

阅读更多

最近在研究Python,想用Python写一个爬虫来爬数据。

爬虫有几个关键的地方,一个是防止如何递归地重复爬一个网址,一个就是页面信息的解析。

 

那么这里主要介绍一下如何通过bloom filter达到判断一个网址是否被爬过。

bloom filter的介绍refer:http://blog.csdn.net/jiaomeng/article/details/1495500

 

下面我们具体来看Bloom Filter是如何用位数组表示集合的。初始状态时,Bloom Filter是一个包含m位的位数组,每一位都置为0

 

为了表达S={x1, x2,…,xn}这样一个n个元素的集合,Bloom Filter使用k个相互独立的哈希函数(Hash Function),它们分别将集合中的每个元素映射到{1,…,m}的范围中。对任意一个元素x,第i个哈希函数映射的位置hi(x)就会被置为11ik)。注意,如果一个位置多次被置为1,那么只有第一次会起作用,后面几次将没有任何效果。在下图中,k=3,且有两个哈希函数选中同一个位置(从左边数第五位)。 

 

这个图我看的不是很明白,所以我自己画了一个图。



 

如果在Python下面使用bloom filter,可以导入一个包来使用。

http://sourceforge.net/projects/pybloom/

 

 

 

 

 

 

 

  • 大小: 24.1 KB
分享到:
评论

相关推荐

    硬核 - Redis 布隆(Bloom Filter)过滤器原理与实战.doc

    Redis 布隆(Bloom Filter)过滤器原理与实战 Redis 布隆(Bloom Filter)过滤器是一种space efficient的概率型数据结构,用于判断一个元素是否在集合中。布隆过滤器的原理是,首先分配一块内存空间做bit数组,数组...

    bloom filter布隆过滤器学习资料大全

    布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。在大数据处理、缓存系统、分布式存储等领域有着广泛的应用。这个压缩包文件“bloom filter布隆过滤器学习...

    Python-bloomfilter过滤器

    **Python-bloomfilter过滤器详解** Bloom Filter是一种空间效率极高的概率型数据结构,用于判断一个元素是否在一个集合中。在Python开发中,尤其是在处理大量数据时,Bloom Filter可以有效地节省内存空间,尤其适用...

    bloom filter(C#版自制布隆过滤器)

    它是由 Burton Howard Bloom 在1970年提出的,主要应用于大数据存储和检索,尤其在数据库、缓存系统和网络搜索等领域有广泛应用。C# 版本的布隆过滤器实现了这一概念,通过使用八种不同的哈希函数来提高准确性和减少...

    Bloom Filter概念和原理

    1. **网络应用**:在网络传输中,Bloom Filter可用于过滤垃圾邮件或阻止恶意网站访问。 2. **数据库索引**:在大规模数据库系统中,Bloom Filter可以用于快速判断某个键是否存在于数据库中,从而减少不必要的磁盘I/O...

    bloom filter

    4. **数据库优化**:在数据库中,Bloom Filter可以用来快速过滤掉不存在的数据项,从而减少磁盘I/O操作次数。 #### 五、现代变种 随着时间的推移,研究人员对Bloom Filter进行了多种改进,以适应不同的应用场景。...

    Java版本的BloomFilter (布隆过滤器)

    BloomFilter<String> bloomFilter = BloomFilter.create(funnel, 100000, 0.03); bloomFilter.put("element1"); bloomFilter.put("element2"); System.out.println(bloomFilter.mightContain("element1")); //...

    bloomfilter.js, 使用FNV的JavaScript bloom filter快速散列.zip

    bloomfilter.js, 使用FNV的JavaScript bloom filter快速散列 Bloom过滤器This过滤器实现使用非加密 Fowler-Noll-Vo散列函数来实现速度。用法var bloom = new BloomFilter( 32 * 256,//number of bits to all

    带bloom filter 的c网络爬虫

    - **bloomfilter.h**:这是一个头文件,很可能包含了Bloom Filter的数据结构定义和相关操作函数的声明。在C语言中,头文件通常用于提供接口给其他源文件使用,这里可能是为了在spider.c中方便地调用Bloom Filter的...

    java-bloomfilter

    Java 中实现布隆过滤器,通常可以使用开源库Guava提供的`com.google.common.hash.BloomFilter`类。Guava的布隆过滤器提供了灵活的参数配置,包括期望元素数量(expectedInsertions)和错误率(fpp,False Positive ...

    leveldb中bloomfilter的优化.pdf

    为了解决这个问题,一种常见的方法是在KV存储系统中引入**Bloom Filter**来快速过滤掉不存在的键,从而减少不必要的磁盘访问。不过,传统的Bloom Filter设计通常采用统一的设置,并且缺乏动态调整的能力,这可能导致...

    bloom-filter-scala, 用于 Scala的Bloom过滤器,最快的JVM.zip

    bloom-filter-scala, 用于 Scala的Bloom过滤器,最快的JVM Scala的 Bloom filter 概述Bloom过滤器是一种空间高效的数据结构,用于测试某个元素是否是集合的成员。 false 正匹配是可能的,但 false 负数不是。 ...

    Java-BloomFilter, 在Java中,一个独立的Bloom过滤器.zip

    Java-BloomFilter, 在Java中,一个独立的Bloom过滤器 java-bloomfilterJava bloomfilter是一个独立于Java的Bloom过滤器实现。 它旨在在不需要额外库开销的情况下包含在现有项目中。 第一个版本是由 Ian的博客条目...

    Ruby 中的 BloomFilter原生计数过滤器 + Redis 计数,非计数过滤器.zip

    Ruby 中的 BloomFilter原生计数过滤器 + Redis 计数/非计数过滤器Ruby 中的 BloomFilter原生(MRI/C)计数布隆过滤器Redis 支持的 getbit/setbit 非计数布隆过滤器Redis 支持的基于集合的计数 (+TTL) 布隆过滤器布隆...

    多字段矩阵型bloomfilter(支持砍维度)

    在传统的Bloom Filter中,它通常处理单一的关键字,而在“多字段矩阵型Bloom Filter”中,这一概念被扩展到了支持多个字段的情况,这使得它在处理复杂数据集时更具灵活性。 首先,我们要理解Bloom Filter的基本原理...

    介绍Bloom Filter(布隆过滤器)原理、实现及具体应用

    布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。它可能会误判,但不会漏判,即可能存在假阳性(False Positive),但绝不会有假阴性(False Negative)。...

    【技术分享】Bloomfilter布隆过滤器.pptx

    布隆过滤器是一种高效的空间节省的数据结构,用于判断一个元素是否可能在一个集合中,但可能会产生一定的误判率。它由一个很长的二进制向量和多个独立的哈希函数组成。布隆过滤器的基本原理是,当一个元素被添加到...

    bloom filter 相关论文资料

    布隆过滤器(Bloom Filter)是一种空间效率极高的概率数据结构,用于判断一个元素是否可能在一个集合中。它由布伦南·布隆在1970年提出,最初是为了解决查找问题中的空间效率问题。这篇论文资料集合涵盖了布隆过滤器...

Global site tag (gtag.js) - Google Analytics