redis:全局ID生成器实现
问题:订单id不能设置为自增长的原因
id的规律性太明显,
受订单的数据量限制:若数据量过大,需要多张表存储,若自增会导致id重复
全局ID生成器:在分布式系统中用来生成全局唯一ID的工具
ID的组成:
符号位:1bit ,默认为0
时间戳: 31bit 以秒为单位,可以使用约69年
序列号:32bit,秒内的计数量,
@Component
public class RedisIdWorker {@Resourceprivate StringRedisTemplate stringRedisTemplate;//redis全局ID生成器策略/**开始时间戳*/private static final long BEGIN_TIMESTAMP=1704067200L;/**序列号位数*/private static final int COUNT_BITS=32;public long nextId(String keyPrefix) {//1.生成时间戳LocalDateTime now = LocalDateTime.now();long nowSecond = now.toEpochSecond(ZoneOffset.UTC);long timestamp = nowSecond - BEGIN_TIMESTAMP;//2.生成序列号,使用redis的自增//2.1.获取当天日期,redis的key中使用“:”,分层级String date = now.format(DateTimeFormatter.ofPattern("yyyy:MM:dd"));long count = stringRedisTemplate.opsForValue().increment("icr:" + keyPrefix + ":" + date);//3.组装返回,使用位运算return (timestamp << COUNT_BITS) | count;}
}
相关文章:
redis:全局ID生成器实现
问题:订单id不能设置为自增长的原因 id的规律性太明显, 受订单的数据量限制:若数据量过大,需要多张表存储,若自增会导致id重复 全局ID生成器:在分布式系统中用来生成全局唯一ID的工具 ID的组成: 符号位…...
jenkins工具的介绍和gitlab安装
使用方式 替代手动,自动化拉取、集成、构建、测试;是CI/CD持续集成、持续部署主流开发模式中重要工具;必须组件 jenkins-gitlab,代码公共仓库服务器(至少6G内存);jenkins-server,需…...
【从0开始在CentOS 9中安装Tomcat】
从0开始在CentOS 9中安装Tomcat 1. 安装 Java(Tomcat 需要 Java 环境)2. 下载并安装 Tomcat3. 配置 Tomcat4. 启动 Tomcat5. 配置 Tomcat 为开机自启动6. 验证 Tomcat 运行状态7. 允许防火墙开放 8080 端口(可选) 要在 Linux 上安…...
学习Vue3的第五天
目录 API对比 shallowRef 与 shallowReactive 对比总结 使用场景 总结 readonly 与 shallowReadonly 对比总结 使用场景 总结 toRaw 与 markRaw 对比总结 使用场景 总结 customRef 应用场景 总结 示例:异步数据获取 Vue3新组件 Teleport Suspen…...
Python 类中使用 cursor.execute() 时语法错误的解决方法
在 Python 类中使用 cursor.execute() 时,出现语法错误(如 SyntaxError 或 SQL 语法相关错误)通常是因为 SQL 语句格式不正确、占位符使用不当,或参数传递方式不符合预期。以下是解决此类问题的常见方法和建议。 问题背景 在 Pyt…...
怎么选择靠谱AI论文生成工具?看完我的试用都会明白!
2024年上半年开始AI论文写作工具开始火了,层出不穷!作为一个经常需要写论文的懒人,我非常好奇这些AI工具的实际效果到底怎么样?为了测试不同工具的实力,我对他们都进行了试用,发现了一些意想不到的结果....…...
Java 每日一刊(第3期):Hello World
文章目录 前言Hello World程序是如何执行的Hello World 里有什么本期小知识 阳光洒进窗台,花香伴着书香,静谧而温暖,仿佛时光停驻。 前言 这里是分享 Java 相关内容的专刊,每日一更。 本期将为大家带来以下内容: “…...
git一个项目关联多个远程仓库
一行代码就行: git remote set-url origin [想要关联的远程仓库地址]想要关联哪个就切换哪个 或者不用每次切换,集中管理: Git->Manage Remotes 点击“”,填入Name和想要关联的远程库地址 每次push时执行命令 git push [为…...
衡石分析平台使用手册-部署前准备
部署前准备 1.根据版本获取 k8s 部署配置文件。 安装版本部署文件组件依赖3.xk8s-yamlmetadb、engine、hengshi zookeeper4.0.xk8s-yamlmetadb、engine、hengshi、minio、zookeeper4.1.xk8s-yamlmetadb、engine、hengshi、minio、redis、flink、zookeeper4.2.xk8s-yamlmeta…...
AI大模型全栈工程师课程笔记 - RAG 检索增强生成
文章目录 \1. RAG\2. 构建流程 2.1 文档加载与切分2.2 传统检索引擎2.3 LLM接口封装2.4 构建prompt \3. 向量检索\4. 向量数据库\5. 基于向量检索的RAG\6. 进阶知识 6.1 文本分割粒度6.2 检索后再排序6.3 测试 1. RAG RAG(Retrieval Augmented Generation&#…...
【时时三省】c语言例题----华为机试题<进制转换>
山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 1,题目 HJ5 进制转换 描述 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。 数据范围:保证结果在 1≤n≤231−1 1≤n≤231−1…...
根据NVeloDocx Word模板引擎生成Word(四)
前面介绍了《E6低代码开发平台》的Word模版引擎NVeloDocx,实现了表单的基本字段、子表、单张图片、二维码、条形码怎么基于NVelocity脚本输出到Word文件,都是些比较简单且常用的需求。 本篇介绍怎么基于NVeloDocx在Word中插入图表,目前只支持…...
C++笔记---stack和queue
1. stack的介绍及重要接口 stack---栈,是一种“先进后出,后进先出”的数据结构。 此处的stack是STL库中定义的一个类模板,用于实例化出存储各种类型数据的栈。 bool empty() const;判断栈是否为空(空true/非空false)size_t size() const;返…...
springboot Rabbit MQ topic 配置文件绑定队列和交换机
Spring Boot 中如何将队列和交换机绑定(含实例讲解) 在使用 Spring Boot 开发高并发的秒杀系统或者其他场景时,RabbitMQ 是常用的消息队列中间件之一。本文将详细讲解如何在配置类中通过代码将队列与交换机绑定,并指定路由键来实…...
Visual Studio 2019密钥
Visual Studio 2019 Enterprise(企业版):BF8Y8-GN2QH-T84XB-QVY3B-RC4DF Visual Studio 2019 Professional(专业版):NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y...
【三元组枚举中点】【树状数组】个人练习-Leetcode-1395. Count Number of Teams
题目链接:https://leetcode.cn/problems/count-number-of-teams/description/ 题目大意:给一个数组rating[],求符合以下任一条件的三元组i, j, k的个数 rating[i] < rating[j] < rating[k]rating[i] > rating[j] > rating[k] …...
Anaconda 中遇到CondaHTTPError: HTTP 404 NOT FOUND for url的问题及解决办法
最近在跑一个开源项目遇到了以下问题,查了很多资料都大(抄)同(来)小(抄)异(去)的,解决不了根本问题,费了很大的劲终于得以解决,记录如…...
数据库系统 第51节 数据库事务管理
数据库事务管理是数据库管理系统(DBMS)中用于确保数据完整性和一致性的一组机制。事务是一组不可分割的操作序列,这些操作要么全部成功,要么全部失败。以下是数据库事务管理的关键组成部分的详细叙述: 1. 事务隔离级别…...
分解+优化+组合+对比!核心无忧!VMD-SSA-Transformer-LSTM多变量时间序列光伏功率预测
分解优化组合对比!核心无忧!VMD-SSA-Transformer-LSTM多变量时间序列光伏功率预测 目录 分解优化组合对比!核心无忧!VMD-SSA-Transformer-LSTM多变量时间序列光伏功率预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.…...
二十三种设计模式之建造者模式(类比汽车制造厂好理解一些)
目录 1. 设计模式的分类 2. 定义 3. 建造者模式通常包含以下几个角色 4. 示例代码 5. 建造者模式的主要优点 1. 设计模式的分类 创建型模式(五种):工厂方法模式、单例模式、抽象工厂模式、原型模式、建造者模式。 结构型模式(七种):适配器模式、代…...
AgentCPM深度研报助手C语言文件操作实战:批量处理本地研报文本文件
AgentCPM深度研报助手C语言文件操作实战:批量处理本地研报文本文件 你是不是也遇到过这样的场景?手头有一堆下载好的行业研报,有PDF,有TXT,堆在文件夹里。想快速了解每份报告的核心观点,但一份份打开看&am…...
从Blender到虚幻引擎:除了FBX,试试GLTF格式导入的完整流程与优势对比
从Blender到虚幻引擎:GLTF格式导入的完整流程与优势解析 在三维内容创作领域,Blender与虚幻引擎的组合已经成为许多专业团队的标准工具链。当我们需要将精心制作的模型从Blender迁移到虚幻引擎时,传统的FBX格式虽然广为人知,但GLT…...
深入解析串口通信:从RS232到RS485的工业应用实战
1. 串口通信的工业应用基础 第一次接触工业自动化项目时,我被现场密密麻麻的线缆搞得头晕眼花。直到老师傅指着角落里不起眼的两根双绞线说:"这条RS485总线控制着整条生产线的30台设备",我才意识到串口通信在工业领域的强大之处。 …...
模型微调集成:OpenClaw调用Qwen3-32B的LoRA适配器实战
模型微调集成:OpenClaw调用Qwen3-32B的LoRA适配器实战 1. 为什么需要本地微调模型接入? 去年我在处理一批医疗文献自动化摘要任务时,发现通用大模型对专业术语的理解总差那么一口气。当模型把"冠状动脉搭桥术"解释成"心脏旁…...
三三复制系统模式介绍
三三复制系统模式介绍:从底层逻辑到合规落地在社交电商与团队裂变领域,三三复制系统凭借其低门槛、高稳定性的特点,成为企业实现用户快速增长与业绩倍增的重要工具。不同于传统多级分销的复杂层级,三三复制系统以“三”为核心基数…...
基于YOLOv11姿态检测的AI健身助手具备实时姿态识别、运动计数与反馈、训练记录和计划制定功能
基于YOLOv11姿态检测的AI健身助手 ✨ 功能特点 实时运动计数 - 自动计算您的健身次数多种运动支持 - 包括深蹲、俯卧撑、仰卧起坐、哑铃运动等十多种先进的姿态检测 - 采用YOLOv11实现精准跟踪模型切换功能 - 可以在小型(更快)和大型(更精确)YOLOv11模型之间轻松切换可视化反馈…...
Undecimus革新性全流程越狱技术指南:从核心价值到实用工具
Undecimus革新性全流程越狱技术指南:从核心价值到实用工具 【免费下载链接】Undecimus unc0ver jailbreak for iOS 11.0 - 12.4 项目地址: https://gitcode.com/gh_mirrors/un/Undecimus 一、核心价值:破解iOS生态三大痛点 Undecimus作为针对iOS…...
基尼系数 vs 信息增益:决策树划分标准选哪个?实测对比告诉你答案
基尼系数 vs 信息增益:决策树划分标准选哪个?实测对比告诉你答案 决策树算法作为机器学习中最直观的可解释模型,其核心在于如何选择最优特征进行节点划分。面对基尼系数(Gini Index)与信息增益(Informatio…...
LWIP内存管理踩坑实录:从pbuf泄漏到pcb耗尽,我的嵌入式网络调试日记
LWIP内存管理踩坑实录:从pbuf泄漏到pcb耗尽,我的嵌入式网络调试日记 凌晨三点,调试器上的红色LED还在闪烁。这是我连续第三个通宵追踪LWIP的内存问题——设备在运行48小时后必然崩溃,日志里满是"pbuf_alloc failed"和&q…...
Realtek RTL8125 2.5GbE网卡驱动安装与优化全指南:从识别到调优的完整解决方案
Realtek RTL8125 2.5GbE网卡驱动安装与优化全指南:从识别到调优的完整解决方案 【免费下载链接】realtek-r8125-dkms A DKMS package for easy use of Realtek r8125 driver, which supports 2.5 GbE. 项目地址: https://gitcode.com/gh_mirrors/re/realtek-r8125…...
