需求:

生成的防伪码长度大概在 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 生成 防伪码,优秀的生成防伪码的代码应该如何写?百万千万量级别的。相关推荐

  1. java中小学排课表算法_排课表算法及代码实现!写成功啦,与大家一同分享,绝密(其它地方...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 } int kebiaomatrix[5][3]; int te_worktimematrix[5][3]; for(x0=0;x0<5;x0++) ...

  2. 防红直连php,【源码资源】20新PHP网址缩短防封防红短网址生成系统

    [源码资源]20新PHP网址缩短防封防红短网址生成系统 源码描述: 注册用户可以绑定自己域名,用来做防封.支持直连.跳转.框架.密码访问等.不用购买大量域名来 做防封.支持自定义广告. 可以设置用户等 ...

  3. Java POI的Excel操作(行高列宽比例;生成说明,标题,字段;导出Excel代码,压缩)

    摘要 本文主要讲解了POI中的表格行高列宽比例,以及根据这个不同的场景生成,如标题,说明,字段头.主要是思路给大家参考,生成表格如下(完整代码代码在最后,由于我的数据格式特殊,我把我以前的通用导出数据 ...

  4. 编译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 ...

  5. windows7下,Java中利用JNI调用c++生成的动态库的使用步骤

    1.从http://www.oracle.com/technetwork/java/javase/downloads/jdk-7u2-download-1377129.html下载jdk-7u2-wi ...

  6. java 调用word插件_java一键生成word操作,比poi简单

    [Java] 纯文本查看 复制代码package com.jeeplus.modules.fact.util; import java.io.BufferedInputStream; import j ...

  7. Java 快速开发二维码生成服务

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 公众号「码农小胖哥」 1. 前言 不知道从什么 ...

  8. 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 ...

  9. 菜鸟学Java(六)——简单验证码生成(Java版)

    转载自  菜鸟学Java(六)--简单验证码生成(Java版) 验证码大家都知道,它的作用也不用我多说了吧.如果不太清楚请参见百度百科中的解释,一般验证码的生成就是随机产生字符(数字.字母或者汉字等) ...

最新文章

  1. POJ - 1958 Strange Towers of Hanoi(线性dp)
  2. 100条常用写作谚语(5)(6)(7)(8)
  3. ansible 安不安全_如何向您的安全团队介绍Ansible
  4. 跑linux编译什么CPU速度快,linux 加快编译速度
  5. 关于arcview 3.2 中输出图形添加坐标网格(Graticules and Measured Grids)时直接退出的问题...
  6. USB转串口驱动安装失败解决方法
  7. jms和activemq
  8. 有哪些好用的实时网络流量监控软件
  9. 计算机圆半径计算公式,圆半径计算公式是什么?
  10. 英语练习95 Computers
  11. 麻省理工大学公开课笔记:算法导论(二)——课程简介及算法分析
  12. kubernetes使用secrets保存敏感信息
  13. Meyer Burger获中国客户1800万瑞士法郎光伏设备订单
  14. 电脑lol性能测试软件,lol电脑配置测试
  15. 硬盘挂载 mount 详细步骤及遇到问题“Mount is denied because the NTFS volume is already exclusively opened”
  16. 微信小程序web-view的使用教程
  17. 用vs2015和qt5实现飞舞的蝴蝶
  18. C语言 最大公约数与素数探求
  19. mysql商品查询_MYSQL——怎么一个sql语句查询出用户和用户商品的列表啊
  20. 宋体光标vim高亮显示当前行,列

热门文章

  1. 关于BCH交易规范排序(CTOR)的优缺
  2. 苹果四大供应商向高通索赔90亿;金立否认裁定破产清算
  3. 一对多和多对一的关系,用mybatis写
  4. 关于 android 环信无法正确获取昵称的问题
  5. easymock快速入门
  6. bind日志配置详解
  7. Spads 公式解析系统 - Java
  8. 维度变换--首先将矩阵倒过来
  9. Javascript中的异步
  10. Curator counters