高并发生成唯一订单号
最近开发一套会员系统,涉及到订单号生成,在高并发条前提下,如何生成唯一的订单号值得斟酌,我这里提供一种较为可行的方案:
基本思路如下:
1、获取当前日期作为订单号前8位
2、获取uuid,uuid是通用唯一识别码,具有唯一性,进行hashcode转码后依旧可以保证其唯一性,用其作为订单尾号再合适不过,我们取其11位
3、拼接日期及uuid hash码,即生成了高度唯一的订单号
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码,即生成了高度唯一的订单号
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: VS下EXE可执行文件启动代码剖析
- 下一篇: nginx 实现mysql的负载均衡