TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
哈哈...我终于写了个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个..哈哈
我很满意非常满意....请大家敬请下载吧 Java代码
10000000
32m:0
64m:0
128m:0
100000000
64m:146546
128m:44
256m:0 |
|