布隆过滤器 过程详解

布隆过滤器主要用于解决大数据量下的去重问题,如爬虫URL去重和黑名单检测。通过创建比特数组并利用多个哈希函数定位元素位置,标记已存在的URL。虽然可能会出现误判,但可以通过调整数组大小和哈希函数数量来降低错误率。计算公式涉及到比特数组大小m、样本量n和预期失误率p,以及实际失误率p、样本量n、比特数组大小m和哈希函数数量k的关系。
摘要由CSDN通过智能技术生成

布隆过滤器是用来处理爬虫去重问题或者黑名单问题的。

爬虫去重问题:将访问过的URL存储在数据库中,对于新进的URL,判断数据库中是否存在这个URL。(URL的量很大)

黑名单问题:假设给定100亿个URL是黑名单,用户输入一个URL,判断这个URL是否在黑名单中存在。

我们以黑名单问题举例:

布隆过滤器:

1:首先准备一个比特类型的数组,数组的大小为m。

如何准备呢?

我们知道,一个整型的大小是四个字节,一个字节是八个比特,所以一个整型是32个比特。我们可以用一个整型数组来构造出一个比特类型的数组。

假设现在有一个整型数组a[1000],那么它代表大小为1000*32的比特类型的数组。

如何实现这个比特类型的数组呢?

代码如下:

void tuhei(int m)//将比特数组中m位置标记
{
    int intIndex=m/32;
    int bitIndex=m%32;
    arr[intIndex]=(arr[intIndex]|(1<<bitIndex));
}
int main()
{
    int arr[1000];
    memset(arr,0,sizeof(arr));
    tuhei(30000);
}

2:对于每一个黑名单里的URL,我们通过K个哈希函数算出K个哈希值(有可能小于K个),然后把每个哈希值都(%m),对于每个哈希值(%m

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值