国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#生成唯一不重復訂單號

2020-01-24 01:38:19
字體:
來源:轉載
供稿:網友

在弄電商類網站的時候,往往是根據年月日時分秒的格式生成訂單號(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 字節),可用于所有需要唯一標識符的計算機和網絡。 此標識符重復的可能性非常小。

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 林西县| 合山市| 民勤县| 工布江达县| 林口县| 岐山县| 五家渠市| 潞西市| 大田县| 固原市| 社旗县| 红河县| 广东省| 南木林县| 册亨县| 托克托县| 阿尔山市| 晋城| 察哈| 汝南县| 清徐县| 兖州市| 青冈县| 泸溪县| 昌图县| 东兴市| 易门县| 鄯善县| 永福县| 拜泉县| 阿克苏市| 苍梧县| 交口县| 洛浦县| 高州市| 永嘉县| 宁化县| 绩溪县| 宁德市| 绍兴县| 稷山县|