成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

高并發下怎樣生成唯一的訂單號?

開發 架構
一個軟件系統,肯定到處充滿著各種單據,也必然需要有各種單據號與之對應。比如:電商行業的訂單號、支付流水號、退款單號等等。

[[408513]]

本文轉載自微信公眾號「UP技術控」,作者conan5566。轉載本文請聯系UP技術控公眾號。

 一個軟件系統,肯定到處充滿著各種單據,也必然需要有各種單據號與之對應。比如:電商行業的訂單號、支付流水號、退款單號等等。SCM的采購單號、進貨單號、出貨單號、盤點單號等。在一個企業內部或者一個2C的平臺,無法避免的需要通過某個單據號來進行溝通。所以一個好的單據號必然是便于溝通的。那么如何創建全局唯一的單據號。

1、單系統使用object

  1. /// <summary> 
  2.    /// 單號助手 
  3.    /// </summary> 
  4.    public class BillNoHelper 
  5.    { 
  6.  
  7.        /// <summary> 
  8.        ///  防止創建類的實例 
  9.        /// </summary> 
  10.        private BillNoHelper() { } 
  11.        private static readonly object locker = new object(); 
  12.        private static int _sn = 0; 
  13.        /// <summary> 
  14.        /// 生成單據編號 
  15.        /// </summary> 
  16.        /// <returns></returns
  17.        public static string GenerateId() 
  18.        { 
  19.            lock (locker)   //lock 關鍵字可確保當一個線程位于代碼的臨界區時,另一個線程不會進入該臨界區。 
  20.            { 
  21.                if (_sn == 9999) 
  22.                { 
  23.                    _sn = 1; 
  24.                } 
  25.                else 
  26.                { 
  27.                    _sn++; 
  28.                } 
  29.                return DateTime.Now.ToString("yyMMddHHmmss") + _sn.ToString().PadLeft(4, '0'); 
  30.            } 
  31.        } 
  32.        /// <summary> 
  33.        /// 唯一值 
  34.        /// </summary> 
  35.        /// <returns></returns
  36.        public static string guid() 
  37.        { 
  38.            return Guid.NewGuid().ToString().Replace("-"""); 
  39.        } 
  40.        /// <summary> 
  41.        /// GuidExtension 
  42.        /// </summary> 
  43.        /// <param name="guid"></param> 
  44.        /// <returns></returns
  45.        public static string IsNum(Guid guid) 
  46.        { 
  47.            var s = guid.ToString(); 
  48.            var sb = new StringBuilder(); 
  49.            for (int i = 0; i < s.Length; i++) 
  50.            { 
  51.                if (Char.IsNumber(s, i)) 
  52.                { 
  53.                    sb.Append(s.Substring(i, 1)); 
  54.                } 
  55.            } 
  56.            return sb.ToString(); 
  57.        } 
  58.  
  59.  
  60.        #region 生成 Coupon Key  
  61.        private static readonly object locker2 = new object(); 
  62.        private static int _sn2 = 0; 
  63.        /// <summary> 
  64.        /// 生成key 12位  字母+數字  
  65.        /// </summary> 
  66.        /// <returns></returns
  67.        public static string GenerateCouponKey()// 
  68.        { 
  69.            string s; 
  70.            lock (locker2) 
  71.            { 
  72.                if (_sn2 == 9999999) 
  73.                { 
  74.                    _sn2 = 1; 
  75.                } 
  76.                else 
  77.                { 
  78.                    _sn2++; 
  79.                } 
  80.                s = $"Qq@,.*745u787#$@,.><;'{DateTime.Now.Ticks}{_sn2}"
  81.            } 
  82.            return MD5_16(s); 
  83.  
  84.        } 
  85.        private static string MD5_16(string p_str) 
  86.        { 
  87.  
  88.            System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create(); 
  89.            byte[] data = System.Text.Encoding.Default.GetBytes(p_str); 
  90.            byte[] md5Data = md5.ComputeHash(data); 
  91.            string strResult = System.BitConverter.ToString(md5Data, 4, 8); 
  92.            md5.Clear(); 
  93.            strResult = strResult.Replace("-""").ToUpper(); 
  94.            return strResult; 
  95.        } 
  96.        #endregion 
  97.  
  98.    } 

2、數據唯一索引

利用數據庫索引的特性生成唯一id.

3、使用redis分布式鎖

在同一時間只會有一個客戶端能獲取到鎖,其它客戶端無法同時獲取,這把鎖在一段有限的時間之后,一定會被釋放(正常釋放或異常釋放)。

 

責任編輯:武曉燕 來源: UP技術控
相關推薦

2024-10-14 12:05:56

2019-08-23 08:09:18

訂單號生成數據庫ID

2024-09-04 08:55:56

2019-08-15 11:11:38

Java數據庫設計

2025-01-02 09:06:43

2014-08-08 13:30:44

Nginx

2013-01-30 10:12:24

NginxNginx優化高并發

2020-10-21 12:10:30

訂單號Java代碼

2021-12-28 06:55:09

事故訂單號績效

2025-02-20 00:01:00

2024-10-31 09:04:20

Spring高并發

2025-04-23 07:31:14

2024-08-06 08:13:26

2019-10-30 16:54:08

golangredis數據庫

2022-06-12 06:45:26

高并發防重

2024-01-26 08:28:41

工單號生成器場景

2022-12-22 17:46:19

2023-02-03 15:16:42

SpringHystrix

2025-02-26 08:20:18

2020-07-15 08:14:12

高并發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品美女久久久 | 国产美女久久久 | 国产激情在线观看视频 | 久久草视频| 五月婷婷 六月丁香 | 成人综合视频在线 | 国产亚洲一区二区三区在线观看 | 美女国内精品自产拍在线播放 | 色爱综合网 | 成人国产免费观看 | 中文字幕精品一区二区三区精品 | 有码在线 | 自拍偷拍中文字幕 | 日一区二区 | 国产精品自产拍在线观看蜜 | 国产一级影片 | 成年人在线观看 | 香蕉视频91 | 精品www| 欧美激情一区 | 日韩精品一区二区三区久久 | 成人在线观看免费 | 国产在线观看一区 | www.99热.com | 国产精品一区二区在线播放 | 91 视频网站 | 国产成人精品免高潮在线观看 | 天天干狠狠操 | 91久久久www播放日本观看 | 日韩免费视频一区二区 | 国产精品成人一区二区三区 | 超碰97免费在线 | 玖玖爱365 | 国产精品视频在线播放 | 久久久久久中文字幕 | 久久精品亚洲一区 | 国产精品一区二区在线播放 | av网站免费观看 | 国产精品成人一区二区三区 | 欧美亚洲视频在线观看 | 精品一区二区在线观看 |