订单号生成

在开发当中我想大部分程序员都会做商城类的项目,其中订单号是一个相对比较重要的数据,在用户下单是不允许有重复订单生成的。
我给大家提供了一个生成订单的方法,希望对您有所帮助!!!!!!!!!!!!

订单号生成规则
订单号=当前时间+随机码+用户id(截取其中某一部分)+随机码
采用的淘宝订单号生成规则的模式

package com;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Random;import org.junit.Test;public class Order_no {// private static int STR = 4;//获取随机数字的固定长度//  private  String DateNow = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));//实时获取系统时间private static String gettime() {return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"));}/** 获取固定长度随机数字*/private static StringBuilder getStrnumber(int STR) {char []numberlist = {'1','2','3','4','5','6','7','8','9','0'};int i ;Random r = new Random();StringBuilder number = new StringBuilder();while(number.length()<STR) {i = Math.abs(r.nextInt(10));if(i>=0&&i<numberlist.length) {number.append(numberlist[i]);}}return number;}/** 订单号生成策略(系统时间+俩位随机数+用户id后两位+三位随机数+用户ID后第五位和第二位)*/public static StringBuilder getOrderno(String id) {if(id.length()<4) {id = getStrnumber(4)+id;}StringBuilder orderno = new StringBuilder();return orderno.append(gettime()).append(getStrnumber(2)).append(id.substring(id.length()-2)).append(getStrnumber(3)).append(id.substring(id.length()-5,id.length()-2));}@Testpublic void hdsgs()  {//测试订单号执行效率int i = 0;List<StringBuilder> list = new ArrayList<StringBuilder>();HashSet< StringBuilder> setlist = new HashSet<StringBuilder>();long starttime = System.currentTimeMillis();while(i<100000) {i++;list.add(getOrderno("1"));setlist.add(getOrderno("1"));}long endtime = System.currentTimeMillis();System.out.println("生成订单总耗时==========="+(endtime-starttime));/** 生成订单总耗时===========3927*/System.out.println(list.size()==setlist.size());}}

可以生成10万条数据订单在两秒内没有重复的订单号。
如果有问题希望大家指点一下,感谢大家!!!!!!!!!!

快速订单号生成(两秒左右10万条数据无重复)相关推荐

  1. epplus保存为流_C# 使用EPPlus 秒导出10万条数据

    //导出Excel protected void BtnMemExcel_Click(objectsender, EventArgs e) { Mem bllMember= newMem();int ...

  2. java mysql 快速插入1000w条数据_教你88秒插入1000万条数据到mysql数据库表

    我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...

  3. 8 种方案机智应对后端一次性返回 10万 条数据

    大厂技术 高级前端 Node进阶点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 问题描述 面试官:后端一次性返回10万条数据给你,你如何处理? 我:歪嘴一笑,what the f ...

  4. SQLSERVER储存过程批量添加10万条数据

    SQLSERVER批量添加10万条数据 insert into PatInfo(PID,name,sex,birthday,createDate,updateDate,ownerID,permBits ...

  5. 【面试题记录】在mysql中查询10万条数据找到第50000到51000条数据,你会怎么做?

    数据库表中准备了10万条数据,今天我们来做一下测试. 数据表:ticket_order_log 主键索引:id 先看一下数据,一共是101176条数据,耗时117s. select * from ti ...

  6. 后端一次性返回10万条数据,使用vue,你该如何渲染?

    vue 解决同时加载万条级数据,页面渲染卡顿问题 1. 问题描述 2. 常见的解决方案 3. 解决方案流程图 4. 代码 1. 问题描述 由于业务需求,需要在一个页面中点击查询按钮时加载出所有的数据, ...

  7. mysql插10万条数据_如何快速安全的插入千万条数据?

    点击上方 小伟后端笔记 ,选择 星标 公众号 重磅资讯.干货,第一时间送达 最近有个需求解析一个订单文件,并且说明文件可达到千万条数据,每条数据大概在20个字段左右,每个字段使用逗号分隔,需要尽量在半 ...

  8. redis存10万条数据_redis详细介绍

    一 介绍 1. redis介绍(redis安装在磁盘,redsi数据存储在内存) 服务器交互 2. Redis是一种基于键值对(key-value)数据库,其中value可以为string. hash ...

  9. redis存10万条数据_redis如何存储数据

    飞天技术汇 | 阿里云Redis产品升级大全 阿里云Redis重磅产品升级:全球多活版.混合存储版.多线程性能增强版. 这期飞天技术汇你将看到 ● 企业如何实现业务快速全球化布局 ● 冷热数据如何分离 ...

最新文章

  1. 工信部支持的项目接单平台,团队、公司请进
  2. python无法调用pygame,python-pycharm无法识别pygame程序包
  3. 安装VMware Tools 灰色解决办法
  4. 源代码管理之SVN服务器搭建和使用
  5. 个人知识整理(javascript篇初识)
  6. 【剑指Offer】06跳台阶
  7. 数据通信与计算机网络第2版,数据通信与计算机网络(第2版)习题1
  8. js使用正则表达式验证身份证格式
  9. 超全回顾 | 5位抖音工程师揭秘抖音iOS基础技术(附PPT和回放视频)
  10. 天尚网最新单机游戏下载,直接下载哦!
  11. c 语言奇数幻方代码,【C】——幻方算法(示例代码)
  12. SpringBoot系列课程(二)-SpringBoot整合MyBatis
  13. python爬取B站网页排行榜数据(进阶版)
  14. 【华为云技术分享】小熊派IoT开发板华为物联网操作系统LiteOS内核实战教程01-IoT-Studio介绍及安装
  15. SATA、mSATA 、PCIe和M.2——SSD硬盘的接口
  16. 常用Mysql存储引擎--InnoDB和MyISAM简单总结
  17. 总结如何提升网站流量之方法
  18. 贾扬清开源 AI 框架 Caffe | 开源英雄
  19. ios 更新尺寸调用什么方法_iOS开发:iPhone尺寸和适配
  20. 运算放大器的datasheet参数介绍

热门文章

  1. 【Cocoa(mac) Application 开发系列之四】动作编辑器(Cocos2dx)制作流程详解及附上响应鼠标滚轴事件、反转坐标系、导入/创建资源目录等知识点代码!
  2. Fedora 14 下安装五笔输入法
  3. 关于实现国密sm3的一些问题
  4. 跨国企业在中国 | 麦德龙和物美将成立合资公司;洲际与南航开启精英会员等级匹配...
  5. BPM流程管理协助打通企业管理“任督二脉”
  6. 爬虫实践:通过百度地图API获取省份公园数据
  7. error TS2307: Cannot find module 'rxjs-compat/Observable'
  8. blat install
  9. 51单片机系列知识5--并口(2)
  10. Photoshop设计清新风格绿色登陆框教程