一:布隆过滤器:Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positi ...
分类:
其他好文 时间:
2019-12-22 10:54:40
阅读次数:
69
目录: redis是什么?都有哪些使用场景? redis有哪些功能? redis和memecache有什么区别? redis为什么是单线程的? 什么是缓存穿透?怎么解决? redis支持的数据类型有哪些? redis支持的java客户端都有哪些? jedis和 redisson 有哪些区别? 怎么保 ...
分类:
其他好文 时间:
2019-12-16 19:16:27
阅读次数:
77
from .defaults import BLOOMFILTER_BIT, BLOOMFILTER_HASH_NUMBERclass HashMap(object): def __init__(self, m, seed): self.m = m self.seed = seed def hash ...
分类:
其他好文 时间:
2019-12-09 19:40:54
阅读次数:
130
布隆过滤器的概念
布隆过滤器(Bloom Filter)于 1970 年由布隆提出的,是专门 用于检索一个元素是否存在于一个集合中的算法。
你可能会想,判断一个元素是否在集合中,这不就是集合自带的功能吗?
元素数量少的时候的确没问题,但如果有海量元素时就麻烦了,例如千万,甚至上亿个元素,而且每个元素的大小不一,有可能很大,这时集合的空间效率和查询效率都会堪忧。
而布隆过滤器就可以巧妙的解决这个问题,它包括了一个很长的二进制向量和一系列的hash函数,它不会实际存储元素内容,只是在二进制向量中标识这个元素是否存在,而 hash 函数就是用来定位元素的。
分类:
其他好文 时间:
2019-11-27 09:17:20
阅读次数:
95
1.缓存穿透 概念访问一个不存在的key,缓存不起作用,请求会穿透到DB,流量大时DB会挂掉。 解决方案采用布隆过滤器,使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤;访问key未在DB查询到值,也将空值写进缓存,但可以设置较短过期时间。 2.缓存雪崩 概念大量的k ...
分类:
其他好文 时间:
2019-11-23 23:58:19
阅读次数:
120
使用JDK自带的Set集合来进行URL去重,看上去效果不错,但是这种做法有一个致命了缺陷,就是随着采集的URL增多,你需要的内存越来越大,最终会导致你的内存崩溃。那我们在不使用数据库的情况下有没有解决办法呢?布隆过滤器!它就可以完美解决这个问题,布隆过滤器有什么特殊的地方呢?接下来就一起来学习一下布隆过滤器。什么是布隆过滤器布隆过滤器是一种数据结构,比较巧妙的概率型数据结构,它是在1970年由一个
分类:
其他好文 时间:
2019-11-13 19:19:08
阅读次数:
100
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我, 数据结构与算法应该要学习到哪个程度呢? ,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是 零 ...
分类:
编程语言 时间:
2019-11-07 11:24:10
阅读次数:
91
布隆过滤器是什么? 布隆过滤器可以理解为一个不怎么精确的 set 结构,当你使用它的 contains 方法判断某个对象是否存在时,它可能会误判。但是布隆过滤器也不是特别不精确,只要参数设置的合理,它的精确度可以控制的相对足够精确,只会有小小的误判概率 布隆过滤器基本使用 布隆过滤器有二个基本指令, ...
分类:
其他好文 时间:
2019-10-26 01:43:16
阅读次数:
109
最近看流式系统的时候有提到Exactly Once 策略 可以使用布隆过滤器(Bloom Filter) 优化, 所以今天来整理一下与其相关的知识 (非科班, 底子比较薄)。 应用原理: Bloom Filter can return false positives but never false ...
分类:
其他好文 时间:
2019-10-18 22:09:13
阅读次数:
99
一个由1亿个数组成的集合M,数的范围从1~10亿 新来一个数n,如何快速且省内存地判断是否存在M中? 方法一: 将集合M的数用散列表保存,然后对数n判断是否在散列表中即可 消耗内存:假设一个数用4字节保存,1亿个数至少要381M内存,不过由于实际上由于有装载因子,散列冲突解决等,实际内存远远不止38 ...
分类:
其他好文 时间:
2019-10-18 18:49:30
阅读次数:
84