zoukankan      html  css  js  c++  java
  • 如何生成唯一订单号(转)

    首先,订单号有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 + "
    ");
                }
    

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

  • 相关阅读:
    hdu 1695 GCD(欧拉函数+容斥)
    hdu 5072 Coprime (容斥)
    hdu 4135 Co-prime(容斥)
    畅通工程,继续畅通工程,畅通工程再续,多种解法
    Palindrome
    括号匹配(二)(动态规划)
    搬寝室(动态规划)
    Common Subsequence(lcs)
    周赛题解
    亲和串(两种方法妙解)
  • 原文地址:https://www.cnblogs.com/JayK/p/3838292.html
Copyright © 2011-2022 走看看