tnblog
首页

不重复订单号生成的方法

361人阅读 2018/12/27 10:20 评论:2 收藏
分类: .NET

第一种        GUID  由算法自动生成下 理论上能产生全球唯一的值   不过对于用户记订单号不方便 


                   Console.WriteLine(System.Guid.NewGuid());
                   Console.ReadKey(); 
                   //生成结果:5322d297-51b4-4198-8625-cc465c948852


第二种   随机数1000-9000范围内的数 再根据时分秒生成   不过大数据并发依然有重复的可能

                  Random rand = new Random();
                  int shu2 = rand.Next(1000, 9999);
                  string randId = DateTime.Now.ToString("yyyyMMddHHmmss") + shu2;
                  Console.WriteLine(randId);
                  Console.ReadLine();


第三种     给订单号设置自增  虽不会重复  但标志列只有一个   Id就不能唯一

            

第四种     简单一点的,可以由用户ID(数字)、时间、随机数组合生成,因为用户ID是唯一的,生成的订单号也就不会重复了


第五种     用64位MD5对用户名和时间加密,再用加密后的签名做订单号。理论上来说该算法是不会重复的,除非订单量超过了2的64次方


第六种     IP地址、时间、计算机机器码、用户名、随机数  时间戳(10)+省id(6)+市id(6)+区id(6)+四位随机数(4)


第七种   有网友用并发性lock解决为了解决并发性,就直接在生成订单号的区域块加上lock


  1. 新建项目



2.新建BillNumberBuilder 类



3.新建OrderIdHelper类



4.生成




生成结果


Wen20170309180733

Wen20170309180735

请先登录

{{item.title}}

{{item.content}}
真正的顺其自然,其实是竭尽所能之后的不强求,而非两手一摊的不作为
博主搜索
文章类别
前端 7篇
微信 2篇
.NET 7篇
随笔 1篇
其他 2篇
最新文章
图片上传的安全校验
HBuilder打包apk文件详解
echarts中tooltip 基本样式问题处理
不重复订单号生成的方法
怎么解决vs2015的30天试用期评估结束问题
程序员转正述职报告
css中单位px,em,rem和vh/vw的理解
三分钟快速复习MVC知识
微信交易单号和订单号的区别
C#腾讯地图Web端定位地址搜索及手机导航
如何修改CSS中存在的element.style内联样式
最新评价
{{item.ArticleTitle}}
{{item.BlogName}} : {{item.Content}}