您的位置 首页 > 科技

布隆过滤器 如何减少布隆过滤器的误报率?

布隆过滤器

如何减少布隆过滤器的误报率?

如何减少布隆过滤器的误报率?

定义布隆过滤器一般会有两个构造参数,一个代表存储数据的数量,另一个代表允许的错误率,定义的时候把错误率设小点。

数据穿透是什么?

缓存穿透:缓存和数据库中都没有的数据,而用户(黑客)不断发起请求。
例子
我们数据库的 id 都是从 1 自增的,如果发起 id-1 的数据或者 id 特别大不存在的数据,这样的不断攻击导致数据库压力很大,严重会击垮数据库。
解决
1)增加校验。比如用户鉴权,参数做校验,不合法的校验直接 return,比如 id 做基础校验,idlt0 直接拦截;
2)布隆过滤器。Redis 里还有一个高级用法布隆过滤器(Bloom Filter)这个也能很好的预防缓存穿透的发生。
它的原理也很简单,就是利用高效的数据结构和算法快速判断出你这个 Key 是否在数据库中存在,不存在你 return 就好了,存在你就去查 DB 刷新 KV 再 return。

零基础学爬虫大概多久啊?

时间不是确定的,一定得有足够的编码经验,从基础小示例练起,先能复现别人的案例,在尝试自己创意一些具体实现,逐步精进。

看你计算机基础知识扎实不扎实,首先爬虫的基础知识是网络基础知识,需要对TCP、IP有一定的知识了解,还需要熟悉HTTP协议。这些熟悉之后其实你不需要了解爬虫框架也能开发爬虫了,当然你是初学者,估计还到达不了自己创造一个框架的能力。你可以选择一门你熟悉的编程语言进行入门,目前做爬虫最流行的语言有python、java、nodejs、C、C 等。你可以选择一个自己喜欢的语言进行入手,然后访问github,输入对应的关键词进行搜索,打开star多的进行学习了解,并按照文档进行操作实践。学习爬虫还需要了解正则表达式这些知识方便文档分析和提取。另外为了防止重复抓,需要用到布隆过滤器这些提升处理速度,因为爬到的内容较多,还需要学习一下如何做大数据存储,找一些存储解决方案进行学习,譬如redis、mongoDb等

相关文章