文章目录

  • 前言
  • 一、订单编号是什么?
  • 二、使用步骤
    • 1.引入库
    • 2.生成订单编号
    • 3.生成结果
  • 三、代码效率
    • 1.生成100万的订单编号
    • 2.生成100万的订单编号耗时
  • 总结

前言

开发过程当中可能会遇见生成订单编号,那么订单编号分为有序的,也分为无序的编号,今天本文介绍有序的订单编号,根据时间戳来生成订单编号。


一、订单编号是什么?

订单编号代表该单据在一个系统当中独一无二的存在,不可能会有第二个订单编号的存在,在平时购物的时候,吃饭的时候等都会生成对应的订单编号,吃饭的时候生成流水号,购物的时候生成订单编号和交易号,都会有相关的编码规则来实现。

二、使用步骤

1.引入库

代码如下(示例):

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

2.生成订单编号

该代码是根据时间戳来生成14位的时间格式编号,后面getRandom方法又是随机生成6位数的编码,这样订单编码就是20位,中间有6位并发线程。什么意思呢,中间的6为随机号可以承载的并发量也就是10万级别的,保证在一秒以内生成的订单编号就不会出现重复,里面设置了24位数的限制,如果不满24位数可以通过0来补齐,在实际的开发当中也可能生成固定位数订单编码,所以是可以通过这个长度来进行控制,满足实际的开发需求。

代码如下(示例):

public class orderNoCreate {public static void main(String[] args) {System.out.println(randomOrderCode());}public static String randomOrderCode() {SimpleDateFormat dmDate = new SimpleDateFormat("yyyyMMddHHmmss");String randata = getRandom(6);Date date = new Date();String dateran = dmDate.format(date);String Xsode = "XS" + dateran + randata;if (Xsode.length() < 24) {Xsode = Xsode + 0;}return Xsode;}public static String getRandom(int len) {Random r = new Random();StringBuilder rs = new StringBuilder();for (int i = 0; i < len; i++) {rs.append(r.nextInt(10));}return rs.toString();}
}

3.生成结果

以下是生成单独订单的结果,根据时间格式来获取时间戳,生成当前节点的一个订单编号。

三、代码效率

1.生成100万的订单编号

执行效率,按照100万的执行量来进行测试,调用此方法插入到list当中,最后查看整个list的长度,来判断整个代码的一个效率。
代码如下

public static void main(String[] args) {System.out.println("执行开始时间" + new SimpleDateFormat("YYYY-MM-dd HH:mm:ss:SSS").format(new Date()));List<String> result = new ArrayList<>();for (int i = 0; i < 1000000; i++){result.add(randomOrderCode());}System.out.println(result.size());System.out.println("执行结束时间" + new SimpleDateFormat("YYYY-MM-dd HH:mm:ss:SSS").format(new Date()));}

2.生成100万的订单编号耗时

执行结果如下图所示,list长度为100万,中间不有add方法添加的list当中,就好比订单调用的赋值时间,中耗时1509毫秒,生成100万个订单编号,所以执行效率相对比较不错。


总结

订单编号生成在实际开发当中用的相对比较多,比如销售订单,采购订单等,订单编号可以通过前面的字段来进行区分,生成不同的订单编号来作为业务区分。本订单编码生成在执行效率和时间上面相对比较不错,后面再考虑高并发的情况下面,加上锁,可以完全胜任实际的业务需求。略有不足还请指教。

Java订单编号生成相关推荐

  1. Java订单编号生成(安全永不重复)

    package com.cdu.utils;import java.text.DateFormat; import java.text.SimpleDateFormat; import java.ut ...

  2. 订单编号生成方案研究

    1.现有方式:通过redis incry函数自增 redis控制并发 2.需求:订单编号为30位左右的数字编号 不再采用自增方式(自增方式容易被利用) 订单编号具有基本的可读性(如年月日的可读性) 企 ...

  3. 我的物联网项目(二十四) 订单编号生成规则

    这一章其实应该在前面就要写到,顺便说下,我写这些文章只是随意写写,并没有太强的先后顺序,可能在写到后面的时候突然想起来,还有些东西前面应该交代的,所以我就补上来,但是整体的先后顺序是没有问题的,后面有 ...

  4. java 项目 订单编号生成规则及代码

    日期流水号 年月日+六位数流水号,每天序号都从 000 001 开始,例如:20210322000001 定义一个生成流水号的方法generateNo(date),在需要获取流水号的地方调用该方法,方 ...

  5. java订单编号工具类_[idmiss-common] Java 工具类之- 顺序订单号的生成

    1.前言 这是我写的工具类之一:根据日期生成唯一顺序订单号. 用Java 配合 Redis 实现包含日期的顺序订单号的生成, 效率可以达到 2500+/s 1000W+/h 个 . 2.基本介绍 框架 ...

  6. java订单编号生产代码,java 订单编号 生成器,可用于生产环境

    1.订单头/** 订单类别头 */ private static final String ORDER_CODE = "1"; /** 退货类别头 */ private stati ...

  7. java自定义编号生成(支持前缀自定义)

    工作中要求合同编号自动生成 格式 NYZL-001,NYZL-002...在我的StringUtils工具类中新增如下方法,该方法可以自定义前缀以及当前排到数字几了(可从数据库中查询最大的编号+1) ...

  8. Java 订单号生成

    时间戳+随机数+用户唯一id public static String getOrderIdByTime() {SimpleDateFormat sdf = new SimpleDateFormat( ...

  9. mysql 生成流水号 存储过程 订单编号

    用存储过程生成流水号是很常用的,这里以生成订单编号的流水号作为示例.(新的一天的流水号从1开始,如:今天的订单编号是CD2013010900014,下一个订单编号将是CD2013010900015:明 ...

最新文章

  1. 字符串中匹配\n,\t 判读是否为nonetype类型
  2. Mac下sublime text2 解决中文乱码
  3. Oracle11.2新特性之listagg函数 (行列转换)
  4. 生信分析必须了解的4种文件格式
  5. jquery easyui的应用-2
  6. 企业家Scott Gerber:小公司应用开发的十条建议
  7. WebLogic重启
  8. Linux 命令(23)—— rm 命令
  9. 技术评审之技术文档的规范模板
  10. Python爬虫:对Uniqlo、Zara、HM等快销品牌的门店数量作统计并展示
  11. css去掉原生input框的border属性
  12. 2018科大讯飞营销广告算法大赛
  13. 登陆共享服务器的用户名和密码怎么修改
  14. VBA -[知识点]: 字典
  15. kettle性能及效率提升
  16. 人工神经网络的典型模型,人工神经网络模型定义
  17. 苹果党福利!手机数据备份恢复使用攻略
  18. 陶哲轩等人用编程方法,推翻了60年几何难题「周期性平铺猜想」
  19. HDU 5514 Frogs
  20. 什么样的人可以担任项目经理?

热门文章

  1. 电子制作:具有固定输出电压的稳压电源电路的制作
  2. 【C语言编程学习】当鸣人放了一个螺旋丸,我突然发觉这个事情不简单......
  3. TypeScript + Vue 实现某个canvas科幻背景 -- 1
  4. windows python删除文件文件夹报错:PermissionError
  5. 浙江高校计算机等级考试分值,浙江计算机二级高级办公软件word题分值是多少...
  6. php 调用 百度SDK 实现 图片审核+文本内容审核(敏感词过滤)
  7. 单片机下载proteus和keil出现问题
  8. php判断电脑还是手机浏览器打开网页,php判断是手机还是电脑访问网站
  9. WeChall-Training: Get Sourced
  10. ppt矩形里面的图片怎么放大缩小_图形的放大与缩小(公开课 ppt课件).ppt