java 生成 防伪码,优秀的生成防伪码的代码应该如何写?百万千万量级别的。
需求:
生成的防伪码长度大概在 12~18 位
有可能是纯数字,或者字母+数字
绝对不能重复
某 cms 防伪系统的生成防伪码的源码;
function genRandomString($len, $t = 0)
{
$chars = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "2", "3", "4", "5", "6", "7", "8", "9");
$chars1 = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
$chars2 = array("1", "2", "0", "3", "4", "5", "6", "7", "8", "9");
$chars3 = array("A", "B", "C", "D", "E", "F", "G", "O", "H", "I", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
if ($t == 1) {
$charsLen = count($chars1) - 1;
shuffle($chars1);
$output = "";
for ($i = 0; $i < $len; $i++) {
$output .= $chars1[mt_rand(0, $charsLen)];
}
}
else if ($t == 2) {
$charsLen = count($chars2) - 1;
shuffle($chars2);
$output = "";
for ($i = 0; $i < $len; $i++) {
$output .= $chars2[mt_rand(0, $charsLen)];
}
}
else if ($t == 3) {
$charsLen = count($chars3) - 1;
shuffle($chars3);
$output = "";
for ($i = 0; $i < $len; $i++) {
$output .= $chars3[mt_rand(0, $charsLen)];
}
}
else {
$charsLen = count($chars) - 1;
shuffle($chars);
$output = "";
for ($i = 0; $i < $len; $i++) {
$output .= $chars[mt_rand(0, $charsLen)];
}
}
return $output;
}
基本就是金刚葫芦娃,一股脑生成,插入数据库。连判断都没有。虽然重复的概率小,但还是有可能呀。怎么做到一个优秀一点的?
我想的就只是插入的时候返回 0 或者 1,循环结束计算返回 1 的集合,是否等于要生成的防伪码数量,如果不等于,(这时候,数量级已经下降了很多)
来一个死循环,一次生成一个插入数据库,知道成功的条数弥补上一次重复的数量,跳出循环。
有没有更好的方法?
java 生成 防伪码,优秀的生成防伪码的代码应该如何写?百万千万量级别的。相关推荐
- java中小学排课表算法_排课表算法及代码实现!写成功啦,与大家一同分享,绝密(其它地方...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 } int kebiaomatrix[5][3]; int te_worktimematrix[5][3]; for(x0=0;x0<5;x0++) ...
- 防红直连php,【源码资源】20新PHP网址缩短防封防红短网址生成系统
[源码资源]20新PHP网址缩短防封防红短网址生成系统 源码描述: 注册用户可以绑定自己域名,用来做防封.支持直连.跳转.框架.密码访问等.不用购买大量域名来 做防封.支持自定义广告. 可以设置用户等 ...
- Java POI的Excel操作(行高列宽比例;生成说明,标题,字段;导出Excel代码,压缩)
摘要 本文主要讲解了POI中的表格行高列宽比例,以及根据这个不同的场景生成,如标题,说明,字段头.主要是思路给大家参考,生成表格如下(完整代码代码在最后,由于我的数据格式特殊,我把我以前的通用导出数据 ...
- 编译java程序时用于指定生成class_(15 )在编译 Java 程序时,用于指定生成 .class 文件位置的选项是A ) -g B ) -d C ) -verbose D...
(15 )在编译 Java 程序时,用于指定生成 .class 文件位置的选项是A ) -g B ) -d C ) -verbose D 更多相关问题 如图①,在△ABC中,AB=AC,∠BAC=90 ...
- windows7下,Java中利用JNI调用c++生成的动态库的使用步骤
1.从http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u2-download-1377129.html下载jdk-7u2-wi ...
- java 调用word插件_java一键生成word操作,比poi简单
[Java] 纯文本查看 复制代码package com.jeeplus.modules.fact.util; import java.io.BufferedInputStream; import j ...
- Java 快速开发二维码生成服务
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「码农小胖哥」 1. 前言 不知道从什么 ...
- java excel转word表格_java利用poi生成/读取excel表格、生成word
1.引入jar包依赖 org.apache.poi poi 3.9 org.apache.poi poi-ooxml 3.8 View Code 2.编写代码测试 1 packagetestweb;2 ...
- 菜鸟学Java(六)——简单验证码生成(Java版)
转载自 菜鸟学Java(六)--简单验证码生成(Java版) 验证码大家都知道,它的作用也不用我多说了吧.如果不太清楚请参见百度百科中的解释,一般验证码的生成就是随机产生字符(数字.字母或者汉字等) ...
最新文章
- POJ - 1958 Strange Towers of Hanoi(线性dp)
- 100条常用写作谚语(5)(6)(7)(8)
- ansible 安不安全_如何向您的安全团队介绍Ansible
- 跑linux编译什么CPU速度快,linux 加快编译速度
- 关于arcview 3.2 中输出图形添加坐标网格(Graticules and Measured Grids)时直接退出的问题...
- USB转串口驱动安装失败解决方法
- jms和activemq
- 有哪些好用的实时网络流量监控软件
- 计算机圆半径计算公式,圆半径计算公式是什么?
- 英语练习95 Computers
- 麻省理工大学公开课笔记:算法导论(二)——课程简介及算法分析
- kubernetes使用secrets保存敏感信息
- Meyer Burger获中国客户1800万瑞士法郎光伏设备订单
- 电脑lol性能测试软件,lol电脑配置测试
- 硬盘挂载 mount 详细步骤及遇到问题“Mount is denied because the NTFS volume is already exclusively opened”
- 微信小程序web-view的使用教程
- 用vs2015和qt5实现飞舞的蝴蝶
- C语言 最大公约数与素数探求
- mysql商品查询_MYSQL——怎么一个sql语句查询出用户和用户商品的列表啊
- 宋体光标vim高亮显示当前行,列