2022.6.26 day2
日常记录
今天早上五点多起来绕着西湖跑了25km的玫瑰线,太热了导致配速很慢。不过总体还是很舒服的,也是完成了一次半马。回来收拾完现在躺在床上不想动,就躺在床上学习了(捂脸)。在看Bloom Filter原理与实战的时候,我就理解了为啥我B站首页推荐为什么不会给我推荐已经看过的视频了。他会先查询准备给我推荐的视频在不在我的历史记录里,如果不在那么肯定不在;如果在也有几率不在,但是他直接不推荐,所以主观上是感受不到重复视频的(貌似是这样)。晚上在看论文。
学习记录
总结昨天问题
见昨天的blog链接: 2022_SummerBlog_001
Redis 布隆(Bloom Filter)过滤器原理与实战
参考链接: 硬核 | Redis 布隆(Bloom Filter)过滤器原理与实战
- 布隆过滤器可以插入元素,但不可以删除已有元素。
删除意味着需要将对应的 k 个 bits 位置设置为 0,其中有可能是其他元素对应的位。
因此 remove 会引入 false negative,这是绝对不被允许的。
- 当布隆过滤器说,某个数据存在时,这个数据可能不存在;当布隆过滤器说,某个数据不存在时,那么这个数据一定不存在。
写作猫
- 降重
- 语法
阅读论文
Cuckoo Filter: Practically Better Than Bloom
看到了2.2 Cuckoo Hash Tables
问题记录
布隆过滤器原理与实战
- 想去复现文章里展示的,但是对Redis不是很了解。轩哥建议了解一下就行,不用复现。
Cuckoo Filter
-
不是很理解指纹和键值对的联系与区别。可以简单理解为指纹的空间复杂度是键值对的一半吗?
-
这个对应关系是怎么来的? k = log2(1/),还有1.44这个值。需要理解吗?
-
如果计数器由4位组成,那么能表示的范围不是16(1111B)嘛?那为什么是4倍呢?
-
没搞懂为什么最多一次
-
弄明白第一点的指纹和键值对应该就能理解这个
问题解决
- 指纹就是一种数据,然后去查键值对啥意思,再康康文章啥的,这问题明显你没看懂文章
- 这俩数值有必要看一看的,后文有详细推导
- 你没理解CBF的定义,这一段如果没看懂你可以自己找一点中文的资料
- 可以思考一下为什么叫Blocked,这个和底层的存储关系比较大一些
- d-left你也没搞懂
总结:都正常,基本都是你没看懂文章,然后如果文章里有些东西讲的比较简单 是有必要你自己找一些额外的你能够看得懂的资料的。我当时也在这些概念上花了不少时间的,刚入门概念分析挺重要的
反思
今天开始看论文了,感觉进度有点慢啊(头秃)。看了一晚上才看了不到三分之一吧,不知道是不是因为刚开始看的原因。