Kevin's blog Kevin's blog
首页
  • AI基础
  • RAG技术
  • 提示词工程
  • Wireshark抓包
  • 常见问题
  • 数据库
  • 代码技巧
  • 浏览器
  • 手册教程
  • 技术应用
  • 流程规范
  • github技巧
  • git笔记
  • vpn笔记
  • 知识概念
  • 学习笔记
  • 环境搭建
  • linux&运维
  • 微服务
  • 经验技巧
  • 实用手册
  • arthas常用
  • spring应用
  • javaAgent技术
  • 网站
友情链接
  • 分类
  • 标签
  • 归档

Kevin

你可以迷茫,但不可以虚度
首页
  • AI基础
  • RAG技术
  • 提示词工程
  • Wireshark抓包
  • 常见问题
  • 数据库
  • 代码技巧
  • 浏览器
  • 手册教程
  • 技术应用
  • 流程规范
  • github技巧
  • git笔记
  • vpn笔记
  • 知识概念
  • 学习笔记
  • 环境搭建
  • linux&运维
  • 微服务
  • 经验技巧
  • 实用手册
  • arthas常用
  • spring应用
  • javaAgent技术
  • 网站
友情链接
  • 分类
  • 标签
  • 归档
  • 基础

  • JVM

  • Spring

  • Redis

    • 基础
    • 位图|布隆
      • 1 什么是位图?
      • 2 什么是布隆过滤器?
    • 过期删除
    • 持久化
    • 缓存雪崩|击穿|穿透
    • 集群
    • Redisson分布式锁
  • 消息中间件

  • 持久化

  • 算法

  • 网络

  • 系统架构

  • 知识整理
  • Redis
luoxiaofeng
2022-05-08
目录

位图|布隆

# 1 什么是位图?

一个由1亿个数组成的集合M,范围从1~10亿。新来一个数n,如何快速且地判断是否存在M中?

申请一个大小为10亿,数据类型为布尔的“特殊”散列表,将这一亿个数作为散列表下标,将值设成True。

不过很多语言的布尔大小是1字节,并不能节省很大空间,实际上只需要使用1个二进制位,来表示true和false两个值就行了。

这就要用到位运算了,借助编程语言提供的数据类型,比如int,char等,通过位运算,用其中的某个位表示某个数字。 这就是位图。

消耗大小:约120M。

操作平台拦截件使用了位图实现!

# 2 什么是布隆过滤器?

位图有个问题,想想看,如果数的范围是1到100亿呢,那位图消耗的大小就是1.2G了!!,相对于散列表,不降反升。 这个时候,布隆过滤器登场了,它其实是对位图一种改进。

  • 针对数据范围是1到100亿的集合,还是申请10亿的二进制大小的位图(消耗内存120M)
  • 使用多个哈希函数,得到k个不同的哈希值,记为 x1,x2,x3...xk。将k个数字作为位图中的下标,将对应的值设为1

  • 适当选择k个哈希函数,k个哈希值都相同的概率就非常低了,但又会带来新的问题,那就是误判

  • 布隆过滤器的误判有个特点:

没有就是没有,有就有极低的可能会没有。

#Redis
上次更新: 2022/06/12, 13:37:23
基础
过期删除

← 基础 过期删除→

最近更新
01
AI是如何学习的
06-05
02
chatGpt提示原则
06-05
03
提示词工程实践指南
06-05
更多文章>
| Copyright © 2022-2025 Kevin | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式