- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
极客大学算法训练营
第十七课 布隆过滤器、LRU Cache
覃超
Sophon Tech 创始?,前 Facebook ?程师
布隆过滤器 Bloom Filter
HashTable + 拉链存储重复元素
John Smith
000
001
002
×
× Lisa Smith 521-8976
×
Lisa Smith
151
×
John Smith 521-1234
Sam Doe
152
153
× Sandra Dee 521-9655
Sandra Dee
154
×
× Ted Baker 418-4165
Ted Baker
253
254
255
×
×
× Sam Doe 521-5030
Bloom Filter vs Hash Table
一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索
一个元素是否在一个集合中。
优点是空间效率和查询时间都远远超过一般的算法,
缺点是有一定的误识别率和删除困难。
布隆过滤器示意图
存储元素 Bloom Filter 测试元素
A
A
True positive
C
True negative
E
B
True positive
案例
1. 比特币网络
2. 分布式系统(Map-Reduce) — Hadoop、search engine
3. Redis 缓存
4. 垃圾邮件、评论等的过滤
科普:/cpselvis/p/6265825.html
/tianyaleixiaowu/article/details其他实现
1. Python:
/bloom-?lters-introduction-
and-python-implementation/
/jhgg/pybloof
2. Java:
/lovasoa/bloom?lter/blob/master/src/main/
java/BloomFilter.java
/Baqend/Orestes-Bloom?lter
Cache 缓存
1. 记忆
2. 钱包 - 储物柜
3. 代码模块
CPU Socket
Core 0 Core 1 Core 2 Core 3
L1 D-Cache L1 D-Cache L1 D-Cache L1 D-Cache
L1 I-Cache L1 I-Cache L1 I-Cache L1 I-Cache
L2 Cache L2 Cache L2 Cache L2 Cache
L3 Cache
https://www.sqlpassion.at/archive/2018/01/06/understanding-
the-meltdown-exploit-in-my-own-simple-words/
LRU Cache
? 两个要素: 大小 、替换策略
? Hash Table + Double LinkedList
? O(1) 查询
O(1) 修改、更新
LRU cache 工作示例
A B C D E F C G
Retention
Front
A B C D E F C G
A B C D E F C
A B C D E F
Rear
A
B
A
C
B
D
B
E
D
A B
被移除 被移除
替换策略
? LFU - least frequently used
? LRU - least recently used
替换算法总览:
s
LRU Cache — J ava
public class LRUCache {
private MapInteger, Integer map;
public LRUCache(int capacity) {
map = new LinkedCappedHashMap(capacity); }
public int get(int key) {
if(!map.containsKey(key)) { return -1; }
return map.get(key);
}
public void put(int key, int value) {
map.put(key,value); }
private static class LinkedCappedHashMapK,V extends LinkedHashMapK,V {
int maximumCapacity;
LinkedCappedHashMap(int maximumCapacity) {
super(16, 0.75f, true);
this.maximumCapacity = maximumCapacity; }
protected boolean removeEldestEntry(Map.Entry eldest) {
您可能关注的文档
- 心理咨询师3级资料自我效能控制的实施下册.docx
- 心理咨询师3级资料综合评审表(直接打印,手写填写,一份).doc
- 心理咨询师3级资料综合评审表范文(红色字体均为自己手写).doc
- 心理咨询师3级资料综合与特殊文字案例:三级,第四次(答案)(1).docx
- 心理咨询师3级资料综合与特殊文字案例:三级,第四次(答案).docx
- 心理咨询师3级资料综合与特殊文字案例:三级,第四次(题目)(1).docx
- 心理咨询师3级资料综合与特殊文字案例:三级,第四次(题目).docx
- 心理咨询师3级资料最新武汉国考资料准备要求.docx
- 心理咨询师3级资料20161219发展心理学之1.docx
- 心理咨询师3级资料案例报告(论文范文).doc
文档评论(0)