Java订单编号生成

这篇具有很好参考价值的文章主要介绍了Java订单编号生成。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

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


一、订单编号是什么?

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

二、使用步骤

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.生成结果

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

三、代码效率

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订单编号生成


总结

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

到了这里,关于Java订单编号生成的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【java面试】Java开发当中遇到的问题以及解决方法(147)

    问题一: 每个公司都有部门树结构,但是大公司的部门树每年可能会发生调整; 一般开发中我们都是直接根据部门ID去查询或者过滤数据或者做权限管控; 部门调整以后,可能就会查询不到数据或者过滤数据出问题; 如何解决 :每年调整的部门ID和原来的部门ID做映射关系(

    2024年01月24日
    浏览(39)
  • 关于计数以及Index返回订单号升级版002(控制字符长度,控制年月标记,拾取未使用编号)--使用两个表来满足操作

    1.根据参数获取当前setNoIndex表里现在的No的index值,如果包含当前对应数据,则现在SetIndexNoLeft 表中找到有无未使用并未占用的那条数据(被占用的数据IsTaken=1,生成后使用当前时间与updated时间进行比对,然后时间超过30分钟后会把状态变更为 IsTaken =0 ),如果有就返回

    2024年02月12日
    浏览(27)
  • SQL 生成连续的编号

    给大家一分钟,请思考:在你熟悉的数据库里使用 SQL 快速生成 001~999 的编号有哪些方法。 以下是我想到的在 MySQL 中可以实现的方法。 我把这个实现过程分成两部分: 生成 1~999 的序号; 对不足三位数的序号在前面补‘0’。 MySQL 提供了  LPAD()  左填充函数,因此第二

    2024年02月12日
    浏览(33)
  • 区块链当中Bitcoin的Segwit地址生成原理

     Segwit地址又称隔离见证地址。在Bitcoin Blockchain上,经常可以看到类似 bc1qmy63mjadtw8nhzl69ukdepwzsyvv4yex5qlmkd 这样的以 bc 开头的地址,这种地址就是隔离见证地址。 Segwit地址有好几种,一种是以 3 开头的隔离见证兼容地址(Nested Segwit Address),从该地址上无法区分到底是多签地址

    2024年01月23日
    浏览(31)
  • 【c语言】详解c语言#预处理期过程 | 宏定义前言

    c语言系列专栏: c语言之路重点知识整合   创作不易,本篇文章如果帮助到了你,还请点赞支持一下♡𖥦)!!  主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步! 给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ 代码编译到执

    2024年02月01日
    浏览(36)
  • 使用邻接矩阵实现最小生成树Prim算法 题目编号:1135

    用邻接矩阵存储无向图,实现最小生成树Prim算法,图中边的权值为整型,顶点个数少于10个。 部分代码提示: #include using namespace std; const int MaxSize = 10; const int INF = 32767; class MGraph { public: MGraph(char a[], int n, int e); private: char vertex[MaxSize]; int arc[MaxSize][MaxSize]; int vertexNum, arcNum; }

    2024年02月06日
    浏览(30)
  • 【业务功能篇99】微服务-springcloud-springboot-电商订单模块-生成订单服务-锁定库存

    一个是需要生成订单信息一个是需要生成订单项信息。具体的核心代码为 锁定库存的操作,需要操作ware仓储服务。 没有库存或者锁定库存失败我们通过自定义的异常抛出 如果下订单操作成功(订单数据和订单项数据)我们就会操作锁库存的行为 锁定库存失败通过抛异常来

    2024年02月09日
    浏览(39)
  • chat gpt 在开发当中的应用

    chatgpt 出来已经有一段时间了,本人在开发的过程中也是有去使用。 经常使用的是讯飞大模型和通义千问,在使用的过程中,个人感觉讯飞大模型在写代码方面会比较智能。 比如问一个 sqlser 单表 数据量 几个亿如何处理的问题,讯飞会给出几个个人认为比较合理的解决方案

    2024年02月08日
    浏览(27)
  • 【Java当中让事务回滚】

    在 Java 中,可以通过使用事务来保证数据库操作的一致性和完整性。如果在事务过程中发生了异常或错误,需要将事务回滚,以保证数据的正确性和完整性。 下面是在 Java 中让事务回滚的几种方式: 使用 Spring 事务管理:在 Spring 中,可以使用 @Transactional 注解来标记需要进行

    2024年02月11日
    浏览(25)
  • R语言和Python用泊松过程扩展:霍克斯过程Hawkes Processes分析比特币交易数据订单到达自激过程时间序列...

    本文描述了一个模型,该模型解释了交易的聚集到达,并展示了如何将其应用于比特币交易数据。这是很有趣的,原因很多。例如,对于交易来说,能够预测在短期内是否有更多的买入或卖出是非常有用的。另一方面,这样的模型可能有助于理解基本新闻驱动价格与机器人交

    2024年02月10日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包