自定义布隆过滤器

import java.util.BitSet;
import java.util.Objects;public class MyBloomFilter {//位数组的大小private static final int DEFAULT_SIZE=2<<24;//创建6个不同的哈希函数private static final int[] SEEDS=new int[]{3,13,46,71,91,134};//位数组private BitSet bits=new BitSet(DEFAULT_SIZE);//包含6个hash函数的数组private SimpleHash[] func=new SimpleHash[SEEDS.length];//初始化多个包含hash函数的类的数组,每个类中的hash函数都不一样public MyBloomFilter(){for (int i=0;i< SEEDS.length;i++){func[i]=new SimpleHash(DEFAULT_SIZE,SEEDS[i]);}}//将元素添加到位数组public void add(Object value){for (SimpleHash f:func){bits.set(f.hash(value),true);}}//判断指定元素是否存在于位数组public boolean contains(Object value){boolean ret=true;for (SimpleHash f: func){ret=ret&& bits.get(f.hash(value));}return ret;}public static class SimpleHash{private int cap;private int seed;public SimpleHash(int cap, int seed){this.cap=cap;this.seed=seed;}public int hash(Object o ){int h;return (o==null)?0:Math.abs(seed * (cap - 1) & ((h = o.hashCode()) ^ (h >>> 16)));}}}
public class Main {public static void main(String[] args) {String value1 = "https://javaguide.cn/";String value2 = "https://github.com/Snailclimb";MyBloomFilter filter=new MyBloomFilter();System.out.println(filter.contains(value1));System.out.println(filter.contains(value2));filter.add(value1);filter.add(value2);System.out.println(filter.contains(value1));System.out.println(filter.contains(value2));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/88110.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言中常见的面试题

解释C语言中的基本数据类型,并举例说明它们的用法和限制。描述C语言中的变量和常量的定义方法,以及它们的作用和区别。解释C语言中的数组和字符串,并说明它们的定义方法和使用注意事项。描述C语言中的循环结构和控制语句,并举例说明它们的用法和限制。解释C语言中的函数和函…

递归与递推

92. 递归实现指数型枚举 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N 16;int n; int st[N];void dfs(int u){if(u>n){for(int i1;i<n;i){if(st[i] 1)printf("%d &quo…

CRM客户管理系统英文专业版

外资公司日常沟通的语言以英文为主&#xff0c;业务往来也是涉及到国内外&#xff0c;专业的英文版CRM系统很适合这样的业务团队&#xff0c;尤其CRM供应商是国际化企业&#xff0c;在海外也有分公司、办事处。 多语言 ZOHO支持多语种如英语、汉语、日语等28种语言&#xff0…

MySQL基础篇-函数

目录 1.字符串函数 2.数值函数 3.日期函数 4.流程函数 5.小结 在MySQL中&#xff0c;函数是一种数据库对象&#xff0c;用于执行特定的操作或计算&#xff0c;并返回结果。函数通常用于查询、数据处理和转换&#xff0c;以及在SQL语句中执行其他操作。MySQL提供了许多内置函…

linux驱动之input子系统简述

文章目录 一、什么是input子系统二、内核代码三、代码分析 一、什么是input子系统 Input驱动程序是linux输入设备的驱动程序&#xff0c;我们最常见的就按键&#xff0c;触摸&#xff0c;插拔耳机这些。其中事件设备驱动程序是目前通用的驱动程序&#xff0c;可支持键盘、鼠标…

Go基础语法:list

概述 container/list包实现了基本的双向链表功能&#xff0c;包括元素的插入、删除、移动功能 链表元素 链表中元素定义如下&#xff1a; type Element struct {Value interface{} }func (e *Element) Next() *Element func (e *Element) Prev() *Element通过Value属性来获…

C++ -- IO流

目录 C语言的输入与输出 CIO流 C标准IO流 C文件IO流 文件常见的打开方式如下 以二进制的形式操作文件 以文本的形式操作文件 读写结构体 stringstream的简单介绍 C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输…

零基础学空手道_3_空手道的站姿(上)

欢迎回来一起学习刚柔流空手道。 讲一些比较严肃的内容&#xff0c;就是礼仪和站姿。 空手道一开始不是要学习怎么打&#xff0c;而是要学习怎么去尊重别人和不打。所以礼仪很重要。 一切事情都是以礼仪开始&#xff0c;以礼仪结束。这叫以理始以理终。 空手道也是这样&#xf…

MySQL - DML数据增删改

功能介绍&#xff1a; DML&#xff08;Data Manipulation Language&#xff09;数据操作语言&#xff0c;用来对数据库中表的数据记录进 行增、删、改操作。 添加数据&#xff08;INSERT&#xff09; 基本语法&#xff1a;insert into 表名(字段列表) values (值列表); …

HTML计时事件(JavaScript)网页电子钟+网页计时器

setTimeout("函数","未来指定毫秒后调用函数"); clearTimeout(setTimeout("函数","未来指定毫秒后调用函数")); <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title>…

【问题解决】Android Studio 无法连接手机(荣耀90)无法识别手机usb

问题描述&#xff1a; 使用AS调试的时候遇到一个问题&#xff0c;由于是重装后的电脑&#xff0c;什么都没配置&#xff0c;但是两个旧手机都在安装SDK tools里的Google usb driver后直接连上AS&#xff0c;而我的新手机却死活连不上&#xff0c;查了一下午&#xff0c;啥方法都…

前端架构师之09_JavaScript_BOM

1 什么是 BOM 对象 BOM&#xff1a;Brower Object Model&#xff0c;指的是浏览器对象模型。 BOM 用来操作浏览器窗口及窗口上的控件&#xff0c;实现用户和页面的动态交互。 浏览器对象&#xff1a;浏览器提供的一系列内置对象的统称。 BOM 浏览器对象模型&#xff1a;各内…

Redis原理(一):Redis数据结构(上)

文章目录 1、 Redis数据结构-动态字符串2、 Redis数据结构-intset3、 Redis数据结构-Dict4、 Redis数据结构-ZipList5、 Redis数据结构-ZipList的连锁更新问题6、 Redis数据结构-QuickList1、 Redis数据结构-动态字符串 我们都知道Redis中保存的Key是字符串,value往往是字符串…

MongoDB(二)基础操作 创建、删除,查询等

mongodb有一个特点&#xff0c;如果某个库&#xff0c;库下面没数据&#xff08;mongodb成集合&#xff09;&#xff0c;该库等于不存在的 mongodb只要创建一个库&#xff0c;在库下写入数据&#xff0c;该库才会生成 mongoshe [-hhost -pxxx] 创建数据库 use 数据库名 # 如果…

Android - Monkey 测试应用出现Crash报错IllegalStateException

问题描述 平时使用Lottie动画都是正常的&#xff0c;没出过这个crash问题&#xff0c;看下的报错信息&#xff0c;代码中文件夹也设置了&#xff0c;没看出来问题。 AndroidRuntime: java.lang.IllegalStateException: You must set an images folder before loading an imag…

c语言常见字符函数、内存函数(详讲)

前言&#xff1a; 其实在c语言当中是没有字符串这一概念的&#xff0c;不像c里面有string类型用来存放字符串。在c语言中我们只能把字符串放在字符串常量以及字符数组中。 1.常见字符串函数 1.1strlen size_t strlen ( const char * str );作用&#xff1a;用来求字符串中 …

C语言 L1-016 查验身份证

L1-016 查验身份证 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&#xff0c;8&#xff0c;4&#xff0c…

【MySQL】基础实战篇(1)—数据库与数据表的操作

创建管理数据库创建数据库查看与选择数据库修改数据库删除数据库 创建管理数据表创建数据表查看数据修改数据表删除数据表 创建管理数据库 创建数据库 语法&#xff1a; CREATE DATABASE 数据库名称;注&#xff1a; 在同一个数据库服务器上必须是唯一的&#xff0c;不允许存…

c++模版元编程,基于递归的编程

基于递归的模版元编程允许在模版中进行递归调用&#xff0c;以便在编译时生成更复杂的代码。这种技术的核心思想是将问题分解为一个个较小的子问题&#xff0c;并通过递归地调用模版来处理它们。 模版元编程的基本概念和原理&#xff1a; 模版元编程是一种利用C模版系统在编译时…

人工智能的未来:从 Jetson 到 GPT,沙龙见闻与洞察

前言 在当今数字化时代&#xff0c;人工智能正以惊人的速度改变着我们的生活和工作方式。从智能语音助手到自动驾驶汽车&#xff0c;从智能家居到医疗诊断&#xff0c;人工智能技术已经广泛渗透到各个行业&#xff0c;并为其带来了巨大的变革和创新。越来越多的行业专家、学者…