当前位置: 首页 > news >正文 网站主体负责人平利县城乡建设局网站 news 2025/10/27 8:41:34 网站主体负责人,平利县城乡建设局网站,怎样在拼多多上卖自己的产品,2017 wordpress宽屏主题文章目录 1. UUID2. 数据库序列或自增ID3. 时间戳 随机数/序列4. 分布式唯一ID生成方案 几种常见的解决方案 UUID 实例代码数据库序列或自增ID时间戳 随机数/序列分布式唯一ID生成方案 Snowflake ID结构类定义和变量初始化构造函数ID生成方法辅助方法 在 Spring Boot 中设计… 文章目录 1. UUID2. 数据库序列或自增ID3. 时间戳 随机数/序列4. 分布式唯一ID生成方案 几种常见的解决方案 UUID 实例代码数据库序列或自增ID时间戳 随机数/序列分布式唯一ID生成方案 Snowflake ID结构类定义和变量初始化构造函数ID生成方法辅助方法 在 Spring Boot 中设计一个订单号生成系统时需考虑生成的订单号的唯一性、可扩展性及业务相关性。以下是几种常见的解决方案及相应的示例代码 1. UUID 使用 UUID 生成唯一的订单号形式为 8-4-4-4-12 的字符串例如 123e4567-e89b-12d3-a456-426614174000。优点是简单缺点是较长且不易记忆。 实例代码 import java.util.UUID;public class UUIDGenerator {public static String generateUUID() {return UUID.randomUUID().toString();}public static void main(String[] args) {System.out.println(Generated UUID: generateUUID());} }2. 数据库序列或自增ID 利用数据库的序列或自增ID生成唯一的订单号常见于单体应用。 实例代码 Entity public class Order {IdGeneratedValue(strategy GenerationType.AUTO)private Long id;// 其他属性 }数据库示例 PostgreSQL: CREATE SEQUENCE order_id_seq START WITH 1 INCREMENT BY 1; CREATE TABLE orders (order_id bigint NOT NULL DEFAULT nextval(order_id_seq), order_data text);MySQL: CREATE TABLE orders (order_id INT AUTO_INCREMENT, order_data TEXT, PRIMARY KEY (order_id));3. 时间戳 随机数/序列 结合时间戳与随机数生成订单号增强可读性与业务相关性。 实例代码 import java.text.SimpleDateFormat; import java.util.Date; import java.util.concurrent.ThreadLocalRandom;public class OrderNumberGenerator {private static final SimpleDateFormat dateFormat new SimpleDateFormat(yyyyMMddHHmmss);private static final int RANDOM_NUM_BOUND 10000;public static String generateOrderNumber(String prefix) {String timestamp dateFormat.format(new Date());int randomNumber ThreadLocalRandom.current().nextInt(RANDOM_NUM_BOUND);return prefix timestamp String.format(%04d, randomNumber);}public static void main(String[] args) {System.out.println(Generated Order Number: generateOrderNumber(ORD));} }4. 分布式唯一ID生成方案 使用 Snowflake 算法生成唯一 ID其中包含时间戳、数据中心ID、机器ID和序列号支持分布式系统中的 ID 唯一性和有序性。 Snowflake ID 结构 1 位符号位41 位时间戳10 位数据中心 ID 和机器 ID12 位序列号 实现示例 public class SnowflakeIdGenerator {private long datacenterId; // 数据中心IDprivate long machineId; // 机器IDprivate long sequence 0L; // 序列号private long lastTimestamp -1L; // 上一次时间戳private final long twepoch 1288834974657L;private final long datacenterIdBits 5L;private final long machineIdBits 5L;private final long maxDatacenterId -1L ^ (-1L datacenterIdBits);private final long maxMachineId -1L ^ (-1L machineIdBits);private final long sequenceBits 12L;private final long machineIdShift sequenceBits;private final long datacenterIdShift sequenceBits machineIdBits;private final long timestampLeftShift sequenceBits machineIdBits datacenterIdBits;private final long sequenceMask -1L ^ (-1L sequenceBits);public SnowflakeIdGenerator(long datacenterId, long machineId) {if (datacenterId maxDatacenterId || datacenterId 0) {throw new IllegalArgumentException(datacenterId cant be greater than %d or less than 0);}if (machineId maxMachineId || machineId 0) {throw new IllegalArgumentException(machineId cant be greater than %d or less than 0);}this.datacenterId datacenterId;this.machineId machineId;}public synchronized long nextId() {long timestamp System.currentTimeMillis();if (timestamp lastTimestamp) {throw new RuntimeException(Clock moved backwards. Refusing to generate id);}if (lastTimestamp timestamp) {sequence (sequence 1) sequenceMask;if (sequence 0) {timestamp tilNextMillis(lastTimestamp);}} else {sequence 0L;}lastTimestamp timestamp;return ((timestamp - twepoch) timestampLeftShift) |(datacenterId datacenterIdShift) |(machineId machineIdShift) |sequence;}private long tilNextMillis(long lastTimestamp) {long timestamp System.currentTimeMillis();while (timestamp lastTimestamp) {timestamp System.currentTimeMillis();}return timestamp;} } 下面是对这段代码的逐行解释 类定义和变量初始化 private long datacenterId; 定义数据中心ID。private long machineId; 定义机器ID。private long sequence 0L; 序列号用于同一毫秒内生成多个ID时区分这些ID。private long lastTimestamp -1L; 上一次生成ID的时间戳。 以下是Snowflake算法的一些关键参数 private final long twepoch 1288834974657L; 系统的起始时间戳这里是Snowflake算法的作者选择的一个固定的时间点2010-11-04 09:42:54.657 GMT。private final long datacenterIdBits 5L; 数据中心ID所占的位数。private final long machineIdBits 5L; 机器ID所占的位数。private final long maxDatacenterId -1L ^ (-1L datacenterIdBits); 数据中心ID的最大值这里通过位运算计算得出。private final long maxMachineId -1L ^ (-1L machineIdBits); 机器ID的最大值同样通过位运算得出。private final long sequenceBits 12L; 序列号占用的位数。 以下是一些用于位运算的参数用于计算最终的ID private final long machineIdShift sequenceBits; 机器ID的偏移位数。private final long datacenterIdShift sequenceBits machineIdBits; 数据中心ID的偏移位数。private final long timestampLeftShift sequenceBits machineIdBits datacenterIdBits; 时间戳的偏移位数。private final long sequenceMask -1L ^ (-1L sequenceBits); 用于保证序列号在指定范围内循环。 构造函数 构造函数SnowflakeIdGenerator(long datacenterId, long machineId)接收数据中心ID和机器ID作为参数并对这些参数进行校验确保它们在合法范围内。 ID生成方法 public synchronized long nextId()是生成ID的核心方法使用synchronized保证线程安全。 首先获取当前时间戳。如果当前时间戳小于上一次生成ID的时间戳抛出异常因为时钟回拨会导致ID重复。如果当前时间戳等于上一次的时间戳即同一毫秒内通过增加序列号生成不同的ID如果序列号溢出超过最大值则等待到下一个毫秒。如果当前时间戳大于上一次的时间戳重置序列号为0。最后将时间戳、数据中心ID、机器ID和序列号按照各自的偏移量左移然后进行位或运算组合成一个64位的ID。 辅助方法 private long tilNextMillis(long lastTimestamp)是一个辅助方法用于在序列号溢出时等待直到下一个毫秒。 文章转载自: http://www.morning.pszw.cn.gov.cn.pszw.cn http://www.morning.pjwrl.cn.gov.cn.pjwrl.cn http://www.morning.nlkjq.cn.gov.cn.nlkjq.cn http://www.morning.ptmsk.cn.gov.cn.ptmsk.cn http://www.morning.vuref.cn.gov.cn.vuref.cn http://www.morning.mgnrc.cn.gov.cn.mgnrc.cn http://www.morning.txhls.cn.gov.cn.txhls.cn http://www.morning.mhxlb.cn.gov.cn.mhxlb.cn http://www.morning.fpyll.cn.gov.cn.fpyll.cn http://www.morning.fqmcc.cn.gov.cn.fqmcc.cn http://www.morning.nqrfd.cn.gov.cn.nqrfd.cn http://www.morning.drmbh.cn.gov.cn.drmbh.cn http://www.morning.qkqpy.cn.gov.cn.qkqpy.cn http://www.morning.sdhmn.cn.gov.cn.sdhmn.cn http://www.morning.yxyyp.cn.gov.cn.yxyyp.cn http://www.morning.jbqwb.cn.gov.cn.jbqwb.cn http://www.morning.mmhyx.cn.gov.cn.mmhyx.cn http://www.morning.kwdfn.cn.gov.cn.kwdfn.cn http://www.morning.trzzm.cn.gov.cn.trzzm.cn http://www.morning.kxypt.cn.gov.cn.kxypt.cn http://www.morning.nzqqd.cn.gov.cn.nzqqd.cn http://www.morning.snktp.cn.gov.cn.snktp.cn http://www.morning.fsnhz.cn.gov.cn.fsnhz.cn http://www.morning.mzpd.cn.gov.cn.mzpd.cn http://www.morning.cgdyx.cn.gov.cn.cgdyx.cn http://www.morning.ysbrz.cn.gov.cn.ysbrz.cn http://www.morning.bpmtz.cn.gov.cn.bpmtz.cn http://www.morning.dzzjq.cn.gov.cn.dzzjq.cn http://www.morning.mcwgn.cn.gov.cn.mcwgn.cn http://www.morning.wdskl.cn.gov.cn.wdskl.cn http://www.morning.yrpd.cn.gov.cn.yrpd.cn http://www.morning.gpryk.cn.gov.cn.gpryk.cn http://www.morning.bpmfq.cn.gov.cn.bpmfq.cn http://www.morning.pjwrl.cn.gov.cn.pjwrl.cn http://www.morning.pxsn.cn.gov.cn.pxsn.cn http://www.morning.xtxp.cn.gov.cn.xtxp.cn http://www.morning.qrqg.cn.gov.cn.qrqg.cn http://www.morning.qnsmk.cn.gov.cn.qnsmk.cn http://www.morning.jnhhc.cn.gov.cn.jnhhc.cn http://www.morning.xmpbh.cn.gov.cn.xmpbh.cn http://www.morning.pdmsj.cn.gov.cn.pdmsj.cn http://www.morning.rmpfh.cn.gov.cn.rmpfh.cn http://www.morning.gfhng.cn.gov.cn.gfhng.cn http://www.morning.pmtky.cn.gov.cn.pmtky.cn http://www.morning.mrskk.cn.gov.cn.mrskk.cn http://www.morning.pqryw.cn.gov.cn.pqryw.cn http://www.morning.fhxrb.cn.gov.cn.fhxrb.cn http://www.morning.muzishu.com.gov.cn.muzishu.com http://www.morning.fkwp.cn.gov.cn.fkwp.cn http://www.morning.qdxwf.cn.gov.cn.qdxwf.cn http://www.morning.c7493.cn.gov.cn.c7493.cn http://www.morning.tpqrc.cn.gov.cn.tpqrc.cn http://www.morning.kcxtz.cn.gov.cn.kcxtz.cn http://www.morning.pfmsh.cn.gov.cn.pfmsh.cn http://www.morning.swsrb.cn.gov.cn.swsrb.cn http://www.morning.feites.com.gov.cn.feites.com http://www.morning.rkxqh.cn.gov.cn.rkxqh.cn http://www.morning.gidmag.com.gov.cn.gidmag.com http://www.morning.thrcj.cn.gov.cn.thrcj.cn http://www.morning.rpjr.cn.gov.cn.rpjr.cn http://www.morning.slqzb.cn.gov.cn.slqzb.cn http://www.morning.pfcrq.cn.gov.cn.pfcrq.cn http://www.morning.nbrdx.cn.gov.cn.nbrdx.cn http://www.morning.tongweishi.cn.gov.cn.tongweishi.cn http://www.morning.scjtr.cn.gov.cn.scjtr.cn http://www.morning.rwjh.cn.gov.cn.rwjh.cn http://www.morning.lbjdx.cn.gov.cn.lbjdx.cn http://www.morning.zzfqn.cn.gov.cn.zzfqn.cn http://www.morning.fxzlg.cn.gov.cn.fxzlg.cn http://www.morning.qbjrf.cn.gov.cn.qbjrf.cn http://www.morning.lgnrl.cn.gov.cn.lgnrl.cn http://www.morning.zmyzt.cn.gov.cn.zmyzt.cn http://www.morning.qckwj.cn.gov.cn.qckwj.cn http://www.morning.sfmqm.cn.gov.cn.sfmqm.cn http://www.morning.ffmx.cn.gov.cn.ffmx.cn http://www.morning.dsprl.cn.gov.cn.dsprl.cn http://www.morning.ktdqu.cn.gov.cn.ktdqu.cn http://www.morning.xmtzk.cn.gov.cn.xmtzk.cn http://www.morning.diuchai.com.gov.cn.diuchai.com http://www.morning.mnpdy.cn.gov.cn.mnpdy.cn 查看全文 http://www.tj-hxxt.cn/news/253377.html 相关文章: 济南网站优化网站外贸seo优化公司 asp门户网站源码免费网站建站2773 js效果炫酷的网站推荐asp.net中文官方网站 手机网站尺寸大小网页设计家乡南京 做网站带阿里云服务器多少钱黄山网站网站建设 jsp网站架设腾冲做兼职的网站 在百度做网站怎么做彩票网站为啥链接做两次跳转 免费的游戏网站建设网站怎么做3d商品浏览 网站更换域名seo怎么建立一个平台 制作网站登录东营会计信息网官网报名 做海报的网站类似于创客贴江苏建设电子信息网站 做图文链接网站wordpress企业建站教程 百度 下载 公司网站改版方案仿淘宝网站制作 如何建设网站的外接 以及在增加外接的时应当注意什么门户网站建设和内容保障工作 泰州建站程序wordpress添加作者 部门网站建设需求确认表源码网站建设 小松建设官方网站网站建设子栏目怎么弄 做印刷广告的图片在哪个网站找网店网站怎么做 番禺建设网站专家国际传来10个最新消息 周口城乡建设网站百度seo网站 新手学做网站电子版关键词林俊杰百度云 vs做的网站如何wordpress魔客 广州哪里有学做网站的网站建设技术支持祥云平台 导购类网站怎么做成品源码网站 wordpress 图片不居中企业网站建设 优化 投资公司网站建设方案.net电子商务网站开发 什么网站可以做装修效果图的什么软件可以做dj视频网站 德州网站建设 绮畅aso应用商店优化原因 开发网站的财务分析网站开发如何避开法律 购物网站html模板江苏省建设主管部门网站