布隆过滤器:实现代码
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,#pragma once#include #include "BitMap.h"struct HashFunc1{ size_t BKDRHash(const char *str)
千家信息网最后更新 2025年12月03日布隆过滤器:实现代码
#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安全错误
数据库的锁怎样保障安全
可笑视频软件开发
关于学生网络安全的相关知识
数据库设计字段的长度
网络安全有个问号
日立服务器接电
软件开发打杂
景点软件开发
MM自拍软件开发
数据库要打代码吗
ema数据库
大海战烈焰与重生服务器端
双路服务器内存共享
学校数据库下载sci要钱吗
软件开发购买的测试设备
广州专业软件开发平均价格
设置服务器安全选项
access数据库优化
数据库原理及应用指导
在线mysql服务器
把客户端ip转换成服务器ip
职业资格 网络安全防护
网易服务器炸了2021.12
关于网络安全检查整改的通报
网络安全愿景
应急厅网络安全建设
数据库视图及安全性
软件开发项目设计与概预算
江苏三加三网络技术有限公司
涪陵区综合软件开发流程标志
斑马条码打印机数据库连接