tnblog
首页
视频
资源
登录

不重复订单号生成的方法

12758人阅读 2018/12/27 10:20 总访问:186454 评论:2 收藏:0 手机
分类: .NET

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


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


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

  1.                   Random rand = new Random();
  2.                   int shu2 = rand.Next(10009999);
  3.                   string randId = DateTime.Now.ToString("yyyyMMddHHmmss") + shu2;
  4.                   Console.WriteLine(randId);
  5.                   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


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

风清月

2019/1/27 22:11:44

666啊那么多钟方法!

风清月

2019/1/27 22:19:13

小姐姐写得那么好,约嘛^_^

真正的顺其自然,其实是竭尽所能之后的不强求,而非两手一摊的不作为
排名
19
文章
24
粉丝
11
评论
15
css实现简单矩形对话框
剑轩 : 现在来看一下,这个正好用到
三分钟快速复习MVC知识
瑾语 : 棒 总结的很好
渣渣学安卓之时间选择器和文本框操作
修心 : 666666横线的方式和我想法完全一样
渣渣学安卓之banner图和首页布局
晓见 : 哇哦,小姐姐这个系列文章写得很好哇,期待更多佳作~
渣渣学安卓之登录摸索及页面效果实现
剑轩 : 帅帅帅帅帅!那个背景图是不是有点太大了哦。哈哈相素太高了么,可...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术