最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#生成唯一不重復(fù)訂單號(hào)

 更新時(shí)間:2015年07月10日 10:45:45   投稿:hebedich  
本文給大家介紹的是使用C#生成唯一不重復(fù)訂單號(hào)的方法,主要用到了lock鎖,有需要的小伙伴可以參考下。

在弄電商類網(wǎng)站的時(shí)候,往往是根據(jù)年月日時(shí)分秒的格式生成訂單號(hào)(yyyyMMddHHmmss),為了解決并發(fā)性,就直接在生成訂單號(hào)的區(qū)域塊加上lock。

  下面,我們來簡(jiǎn)單測(cè)試一下。

1.新建項(xiàng)目(控制臺(tái)應(yīng)用程序)

2.新建一個(gè)類:OrderIdHelper.cs

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

   /// <summary>
   /// 生成訂單編號(hào)
   /// </summary>
   public static void GenerateId()
   {
     lock (Locker)  //lock 關(guān)鍵字可確保當(dāng)一個(gè)線程位于代碼的臨界區(qū)時(shí),另一個(gè)線程不會(huì)進(jìn)入該臨界區(qū)。
     {
       var orderId = "Wen" + DateTime.Now.ToString("yyyyMMddHHmmss"); //年月日時(shí)分秒

       if (string.Equals(_tempId, orderId))
       {
         throw new Exception("訂單號(hào)重復(fù)!");
       }

       _tempId = orderId;

       Console.WriteLine(orderId);
     }
   }
 }

3.Program.cs

 class Program
 {
   static void Main(string[] args)
   {
     //創(chuàng)建包含兩個(gè)線程的數(shù)組
     var threads = new Thread[2]
     {
       new Thread(OrderIdHelper.GenerateId),
       new Thread(OrderIdHelper.GenerateId),
     };

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

     Console.Read();
   }
 }

4.結(jié)果:=====OrderIdDemo_1.rar 點(diǎn)我下載=====

5.發(fā)現(xiàn)一個(gè)不錯(cuò)的訂單號(hào)生成規(guī)則,稍作改動(dòng): 不重復(fù)訂單號(hào)生成規(guī)則(原網(wǎng)址)

/// <summary>
/// 訂單助手
/// </summary>
public class OrderHelper
{
  /// <summary>
  /// 防止創(chuàng)建類的實(shí)例
  /// </summary>
  private OrderHelper() { }

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

  /// <summary>
  /// 生成訂單編號(hào)
  /// </summary>
  /// <returns></returns>
  public static string GenerateId()
  {
    lock (Locker)  //lock 關(guān)鍵字可確保當(dāng)一個(gè)線程位于代碼的臨界區(qū)時(shí),另一個(gè)線程不會(huì)進(jìn)入該臨界區(qū)。
    {
      if (_sn == int.MaxValue)
      {
        _sn = 0;
      }
      else
      {
        _sn++;
      }
      
      Thread.Sleep(100);

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

 6.關(guān)于使用GUID的個(gè)人見解。

?、俨磺宄傻臅r(shí)間,不方便管理。

 ?、诠俜浇忉專篏UID 是一個(gè) 128 位整數(shù)(16 字節(jié)),可用于所有需要唯一標(biāo)識(shí)符的計(jì)算機(jī)和網(wǎng)絡(luò)。 此標(biāo)識(shí)符重復(fù)的可能性非常小。

以上所述就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • C#使用Effects給圖片增加陰影效果

    C#使用Effects給圖片增加陰影效果

    這篇文章介紹了C#使用Effects給圖片增加陰影效果的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • c#使用htmlagilitypack解析html格式字符串

    c#使用htmlagilitypack解析html格式字符串

    這篇文章主要介紹了c#使用htmlagilitypack解析html格式字符串的示例,需要的朋友可以參考下
    2014-03-03
  • C#給Excel添加水印實(shí)例詳解

    C#給Excel添加水印實(shí)例詳解

    這篇文章主要介紹了C#給Excel添加水印實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • Unity實(shí)現(xiàn)卡拉OK歌詞過渡效果

    Unity實(shí)現(xiàn)卡拉OK歌詞過渡效果

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)卡拉OK歌詞過渡效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • 基于C#實(shí)現(xiàn)哈夫曼樹算法

    基于C#實(shí)現(xiàn)哈夫曼樹算法

    哈夫曼樹又稱最優(yōu)二叉樹,也就是帶權(quán)路徑最短的樹,對(duì)于哈夫曼樹,我想大家對(duì)它是非常的熟悉,使用下面我們就來學(xué)習(xí)一下如何通過C#實(shí)現(xiàn)哈夫曼樹算法吧
    2023-11-11
  • C#使用AForge實(shí)現(xiàn)調(diào)用攝像頭的示例詳解

    C#使用AForge實(shí)現(xiàn)調(diào)用攝像頭的示例詳解

    AForge是一個(gè)專門為開發(fā)者和研究者基于C#框架設(shè)計(jì)的,這個(gè)框架提供了不同的類庫和關(guān)于類庫的資源,本文為大家介紹了C#使用AForge實(shí)現(xiàn)調(diào)用攝像頭的相關(guān)教程,需要的可以了解下
    2023-11-11
  • C#聯(lián)合VisionPro實(shí)現(xiàn)TCP/IP通信詳解

    C#聯(lián)合VisionPro實(shí)現(xiàn)TCP/IP通信詳解

    TCP/IP(傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議)是一組用于在網(wǎng)絡(luò)上進(jìn)行通信的通信協(xié)議,本文主要為大家詳細(xì)介紹了C#如何聯(lián)合VisionPro實(shí)現(xiàn)TCP/IP通信,希望對(duì)大家有所幫助
    2024-02-02
  • C#中科學(xué)繪圖庫ScottPlot的使用詳解

    C#中科學(xué)繪圖庫ScottPlot的使用詳解

    ScottPlot是基于.Net的一款開源免費(fèi)的交互式可視化庫,支持Winform和WPF等UI框架,本文給大家介紹了C#中科學(xué)繪圖庫ScottPlot的使用方法,文中示例在WPF環(huán)境中運(yùn)行,需要的朋友可以參考下
    2023-12-12
  • C#可選參數(shù)的相關(guān)使用

    C#可選參數(shù)的相關(guān)使用

    .net framework 4.0新增加了可選參數(shù)的支持,其實(shí)很簡(jiǎn)單,只要給參數(shù)賦個(gè)默認(rèn)值就可以了
    2013-05-05
  • C#屬性(Attribute)用法實(shí)例解析

    C#屬性(Attribute)用法實(shí)例解析

    這篇文章主要介紹了C#屬性(Attribute)用法實(shí)例解析,需要的朋友可以參考下
    2014-08-08

最新評(píng)論

桐乡市| 彭阳县| 宿松县| 云和县| 古丈县| 沂源县| 封丘县| 南部县| 那曲县| 安化县| 九龙县| 旬邑县| 黄冈市| 潢川县| 汉川市| 棋牌| 长白| 阳西县| 潮州市| 黑河市| 水富县| 南江县| 兴城市| 博罗县| 长泰县| 仁布县| 墨脱县| 武乡县| 聊城市| 革吉县| 鄂尔多斯市| 旬阳县| 江油市| 同心县| 曲阳县| 凤阳县| 乐昌市| 浪卡子县| 宿松县| 桃江县| 米林县|