本程序主要是BloomFilter算法的简化实现
因为C#非安全代码无法直接分配内存块,使用了int型数组代替,暂时为了简单没有使用位运算,比位运算消耗内存多16倍。
算法原理:
其首先申请一块大内存,并把内存中的所有位设置为0。对每一个URL,用10个不同的hash函数计算其hash值,并把这些hash与内存bit数大小取模,把取模后的10个数在内存对应的位置设为1。在设置前会判断该位是否被设置。如果10个hash值对应的bit位全被设置,则认为该URL已存在。该算法在web archive中实现。据其统计,平均为每个URL分配两个字节,可以达到零冲突。
本程序算法:
创建一个大小固定的数组,平均分为8段,前4段存储HASH函数(MD5)URL后的对应值,转换每4个字节为int,以转换后的int%每段数组的元素数,取模后的值对应的位置元素设置为1。后4段存储HASH函数(SHA1)URL后的对应值,具体算法相同。
如果在保存一个URL时,在8段数组中对应位置都已经被置1,则该URL已经存在,如有任意1位置没被置1,则该URL不存在。
没有合适的资源?快使用搜索试试~ 我知道了~
Url消重算法(BloomFilter)
共13个文件
exe:3个
cs:3个
txt:2个
4星 · 超过85%的资源 需积分: 9 183 下载量 82 浏览量
2008-02-12
15:19:34
上传
评论 1
收藏 19KB RAR 举报
温馨提示
本程序主要是BloomFilter算法的简化实现<br>因为C#非安全代码无法直接分配内存块,使用了int型数组代替,暂时为了简单没有使用位运算,比位运算消耗内存多16倍。<br>算法原理:<br>其首先申请一块大内存,并把内存中的所有位设置为0。对每一个URL,用10个不同的hash函数计算其hash值,并把这些hash与内存bit数大小取模,把取模后的10个数在内存对应的位置设为1。在设置前会判断该位是否被设置。如果10个hash值对应的bit位全被设置,则认为该URL已存在。该算法在web archive中实现。据其统计,平均为每个URL分配两个字节,可以达到零冲突。<br>本程序算法:<br>创建一个大小固定的数组,平均分为8段,前4段存储HASH函数(MD5)URL后的对应值,转换每4个字节为int,以转换后的int%每段数组的元素数,取模后的值对应的位置元素设置为1。后4段存储HASH函数(SHA1)URL后的对应值,具体算法相同。<br>如果在保存一个URL时,在8段数组中对应位置都已经被置1,则该URL已经存在,如有任意1位置没被置1,则该URL不存在。
资源推荐
资源详情
资源评论
收起资源包目录
12_151045_testbloomfilter.rar (13个子文件)
testBloomFilter
BloomFilter.cs 3KB
bin
Debug
testBloomFilter.exe 16KB
testBloomFilter.vshost.exe 6KB
testBloomFilter.pdb 16KB
obj
testBloomFilter.csproj.FileList.txt 166B
Debug
testBloomFilter.exe 16KB
TempPE
testBloomFilter.pdb 16KB
testBloomFilter.csproj 2KB
Properties
AssemblyInfo.cs 1KB
Program.cs 1KB
testBloomFilter.suo 13KB
testBloomFilter.sln 934B
readme.txt 833B
共 13 条
- 1
资源评论
- xiaopangpangdudu2012-10-18不知道是我的软件有问题还是什么问题,就是打不开
- 霸器晚成2014-05-05当实例参看的价值............
haidaocht
- 粉丝: 10
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功