文档章节

生成随机码——以及UUID

yabushan
 yabushan
发布于 2016/04/16 14:28
字数 656
阅读 52
收藏 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
hilo高低位算法的优点和用途(非Hibernate主键策略)

开门见山地说,hilo高低位算法的用途,或者说目前为止我所见过的用途,就是——编号生成! 通常订单编号、产品编号、物流编号、工人编号、批次编号等等各种各样的编号,都是由数字构成,有得...

Awisper
2015/12/17
1K
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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

此生1.3

颜值是开胃菜,不要太在意,正餐才是重点。

colinux
今天
1
0
[雪峰磁针石博客]软件测试专家工具包1web测试

web测试 本章主要涉及功能测试、自动化测试(参考: 软件自动化测试初学者忠告) 、接口测试(参考:10分钟学会API测试)、跨浏览器测试、可访问性测试和可用性测试的测试工具列表。 安全测试工具...

python测试开发人工智能安全
今天
3
0
JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
3
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
1
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部