在实际开发中碰到一个需求,需要大量不重复的验证码或者兑换码,首先想到的是采用UUID来生成,但实际运用不合适因为采用UUID生成的字符串太长。所以下面我们自己生成十万的测试数据。为了快速排除生成的字符串是否重复我们可以将数据插入到数据库使用数据库的distinct方法。

开发工具:idea

开发jar包:mysql-connector-java-5.1.34-bin.jar

package cn.bjyy.demo;import cn.bjyy.utils.JdbcUtils;
import org.junit.Test;import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class CdkeyDemo {static List<String> list=new ArrayList<String>();public static String getStringRandom(int length) {String val = "";Random random = new Random();// 参数length,表示生成几位随机数for (int i = 0; i < length; i++) {String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";// 输出字母还是数字if ("char".equalsIgnoreCase(charOrNum)) {// 输出是大写字母还是小写字母int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;val += (char) (random.nextInt(26) + temp);} else if ("num".equalsIgnoreCase(charOrNum)) {val += String.valueOf(random.nextInt(10));}}return val;}public static void main(String[] args) {try {generalInsert();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}public static void generalInsert() throws ClassNotFoundException,SQLException{long start = System.currentTimeMillis();Class.forName("com.mysql.jdbc.Driver");//数据库链接 账号密码自己替换Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/CDKEY", "root", "xxx");connection.setAutoCommit(false);PreparedStatement cmd = connection.prepareStatement("insert into CD_KEY(TKEY,STATUS) values(?,?)");//生成十万条不同的十位数兑换码  当然我是简化验证添加数据。实际中我们可以将数据放入list或者缓存for (int i = 0; i < 100000; i++) {//cmd.setInt(1,i);//自定义位数建议8位数以上,这个如果生成数据特别大的话有重复可能String stringRandom = getStringRandom(10);System.out.println(stringRandom);cmd.setString(1, stringRandom);cmd.setInt(2, 0);cmd.executeUpdate();}connection.commit();cmd.close();connection.close();//long end = System.currentTimeMillis();//System.out.println(end - start);//}}

最后如果添加数据库十万条数据成功后我们打开数据使用sql语句再次检验是否重复

SELECT 字段名,COUNT(*) FROM 表名 GROUP BY 字段名 HAVING COUNT(*) > 1;

SELECT DISTINCT 字段名  FROM 表名;去重查询显示的条数和插入数据的条数一致证明没有重复数据。

活动验证码/兑换码生成相关推荐

  1. 验证码画布生成以及点击图片切换验证码

    //这个验证码画布生成是师兄写的,不是本人写的 1 package com.didinx.common; 2 3 import javax.imageio.ImageIO; 4 import java ...

  2. java 生成校验验证码_java生成验证码并进行验证

    一实现思路使用BufferedImage用于在内存中存储生成的验证码图片使用Graphics来进行验证码图片的绘制,并将绘制在图片上的验证码存放到session中用于后续验证 最后通过ImageIO将 ...

  3. html获取随机字母,JavaScript实现4位随机验证码的生成

    这篇文章主要为大家详细介绍了JavaScript实现4位随机验证码的生成,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了JavaScript生成4位 ...

  4. 随机验证码的生成(手机或者邮箱验证码)

    最近在做短信验证和邮箱验证,就写了个随机验证码的工具类 public class Randomutil { private Randomutil() { } // 获取6位随机验证码 public s ...

  5. JAVA手机验证码的生成简单实现

    public String generator(String tele){//利用哈希值生成验证码int hash =tele.hashCode();//加密int encryption= 20206 ...

  6. SpringBoot2后端项目-验证码图片生成

    目录 1.项目创建 1.1 初始化的 pom.xml文件 1.2 应用初始化设置 2.验证码生成前的准备 2.1 分析 2.2 整合 redis 2.3 验证码生成的工具类 2.4 定义一个统一返回给 ...

  7. 二维码及验证码的生成

    二维码生成: public static void main(String[] args) {String message = "http://doc.canglaoshi.org" ...

  8. 验证码的生成及简单效果展示(Java篇)

    验证码的生成及简单效果展示 前言 一.验证码的生成 1,验证码生成的原理 2,验证码生成步骤 3,代码演示 二.验证码效果演示 1,前端代码展示 2,效果展示 总结 前言 提示:本文设计语言实现Jav ...

  9. 从零开始的Django框架入门到实战教程(内含实战实例) - 08 用户界面(内含图形验证码的生成和校验详解)(学习笔记)

    目录 0. 既有工作 1. 生成图片 2. 校验 3. 结果展示   Django是目前比较火爆的框架,之前有在知乎刷到,很多毕业生进入大厂实习后因为不会git和Django框架3天就被踢掉了,因为他 ...

  10. 验证码的生成与验证,控制层工具

    这里用一个控制层工具来提供验证码的生成与验证,其中验证码生成以后是保存在session中,代码没有区分类去写那些验证码的生成函数,不过整合到控制层中,方便浏览与阅读,doget是判断和生成验证码的入口 ...

最新文章

  1. 关于document学习笔记及涉及的前端笔试题
  2. 【LaTeX】E喵的LaTeX新手入门教程(1)准备篇
  3. Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist的
  4. 分析与设计数据库模型的简单过程
  5. 详解-制作根文件系统,并使用yaffs,jffs,nfs挂载系统(2)
  6. 一次oracle大量数据删除经历
  7. Python运算符+与+=的那些事
  8. XNA or Silverlight for Windows Phone 7 game
  9. linux常用ipc技术,LINUX系统编程之IPC
  10. php mysql 组件_Ubuntu20.04安装apache、mysql、php、phpmyadmin、wordpress(一)
  11. 图灵——如迷的解谜者
  12. rto净化效率计算公式_rto废气处理原理
  13. 374C. Inna and Dima
  14. Bouncy Castle使用(一)【开始】
  15. openjudge 1.5.21 角谷猜想
  16. 3ds max渲图自从使用了云渲染,不可能在自己渲图了
  17. linux 版本号 笔记本_2019 年最佳 Linux 笔记本电脑发行版 top10
  18. 【仿】阿里巴巴首页(未登录)
  19. 【oracle工具】plsqldev美化规则文件详细解释(关键字大写,标识符小写等规则)
  20. iOS搜索 讯飞语音的使用

热门文章

  1. linux开发板命令rx,linux 常用命令汇总
  2. Selenium 2自动化测试实战5(模块调用)
  3. 如何不做老板手中一次性筷子?
  4. 数字城市厦门智慧防汛平台测试计划【软件测试与工程】
  5. 【转】 Git 常用命令详解(二)----不错
  6. WCF把书读薄(3)——数据契约、消息契约与错误契约
  7. TensorFlow中的compile和fit操作,简化神经网络模型代码
  8. python刷今日头条阅读量_揭露头条刷阅读量内幕:怎么刷的今日头条阅读量
  9. 【WPF】鼠标穿透窗口(类似于桌面歌词那样子)
  10. java 获取保存存储路径配置文件