简单介绍订单号或者流水号的生成方法

一般订单号或者流水号等可能在一些平台会用到,然后我就简单的介绍一个我自己生成订单号和流水号的一个方法吧,如果程序有问题或者你有更好的生成办法,欢迎留言,留下你的文章链接,我们一起学习和进步哈。

方法简介:

一般订单号或者流水号的生成,是时间戳+随机数(或者自己写的算法生成),或者是时间戳+订单类型+随机数

比如在A平台付款的,订单类型就是0001,B平台付款的就是0002,总之可以自己想怎么定义就怎么定义,

这里我介绍的是时间戳包括秒(14位)+随机6位数

时间戳生成方法:

这里就不多解释了,相信你写的项目都会用到生成时间的

    /**
     * 获取YYYY-MM-DD HH:mm:ss格式
     * @return
     */
    public static String getTime() {
        SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("时间戳:"+sdfTime.format(new Date()));
        return sdfTime.format(new Date());
    }

但是生成的时间是xxxx-xx-xx xx:xx:xx带 - 和 冒号的,我们要把它去掉,相信去掉的方法有很多,我这里用的是正则去掉的

getTime().replaceAll("[[\\s-:punct:]]", "")

 

有的小伙伴们可能会说,如果一秒+随机数的话,并发量如果很大的话,可能会重复,如果是这样的话,大家可以再在将时间精确到毫秒,如下代码,毫秒+随机数 还是有重复的话,可以再在将随机数扩大到8位10位这样,如果这样在毫秒级别还能重复,那你的并发量是有多大,这么大的企业,自己可以写一个生成订单号的算法了吧,小白只能膜拜大佬了,请问可以招我入职吗

    /**
     * 获取YYYY-MM-DD HH:mm:ss:SS格式 精确到毫秒
     * @return
     */
    public static String getTime() {
        SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS");
        System.out.println("时间戳:"+sdfTime.format(new Date()));
        return sdfTime.format(new Date());
    }

随机6位数生成方法:

这里用到的是java.util.Random类 的Random()方法的nextInt()方法,

讲到这里,就得讲一下 java.lang.Math 类 的Math.random() 方法

区别和联系,其实这两个都是能够生成随机数的,

java.util.Random类中的nextXxxx系列方法生成0-n的随机数;

Math.random() 方法生成[0, 1)范围内的double类型随机数,如果要生成[0,n)范围的,只要乘一个 (n-1)就可以啦

还有最重要的一点,Math.random()是线程安全的,多线程环境也能使用,具体的区别我这里就不多讲了,大家也可以百度这两者之间的区别,比如可以参考一下这篇文章:https://blog.csdn.net/u012099869/article/details/50394644

    /**
     * 随机生成六位数验证码
     * @return
     */
    public static int getRandomNum(){
        Random r = new Random();
        return r.nextInt(900000)+100000;//(int)(Math.random()*999999)
    }

生成订单号如图所示

精确到秒:前面14位是时间,后面6位随机生成

精确到毫秒:前面17位是时间,后面6位是随机生成

生成订单号的demo代码可以下载:(只有一个java文件)

https://download.csdn.net/download/qq_27471405/10696399

 

 

 

参考文章:

https://blog.csdn.net/u012099869/article/details/50394644

感谢原作者的分享,让技术人能够更快的解决问题

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小鱼儿小小林

赞赏是鼓励,点赞是美意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值