日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
高并發(fā)下怎樣生成唯一的訂單號(hào)?

本文轉(zhuǎn)載自微信公眾號(hào)「UP技術(shù)控」,作者conan5566。轉(zhuǎn)載本文請聯(lián)系UP技術(shù)控公眾號(hào)。

為舒蘭等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及舒蘭網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、舒蘭網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

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

1、單系統(tǒng)使用object

 
 
 
  1. ///  
  2.    /// 單號(hào)助手 
  3.    ///  
  4.    public class BillNoHelper 
  5.    { 
  6.  
  7.        ///  
  8.        ///  防止創(chuàng)建類的實(shí)例 
  9.        ///  
  10.        private BillNoHelper() { } 
  11.        private static readonly object locker = new object(); 
  12.        private static int _sn = 0; 
  13.        ///  
  14.        /// 生成單據(jù)編號(hào) 
  15.        ///  
  16.        ///  
  17.        public static string GenerateId() 
  18.        { 
  19.            lock (locker)   //lock 關(guān)鍵字可確保當(dāng)一個(gè)線程位于代碼的臨界區(qū)時(shí),另一個(gè)線程不會(huì)進(jìn)入該臨界區(qū)。 
  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.        ///  
  33.        /// 唯一值 
  34.        ///  
  35.        ///  
  36.        public static string guid() 
  37.        { 
  38.            return Guid.NewGuid().ToString().Replace("-", ""); 
  39.        } 
  40.        ///  
  41.        /// GuidExtension 
  42.        ///  
  43.        ///  
  44.        ///  
  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.        ///  
  64.        /// 生成key 12位  字母+數(shù)字  
  65.        ///  
  66.        ///  
  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、數(shù)據(jù)唯一索引

利用數(shù)據(jù)庫索引的特性生成唯一id.

3、使用redis分布式鎖

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


新聞名稱:高并發(fā)下怎樣生成唯一的訂單號(hào)?
標(biāo)題網(wǎng)址:http://m.5511xx.com/article/ccdojhj.html