zoukankan      html  css  js  c++  java
  • RNGCryptoServiceProvider 生成订单号

    先生成1~1000的随机数

    class Program
        {
            // Create a new instance of the RNGCryptoServiceProvider.  
            private static System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
    
            static void Main(string[] args)
            {
                for (int i = 0; i < 100; i++)
                {
                    int a = NextRandom(1000, 1, rng);
                    Console.WriteLine(string.Format("{0}{1}", DateTime.Now.ToString("yyyyMMddHHmmssfff"), a.ToString().PadLeft(4, '0')));
                }
                Console.Read();
            }
            private static int NextRandom(int numSeeds, int length, System.Security.Cryptography.RNGCryptoServiceProvider rng)
            {
                // Create a byte array to hold the random value.  
                byte[] randomNumber = new byte[length];
                // Fill the array with a random value.  
                rng.GetBytes(randomNumber);
                // Convert the byte to an uint value to make the modulus operation easier.  
                uint randomResult = 0x0;
                for (int i = 0; i < length; i++)
                {
                    randomResult |= ((uint)randomNumber[i] << ((length - 1 - i) * 8));
                }
                return (int)(randomResult % numSeeds) + 1;
            }
        }
    View Code

    注意将RNGCryptoServiceProvider定义为循环外的静态变量。

    经测试,这样在并发不大的时候能保证订单号的唯一性。

  • 相关阅读:
    Memcached 缓存服务器介绍
    hibernate ——联合主键
    hibernate ——关联关系
    Spring与Struts整合
    spring-DataSource
    hibernate ——helloWorld程序(annotation配置)
    hibernate ——helloWorld程序(XML配置)
    Struts2 知识体系
    Encoding filter 编码过滤器
    jQuery.ajax() 函数详解
  • 原文地址:https://www.cnblogs.com/tylertang/p/11183303.html
Copyright © 2011-2022 走看看