Java学习 - 布隆过滤器

前置需求

  • 需求
    • 已经有50亿个电话号码,现在给出10万个电话号码,如何快速准确地判断这些电话号码是否已经存在?
  • 参考方案
    • 通过数据库查询:比如MySQL,性能不行,速度太慢
    • 将数据先放进内存:50亿*8字节=40GB,内存占用太大
    • hyperloglog算法:准确度不行
  • 现实类似问题
    • 垃圾邮件判断
    • 文字处理软件的错误单词检测
    • 网络爬虫的url去重
  • 解决方法
    • 使用布隆过滤器

布隆过滤器介绍以及原理

  • 布隆过滤器作用

    • 占用很少的空间和使用较少的时间判断一个小数据集是否是一个大数据集的子集
  • 布隆过滤器参数

    • n:一个很长的二进制,n位
    • m:需要放入的数据数量,m个
    • k:k个哈希函数
  • 布隆过滤器构建过程

    • 初始化:原始二进制数字中的每一位都置为0

    • 一个数据经过1个哈希函数会得到一个位置,该位置置1

    • 一个数据经过k个哈希函数处理会,在原理二进制中会有k个位置被置1

    • 所有数据重复以上两步,即可构建出对于这个数据集的布隆过滤器

      在这里插入图片描述

  • 布隆过滤器判断有无

    • 一个数据经过k个哈希函数处理,查看得到的位置是否都为1,如果有至少一个位置不为1,则证明这个数据不在数据集中,反之,这个数据很大可能在这个数据集中(因为存在误差)
  • 布隆过滤器的误差

    • 误差可能存在

      • 一个数据并未参数构建布隆过滤器,但是它的计算结果可能会“已经存在”,比如当只用1个哈希函数或者二进制数很短时,可能别的数据的结果刚好与整个数据相同,于是这个数据也被当做存在了
      • 已有的数据一定显示已有,未有数据可能”已有“
    • 误差计算

      在这里插入图片描述

    • 误差率统计

      在这里插入图片描述

布隆过滤器的实现

  • 由Go和redis组合实现一个布隆过滤器
  • 底层数据结构
    • redis中衍生数据类型很适合作为实现布隆过滤器的底层数据类型
  • 实现方法
    • 布隆过滤器的构造参数:插入数量m,哈希函数个数k
    • 布隆过滤器的操作函数:Add,Contains,Probability
    • 封装redis位图操作
    • 总体代码
    • 样例测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/36340.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【环境配置】ubuntu中 Docker的安装

前言 Docker的使用,一直没有系统的梳理和记录,刚好最近看视频又再次的全面介绍到docker。于是记录下方便后面自己的使用,毕竟安装过程中还是会存在小的不丝滑。 1 Docker的简单介绍 这里的介绍来自于大模型的问答(LLM时代的到来&a…

开启网络监控新纪元:免费可视化工具助力网络信息链路拓扑监控大屏

在数字化浪潮汹涌的今天,网络已成为我们生活、工作的不可或缺的一部分。然而,你是否曾经想过,在这个庞大的网络世界中,是谁在默默守护着每一条信息的传输,确保我们的数据安全、稳定地抵达目的地? 网络信息链…

第十二章:抽取式问答

本文我们将运用 Transformers 库来完成抽取式问答任务。自动问答 (Question Answering, QA) 是经典的 NLP 任务,需要模型基于给定的上下文回答问题。 根据回答方式的不同可以分为: **抽取式 (extractive) 问答:**从上下文中截取片段作为回答,类似于我们前面介绍的序列标注…

【力扣高频题】004.两个正序数组的中位数

------------------ 长文警告 ------------------ 4.两个正序数组的中位数 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O ( l o g ( m n ) ) O(log(mn)) O…

工业数据分析要用FusionInsight MRS IoTDB ?

随着工业互联网逐步兴起,在加速工业自动化、智能化的同时,也进一步加速工业生产时间序列数据的产生速度。但对于工业生产中的数据分析,仍然存在重复样本多,数据膨胀率大,缺乏专业易用的平台,这些问题成为阻…

【PYTHON】力扣刷题笔记 -- 0053. 最大子数组和【中等】

题目描述:给你一个整数数组 array: nums ,请你找出一个具有最大和的连续子数组 sub-array,返回其最大和 子数组(最少包含一个元素): 是数组中的一个连续部分 示例 1: 输入:nums [-2,1,-3,4,-1…

NFS文件共享服务搭建

文章目录 NFS介绍特点用途 NFS版本NFS安装0. 安装规划1. 安装NFS服务2. 启动并启用服务3. 创建共享目录4. 配置NFS共享5. 应用NFS配置6. 防火墙设置7. 验证NFS服务8. 客户端挂载9. 验证挂载10. 客户端卸载nfs挂载11. 自动挂载 参考文章 NFS介绍 NFS(Network File Sy…

golang 如何判断当前是否是运行单元测试?

我们在go的模块化开发的时候,运行模块里面的单元测试时,当前整个模块的 init 函数都会被执行,在某些情况下我们运行独立的单元测试并不需要执行其他文件里面的init函数,这时就需要判断当前是否是在运行单元测试,判断方…

linux的常用系统维护命令

1.ps显示某个时间点的程序运行情况 -a :显示所有用户的进程 -u :显示用户名和启动时间 -x :显示 没有控制终端的进程 -e :显示所有进程,包括没有控制终端的进程 -l :长格式显示 -w :宽…

jEasyUI 自定义排序

jEasyUI 自定义排序 jEasyUI 是一个基于 jQuery 的框架,用于创建富交互的网页界面。它提供了一系列的组件,如布局、窗口、数据网格等,使得用户能够轻松地构建功能强大的用户界面。在数据网格(datagrid)组件中,排序功能是一个非常重要的特性,它允许用户根据列的值对数据…

k8s部署mongodb副本高可用集群

此版本的NFS为单点,仅为练习使用,生产环境建议使用cephfs的卷类型,避免单点。或者通过keepalived加Sersync的方案对NFS作容灾处理即可用于生产环境。当然,对于开发或测试环境,方便起见,直接使用单点的NFS加mongodb statefulSet方案是最为清晰简便的。 mongodb集群部署分…

66.前端接口调用返回400的错误

错误代码400通常表示由于无效的请求导致服务器无法处理请求。这可能是由于以下原因之一: 1.语法错误:客户端发送的请求可能存在语法错误,例如缺少必需的参数、格式不正确等。 2.未授权:如果API需要认证,而客户端没有提…

代谢组数据分析十一:典型相关分析

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2介绍 典型相关分析(Canonical Correlation Analysis,简称CCA)是一种统计方法,用于探索两组变量之间的线性关系。与主成分分析(PCA)不同,PCA是在同一…

Gemma 2大模型:性能更优,效率更高

当地时间6月27日,谷歌正式发布了在一个月前的I/O开发者大会上预告过的Gemma 2大模型。这款新模型相较于第一代Gemma模型,在性能和推理效率上都有了显著的提升,为AI领域带来了新的突破。 据谷歌介绍,Gemma 2模型包括9B和27B两种参…

创建github个人博客

文章目录 安装Hexo安装git安装Node.js安装 Hexo git配置SSH key配置ssh 搭建个人博客新建博客生成静态网页 本文主要参考 【保姆级】利用Github搭建自己的个人博客,看完就会 安装Hexo 参考官方文档:https://hexo.io/zh-cn/docs/ Hexo 是一个快速、简洁且…

探索WebKit的守护神:深入Web安全策略

探索WebKit的守护神:深入Web安全策略 在数字化时代,网络已成为我们生活的一部分,而网页浏览器作为我们探索网络世界的窗口,其安全性至关重要。WebKit作为众多流行浏览器的内核,例如Safari,其安全性策略是保…

【其他】这阵子虚拟机编译和重启次数太多后果

1、开始蓝屏的次数没有,随着VM的Ubuntu每天大量的编译,代码里边各种加while(1),估计是加重了宿主机的负担吧,宿主机后来(大概是十天前)是一天蓝屏1次;慢慢增加现在是一天大概蓝屏6次&#xff0c…

微服务实战系列之云原生

前言 话说博主的微服务实战系列从去年走到今天,已过去了半年多了。本系列,博主主要围绕微服务实践过程中的主要组件或工具展开介绍。其中基本覆盖了我们项目或产品研发过程中,经常使用的中间件或第三方工具。至此,该系列也该朝着…

2024年河北省计划招聘“特岗计划”教师2300名

2024年河北省计划招聘“特岗计划”教师2300名 报名时间:6月28日9:00至7月2日18:00 笔试准考证打印:7月11日-7月13日 笔试时间:7月14日上午9:00-11:30 面试时间:8月3日至8月5日 报名网站:河北教师教育网 报名照规格&…