一个初始化bitmap的小算法

server/2024/12/16 8:13:31/

一个初始化bitmap小算法

  • 根据长度,创建bitmap
    • 初始化bitmap

根据长度,创建bitmap

看到一个开源项目,利用bitmap存储数据,其中创建和初始化过程,比较经典。这里摘录出来,以备后续使用。代码采用的是golang

//数据结构
type bitmap struct {a       []uint64bitsLen int
}
// 入参是数据实际长度
func (bm *bitmap) init(bitsLen int) {a := bm.a//一个long是8字节(64bit),  通过长度bitlen计算出需要多少bit,向上取整//在网络编程中,经常是4字节、8字节对齐,其实是一样的道理wordsLen := (bitsLen + 63) / 64 a = slicesutil.SetLength(a, wordsLen)bm.a = abm.bitsLen = bitsLen
}

初始化bitmap

func (bm *bitmap) setBits() {a := bm.a// 把bit位全部设置为1,即设置成-1, 因为是无符号的,-1就是最大值for i := range a {a[i] = ^uint64(0)}// 这个地方,模除,实际上计算出多余的,不需要的bit位tailBits := bm.bitsLen % 64// 将多余不需要使用的bit位设置成0if tailBits > 0 && len(a) > 0 { //将末尾用不到的bitmap,设置成0// Zero bits outside bitsLen at the last worda[len(a)-1] &= (uint64(1) << tailBits) - 1}
}

http://www.ppmy.cn/server/150570.html

相关文章

Sentinel一分钟

前置 Qps&#xff1a;每秒查询率 吞吐量&#xff1a;指系统在单位时间内处理请求的数量 资源&#xff1a;我们代码中的 Java 方法,一段代码&#xff0c;或者一个接口 限流 核心&#xff1a; 对资源(url或其他)进行限流可对资源和来源进行限流可调用openapi自动生成规则或平…

国内CentOS使用yum安装docker和docker-compose

安装docker 安装需要的软件包&#xff0c; yum-util 提供yum-config-manager功能&#xff0c;另两个是devicemapper驱动依赖 yum install -y yum-utils device-mapper-persistent-data lvm2下载yum源采用阿里云的镜像源 wget -O /etc/yum.repos.d/docker-ce.repo https://mi…

RabbitMQ快速入门 - 生产者和消费者的简单实现

引入依赖 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.7.3</version> </dependency> 编写生产者代码 RabbitMQ 默认的⽤于客户端连接的 TCP 端⼝号是 5672, 需要提前进⾏开…

泷羽sec学习打卡-brupsuite8伪造IP和爬虫审计

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都 与本人无关,切莫逾越法律红线,否则后果自负 关于brupsuite的那些事儿-Brup-FaskIP 伪造IP配置环境brupsuite导入配置1、扩展中先配置python环境2、安…

3D 生成重建030-SV3D合成环绕视频以生成3D

3D 生成重建030-SV3D合成环绕视频以生成3D 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 论文提出了Stable Video 3D (SV3D)——一个用于生成围绕三维物体的高分辨率图像到多视角视频的潜在视频扩散模型。最近关于三维生成的文献提出了将二维生成模型应用于新视图合成…

小程序开发中的插件生态与应用-上

更多精彩内容都在公zhong号&#xff1a;小白的大数据之旅 在小程序的开发过程中&#xff0c;插件作为扩展功能、提升效率的重要工具&#xff0c;扮演着不可或缺的角色。它们不仅能够帮助开发者快速集成复杂的功能模块&#xff0c;还能优化开发流程&#xff0c;缩短项目周期。 …

基于小程序实现日历课表、排班表、月份切换、快捷周切换、自定义课程内容、课程颜色、Mock数据开箱即用

目录 引言小程序开发背景本文目标:实现日历课表/排班表适用场景:学生课表、员工排班、日程安排等需求分析支持日历视图和课表/排班视图可以查看、添加、编辑、删除课表/排班项支持按周、月查看总结说明参考代码数据Mock引言 本文将介绍如何基于小程序实现一个日历课表和排班表…

数据结构题集-第三章-栈和队列-Ackerman函数

Ackerman函数 说明3.27 已知Ackerman函数的定义如下&#xff08;1&#xff09;递归算法如下&#xff08;2&#xff09;非递归算法如下&#xff08;3&#xff09; a k m ( 2 , 1 ) akm(2,1) akm(2,1)时栈的变化过程如下 说明 本文参照严蔚敏《数据结构(C语言版)题集》一书中包含…