12唯一订单号生成 方法总结

本文总结了生成12位唯一订单号的多种方法,包括基于时间戳、数据库序列、UUID以及随机数与Caesar密码算法的组合。在高并发环境下,确保订单号不重复是关键,可以通过加锁、使用synchronized关键字或数据库序列等方式实现。
摘要由CSDN通过智能技术生成
1: 时间戳是当前时间到1970年的毫秒数。
你非要12位可以 :
new Date().getTime()-1300000000000L
这个数至少100年还是12位。而且不会重复


时间戳高并发还是会有重复的,你应该每获取一次加1的方法生成。用锁对象或者把方法声明为synchronized保证并发也不会重复。如果有用数据库,也可以用数据库提供的sequence来帮你生成

抽取一个方法

这种一般都是序号吧 或者一段字符加上序号 每次取得时候加一

java应该用UUID.
或者数据库上SEQ实现


Calendar calendar = Calendar.getInstance();
System.out.println("现在:"+calendar.getTime().getTime());
calendar.add(Calendar.YEAR, 10);
System.out.println("10年后:"+calendar.getTime().getTime());

输出:

现在:1404208483914

10年后:1719827683914

如果用时间戳,截取后面12位,不要第一位,18年内都不会有大问题,不过这样的话,你的生成ID的方法就得同步,避免高并发的时候可能出现的相同ID(理论上很有可能的,虽然1毫秒内出现生成多个订单的几率很小)


package com.tangkuo.utils;

import java.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值