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

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

方法简介:

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

比如在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

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

发布了82 篇原创文章 · 获赞 109 · 访问量 35万+

猜你喜欢

转载自blog.csdn.net/qq_27471405/article/details/82887786