极简极速-Bitset (bitmap)实现考勤打卡场景
文章目录
- 1. redis命令行操作bitmap
- 2. RedisTemplate操作bitmap
- 3. Java中的Bitset
1. redis命令行操作bitmap

2. RedisTemplate操作bitmap
bitmap的常见业务场景主要有日活统计(类似的月考勤)、点赞、BloomFilter等,以用户mj考勤统计为例,一个用户一个月的打卡记录用不了32bit(4byte)存储空间,性能也很好:
@Resource
private StringRedisTemplate template;template.opsForValue().setBit("mj",1,true);
template.opsForValue().setBit("mj",2,true);
template.opsForValue().setBit("mj",30,true);
template.opsForValue().setBit("mj",31,true);
// 查看mj本月第三天是否打卡
Boolean ifArrive= template.opsForValue().getBit("mj", 3);
System.out.println(ifArrive);// false
// 统计本月打卡数
Long count = template.execute((RedisCallback<Long>) connection -> connection.bitCount("mj".getBytes(StandardCharsets.UTF_8), 1, 31));
System.out.println(count); // 4
3. Java中的Bitset
直接使用Java的bitset实现考勤打卡,这里数据集存储DB需要转化,如Bitset#toLongArray(),再转为json进行存储。
public static void main(String[] args) {// Key一般为userIdMap<String,BitSet> map=new HashMap(1024);BitSet set = map.getOrDefault("mj",new BitSet(32));set.set(1,true);set.set(2,true);set.set(30,true);set.set(31,true);System.out.println(set.get(3)); // 本月第三天打卡:falseSystem.out.println(set.cardinality());// 本地打卡数:4}
相关文章:
极简极速-Bitset (bitmap)实现考勤打卡场景
文章目录 1. redis命令行操作bitmap2. RedisTemplate操作bitmap3. Java中的Bitset 1. redis命令行操作bitmap 2. RedisTemplate操作bitmap bitmap的常见业务场景主要有日活统计(类似的月考勤)、点赞、BloomFilter等,以用户mj考勤统计为例&am…...
word如何插入图片?3种常用的方法
word作为一款常用的办公软件,不仅可以处理文本内容,还能够轻松地插入图片以丰富文档内容。插入图片可以使文档更具吸引力、可读性和信息传达能力。本文将为您介绍word如何插入图片的3种方法,帮助您在文档中灵活、高效地添加图像元素。 word插…...
Python/C API - 模組,型別,Tuple,例外和引用計數
Python/C API - 模組,型別,Tuple,例外和引用計數 前言Python/C API - Common Object StructuresPyObjectPyMethodDefPyGetSetDef Python/C API - Module ObjectsPyModuleDefPyModule_CreatePyModule_AddObjectPyModule_AddObjectRef Initiali…...
人工智能轨道交通行业周刊-第59期(2023.9.4-9.10)
本期关键词:无锡智慧地铁、无人车站、钢轨打磨、混元大模型、开源大模型 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨道世界…...
ASP.NET Core 中的 MVC架构
MVC 架构 MVC架构把 App 按照逻辑分成三层: Controllers,接收 http request,配合 model,通过http response 返回 view,尽量不做别的事Models, 负责业务逻辑,App 的状态,以及数据处理Views&…...
C# PSO 粒子群优化算法 遗传算法 随机算法 求解复杂方程的最大、最小值
复杂方程可以自己定义,以下是看别人的题目,然后自己来做 以下是计算结果 private void GetMinResult(out double resultX1, out double min){double x1, result;Random random1 new Random(DateTime.Now.Millisecond* DateTime.Now.Second);min 99999…...
网络协议从入门到底层原理学习(三)—— 路由
网络协议从入门到底层原理学习(三)—— 路由 1、简介 路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程 在不同网段之间转发数据,需要有路由器的支持 默认情况下,路由器…...
2023/9/6 -- C++/QT
一、输出流对象cout 1> 该对象是来自于ostream的类对象,功能上类似于printf函数 2> 该类对象本质上调用成员函数插入运算符重载函数 3> 输出数据时,无需使用格式控制符:%d、%c、%s。。。,直接输出即可 4> 换行使用…...
python爬虫,多线程与生产者消费者模式
使用队列完成生产者消费者模式使用类创建多线程提高爬虫速度 https://sc.chinaz.com/tupian/index.html https://sc.chinaz.com/tupian/index_2.html https://sc.chinaz.com/tupian/index_3.html from threading import Thread from queue import Queue import requests from b…...
WordPress 提示“此站点遇到了致命错误”的解决方法
WordPress 提示“此站点遇到了致命错误”的解决方法 WordPress 网站博客提示“此站点遇到了致命错误。”如何解决?今天老唐不幸遇到了这个问题,搜了一下解决方法,发现致命错误原因有很多,所以需要先打开 WordPress 的 WP_DEBUG 功…...
Vue3,Typescript中引用组件路径无法找到模块报错
是这么个事,我在vue3新创建的项目里,写了个组件叫headerIndex.vue,放到app.vue中import就会报错 路径肯定没写错,找到了解决方法,但是也没想明白为什么 解决方法如下 在vite-env.d.ts文件中加入 declare module &qu…...
科技成果鉴定之鉴定测试报告
鉴定测试 由于软件类科技成果的复杂、内部结构难以鉴别等特点,我们提供了软件类科技成果鉴定测试服务。软件类科技成果鉴定测试是依据其科研项目计划任务书或技术合同书,参照相应的国家标准对要申请鉴定的软件类科技成果进行的一种符合性测试࿰…...
NFTScan 浏览器正式版上线 2 周年!
NFTScan 成立于 2021 年 4 月份,总部位于香港。在 2021 年的 7 月份,NFTScan 团队对外发布了 NFTScan 浏览器公测版,并在同年的 9 月 4 号,对外发布了 NFTScan 浏览器正式版,同步启用了全球品牌域名:NFTSCA…...
为什么要使用Token
传统的session认证 我们知道,http协议是一种无状态的协议,这就意味着当用户向我们的应用提供了用户名和密码进行用户认证,那么在下一次登录的时候,用户还要再进行验证,因为根据http协议,浏览器并不知道是谁…...
前端面试的话术集锦第 8 篇:高频考点(JS性能优化 性能优化琐碎事)
这是记录前端面试的话术集锦第八篇博文——高频考点(JS性能优化 & 性能优化琐碎事),我会不断更新该博文。❗❗❗ 1. 从V8中看JS性能优化 注意:该知识点属于性能优化领域。 1.1 测试性能⼯具 Chrome已经提供了⼀个⼤⽽全的性能测试⼯具Audits。 点我们点击Audits后,可…...
【数据分析】Python:处理缺失值的常见方法
在数据分析和机器学习中,缺失值是一种常见的现象。在实际数据集中,某些变量的某些条目可能没有可用的值。处理缺失值是一个重要的数据预处理步骤。在本文中,我们将介绍如何在 Pandas 中处理缺失值。 我们将探讨以下内容: 什么是缺…...
“批量随机字母命名文件,轻松管理你的文件库“
你是否曾经遇到过文件命名混乱,难以管理的问题?为了解决这个问题,我们推出了一款全新的文件改名工具,它可以帮助你批量给文件名添加一个随机字母,让你的文件库更加有序、易于管理。 首先第一步,我们要进入…...
elasticsearch的数据聚合
聚合可以让我们极其方便的实现对数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且…...
【网络编程·数据链路层】MAC帧/以太网协议/ARP协议/RARP协议
需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云<--/-->阿里云<--/-->华为云<--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。 目录 一、MAC帧 1、IP地址和MAC地址的区别 2、MAC帧协议 3、MTU对IP协议的…...
算法:移除数组中的val的所有元素---双指针[2]
文章来源: https://blog.csdn.net/weixin_45630258/article/details/132689237 欢迎各位大佬指点、三连 1、题目: 给你一个数组 nums和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
