2 ab721772786 ab721772786 于 2016.04.11 10:15 提问

.net怎样在最短时间内生成大量唯一 不重复的无规则的乱码(防伪码或订单号)? 30C

如9位唯一不重复的无规则数字乱码:250242847,460010672,753125430 ............
要求:
1,插入到数据库,并且每插入一批数字乱码到数据库都检查与上一批的不重复。
2,性能效率快,插入几百万条乱码到数据库不用1分钟。
哪位大神做过相关的例子啊,有什么好算法解决啊。

6个回答

weixin_34615687
weixin_34615687   2016.04.11 10:28

有随机数码随机数码生成软件

ab721772786
ab721772786   2016.04.11 10:37

@weixin_34615687

对网上是有这种软件,但是我想自己开发一个自己用的。

qq_26714389
qq_26714389   2016.04.11 10:51

写过哈希桶吗?数据库进库前用哈希桶过滤一下

o527883184
o527883184   2016.04.11 11:19

前面可以使用时间戳精确到毫秒 后面 random函数 定义一下返回类型 就可以 不会重复(重复几率特别小)

zuoming120
zuoming120   2016.04.11 16:57

我们以前的防伪码做过16位的,其实这种肯定不会重复的,比如你的随机数如果是9位,那出现重复的时候是所有的随机数生成完之后才出现,
所以前期不要判断。另外生成的时候建议使用txt,然后让程序去入库,入库不要采用insert,最好采用sql提供的数据导入。

guo_ang
guo_ang   2016.04.11 20:59

一般往数据库插入数据时,为了保证主键唯一不重复,常用的就是UUID,你可以搜下。UUID它保证对在同一时空中的所有机器都是唯一的,有32位和16位的。关键是大部分软件包和数据库都提供生成UUID的API接口,不用自己去写了。
你说的9位纯数字的码如果随机生成的话,而且要生成几百万条,一定会有重复的,而且重复的概率还挺大,除非你在生成后再加上去重算法,不过这样很低效的。
如果你一定要用数字的话,建议可以使用16位的UUID,然后把十六进制的UUID转化成十进制的数字,但是位数肯定比16位要多。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
生成不重复的防伪码
class Program     {         static void Main(string[] args)         {             Stopwatch timer1 = new Stopwatch();//计时器类             timer1.Start();//开始计时             int codeLength = int.Par
PHP高并发下生成唯一的不重复的订单id,以及生成不重复的用户token
生成不重复的订单id public function getOrderId($prefix = 'DD') { return $prefix . (strtotime(date('YmdHis', time()))) . substr(microtime(), 2, 6) . sprintf('%03d', rand(0, 999)); }生成app的用户to...
银联订单号永远不会重复的生成算法分析与示例
银联订单号永远不会重复的生成算法分析与示例。 主要讲解了java的生成算法,其他语言原理也是一样。
生成10位绝不重复订单号
/** * 生成10位绝不重复订单号 */ function order_number(){ static $ORDERSN=array(); //静态变量 $ors=date('ymd').substr(time(),-5).substr(microtime(),2,5); //生成16位数
高并发下怎样生成唯一的订单号
方案一: 如果没有并发,订单号只在一个线程内产生,那么由于程序是顺序执行的,不同订单的生成时间戳正常不同,因此用时间戳+随机数(或自增数)就可以区分各个订单。 如果存在并发,且订单号是由一个进程中的多个线程产生的,那么只要把线程ID添加到序列号中就可以保证订单号唯一。 如果存在并发,且订单号是由同一台主机中的多个进程产生的,那么只要把进程ID添加到序列号中就可以保证订单号唯一。 如果存在并
生成不重复的订单号
根据递增的id主键生成的订单号应该不会重复的
不重复订单号生成的方法
第一种        GUID  由算法自动生成下 理论上能产生全球唯一的值   不过对于用户记订单号不方便                     Console.WriteLine(System.Guid.NewGuid());                    Console.ReadKey();                     //生成结果:5322d297-51b4
C# 生成订单号的几种方式
public class RandomNumber { public static object _lock = new object(); public static int count = 1; public string GetRandom1() { lock(_lock) {
.net根据用户Id生成唯一6位邀请码,可逆转。
今天要做邀请码这个功能,但是我又懒得修改数据库表结构,然后在网上看了不少博客,然后在php一个博客上面看到了一种写法,然后便根据我的理解改写成了.net的写法。话不多说直接贴代码。 static void Main(string[] args) { int num = 10086; Console.WriteLine(createCo...
如何生成不重复的订单号
第一种方案:利用Redis的incr函数        由于Redis是单线程的,因此订单号生成也就不会重复,但是Redis有个非常大的缺陷,那就是不太稳定,容易故障。我们可以使用Redis集群来提高安全性,但是还是有可能集群的所有Redis都挂掉了。因此这种方案不太稳定。        第二种方案:使用uuid的hashCode来生成订单编号 package com.internet.or