分类:
.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
新建项目
2.新建BillNumberBuilder 类
3.新建OrderIdHelper类
4.生成
生成结果
Wen20170309180733
Wen20170309180735
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术