zoukankan      html  css  js  c++  java
  • 布隆过滤器 算法篇

    比特币 比较火  书本资料也较少

    对cache缓存的概念就不讲了  

    Filter 判断这个元素在不在 经过filter判断这个元素在不在如果不在的话肯定就不在

    而如果在的话(有误差)在从数据库和内存中取

    chache和filter 有一定的异曲同工之妙

    我们来讲一下hash函数

     作用就是通过映射拿到值

    hash有个问题 即使value 冲突 ?怎么解决 把映射到同一个value的key作为拉链存起来 比如列表

    filter 和 cache 是互为互补的作用

    filter和上述hash一样 不过是把

    一个元素 散射到二进制向量里面来

    布兰过滤器实现过程

    映射到很长很长的二进制向量 比如int就是64的二进制向量

    而布隆过滤器可以检索一个元素是否在一个集合中 

    布隆过滤器优点和缺点

    空间复杂度 事件复杂度远远小于其他算法  

    缺点是勿失识别率和删除困难

    为什么那么快

    因为是二进制所以快 但是也无法避免一个新的问题 就是准确率低 (天下没有一块完整的蛋糕 不然为什么不直接用他?)

    勿识别率低那么为什么还要?

    首先讲一下他的勿识别率

    首先元素在的时候才会有勿识别率  不在的时候肯定是不在的

    如果在任何条件下 识别率都只有80%这样的情况 那么这个算法肯定是没用的 

    布隆过滤器实现原理

     对于任何一个元素 使用映射函数 映射到 向量里 把 0 置为1  

    新来一个w 用来查询 如果映射0的情况 那么这个w肯定不存在 

     大白话 :通过左边A和E把向量描红  右边有三个元素需要查找ACB 

    发现a有 c没有 b有 实际上b是没有的 所以这就导致了勿失别

    怎么解决勿失别

    filter主要工作就是帮助过滤一下不存在的元素 所以说和cache一样挡了一层 如果不存在再去数据库查找 

    所以后面还要跟一层数据管理系统 比如mysql 后面的是数据权威机构过滤器和cache是预先处理模块

  • 相关阅读:
    大数据组件
    k8s 证书过期时间调整
    k8s Metrics Server 获取资源指标与 hpa 部署
    k8s修改集群coredns
    k8s 版本升级
    k8s node节点剔除与增加
    etcd 单节点部署、备份与恢复
    k8s 连接ceph集群
    efk收集k8s 容器日志安装记录
    prometheus 监控k8s 安装测试记录
  • 原文地址:https://www.cnblogs.com/xzqpy/p/12007020.html
Copyright © 2011-2022 走看看