本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

java写十万个六位数数字加字母的识别码

发布于2021-01-01 16:30     阅读(895)     评论(0)     点赞(15)     收藏(3)


一 、使用场景。
1、举办抽奖活动抽奖卡刮的那个码。
2、验证码也可以用。
二、上代码


import java.util.HashSet;
import java.util.Random;

public class RandomNumbers {

    /**
     * 随机指定范围内N个不重复的flag位(数字+字母)组合 利用HashSet的特征,只能存放不同的值
     * @param set
     *            set 随机数结果集
     */
   public static int ff=1;
    public static void randomSet(HashSet<String> set) {
        int flag = 6;//验证码的位数,
        char[] beforeShuffle =  {
                '0','1', '2', '3', '4', '5', '6', '7', '8', '9',
                'a','b', 'd', 'c', 'e', 'f', 'g', 'h', 'i', 'j',
                'k', 'l', 'm', 'n', 'o', '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',
                'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
        char[] c = new char[flag];
        Random random = new Random();
        String s="";
        for (int i = 0; i < flag; i++) {
            c[i] = beforeShuffle[random.nextInt(62)];
            s+=String.valueOf(c[i]);
        }
        System.out.println("验证码为:"+ff+"--------"+s);
        ff++;
       set.add(s);// 将不同的数存入HashSet中
        int setSize = set.size();
     //   System.out.println("size: "+setSize+"----------n: "+n);
        // 如果存入的数小于指定生成的个数,则调用递归再生成剩余个数的随机数,如此循环,直到达到指定大小

    }

    public static void main(String[] args) {
        int n = 100000;//生成数量
        HashSet<String> numbers = new HashSet<String>();//用HashSet存储,存放不重复的值
        while (numbers.size() < n) {
            randomSet(numbers);// 递归
        }
    }



}


三、看看效果
在这里插入图片描述
四、注意问题
1.原本我写的是递归,后来改成了循环。由于递归调用次数过多,堆栈溢出。
堆栈的大小是系统控制的,无法改变。如果递归调用出现问题,可以考虑采取循环的方式来解决。

2.生成的验证码中的小写L,大写i ,以及数字1 写入excel中后三个字符非常相似。所有在实际应用中最好去掉大写字母i,就算用idea里面显示区别很大的Microsoft YaHei UI 一样的字体 还是很相似。肉眼区分不太出。

原文链接:https://blog.csdn.net/yuchenai/article/details/112027196



所属网站分类: 技术文章 > 博客

作者:java是世界上最好的语言

链接:http://www.javaheidong.com/blog/article/46029/022baf994b66212f029c/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

15 0
收藏该文
已收藏

评论内容:(最多支持255个字符)