其他
微信公众号:小梁编程汇点击👆🏻,关注作者可了解更多技术干货因未开通留言,问题或建议,请私信留言大家好,我是小梁。前段时间在网上看到一篇关于过滤器的文章,感觉非常硬核。又因为这个知识点是后台开发中必知必会的技能点,所以分享给大家,一起学习,共同进步!原文地址https://coolshell.cn/articles/17225.html下面是正文。对于海量数据处理业务,我们通常需要一个索引数据结构,用来帮助查询,快速判断数据记录是否存在,这种数据结构通常又叫过滤器(filter)。考虑这样一个场景,上网的时候需要在浏览器上输入URL,这时浏览器需要去判断这是否一个恶意的网站,它将对本地缓存的成千上万的URL索引进行过滤,如果不存在,就放行,如果(可能)存在,则向远程服务端发起验证请求,并回馈客户端给出警告。索引的存储又分为有序和无序,前者使用关联式容器,比如B树,后者使用哈希算法。这两类算法各有优劣:比如,关联式容器时间复杂度稳定O(logN),且支持范围查询;又比如哈希算法的查询、增删都比较快O(1),但这是在理想状态下的情形,遇到碰撞严重的情况,哈希算法的时间复杂度会退化到O(n)。因此,选择一个好的哈希算法是很重要的。时下一个非常流行的哈希索引结构就是bloom