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

方法简介:

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

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

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

简单介绍订单号或者流水号的生成方法相关推荐

  1. Java 有序生成订单号或流水号

    前言   最近用到了一些编号的生成规则记录一下,有序的生成订单号或者流水号 概述   第一种方式,适用于循环生成订单编号,例如有 100 条数据,需要循环生成相对应编号可以使用,下方的方法,仅限于特定 ...

  2. java 生成交易快照_Java生成订单号/交易流水号

    分析:既然是订单号/交易流水号,首先是不能重复,其次需考虑到性能问题. 设计如下: "HF"+时间戳+随机数+循环数 代码如下: int x = 1000; for(int i=0 ...

  3. 订单号补0操作便捷方法

    之前业务需要生成诸如TEST201912100000000008的订单号,订单号后面的10位数字需要进行补0操作,一直用的方法一感觉很笨拙,前段时间突然发现JDK1.5中,String类新增了一个很有 ...

  4. 引用 DateTime.Now.ToString() 生成编号或者简单的订单号;

    制作一个简单的利用日期转换字符串生成的编号,例如:DateTime.Now.ToString("YYDJyyyyMddHmmss")+"DONGF"; 生成的号 ...

  5. 订单号唯一ID顺序生成(一个轻量的实现)

    一个唯一的ID可以使用UUID,但不是顺序的. 一个自增的ID可以使用数据库序列.自增主键.雪花算法等等. 本文分享一个简单实用的一个ID生成代码,支持生成顺序自增且唯一的ID,一个工具类可以直接拷贝 ...

  6. Java16位订单号,Java通过UUID生成16位唯一订单号

    小编在工作中遇到了标题中的场景,先查了一些微博,参考下大佬经验.最终发现大家写的都是一套代码,没有太多的信息量做对比,并且UUID的hashcode值重复的概率有多大问题,没有人给解释.小编根据自己经 ...

  7. 简单介绍Linux进程文件路径的获取方法

    Linux进程文件路径在哪里才能找得到呢,有时会让Linux系统管理员费些心思,这里小编说一个简单的案例,相信会让不少管理员有所收获,帮助轻松获得想要的Linux进程文件路径,完成指定任务. 进入/p ...

  8. java单元测试启动类配置_Springboot 单元测试简单介绍和启动所有测试类的方法

    最近一段时间都是在补之前的技术债,一直忙着写业务代码没有注重代码的质量,leader也在强求,所有要把单元测试搞起来了 我把单元测试分为两种 一个是service的单元测试,一个是controller ...

  9. 简单介绍.Net性能测试框架Crank的使用方法

    这篇文章介绍了.Net性能测试框架Crank的使用方法.对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 Crank 是微软新出的一个性能测试框架,集成了多种基准测 ...

最新文章

  1. Mysql性能优化方案
  2. IDEA下JNI开发快速生成头文件方法
  3. 如何步入深度学习刷榜第一重境界
  4. 曲奇问答CEO:从产品经理的角度玩转社区类产品
  5. ubuntu apt-get update 由于没有公钥,无法验证下列签名: NO_PUBKEY 3B4FE6ACC0B21F32
  6. 报错:“-bash: git: 未找到命令”
  7. pip install python -32_pip安装python模块方法
  8. 15分钟构建超低成本数据大屏:DataV + DLA
  9. MySQL avg()函数
  10. Java的多态形式中,如何访问成员变量和调用成员方法
  11. Windows 手动触发 BSOD
  12. Java构建工具:Maven与Gradle的对比
  13. c语言 字符串转整型
  14. 2008r2 请检查名称的拼写_甲状腺素、甲状腺激素、T3、T4…这些名称你分得清吗?...
  15. 下一个20年: 从搜索经济到算法经济 (从B站跨年爆红 等想到的)
  16. 数学微笑了,迎来美好发展时光
  17. ADC—应用交付-AX系列
  18. 解决vscode突然不能自动补全html标签
  19. 阿松嘚嘚嘚-数据库篇2-完美范式不完美
  20. 相关方管理---章节练习

热门文章

  1. Flutter 凸起效果底部导航栏一
  2. 乔致庸毕生的三大项目之二:疏通南北茶路
  3. spring5不为人知的秘密
  4. 算法岗面试复盘| 阿里、百度、作业帮、华为
  5. 对比学习学到了什么?(交流帖)
  6. 大话设计模式——装饰者模式
  7. 数据传输高性能中间键Avro介绍及基本应用
  8. 十年 Java API 版权案终落地、Log4j 漏洞蛰伏八年后席卷全球,2021 年开源圈大事件盘点
  9. html通过分辨率动态加载css,做响应式页面,响应式和自适应的区别
  10. 阿里云产品推荐——专有宿主机