当前位置: 首页 > news >正文

Golang bitset 基本使用

安装:

go get github.com/bits-and-blooms/bitset

下面代码把fmtx换成fmt就行

//------------基本操作------------//构建一个64bit长度的bitsetb := bitset.New(64)//放入一个数b.Set(10)fmtx.Println("add-10:", b.DumpAsBits()) // 0000000000000000000000000000000000000000000000000000010000000000//删除一个值b.Set(12)b.Clear(10)fmtx.Println("del-10:", b.DumpAsBits()) //0000000000000000000000000000000000000000000000000001000000000000//测试b.Set(2).Set(6)fmtx.Println("add-2-6:", b.DumpAsBits())                     //0000000000000000000000000000000000000000000000000001000001000100fmtx.Println("test2:", b.Test(2), " test5:", b.Test(5))      //[test2: true  test5: false]b.Set(2)                                                     //重复设置fmtx.Println("test2:", b.Test(2), " adds2:", b.DumpAsBits()) //[test2: true  adds2: 0000000000000000000000000000000000000000000000000001000001000100.]//----------------指定位置操作---------------//指定位置操作a := &bitset.BitSet{}a.Set(3)//在指定位置插入0a.InsertAt(3)fmtx.Println("指定位置插入0:", a.DumpAsBits()) //0000000000000000000000000000000000000000000000000000000000010000//在指定位置需改a.SetTo(4, false)fmtx.Println("指定位置4修改false:", a.DumpAsBits()) //0000000000000000000000000000000000000000000000000000000000000000a.Set(63)fmtx.Println("指定位置63修改true:", a.DumpAsBits()) //1000000000000000000000000000000000000000000000000000000000000000a.Set(3).DeleteAt(3)                          //删除了就全都往右移了fmtx.Println("指定位置3删除:", a.DumpAsBits())      //0100000000000000000000000000000000000000000000000000000000000000a.Set(63)fmtx.Println("再指定位置63:", a.DumpAsBits()) //1100000000000000000000000000000000000000000000000000000000000000//---------------两个bitsets交互----------------k := &bitset.BitSet{}j := &bitset.BitSet{}k.Set(1).Set(3).Set(5)j.Set(7).Set(3).Set(5)//交集fmtx.Println(k.Intersection(j)) //{3,5}//并集fmtx.Println(k.Union(j)) //{1,3,5,7}//差集fmtx.Println(k.Difference(j)) //{1}//全等fmtx.Println(k.Equal(j)) // false//遍历arr := bitset.New(64)arr.Set(1).Set(3).Set(5).Set(7)for i, e := arr.NextSet(0); e; i, e = arr.NextSet(i + 1) {fmtx.Println(i) // 1 3 5 7}

布隆过滤器-假阳性率计算公式
在这里插入图片描述
可知在哈希函数的个数k一定的情况下:

  • 位数组长度m越大,假阳性率越低;
  • 已插入元素的个数n越大,假阳性率越高。

相关文章:

Golang bitset 基本使用

安装: go get github.com/bits-and-blooms/bitset下面代码把fmtx换成fmt就行 //------------基本操作------------//构建一个64bit长度的bitsetb : bitset.New(64)//放入一个数b.Set(10)fmtx.Println("add-10:", b.DumpAsBits()) // 0000000…...

sql 分组讨论,二级分组(非2个字段分组),使用 窗口函数和普通分组实现

1. 二级分组需求 先按照一个字段分组,在按照 第二个字段分组。之后,如果 这个 二级分组中的数据,是 > 1条的。就筛选出来。 比如: 先按照 站点分组,再按照 设备分组, 即:如果站点上配置了…...

业务中如何过滤敏感词

在我们访问网站的时候,如果发现我们发布的内容有色情暴力的东西等等,会屏蔽掉,这种行为就是过滤敏感词。 从技术层面实现起来,其实比较简单,因为我们输入的内容就是一个大型的字符串,我们要调用某些api来判…...

用服务器搭建网站需要做什么

网站建设是一个广义的术语,涵盖了许多不同的技能和学科中所使用的生产和维护的网站。不同领域的网页设计,网页图形设计,界面设计,创作,其中包括标准化的代码和专有软件,用户体验设计和搜索引擎优化。许多人…...

clickhouse 删除操作

OLAP 数据库设计的宗旨在于分析适合一次插入多次查询的业务场景,市面上成熟的 AP 数据库在更新和删除操作上支持的均不是很好,当然 clickhouse 也不例外。但是不友好不代表不支持,本文主要介绍在 clickhouse 中如何实现数据的删除&#xff0c…...

C 语言中,「.」与「->」有什么区别?

使用“.”的话,只需要声明一个结构体。格式是结构体类型名结构体名。然后通过结构体名加上“.”再加上域名,就可以引用结构体的域了。因为结构体的内存是自动分配的,就像使用int a;一样。而使用“->”的话,需要声明一个结构体的…...

github pages 用法详解 发布自己的网站

github pages 基础用法 URL 规则 假设你的 github 帐号为 mygithub,需要发布的仓库名为 myrepo,那么 pages 的 URL 为: https://mygithub.github.io/myrepo 添加内容 用任意编辑器写好(或者生成)标准的网页内容&a…...

坤简炫酷的JQuery轮播图插件

介绍: 找到了一个炫酷的JQuery轮播图插件,只需要配置三四行代码就可以实现很多二维三维炫酷的切换效果。 视频效果及教程: https://www.bilibili.com/video/BV1Fu4y1d776/ 代码: https://github.com/w-x-x-w/AwesomeWeb 使用…...

C# 条件编译

C# 条件编译 C# 条件编译:根据不同的需求,编译生成不同的程序版本,条件编译是一种编译预处理命令,它是在编译代码之前对源代码进行处理。它可以根据条件,决定是否编译某段代码 条件编译的三种形式: 第一种…...

IntelliJ IDEA如何重新弹出git身份验证窗口

1、点击File菜单—>点击Settings—>点击Appearance & Behavior—>点击System Settings—>点击Passwords—>选中Do not save, forget passwords after restart—>点击Apply—>点击OK,如下所示: 2、重启IntelliJ IDEA—>通过g…...

【雕爷学编程】Arduino动手做(200)---WS2812B幻彩LED灯带4

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…...

【雕爷学编程】Arduino动手做(201)---DFRobot 行空板03

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…...

Spring中Bean的“一生”(生命周期)

文章目录 一、图解二、文字解析总结 一、图解 >注:处于同一行的执行顺序是从左往右 二、文字解析 SpringBean的生命周期总体分为四个阶段:实例化>属性注入>初始化>销毁 Step1 实例化Bean:根据配置文件中Bean的定义,…...

安卓:LitePal操作数据库

目录 一、LitePal介绍 常用方法: 1、插入数据: 2、更新数据: 3、删除数据: 4、查询数据: 二、LitePal的基本用法: 1、集成LitePal: 2、创建LitePal配置文件: 3、创建模型类…...

【JavaEE初阶】了解JVM

文章目录 一. JVM内存区域划分二. JVM类加载机制2.1 类加载整体流程2.2 类加载的时机2.3 双亲委派模型(经典) 三. JVM垃圾回收机制(GC)3.1 GC实际工作过程3.1.1 找到垃圾/判定垃圾1. 引用计数(不是java的做法,Python/PHP)2. 可达性分析(Java的做法) 3.1.2 清理垃圾1. 标记清除2…...

基于vue2.0和elementUi的vue农历日期组件vue-jlunar-datepicker(插件)

vue-jlunar-datepicker(插件) vue实现农历日历插件——vue-jlunar-datepicker插件 这个插件本身是基于vue2.0和elementUi框架来实现的。 安装 vue-jlunar-datepicker 插件 npm install vue-jlunar-datepicker --save // 如果安装过程中,出现…...

Python爬虫——selenium_元素定位

元素定位:自动化要做的就是模拟鼠标和键盘来操作这些元素,点击,输入等等。操作这些元素前首先要找到它们,WebDriver提供很多定位元素的方法 from selenium import webdriver# 创建浏览器对象 path files/chromedriver.exe brows…...

短视频内容平台(如TikTok、Instagram Reel、YouTube Shorts)的系统设计

现在,短视频内容已成为新趋势,每个人都在从TikTok、Instagram、YouTube等平台上消费这些内容。让我们看看如何为TikTok创建一个系统。 这样的应用程序看起来很小,但在后台有很多事情正在进行。以下是相关的挑战: •由于该应用程序…...

【git】Git 回退到指定版本:

文章目录 方法一: 使用 git reset 命令方法二:使用 git revert 命令方法三:使用 git checkout 命令常见的错误及其解决办法如下: 方法一: 使用 git reset 命令 命令可以将当前分支的 HEAD 指针指向指定的提交,从而回退代码到指定版…...

kibana+nginx配置密码 ubuntu

JAVA进阶之路-nginx设置密码 Kibana——通过Nginx代理Kibana并实现登陆认证 需要配置一下nginx文件 nginx配置文件详解 密码生成安装软件 apt install apache2-utils...

C#实战:基于CIP协议高效读写罗克韦尔ControlLogix PLC数据

1. 从零理解CIP协议与ControlLogix PLC 第一次接触罗克韦尔PLC时,我被CIP协议这个概念卡住了三天。后来才发现,它就像工业设备间的"普通话"——Common Industrial Protocol(通用工业协议)的缩写。这个协议最妙的地方在于…...

不止于登录:用钉钉扫码打通Vue3后台与企微/飞书(OAuth2.0统一方案)

构建企业级统一身份认证中台:Vue3多平台扫码登录架构设计 当企业同时使用钉钉、企业微信和飞书作为办公平台时,如何为Vue3后台系统设计一套统一的扫码登录方案?这个问题困扰着许多中大型企业的技术团队。我曾参与过某跨国企业的身份认证系统重…...

虚幻引擎视频与序列帧播放实战指南:官方文档解析与应用

1. 虚幻引擎视频播放全流程解析 第一次在虚幻引擎里导入视频时,我对着黑屏的媒体播放器发呆了半小时。后来才发现原来漏掉了关键的解码器设置。视频播放看似简单,但实际开发中藏着不少门道。 官方文档推荐的FileMediaSource组件是播放本地视频的基础。我…...

数据的基本操作——去重

duplicated() DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行。具体用法如下:In[1]: df DataFrame({k1:[one]*3 [two]*4, k2:[1,1,2,3,3,4,4]}) In[2]: df Out[2]: k1 k2 0 one 1 1 one 1 2 one 2 3 two 3 4 two …...

UL4200A是美国针对纽扣电池安全标准

UL 4200A-2023 是美国针对含纽扣 / 硬币电池消费品的强制性安全标准(16 CFR 1263),核心是防儿童开启 防误吞,2024 年 3 月 19 日起美国市场强制合规。一、标准核心信息全称:ANSI/UL 4200A-2023《含纽扣 / 硬币电池消费…...

2026年心脑血管疾病专科风云榜:谁是健康守护者?

随着现代生活节奏的加快和生活方式的变化,心脑血管疾病的发病率逐年上升。根据《中国心血管健康与疾病报告2025》显示,我国40岁以上人群中心脑血管疾病患者已超过3亿人。面对这一严峻形势,如何找到值得信赖的心脑血管疾病专科医院&#xff0c…...

MySQL主从复制的binlog格式怎么选_ROW与MIXED格式优缺点分析

必须用ROW模式当业务要求主从100%一致时,如金融账务、订单状态、实时风控等场景,因其记录行级变更而非SQL语句,可彻底规避NOW()、UUID()等非确定性函数导致的主从不一致问题。什么时候必须用 ROW 模式如果你的业务要求主从数据 100% 一致&…...

MambaOut部署指南:本地、云端和边缘设备的完整解决方案

MambaOut部署指南:本地、云端和边缘设备的完整解决方案 【免费下载链接】MambaOut MambaOut: Do We Really Need Mamba for Vision? (CVPR 2025) 项目地址: https://gitcode.com/gh_mirrors/ma/MambaOut MambaOut是一个高效的计算机视觉模型,它通…...

EMQX 5.8.8 多机集群部署避坑指南:为什么你的Docker容器总连不上?

EMQX 5.8.8 多机集群部署避坑指南:为什么你的Docker容器总连不上? 当你第一次尝试在Docker中部署EMQX多机集群时,可能会遇到各种令人抓狂的问题:节点无法通信、集群状态异常、Dashboard无法访问...这些问题往往源于对Erlang分布式…...

手把手教你用Qwen-Image:小白也能轻松制作带文字的创意海报

手把手教你用Qwen-Image:小白也能轻松制作带文字的创意海报 你是不是也遇到过这样的烦恼?想为活动做个海报,脑子里有画面,但打开设计软件就傻眼——字体怎么选?排版怎么弄?背景图去哪找?折腾半…...