本文转载自微信公众号「UP技术控」,作者conan5566。转载本文请联系UP技术控公众号。

为舒兰等地区用户提供了全套网页设计制作服务,及舒兰网站建设行业解决方案。主营业务为成都网站设计、成都做网站、舒兰网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
一个软件系统,肯定到处充满着各种单据,也必然需要有各种单据号与之对应。比如:电商行业的订单号、支付流水号、退款单号等等。SCM的采购单号、进货单号、出货单号、盘点单号等。在一个企业内部或者一个2C的平台,无法避免的需要通过某个单据号来进行沟通。所以一个好的单据号必然是便于沟通的。那么如何创建全局唯一的单据号。
- ///
 - /// 单号助手
 - ///
 - public class BillNoHelper
 - {
 - ///
 - /// 防止创建类的实例
 - ///
 - private BillNoHelper() { }
 - private static readonly object locker = new object();
 - private static int _sn = 0;
 - ///
 - /// 生成单据编号
 - ///
 - ///
 - public static string GenerateId()
 - {
 - lock (locker) //lock 关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区。
 - {
 - if (_sn == 9999)
 - {
 - _sn = 1;
 - }
 - else
 - {
 - _sn++;
 - }
 - return DateTime.Now.ToString("yyMMddHHmmss") + _sn.ToString().PadLeft(4, '0');
 - }
 - }
 - ///
 - /// 唯一值
 - ///
 - ///
 - public static string guid()
 - {
 - return Guid.NewGuid().ToString().Replace("-", "");
 - }
 - ///
 - /// GuidExtension
 - ///
 - ///
 - ///
 - public static string IsNum(Guid guid)
 - {
 - var s = guid.ToString();
 - var sb = new StringBuilder();
 - for (int i = 0; i < s.Length; i++)
 - {
 - if (Char.IsNumber(s, i))
 - {
 - sb.Append(s.Substring(i, 1));
 - }
 - }
 - return sb.ToString();
 - }
 - #region 生成 Coupon Key
 - private static readonly object locker2 = new object();
 - private static int _sn2 = 0;
 - ///
 - /// 生成key 12位 字母+数字
 - ///
 - ///
 - public static string GenerateCouponKey()//
 - {
 - string s;
 - lock (locker2)
 - {
 - if (_sn2 == 9999999)
 - {
 - _sn2 = 1;
 - }
 - else
 - {
 - _sn2++;
 - }
 - s = $"Qq@,.*745u787#$@,.><;'{DateTime.Now.Ticks}{_sn2}";
 - }
 - return MD5_16(s);
 - }
 - private static string MD5_16(string p_str)
 - {
 - System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
 - byte[] data = System.Text.Encoding.Default.GetBytes(p_str);
 - byte[] md5Data = md5.ComputeHash(data);
 - string strResult = System.BitConverter.ToString(md5Data, 4, 8);
 - md5.Clear();
 - strResult = strResult.Replace("-", "").ToUpper();
 - return strResult;
 - }
 - #endregion
 - }
 
利用数据库索引的特性生成唯一id.
在同一时间只会有一个客户端能获取到锁,其它客户端无法同时获取,这把锁在一段有限的时间之后,一定会被释放(正常释放或异常释放)。
                标题名称:高并发下怎样生成唯一的订单号?
                
                地址分享:http://www.csdahua.cn/qtweb/news44/132894.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网