文档章节

生成随机码——以及UUID

yabushan
 yabushan
发布于 2016/04/16 14:28
字数 656
阅读 54
收藏 0
package yabushan.common;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * 
 * <code>{@link RandomUtil}</code>
 *
 * TODO : document me
 *
 * @author yabushan
 */
public class RandomUtil {
	
	/**
	 * @Description:  获取一个四位含字母/数字的验证码
	 * @param @return
	 * @return String
	 * @throws
	 */
	public static String getRandomCode(int start ,int end){
		String[] beforeShuffle = new String[] { "0", "1", "2", "3", "4", "5", "6", "7",  
                "8", "9", "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" };  
	    List list = Arrays.asList(beforeShuffle);  
	    Collections.shuffle(list);  
	    StringBuilder sb = new StringBuilder();  
	    for (int i = 0; i < list.size(); i++) {  
	        sb.append(list.get(i));  
	    }  
	    String afterShuffle = sb.toString();  
	    String result = afterShuffle.substring(start, end);  
	    return result;
	}
	
	/**
	 * @Description:  获取一个6位数字的验证码
	 * @param @return
	 * @return String
	 * @throws
	 */
	public static String getSixnumRandomCode(int start,int end){
		String[] beforeShuffle = new String[] { "0", "1", "2", "3", "4", "5", "6", "7",  
                "8", "9" };  
	    List list = Arrays.asList(beforeShuffle);  
	    Collections.shuffle(list);  
	    StringBuilder sb = new StringBuilder();  
	    for (int i = 0; i < list.size(); i++) {  
	        sb.append(list.get(i));  
	    }  
	    String afterShuffle = sb.toString();  
	    String result = afterShuffle.substring(start, end);  
	    return result;
	}
	
	/**
	 * @Description:  获取一个3位数字的验证码
	 * @param @return
	 * @return String
	 * @throws
	 */
	public static String getThreenumRandomCode(int start ,int end){
		String[] beforeShuffle = new String[] { "0", "1", "2", "3", "4", "5", "6", "7",  
                "8", "9" };  
	    List list = Arrays.asList(beforeShuffle);  
	    Collections.shuffle(list);  
	    StringBuilder sb = new StringBuilder();  
	    for (int i = 0; i < list.size(); i++) {  
	        sb.append(list.get(i));  
	    }  
	    String afterShuffle = sb.toString();  
	    String result = afterShuffle.substring(start, end);  
	    return result;
	}
	
	/**
	 * @Description: 获取key值 
	 * @param @param pileId
	 * @param @param userId
	 * @param @return
	 * @return String
	 * @throws
	 */
	public static String getKey(String pileId,String userId){
		StringBuffer key = new StringBuffer();
		key.append(pileId);
		key.append(userId);
		key.append(UUIDGenerator.generateShortUuid());
		return key.toString();
	
	}
	
	public static void main(String[] args) {
		System.out.println(getRandomCode(0,10));
		System.out.println(getSixnumRandomCode(0,10));
		System.out.println(getThreenumRandomCode(0,10));
		System.out.println(getKey("sxf", "123"));
	}
	
	
}
package yabushan.common;

import java.util.HashSet;
import java.util.Set;
import java.util.UUID;

public class UUIDGenerator { 
	public static String[] chars = new String[] { "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", "0", "1", "2", "3", "4", "5",  
        "6", "7", "8", "9", "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" };  
	
	/**
	 * 生成八位的uuid
	 * @return
	 */
	public static String generateShortUuid() {  
	    StringBuffer shortBuffer = new StringBuffer();  
	    String uuid = UUID.randomUUID().toString().replace("-", "");  
	    for (int i = 0; i < 8; i++) {  
	        String str = uuid.substring(i * 4, i * 4 + 4);  
	        int x = Integer.parseInt(str, 16);  
	        shortBuffer.append(chars[x % 0x3E]);  
	    }  
	    return shortBuffer.toString();  
	  
	}  
	
    public UUIDGenerator() { 
    } 
    public static String getUUID(){ 
        String s = UUID.randomUUID().toString(); 
     
        return s; 
    } 
    /** 
     * 获得一个UUID 
     * @return String UUID 
     */ 
   /* public static String getUUID(){ 
        String s = UUID.randomUUID().toString(); 
        //去掉“-”符号 
        return s.substring(0,8)+s.substring(9,13)+s.substring(14,18)+s.substring(19,23)+s.substring(24); 
    } */
    /** 
     * 获得指定数目的UUID 
     * @param number int 需要获得的UUID数量 
     * @return String[] UUID数组 
     */ 
    public static String[] getUUID(int number){ 
        if(number < 1){ 
            return null; 
        } 
        String[] ss = new String[number]; 
        for(int i=0;i<number;i++){ 
            ss[i] = getUUID(); 
        } 
        return ss; 
    }
    public static String getUUIDReplaceStr(){
    	String s = UUID.randomUUID().toString(); 
    	return s.substring(0,8)+s.substring(9,13)+s.substring(14,18)+s.substring(19,23)+s.substring(24); 
    }
    
    /**
     * 
    * @Description:  生成id
    * @param @return
    * @return String
    * @throws
     */
    public static String getID(){
    	StringBuffer buffer = new StringBuffer();
    	buffer.append(SystemConstants.SYSTEM_ID);
    	buffer.append(String.valueOf(System.currentTimeMillis()));
    	buffer.append(RandomUtil.getThreenumRandomCode(3,7));
    	return buffer.toString();
    }
    
    public static void main(String[] args){
//        String[] ss = getUUID(10); 
//        for(int i=0;i<ss.length;i++){ 
//            System.out.println(ss[i]); 
//        } 
    	String uuid8 = "";
    	Set<String> set = new HashSet<String>();
    	
    	for (int i = 0; i < 1000000; i++) {
//    		uuid8 = generateShortUuid();
    		uuid8 = getID();
    		boolean isin = set.contains(uuid8); 
    		if (isin) {
				System.out.println("已经存在...."+uuid8);
			}else {
				set.add(uuid8);
			}
    		
		}
    	
    	System.out.println("set中总数为:"+set.size());
    	System.out.println("全部执行完毕...");
    } 
}


© 著作权归作者所有

共有 人打赏支持
yabushan
粉丝 1
博文 38
码字总数 34355
作品 0
shell 生成随机数和随机字符串

1、生成随机数: [root@73 ~]# echo $RANDOM 32641 [root@73 ~]# echo $RANDOM 9753 [root@73 ~]# echo $RANDOM 710 注:得到的这个随机数是介于 0~32767 之间的一个整数。 2、生成随机字符串...

大数据之路
2012/09/04
0
0
Python 趣味练习- 保存激活码到mysql和redis

今天接着做练习,题目出自 https://github.com/Yixiaohan/show-me-the-code 第 0001 题: 做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Py...

beanxyz
2017/10/12
0
0
产生唯一随机码的方法分析

自己写代码产生随机的数字和字母组合,每产生1个去数据库查询该随机码是否已存在,如果已存在,则重新产生,直到不重复为止。 优点:没发现有啥优点。 缺点:产生速度慢,还要查询数据库,当...

好铁
2016/07/04
96
0
shell实例浅谈之三产生随机数七种方法

一、问题 Shell下有时需要使用随机数,在此总结产生随机数的方法。计算机产生的的只是“伪随机数”,不会产生绝对的随机数(是一种理想随机数)。伪随机数在大量重现时也并不一定保持唯一,但...

898009427
2017/12/29
0
0
随机0-35六次和随机0-2176782335(36的六次方)重复率相差很大的问题

昨天有一个需求 生成六位数字字母组成的激活码 重复率越小越好 ---------------------------------以上是背景 简单 不要求长度可以使用uuid或md5值 要求六位 就随机吧 有两种方案 1 随机0-3...

强船生
2015/08/04
224
7

没有更多内容

加载失败,请刷新页面

加载更多

Android JNI 开发系列(九)JNI调用Java的静态方法&实例方法

JNI调用Java的静态方法&实例方法 package org.professor.jni.bean;import android.util.Log;/** * Created by peng on 2018/10/11. */ public class Person { /*C/CPP 调用......

蔡小鹏
12分钟前
0
0
Flink 原理与实现:Window 机制

Flink 认为 Batch 是 Streaming 的一个特例,所以 Flink 底层引擎是一个流式引擎,在上面实现了流处理和批处理。而窗口(window)就是从 Streaming 到 Batch 的一个桥梁。Flink 提供了非常完...

xtof
14分钟前
0
0
Fabric.js高级点的教程2--添加表格的方法

有时候我们先在画布上画一个表格类似一下设计软件那种。一方面作为参考线,一方面给人一直专业的赶脚。。。 先贴上一段网上(不是我写的)可以运行的代码 https://codepen.io/rodan8888/pen/e...

xmqywx
14分钟前
0
0
Java中Lambda表达式的使用

Java中Lambda表达式的使用 简介 (译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。本人...

DemonsI
18分钟前
0
0
深入理解Java中停止线程

一.停止线程会带来什么? 对于单线程中,停止单线程就是直接使用关键字return或者break,但是在停止多线程时是让线程在完成任务前去开启另外一条线程,必须放弃当前任务,而这个过程是不可预...

Ala6
27分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部