1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > java深度模仿支付宝订单号/交易流水号(高性能 不重复)

java深度模仿支付宝订单号/交易流水号(高性能 不重复)

时间:2018-09-08 15:12:17

相关推荐

java深度模仿支付宝订单号/交易流水号(高性能 不重复)

先看一下支付宝的订单号:082600001000040061749694

分析看来:

前六位数(0826)是年月日格式化:yyyyMMdd

中间的8位数(00001000)是:00001000,固定4个0+1000

在后两位(04):随机生成一个两位数

在后两位(00):又是固定的两个0

接下来的6位数是(617496):时分秒的格式化HHmmss

最后两位是(94):又是随机生成

第一回合直接运行代码:CPU瞬间百分之百

然后优化下把年月日,时分秒分别提取出来,假设1秒钟跑1w次:

public static void main(String[] args) {String date = new SimpleDateFormat("yyyyMMdd").format(new Date());String seconds = new SimpleDateFormat("HHmmss").format(new Date());for (int i = 0; i < 10000; i++) {System.out.println(date+"00001000"+getTwo()+"00"+seconds+getTwo());}}

/*** 产生随机的2位数* @return*/public static String getTwo(){Random rad=new Random();String result = rad.nextInt(100) +"";if(result.length()==1){result = "0" + result;}return result;}

再次查看cpu掉了40%,基于目前还未做集群负载的情况下,60%是可以接受的,那么就先告一段落~~

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。