布隆过滤器:实现代码
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,#pragma once#include #include "BitMap.h"struct HashFunc1{ size_t BKDRHash(const char *str)
千家信息网最后更新 2025年02月04日布隆过滤器:实现代码
#pragma once#include#include "BitMap.h"struct HashFunc1{ size_t BKDRHash(const char *str) { register size_t hash = 0; while (size_t ch = (size_t)*str++) { hash = hash * 131 + ch; // 也可以乘以31、131 return hash; } } size_t operator()(const string& s) { return BKDRHash(s.c_str()); }};struct HashFunc2{ size_t SDBMHash(const char *str) { register size_t hash = 0; while (size_t ch = (size_t)*str++) { hash = 65599 * hash + ch; } return hash; } size_t operator()(const string& s) { return SDBMHash(s.c_str()); }};struct HashFunc3{ size_t RSHash(const char *str) { register size_t hash = 0; size_t magic = 63689; while (size_t ch = (size_t)*str++) { hash = hash * magic + ch; magic *= 378551; } return hash; } size_t operator()(const string& s) { return RSHash(s.c_str()); }};struct HashFunc4{ size_t APHash(const char *str) { register size_t hash = 0; size_t ch; for (long i = 0; ch = (size_t)*str++; i++) { if ((i & 1) == 0) { hash ^= ((hash << 7) ^ ch ^ (hash >> 3)); } else { hash ^= (~((hash << 11) ^ ch ^ (hash >> 5))); } } return hash; } size_t operator()(const string& s) { return APHash(s.c_str()); }};struct HashFunc5{ size_t JSHash(const char *str) { if(!*str) return 0; register size_t hash = 1315423911; while (size_t ch = (size_t)*str++) { hash ^= ((hash << 5) + ch + (hash >> 2)); } return hash; } size_t operator()(const string& s) { return JSHash(s.c_str()); }};template class BloomFilter{public: BloomFilter(size_t size) :_bitMap(size) ,_capacity(size) {} void Set(const K& key) { size_t index1 = __HashFunc1()(key); size_t index2 = __HashFunc2()(key); size_t index3 = __HashFunc3()(key); size_t index4 = __HashFunc4()(key); size_t index5 = __HashFunc5()(key); cout< countMap; /*vector _v;*/};void Test1(){ BloomFilter<> bf(-1); bf.Set("http://www.cnblogs.com/-clq/archive/2012/05/31/2528153.html"); bf.Set("http://www.cnblogs.com/-clq/archive/2012/05/31/2528154.html"); bf.Set("http://www.cnblogs.com/-clq/archive/2012/05/31/2528155.html"); bf.Set("http://www.cnblogs.com/-clq/archive/2012/05/31/2528156.html"); cout< 以上
代码
过滤器
布隆
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
新浪潮服务器
支持json的数据库
安卓应用软件开发费用
静安区品牌网络技术服务五星服务
计算机网络安全的原理6
网络技术挑战赛是干嘛的
如何建orcle数据库
怎么去澳洲做软件开发
医学数据库coch
dns服务器为什么ping不通
江苏省对网络安全处罚
购买全球ip数据库
数据库source详解
徽盾网络安全南北对抗赛
号码归属地查询数据库
看门狗2怎么进不了服务器
郑州大块互联网科技
江苏网站服务器云主机
怎样制作小程序软件开发
电信dns的服务器地址是多少
微信开发者怎么清除数据库
网络技术真题视频
广州电商软件开发要多少钱
软件开发相关流程
银行网络安全应急演练预案
linuxdhcp服务器方案
联想服务器 bmc
计算机网络技术面试题
数据库最大
服务器日记