程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#生成獨一不反復定單號

C#生成獨一不反復定單號

編輯:C#入門知識

C#生成獨一不反復定單號。本站提示廣大學習愛好者:(C#生成獨一不反復定單號)文章只能為提供參考,不一定能成為您想要的結果。以下是C#生成獨一不反復定單號正文


在弄電商類網站的時刻,常常是依據年代日時分秒的格局生成定單號(yyyyMMddHHmmss),為懂得決並發性,就直接在生成定單號的區域塊加上lock。

  上面,我們來簡略測試一下。

1.新建項目(掌握台運用法式)

2.新建一個類:OrderIdHelper.cs

 /// <summary>
 /// 定單助手
 /// </summary>
 class OrderIdHelper
 {
   private static readonly object Locker = new object();
   private static string _tempId = "";

   /// <summary>
   /// 生成定單編號
   /// </summary>
   public static void GenerateId()
   {
     lock (Locker)  //lock 症結字可確保當一個線程位於代碼的臨界區時,另外一個線程不會進入該臨界區。
     {
       var orderId = "Wen" + DateTime.Now.ToString("yyyyMMddHHmmss"); //年代日時分秒

       if (string.Equals(_tempId, orderId))
       {
         throw new Exception("定單號反復!");
       }

       _tempId = orderId;

       Console.WriteLine(orderId);
     }
   }
 }

3.Program.cs

 class Program
 {
   static void Main(string[] args)
   {
     //創立包括兩個線程的數組
     var threads = new Thread[2]
     {
       new Thread(OrderIdHelper.GenerateId),
       new Thread(OrderIdHelper.GenerateId),
     };

     foreach (var thread in threads)
     {
       //線程啟動
       thread.Start();
     }

     Console.Read();
   }
 }

4.成果:=====OrderIdDemo_1.rar 點我下載=====

5.發明一個不錯的定單號生陳規則,稍作修改: 不反復定單號生陳規則(原網址)

/// <summary>
/// 定單助手
/// </summary>
public class OrderHelper
{
  /// <summary>
  /// 避免創立類的實例
  /// </summary>
  private OrderHelper() { }

  private static readonly object Locker = new object();
  private static int _sn = 0;

  /// <summary>
  /// 生成定單編號
  /// </summary>
  /// <returns></returns>
  public static string GenerateId()
  {
    lock (Locker)  //lock 症結字可確保當一個線程位於代碼的臨界區時,另外一個線程不會進入該臨界區。
    {
      if (_sn == int.MaxValue)
      {
        _sn = 0;
      }
      else
      {
        _sn++;
      }
      
      Thread.Sleep(100);

      return "Wen" + DateTime.Now.ToString("yyyyMMddHHmmss")+ _sn.ToString().PadLeft(10, '0');
    }
  } 
}

 6.關於應用GUID的小我看法。

 ①不清晰生成的時光,不便利治理。

  ②官方說明:GUID 是一個 128 位整數(16 字節),可用於一切須要獨一標識符的盤算機和收集。 此標識符反復的能夠性異常小。

以上所述就是本文的全體內容了,願望年夜家可以或許愛好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved