哈哈...我终于写了个BloomFilter
这个是干嘛用的???
恩...一般比较常见的应用是字符串去重..也就是...恩..就是采集网址去重.防止重复采集
下面是我自己写的个例子
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\Users\\caiqing\\workspace\\CQ\\library\\dictionary-utf8.TXT"),"UTF-8")) ;
String str = null ;
System.out.println("begin");
long start = System.currentTimeMillis() ;
while((str=br.readLine())!=null){
if(bf.containsAndAdd(str)){
System.out.println("containsAndAdd:"+str);
}
}
br.close() ;
br = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\Users\\caiqing\\workspace\\CQ\\library\\dictionary-utf8.TXT"),"UTF-8")) ;
System.out.println("begin-find");
start = System.currentTimeMillis() ;
while((str=br.readLine())!=null){
if(!bf.contains(str)){
System.out.println("contains:"+str);
}
}
System.out.println(System.currentTimeMillis()-start);
br.close() ;
对分词词典79962个词进行插入.和查重..准确率100%.算上IO时间耗时79毫秒...
源码我放到下面了大家可以下载..还有..要的人给个评论吧..我的博客好冷清啊
今天回来用我的过滤器做了个测试哎...效果不是很理想啊..在千万级数据还行.再大就不好办啦
重新抄袭了一些经典的算法...(哎中科院老师的算法有毛病有三个Hash算法都是白给的.也许是我从c转到java没写对吧..) 现在效率1亿..64m内存大约失误率是0.0013 12m的失误个数是44..另外我吧能加的hash都加上了.这里只测试了5个..哈哈
我很满意非常满意....请大家敬请下载吧
10000000
32m:0
64m:0
128m:0
100000000
64m:146546
128m:44
256m:0
分享到:
相关推荐
Redisson是一个Java客户端,它不仅支持Redis的各种功能,还包含了布隆过滤器的实现。通过使用Redisson,用户可以在分布式环境中利用布隆过滤器,提高系统的可扩展性和效率。 总的来说,布隆过滤器是一种在空间效率...
布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。在Java开发中,特别是在处理大数据、内存限制或需要快速查询是否存在某个元素的场景下,布隆过滤器是一个...
在提供的压缩包文件`Bloom Filter`中,可能包含了具体的Java实现代码,你可以通过阅读和分析这些代码来深入理解布隆过滤器的工作原理和Java实现细节。此外,还可以通过测试不同参数组合下的性能,进一步了解布隆过滤...
例如,`BloomFilter.java`和`MyBloomFilter.java`可能是两个不同的实现版本。自定义实现通常包括以下几个关键部分: 1. **位数组(Bit Array)**:存储元素的位向量,所有操作都在这个数组上进行,大小通常是根据...
Java 中实现布隆过滤器,通常可以使用开源库Guava提供的`com.google.common.hash.BloomFilter`类。Guava的布隆过滤器提供了灵活的参数配置,包括期望元素数量(expectedInsertions)和错误率(fpp,False Positive ...
布隆过滤器是一种数据结构,主要用于判断一个元素是否可能在一个集合中存在。它可以在插入和查询数据时快速地判断一个元素是否可能在这个集合中,比如在缓存中查询一个元素是否存在。 它的原理是使用多个哈希函数对...
布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。它可能会误判,但不会漏判,即可能存在假阳性(False Positive),但绝不会有假阴性(False Negative)。...
Java 实现的高性能布隆过滤器!.zip,Advanced Bloom Filter Based Algorithms for Efficient Approximate Data De-Duplication in Streams
布隆过滤器是一种概率型数据结构,用于判断一个元素是否可能在一个集合中。它是由Burton Howard Bloom在1970年提出的,主要用于解决大数据集的存储和查询问题,尤其在空间效率上有着显著优势。在数据库、搜索引擎、...
在Java中,布隆过滤器的实现非常便捷,尤其是利用了Guava库提供的BloomFilter类。开发者可以非常简单地通过调用put方法添加元素,通过mayContain方法来检查元素是否存在。不仅如此,布隆过滤器还允许开发者自定义...
在Java中,我们可以利用开源库如RedisBloom来实现布隆过滤器的功能。 RedisBloom是一个扩展Redis功能的模块,提供了布隆过滤器的数据类型,使得在Redis中存储和查询数据时能够利用布隆过滤器的特性,有效避免不必要...
【布隆过滤器(Bloom Filter)的Java实现】 布隆过滤器是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。它可能会产生误报(false positive),但不会产生漏报(false negative)。在Java...
要使用Redisson实现布隆过滤器,我们需要在SpringBoot应用中引入Redisson的依赖,配置Redis连接,并创建对应的BloomFilter实例。在代码中,我们可以调用`bf.add()`方法向过滤器添加元素,使用`bf.contains()`方法...
首先,我们要理解什么是布隆过滤器(Bloom Filter)。布隆过滤器是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。它可能会误判,即可能将不存在的元素判断为存在,但不会漏掉真正存在的...
这个压缩包文件"bloomfilter-master"很可能包含了一个Java实现的布隆过滤器库。 布隆过滤器的工作原理基于多个哈希函数。当一个元素加入集合时,它会经过几个独立的哈希函数映射到过滤器中的位数组的不同位置,并将...
在Java中实现布隆过滤器,可以使用Guava库提供的`com.google.common.hash.BloomFilter`类。Guava的BloomFilter提供了创建、添加元素和查询元素的方法,并且支持动态调整过滤器的大小以控制误判率。以下是一个简单的...
布隆过滤器是一种空间效率极高的概率型数据结构,用于测试一个元素是否可能在一个集合中。它可能会产生误报(false positive),但不会产生误删(false negative)。Python-cljcbloom项目是基于Clojure语言实现的一...
布隆过滤器是一种节省空间的概率数据结构。 提出的解决方案是用Java实现的。 Python实现可。 它包含几种用于生成独立哈希函数的方法: 双重散列 三重哈希 增强型双散列 Peter C. Dillinger和Panagiotis Manolios的...
例如,Java中的Guava库提供了BloomFilter类。在测试中,我们可以看到,即使是百万级别的数据集,判断一个元素是否存在于集合中,也只需要几十微秒的时间,性能极其高效。同时,布隆过滤器的误判率可以通过设置参数...