首页 > 其他分享 >布隆过滤器简单使用

布隆过滤器简单使用

时间:2022-10-14 16:35:34浏览次数:31  
标签:System 布隆 println 简单 过滤器 bloomFilter out

参考:

https://www.jb51.net/article/248125.htm

https://blog.csdn.net/wang0112233/article/details/123665461

https://blog.csdn.net/qq_40179653/article/details/125716731

布隆过滤器简单来说就是:当它说这个数据存在时,其实可能不存在。如果是它说不存在时,那这个数据肯定不存在。

 

用例1: 假设项目已经集成了redisson

@Service
public class RedissonService{
@Autowired
private RedissonClient redissonClient;


/**
* 布隆过滤器,参数分别为: 过滤器的标识,大小,精度(如0.01代表有1%的误差)
* @return
*/
public RBloomFilter<Object> getBloomFilter(String str,long size,double precision) {
RBloomFilter<Object> bloomFilter = redissonClient.getBloomFilter(str);
bloomFilter.tryInit(size,precision);
return bloomFilter;
}
}

Controller中:
@GetMapping("/test2")
public Boolean test2(){
// 取布隆过滤器
RBloomFilter<Object> bloomFilter = redissonService.getBloomFilter("abc", 200, 0.01);
// 添加初始化的值
bloomFilter.add("abc");
// 验证是否命中 ,打印true 。 说明数据库中有此数据,先读redis,如果redis没有,则读数据库
System.out.println(bloomFilter.contains("abc"));
// 验证是否命中,打印false, 说明数据库中没有此数据,直接返回null就行, redis和数据库都不用读。
System.out.println(bloomFilter.contains("abcd"));
return Boolean.TRUE;
}


用例2:guava 工具包,这是谷歌公司提供的,里面也提供了布隆过滤器的实现。

public static void main(String[] args) {
BloomFilter<String> bloomFilter = BloomFilter.create(Funnels.stringFunnel(Charsets.UTF_8),100000,0.01);
// 初始化值
bloomFilter.put("10086");
// 打印false
System.out.println(bloomFilter.mightContain("123456"));
// 打印true
System.out.println(bloomFilter.mightContain("10086"));
}

标签:System,布隆,println,简单,过滤器,bloomFilter,out
From: https://www.cnblogs.com/maohuidong/p/16791978.html

相关文章

  • Spring简单基础
    重要特点简化开发IocAop事务处理配置1.在pom文件导入spring坐标2.新建一个spring的xml配置文件,配置标签bean标签配置beanid属性表示给bean起名字class......
  • vue3 + pinia实现简单购物车功能
    这个小例子是学习vue3与pinia状态管理工具时写的一个简单的购物车功能,它实现了从模拟接口(node.js的json-server提供)读取商品数据,到添加商品到购物车和购物车中删除商品......
  • SQL取数,简单查询与高级查询
    一张表中通常会包含很多字段,造成数据冗余,在做数据分析时,我们仅需要提取数据分析所需要的字段,这里就需要用到数据选取的知识点,同时还可以依据特定条件筛选。本文介绍数据提取......
  • centos7 ansible的简单使用
    0、介绍ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令......
  • vue 全局过滤器
     官网是这样描述的“Vue.js允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从2.1.0+开始支持)。过......
  • [译] PEP 255--简单的生成器
     我正打算写写Python的生成器,然而查资料时发现,引入生成器的PEP没人翻译过,因此就花了点时间翻译出来。如果在阅读时,你有读不懂的地方,不用怀疑,极有可能是我译得不到位。......
  • 电子表格也能做购物车?简单三步就能实现
    在我们的项目当中,经常需要添加一些选择界面,让用户直观地进行交互,比如耗材、办公用品、设计稿或者其它可以选择的内容。在线商城的商品目录和购物车无疑是一种大家都很熟悉......
  • JavaScript简单特效:页面背景颜色在线改变
    基于JavaScript以及canvas实现输入颜色预览以及背景颜色变为输入颜色值的效果。输入框中默认值为黑色,下方画布显示该颜色。通过输入新的颜色值后,点击【显示颜色】按钮,画......
  • 【前端】【JavaScript】简单的加减乘除计算器
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><inputtype="text"id="number1"><selectid="s......
  • Session用法案例 -->实现简单购物车功能(实际项目可能不会这么使用)
    071201709091、session是在cookie的基础之上,利用cookie返回JSESSIONID(key[服务器随机生成])存在客户端实现,正真的数据存在服务端[key-value]。2、se......