文档章节

随机生成防猜不重复的16位纯数字序列号【快速且高性能】

letwang
 letwang
发布于 2013/10/16 14:36
字数 375
阅读 6049
收藏 17
点赞 3
评论 6

16位纯数字,组合起来是多少个呢?很难一口说出准确数字。

2位纯数字,组合起来是多少个呢?

10*10 = 100个

3位纯数字,组合起来是多少个呢?

10*10*10 = 1000个

因为每个数字都是0-9,一共10个。

以此类推,16位纯数字,一共 10*10*10*10*10*10*10*10*10*10*10*10*10*10*10*10种可能。

虽然数目很大,但是也是有限范围内的,在里面搞随机的话,有限范围内取出一定数目的数字,客观上肯定会重复,只不过是想办法达到避免重复的概率而已!

那么换个思路呢?

如果以时间的维度来计算怎么样?那么时间永远是无限往前跑的,这样就永远不可能重复啦!!!

但是同一时间不同ip客户端生成的,时间也是浮云,那么我们解决不同客户端同一时刻生成也不一样,才是王道!


$begin = microtime(true);

$generateNum = 500000;//(默认50万条,我机器只需2秒钟!!!经过5000万测试数据,测试24小时,都OK!)

$result = array();
$num = 0;
while($num < $generateNum){
	$result[] = substr(uniqid('', true), 15).substr(microtime(), 2, 8);
	$num++;
}

var_dump(microtime(true)-$begin);

if($result === array_unique($result)){
	echo 'OK!';//数据没有重复,可以使用
}else{
	echo 'Fuck,Repeat!';//有重复数据,数据不能使用!
}
//http://my.oschina.net/cart/
unset($result);
exit();

© 著作权归作者所有

共有 人打赏支持
letwang
粉丝 140
博文 67
码字总数 76298
作品 0
南京
技术主管
加载中

评论(6)

letwang
letwang

引用来自“吾爱”的评论

生成少量的还行。大量数据用php的数组排重,性能真没问题?
哈哈哈 肯定有问题! 上面排重,只是个demo,具体怎么排重,有很多方法,比如入mysql时使用忽略插入等。。
吾爱
吾爱
生成少量的还行。大量数据用php的数组排重,性能真没问题?
letwang
letwang

引用来自“Harryma”的评论

学习了,呵呵

客气!
Harryma
Harryma
学习了,呵呵
letwang
letwang

引用来自“化蝶自在飞”的评论

为何不用range(0,9)呢?

因为每组数据,是可以个性化更改来配置的
化蝶自在飞
化蝶自在飞
为何不用range(0,9)呢?
万能 ID 生成器--Node-AnyID

在程序里经常都需要生成一些特定格式的 id ,每种场合的需求都可能有些不一样,虽然写起来代码不复杂,但零零碎碎的东西做多了也挺烦的,于是设计了这个用于 node.js 的万能 ID 生成器。 An...

aleung
2017/08/19
225
0
产生唯一随机码的方法分析

自己写代码产生随机的数字和字母组合,每产生1个去数据库查询该随机码是否已存在,如果已存在,则重新产生,直到不重复为止。 优点:没发现有啥优点。 缺点:产生速度慢,还要查询数据库,当...

好铁
2016/07/04
96
0
如何在高并发分布式系统中生成全局唯一Id

又一个多月没冒泡了,其实最近学了些东西,但是没有安排时间整理成博文,后续再奉上。最近还写了一个发邮件的组件以及性能测试请看 《NET开发邮件发送功能的全面教程(含邮件组件源码)》 ,还...

shezjl
2015/05/22
0
0
纵使有花兼明月何堪无酒亦无人/xukey

xukey base on ukey 支持PHP7 请选择PHP7分支,修复内存泄露的bug Based on the Twitter Snowflake algorithm PHP unique ID generator functions list: string ukeynextid(void); Get the n......

纵使有花兼明月何堪无酒亦无人
2016/05/05
0
0
网络基础知识总结

计算机网络的基础,可以简单的总结为以下条例; Ⅰ.网络层次的划分 为了以便在更大范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联网参考模型”,即著名的OSI(O...

XRedm
2017/07/26
0
0
PHP生成唯一字符串的方法,产生唯一码的方法分析

自己写代码产生随机的数字和字母组合,每产生1个去数据库查询该随机码是否已存在,如果已存在,则重新产生,直到不重复为止。 优点:没发现有啥优点。 缺点:产生速度慢,还要查询数据库,当...

Junn
2013/03/20
0
2
shell实例浅谈之三产生随机数七种方法

一、问题 Shell下有时需要使用随机数,在此总结产生随机数的方法。计算机产生的的只是“伪随机数”,不会产生绝对的随机数(是一种理想随机数)。伪随机数在大量重现时也并不一定保持唯一,但...

898009427
2017/12/29
0
0
一个短的唯一id生成方法,解决uuid过长的问题

前言:最近,在做用redis存储用户消息的时候,采用的结构如下: Key value Msg+userId+time 消息内容 但是如果在同一时间里面,有很多人并发发送了消息给用户怎么办呢?也就是说只是在key后面...

zxcholmes
2015/12/18
2.3K
3
计算与推断思维 九、经验分布

九、经验分布 原文:Empirical Distributions 译者:飞龙 协议:CC BY-NC-SA 4.0 自豪地采用谷歌翻译 大部分数据科学都涉及来自大型随机样本的数据。 在本节中,我们将研究这些样本的一些属性...

龙哥盟飞龙
2017/12/31
0
0
生成随机字符串的几种常用方式

写在前面 今天在学习数据库的时候想随机生成一些数据来插入到数据表中,但是一时想不起来如何生成随机内容,就整理了之前学过的一些生成随机字符串的命令,以备不时之需,希望对各位有所帮助...

志_恒
2017/11/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Webpack使用nodemon实时打包编译

业务场景: 1.编写一个npm组件包并且link到了项目文件中 2.需要不断的修改并run build编译npm包并且在项目run dev 查看效果 3.问题: 每次改完npm包都要手动run build编译十分的麻烦且低效,可不...

JamesView
13分钟前
0
0
电脑炸了,浪费我好几天时间,还是简要记下来吧

我的小本本一直在兢兢业业的干活,然而前几天说炸就炸了...... 爆炸现场: 软件: windows10 pro + EIS11+ 360卫士 BIOS:N1DET98W 2.24 硬件: Xeon E3 1505-V5 nv-M3000M thinkpadP70:20E...

Oh_really
18分钟前
0
0
Git之branch和checkout

1.branch是查看、创建、删除分支 #>git branch --helpNAME git-branch - List, create, or delete branchesSYNOPSIS git branch [--color[=<when>] | --no-color] [......

汉斯-冯-拉特
19分钟前
0
0
Mybatis拦截器之数据权限过滤与分页集成

需求场景 最近项目有个数据权限的业务需求,要求大致为每个单位只能查看本级单位及下属单位的数据,例如:一个集团军下属十二个旅,那么军级用户可以看到所有数据,而每个旅则只能看到本旅部...

佛系程序猿灬
28分钟前
8
0
SpringCloud 微服务 (十六) 服务追踪 Zipkin

问题 在服务中,有一个接口,该A接口中又调用了其他服务的B、C、D接口,出现一个请求耗时大的问题,这时候并不知道该B、C、D接口中哪个接口造成的耗时量,然后比如确定C服务接口出现的耗时量大,但...

___大侠
今天
0
0
Java面试基础篇——第八篇:抽象类与接口的区别

1.抽象类 抽象类:如果一个类中包含有抽象方法,或这个类使用abstract关键字修饰,则称这个类是抽象类。 抽象方法是什么呢?抽象方法就是指用abstract关键字修饰的方法。 需要注意的是:抽象...

developlee的潇洒人生
今天
2
0
jsoup 相关资料

1.jsoup 2.Jsoup概述 3.jsoup入门 4.jsoup Java HTML Parser 1.11.3 API

IT追寻者
今天
1
0
JPA @MappedSuperclass 注解说明

基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。 1.@MappedSuperclass注解只能标准在类上:@Target({java.lang....

海博1600
今天
0
0
【一】Scala Configuration 相关API

Play使用了 Typesafe config library,但是也提供了一个有着更多Scala高级特性的的 Configuration 封装。不熟悉Typesafe配置的开发者可以移步 configuration文件的语法和特性文档。 读取配置...

Landas
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部