java防止序列号重复

java防止序列号重复

问:java里往数据库里加数据 之后自动生成一个序号 唯一不重复 生成规则为 数据库中某一字段+00001
  1. 答:两种解决方案 ,其实有点类似于ID
    1、在数据库加一列,在的程序里写自己写方法处理,然后插入
    2、在数据里写函数,写一个触发器
问:java自动生成‘日期0001’顺序号 如‘201404170001’,生成下一个时不重复
  1. 答:如果小项目的话,弄个static 的字段分别保存日期和序号就行了。每次取之前判一下日期是否变化。 记得把方法加锁,避免并发操作就好。
    如果项目大,多server的情况,就需要通过数据库管理了。
  2. 答:public static void main(String[] args) {
    Calendar cal = new GregorianCalendar();
    for (int i = 0; i < 2; i++) {
    cal.set(Calendar.MILLISECOND, cal.get(Calendar.MILLISECOND) + 1);
    System.out.println(toDateString(cal));
    }
    }
    public static String toDateString(Calendar calendar) {
    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH)+1;
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    int msec = calendar.get(Calendar.MILLISECOND);
    return "" + year + month + day + msec;
    }
问:如何在JAVA中随机产生10位不可重复字串的方法
  1. 答:/**
     * 生成不重复随机字符串包括字母数字
     *
     * @param len
     * @return
     */
    public static String generateRandomStr(int len) {
        //字符源,可以根据需要删减
        String generateSource = "0123456789abcdefghigklmnopqrstuvwxyz";
        String rtnStr = "";
        for (int i = 0; i < len; i++) {
            //循环随机获得当次字符,并移走选出的字符
            String nowStr = String.valueOf(generateSource.charAt((int) Math.floor(Math.random() * generateSource.length())));
            rtnStr += nowStr;
            generateSource = generateSource.replaceAll(nowStr, "");
        }
        return rtnStr;
    }
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            System.out.println(generateRandomStr(8));
        }
    }
  2. 答:这不很简单,给你个csdn博客的页面一看,好几种方法:
    java 生成 序列号 随机字符串
  3. 答:将字母存入集合
    产生集合大小的随机数,取出该随机数对应下标的字母,从集合中去除该字母
    循环十次拼接字母打印出来
java防止序列号重复
下载Doc文档

猜你喜欢