高并发生成唯一订单号

最近开发一套会员系统,涉及到订单号生成,在高并发条前提下,如何生成唯一的订单号值得斟酌,我这里提供一种较为可行的方案:

public static String getOrderIdByUUId() {
        Date date=new Date();
        DateFormat format = new SimpleDateFormat("yyyyMMdd");
        String time = format.format(date);
        int hashCodeV = UUID.randomUUID().toString().hashCode();
        if (hashCodeV < 0) {//有可能是负数
            hashCodeV = -hashCodeV;
        }
        // 0 代表前面补充0
        // 4 代表长度为4
        // d 代表参数为正数型
        return time + String.format("%011d", hashCodeV);
    }

基本思路如下:

1、获取当前日期作为订单号前8位

2、获取uuid,uuid是通用唯一识别码,具有唯一性,进行hashcode转码后依旧可以保证其唯一性,用其作为订单尾号再合适不过,我们取其11位

3、拼接日期及uuid hash码,即生成了高度唯一的订单号

    原文作者:r萧枫
    原文地址: https://blog.csdn.net/sinat_24527911/article/details/78590320
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞