布隆过滤器简易版本实现
可以看c++实现: https://github.com/mavam/libbf
python实现:https://github.com/jaybaird/python-bloomfilter
转自:http://www.cnblogs.com/dolphin0520/archive/2012/11/10/2755089.html
/*布隆过滤器简易版本 2012.11.10*/#include<iostream> #include<bitset> #include<string> #define MAX 2<<24 using namespace std;bitset<MAX> bloomSet; //简化了由n和p生成m的过程 int seeds[7]={3, 7, 11, 13, 31, 37, 61}; //使用7个hash函数 int getHashValue(string str,int n) //计算Hash值 {int result=0;int i;for(i=0;i<str.size();i++){result=seeds[n]*result+(int)str[i];if(result > 2<<24)result%=2<<24;}return result; }bool isInBloomSet(string str) //判断是否在布隆过滤器中 {int i;for(i=0;i<7;i++){int hash=getHashValue(str,i);if(bloomSet[hash]==0)return false;}return true; }void addToBloomSet(string str) //添加元素到布隆过滤器 {int i;for(i=0;i<7;i++){int hash=getHashValue(str,i);bloomSet.set(hash,1);} }void initBloomSet() //初始化布隆过滤器 {addToBloomSet("http://www.baidu.com");addToBloomSet("http://www.cnblogs.com");addToBloomSet("http://www.google.com"); }int main(int argc, char *argv[]) {int n;initBloomSet();while(scanf("%d",&n)==1){string str;while(n--){cin>>str;if(isInBloomSet(str))cout<<"yes"<<endl;elsecout<<"no"<<endl;}}return 0; }
转载于:https://www.cnblogs.com/bonelee/p/6215386.html
布隆过滤器简易版本实现相关推荐
- 简单布隆过滤器设计方案
假如有1亿个不重复的正整数(大致范围已知),但是只有1G的内存可用,如何判断该范围内的某个数是否出现在这1亿个数中?最常用的处理办法是利用位图,1*108/1024*1024*8=11.9,也只需要申 ...
- ubuntu16.04安装,使用redis布隆过滤器示例
简言 1. 环境:ubuntu16.04,redis版本:5.0.7,布隆过滤器实现版本:RedisBloom1.1.1 2. 默认情况,下载安装redis时是不带布隆过滤器功能的,它是以插件的形式提 ...
- 布隆过滤器的简易实现
布隆过滤器的原理再此就不重复说了,网上有很多种陈述的,再此就利用BitSet给出一个布隆过滤器的简易实现, 看不懂的欢迎私信我 import java.util.BitSet;/*** @author ...
- C++拾取——Linux下实测布隆过滤器(Bloom filter)和unordered_multiset查询效率
布隆过滤器是一种判定元素是否存在于集合中的方法.其基本原理是使用哈希方法将数据映射到一个很长的向量上.在维基百科上,它被称为"空间效率和查询时间都远远超过一般的算法"的方法.由于它 ...
- Redis亿级数据过滤和布隆过滤器
来自:我没有三颗心脏 一.布隆过滤器简介 上一次 我们学会了使用 HyperLogLog 来对大数据进行一个估算,它非常有价值,可以解决很多精确度不高的统计需求.但是如果我们想知道某一个值是不是已经在 ...
- Redis 高级主题之布隆过滤器(BloomFilter)
最近计划准备整理几篇关于Reids高级主题的博文,本文整理的是关于布隆过滤器在Redis中如何应用,先来一张思维导图浏览全文. 1. 认识BloomFilter 1.1 原理 布隆过滤器,英文叫Blo ...
- Redis布隆过滤器
正文 场景 在项目开发中,我们经常会遇到去重问题.比如:判断一个人有没有浏览过一篇文章,判断一个人当天是否登录过某个系统,判断一个ip是否发过一个请求,等等. 比较容易想到的是使用set来实现这个功能 ...
- hbase建表,删表,修改,查询(get,scan,布隆过滤器)
建表 直接建表: create '表名','列族名' 如果之后想加入新的列族: alter '表名','列族名' 补充: alter '表名',{NAME='列族名',属性1=>属性值 1,属性 ...
- HBase的布隆过滤器详解
HBase的布隆过滤器详解 1.布隆过滤器的简单介绍 2.布隆过滤器的原理分析 2.1 哈希表存在的问题 2.2 布隆过滤器的原理 2.2.1 原理详解 2.2.2 布隆过滤器失误率的调节 2.2.3 ...
最新文章
- c++关于map的find和count的使用
- ML之分类预测之LARS:利用回归工具将二分类转为回归问题并采用LARS算法构建分类器
- Android 热补丁动态修复框架小结
- 数据库表命名 单数复数_数据是还是数据是? “数据”一词是单数还是复数?
- 华为鸿蒙系统深度体验报告,堪比苹果IOS的存在!
- 箴言录2014年4月19日
- Item 22: 当使用Pimpl机制时,在实现文件中给出特殊成员函数的实现
- 【TSP】基于matlab GUI混合粒子群算法求解旅行商问题【含Matlab源码 925期】
- 服务器远程ghost,Ghost win7系统64位远程桌面连接教程
- IE兼容性问题解决方案
- ntfs是什么硬盘?ntfs硬盘如何在苹果电脑使用
- arcgis字段求和_arcgis计算命令
- 17、springcloud整合lettuce使用redis
- Visual Paradigm创建UML的流程和一点实用技巧
- linux est 时间,Linux 时间标准简介
- maxEms和maxLength的区别以及maxEms不起作用的问题
- JDBC - MySQL
- 女研究生因压力大欲跳海轻生 民警跳入冰冷海水中救人
- 以太网和PPPOE网络下MTU和MSS的关系
- 最近在逛知乎的时候发现一个有趣的问题:公司规定所有接口都用 post 请求,这是为什么?