布隆过滤器的简易实现
布隆过滤器的原理再此就不重复说了,网上有很多种陈述的,再此就利用BitSet给出一个布隆过滤器的简易实现,
看不懂的欢迎私信我
import java.util.BitSet;/*** @author zoujianglin* @date 2018/8/9 9:27*/ public class SimpleBloomFilter {private static final int DEFAULT_SIZE = 2 << 24;private static final int[] seeds = new int[]{7, 11, 13, 31, 37, 61,}; //种子,即使用六位来决定一个数是否存在private BitSet bits = new BitSet(DEFAULT_SIZE);private SimpleHash[] func = new SimpleHash[seeds.length];public SimpleBloomFilter() {for (int i = 0; i < seeds.length; i++) {func[i] = new SimpleHash(DEFAULT_SIZE, seeds[i]);}}/*** 添加值 * @param value*/public void add(String value) {for (SimpleHash f : func) {//将每个所得的hash对应得bits位置为truebits.set(f.hash(value), true);}}/*** 判断是否包含指定的值* @param value* @return*/public boolean contains(String value) {if (value == null) {return false;}boolean ret = true;for (SimpleHash f : func) { //遍历,该value对应得值是否都在bitsetret = ret && bits.get(f.hash(value));}return ret;}public static class SimpleHash { //利用种子,获取一个数值一个对应的hash位private int cap;private int seed;public SimpleHash(int cap, int seed) {this.cap = cap;this.seed = seed;}public int hash(String value) {int result = 0;int len = value.length();for (int i = 0; i < len; i++) {result = seed * result + value.charAt(i);}return (cap - 1) & result;}}}
布隆过滤器的简易实现相关推荐
- 简单布隆过滤器设计方案
假如有1亿个不重复的正整数(大致范围已知),但是只有1G的内存可用,如何判断该范围内的某个数是否出现在这1亿个数中?最常用的处理办法是利用位图,1*108/1024*1024*8=11.9,也只需要申 ...
- 布隆过滤器简易版本实现
可以看c++实现: https://github.com/mavam/libbf python实现:https://github.com/jaybaird/python-bloomfilter 转自: ...
- 布隆过滤器(Bloom Filter)的原理和实现
布隆过滤器使用场景 之前在<数学之美>里面看到过布隆过滤器的介绍.那么什么场景下面需要使用布隆过滤器呢? 看下下面几个问题 字处理软件中,需要检查一个英语单词是否拼写正确 在 FBI,一个 ...
- 什么是布隆过滤器?如何使用?
欢迎搜索 文章目录 一.布隆过滤器简介 二.布隆过滤器的结构 三.布隆过滤器应用 四.布隆过滤器的优缺点 五.布隆过滤器实战 六.总结 Redis缓存穿透可以通过布隆过滤器进行解决,那么什么是布隆过滤 ...
- 算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记
算法学习 (门徒计划)3-2 哈希表与布隆过滤器及经典问题 学习笔记 前言 哈希表 哈希操作 冲突处理 开放定址法 再哈希法 公共溢出区 链式地址法 扩容哈希表 设计简易哈希表 总结 布隆过滤器 对比 ...
- 布隆过滤器速度_5 分钟搞懂布隆过滤器,过滤亿级数据
在程序的世界中,布隆过滤器是程序员的一把利器,利用它可以快速地解决项目中一些比较棘手的问题.如网页 URL 去重.垃圾邮件识别.大集合中重复元素的判断和缓存穿透等问题. 布隆过滤器(Bloom Fil ...
- [大数据处理]——布隆过滤器
布隆过滤器 说到布隆这两个字大家可千万不要认为我们这里讲的是英雄联盟中的布隆大叔,今天我们所讲的布隆过滤器是一种大数据处理利器,他是由布隆算法Bloom Filter音译而来,是以Bitmap集合为基 ...
- 【数据结构】初入数据结构之布隆过滤器(Bloom Filter)及实现
布隆过滤器(Bloom Filter) 如果觉得对你有帮助,能否点个赞或关个注,以示鼓励笔者呢?!博客目录 | 先点这里 前提概念 什么是布隆过滤器? 布隆过滤器的作用? 布隆过滤器的缺陷 数据结构 ...
- Redis 预防缓存穿透“神器” — 布隆过滤器
1. 布隆过滤器 1.1 概念 在架构设计时有一种最常见的设计被称为布隆过滤器,它可以有效减少缓存穿透的情况.其主旨是采用一个很长的二进制数组,通过一系列的 Hash 函数来确定该数据是否存在. 布隆 ...
最新文章
- PHP从入门到跑路(二),基础语法,数据库操作
- vmware nat模式网络不通_笨笨狗教你如何解决VMware虚拟机桥接网络不通问题?
- wso2 esb_通过运行示例从WSO2 ESB开始
- leetcode513. 找树左下角的值(dfs)
- Java中按位运算符
- “中奖1亿”的支付宝锦鲤信小呆现状:花光积蓄刷爆信用卡,没工作,还抑郁了...
- arraylist扩容是创建新数组吗 java_Java 集合,你肯定也会被问到这些
- java初学试题_JAVA 适合初学者的试题?
- windows安装软件最好使用独立的文件夹
- Mac-VMware-分辨率修改
- Stolz定理及其证明
- echarts关系图vue完整代码
- 2021-金三银四跳槽-还愿
- protractor环境安装
- 搭建一个颜值超高的发卡网站
- 如何给卫生间的墙砖打孔,避免瓷砖开裂?
- WebSocket之仿QQWeb即时聊天系统(下)
- MVC实体框架EF实现分页
- C++算法篇:DFS超详细解析(2)--- tarjan算法求无向图割边
- 推荐免费小巧图片大小处理工具--Image Resizer for Windows
热门文章
- 水库水雨情自动测报系统功能
- 初会考试怎么用计算机,初级无纸化考试计算器太难用怎么办?你可以这样做!...
- 百度商桥留言板镶嵌到网页内部的方法
- finereport php,FineReport与Web集成
- 荣耀9i升级android10,荣耀9i和荣耀10哪个好_荣耀9i和荣耀10评测对比_飞翔教程
- 小米抢购页面源码分析2014年03月11号
- redhat环境下ssh不能自动认证登录的解决方法
- labview信号处理算法先进性比较
- 将rmvb下载的电影转换成可用家庭dvd播放的dvd格式
- 读《魔鬼经济学03》