全局唯一id

问题引出:

        由于数据库的自增的id很有规律,会让人猜到后续id

        由于一个单表存储的数量有限,那么就会用多个表存储,每个表的id都是自增,这样导致id不唯一的情况。

引进新的方法:

具体解决方法:使用redis的string自增方法

代码:

package com.hmdp.utils;import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.time.format.DateTimeFormatter;import java.time.LocalDateTime;
import java.time.ZoneOffset;@Component
public class RedisIdWorker {private StringRedisTemplate stringRedisTemplate;private final long BEGIN_TIME = 110822509L;private final int COUNT_BIT = 32;public RedisIdWorker(StringRedisTemplate stringRedisTemplate) {this.stringRedisTemplate = stringRedisTemplate;}public long generateWorkId(String prefixKey) {//1.先生成时间戳LocalDateTime now = LocalDateTime.now();//这个获取的是十进制的10位,二进制的32位,这个时间可以延续到2038年long nowSecond = now.toEpochSecond(ZoneOffset.UTC);long timestamp = nowSecond - BEGIN_TIME;//2.通过redis生成自增序列号String format = now.format(DateTimeFormatter.ofPattern("yyyy:MM:dd"));Long increment = stringRedisTemplate.opsForValue().increment("order:" + prefixKey + ":" + format);//3.合并返回//虽然redis返回的数字是一个很小的数据,但是当时间戳向左移位32位之后,//后面空着的位数都是redis的自增数字序列,虽然redis返回的数字很小,但是很多都是0补位return timestamp << COUNT_BIT | increment;}}

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

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

相关文章

MySQL--函数、约束、多表查询

函数 函数指一段可以直接被另一段程序调用的程序或代码 字符串函数、数值函数、日期函数、流程函数 字符串函数 数值函数 日期函数 datediff&#xff08;date1,date2&#xff09;&#xff1a;date1-date2 流程函数 约束 概念&#xff1a;约束是作用于表中字段上的规则&…

ECCV:A Discriminative Feature Learning Approach for Deep Face Recognition

1 Abstract 卷积神经网络&#xff08;CNNs&#xff09;已广泛应用于计算机视觉领域&#xff0c;显著提高了计算机视觉领域的技术水平。在大多数可用的cnn中&#xff0c;使用软tmax损失函数作为监督信号来训练深度模型。为了增强深度学习特征的识别能力&#xff0c;本文提出了一…

AI自动生成PPT怎么用?5种提升演示效果的方法

随着#7月份我的同事一个个消失了#的话题热议&#xff0c;职场中的效率与变革再次成为焦点。 在忙碌的工作节奏中&#xff0c;AI自动生成PPT的软件悄然兴起&#xff0c;成为不少职场人的新宠。它们不仅简化了繁琐的PPT制作流程&#xff0c;更以高效、专业的姿态&#xff0c;助力…

包成功安装tiny-cuda-nn,记录安装过程中的问题解决,附带pytorch3d安装【踩坑指南】

tiny-cuda-nn安装过程中的问题解决&#xff0c;附带pytorch3d安装【踩坑指南】 前言tiny-cuda-nn第一种下载方法&#xff1a;命令行安装tiny-cuda-nn第二种下载方法&#xff1a;本地编译 pytorch3d安装 前言 official repo: https://github.com/NVlabs/tiny-cuda-nn 该包可以显…

Java 中的阻塞 IO 和非阻塞 IO

Java 中的阻塞 IO 和非阻塞 IO 1、阻塞 IO&#xff08;Blocking IO&#xff09;2、非阻塞 IO&#xff08;Non-blocking IO&#xff09;3、区别与应用场景4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; IO&#xff08;输入输出&…

基于Booth乘法和Wallace树的乘法器优化思想

基于Booth乘法和Wallace树的快速乘法器 为了理解Booth乘法和Wallace数如何让乘法器变得更快&#xff1a; 先考虑不优化的8位乘法器实现&#xff0c;即8个16位数字累积共进行7次加法运算&#xff0c;可以认为一次16位加法用到16个全加器&#xff0c;则共需要112个全加器件&…

【Linux操作系统-测试】第三节.Linux 系统、网络信息、用户权限命令总结

文章目录 前言一、Linux 系统相关信息命令 1.1 df 命令--查看磁盘剩余 1.2 ps 命令--查看进程 1.3 top 命令--显示进程运行状态 1.4 kill 命令说明 -- 杀死进程二、Linux 网络信息命令 2.1 ping 命令--检查网络是否连通 2.1 ifconfig--显示网络设…

(总结)编译ORB_SLAM2遇到的错误

目录 第一个错误error: ‘CV_BGR2GRAY’ was not declared in this scope 第二个错误error: ‘CV_GRAY2BGR’ was not declared in this scope 第三个错误是没有那个文件或目录 26 | #include 第四个错误是‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope 第…

Python实现的深度学习技术在水文水质领域应用

当前&#xff0c;深度学习作为人工智能的热门技术发展迅速&#xff0c;以其强大的非线性和不确定性处理能力在图像识别、语音识别、自然语言处理等领域取得了显著的成效。它是一种端到端的处理方法&#xff0c;在训练算法的指导下&#xff0c;深层神经网络自发地从原始数据中进…

什么是CAP理论及应用场景,为什么只能进行3选2

在理论计算机科学中&#xff0c;CAP定理&#xff08;CAP theorem&#xff09;&#xff0c;又被称作布鲁尔定理&#xff08;Brewers theorem&#xff09;&#xff0c;它指出对于一个分布式计算系统来说&#xff0c;不可能同时满足以下三点&#xff1a; 1、 一致性&#xff08;C…

计算机组成原理:408考研|王道|学习笔记II

系列目录 计算机组成原理 学习笔记I 计算机组成原理 学习笔记II 目录 系列目录第四章 指令系统4.1 指令系统4.1.1 指令格式4.1.2 扩展操作码指令格式 4.2 指令的寻址方式4.2_1 指令寻址4.2_2 数据寻址 4.3 程序的机器级代码表示4.3.1 高级语言与机器级代码之间的对应4.3.2 常用…

游戏AI的创造思路-技术基础-情感计算(1)

游戏中的AI也是可以和你打情感牌的哦&#xff0c;不要以为NPC是没有感情的&#xff0c;不过&#xff0c;不要和NPC打过多的情感牌&#xff0c;你会深陷其中无法自拔的~~~~~~ 目录 1. 情感计算算法定义 2. 发展历史 3. 公式和函数 3.1. 特征提取阶段 TF-IDF&#xff08;词频…

C++的异常处理机制

C的异常处理机制 (1)Why&#xff08;异常处理机制的作用&#xff09;(2)How&#xff08;异常机制如何工作&#xff09;A.抛出异常B.捕获异常C.处理异常D.传递异常 (3)抛出异常A.栈展开B.析构函数和异常C.异常对象 (4)捕获异常(4)处理异常A.构造函数的异常处理B.不抛出异常noexc…

中小学校园EasyCVR视频综合监管方案:构建安全、智能的校园环境

一、背景需求分析 随着科技的快速发展&#xff0c;校园安全问题日益受到社会各界的关注。尤其是在中小学校园中&#xff0c;学生的安全更是牵动着每一个家庭的心。为了更有效地保障学生的安全&#xff0c;提高校园安全管理水平&#xff0c;视频监控系统在中小学中的应用越来越…

伙伴活动|AI硬件大潮来袭,深圳的创客们在哪里?

「每一种硬件产品&#xff0c;都会被 GenAI 重新做一遍。」 分享一个社区伙伴「未来光锥」参与主办的活动。如果你同时对 AI 和硬件感兴趣&#xff0c;提到 maker 一词仍然会激动。推荐你参与这次活动。 AI 玩具Folotoy 的创始人、RTE 开发者社区成员王乐也将参与本次活动并分…

【C++进阶】C++中的IO流

目录 前言 1. C语言中的IO 2. 如何理解流 3. C中的IO流 3.1 C中的标准IO 3.2 C中的文件IO 4. stringstream 总结 前言 C语言中的I/O接口十分强大&#xff0c;但使用起来有些繁琐。好在C中的I/O方式为我们解决了这些问题&#xff0c;让数据的读写操作变得更加简洁和便捷; 在…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-57长短期记忆网络(LSTM)

57长短期记忆网络&#xff08;LSTM&#xff09; 1.LSTM原理 LSTM是专为解决标准RNN的长时依赖问题而设计的。标准RNN在训练过程中&#xff0c;随着时间步的增加&#xff0c;梯度可能会消失或爆炸&#xff0c;导致模型难以学习和记忆长时间间隔的信息。LSTM通过引入一组称为门…

【卡尔曼滤波器】DR_CAN 2 学习笔记:_数据融合_协方差矩阵_状态空间方程_观测器问题

【卡尔曼滤波器】2_数学基础_数据融合_协方差矩阵_状态空间方程_观测器问题 非常重要1 数据融合 data fusion 有俩秤,各自有自己的正态分布:俩秤是相互独立的:俩秤都不准,但标准差都符合正态分布 正态分布又叫做高斯分布 向左、向右 都是2, 标准差是2覆盖了68.4 %的可能:…

开启HIVE中分区表支持中文字段

进入hive表&#xff1a; use hive; #修改hive database编码 alter database hive default character set utf8; #修改table编码 alter table PARTITIONS default character set utf8; alter table PARTITION_KEY_VALS default character set utf8; alter table SDS default cha…

机器学习和AI智能写作对未来文案编辑的影响

欢迎关注小知&#xff1a;知孤云出岫 目录 机器学习和AI智能写作对未来文案编辑的影响1. 简介2. AI智能写作工具的现状3. AI智能写作的优势3.1 提高效率3.2 降低成本3.3 数据驱动的个性化 4. AI智能写作的挑战4.1 创造力和独创性4.2 道德和伦理问题4.3 技术限制 5. 行业变化5.…