码迷,mamicode.com
首页 > 其他好文 > 详细

如何生成唯一订单号(转)

时间:2014-07-12 16:14:00      阅读:454      评论:0      收藏:0      [点我收藏+]

标签:blog   java   数据   os   for   div   

首先,订单号有3个性质:1.唯一性  2.不可推测性 3.效率性

唯一性和不可推测性不用说了,效率性是指不能频繁的去数据库查询以避免重复。
况且满足这些条件的同时订单号还要足够的短。
我在java下定制的订单号生成方式如下:
int r1=(int)(Math.random()*(10));//产生2个0-9的随机数
int r2=(int)(Math.random()*(10));
long now = System.currentTimeMillis();//一个13位的时间戳
String paymentID =String.valueOf(r1)+String.valueOf(r2)+String.valueOf(now);// 订单ID

目前规则来看,两个人在同一微秒提交订单重复的概率为1%
订单效果:251393292999921


C#版:
            Random r = new Random();
            for (int i = 0; i < 20; i++)
            {
                int r1 = (int)(r.Next(1, 9) * (10));//产生2个0-9的随机数
                int r2 = (int)(r.Next(1, 9) * (10));
                DateTime tmpTime = DateTime.Now;
                long now = long.Parse(tmpTime.ToString("yyMMddHHmmss") + "99" + tmpTime.Millisecond.ToString());//一个13位的时间戳
                string paymentID = Convert.ToString(r1) + "_" + Convert.ToString(r2) + "_" + Convert.ToString(now);// 订单ID
                textBox2.AppendText(paymentID + "\r\n");
            }

  还有一个性质,不能太长。日期时间不应该显式显示,转换成int会节省一两位数字。

如何生成唯一订单号(转),布布扣,bubuko.com

如何生成唯一订单号(转)

标签:blog   java   数据   os   for   div   

原文地址:http://www.cnblogs.com/JayK/p/3838292.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!