文档章节

生成随机码——以及UUID

yabushan
 yabushan
发布于 2016/04/16 14:28
字数 656
阅读 50
收藏 0
点赞 1
评论 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
博文 37
码字总数 34355
作品 0
shell 生成随机数和随机字符串

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

xrzs ⋅ 2012/09/04 ⋅ 0

hilo高低位算法的优点和用途(非Hibernate主键策略)

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

Awisper ⋅ 2015/12/17 ⋅ 0

Python 趣味练习- 保存激活码到mysql和redis

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

beanxyz ⋅ 2017/10/12 ⋅ 0

JPA使用Hibernate实现,使用UUID.主键的生成策略.

警告信息如下: 3.1 WARN [org.hibernate.id.UUIDHexGenerator] (ServerService Thread Pool -- 48) HHH000409:Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC 4......

Zhao-Qian ⋅ 2014/03/25 ⋅ 0

产生唯一随机码的方法分析

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

好铁 ⋅ 2016/07/04 ⋅ 0

shell实例浅谈之三产生随机数七种方法

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

898009427 ⋅ 2017/12/29 ⋅ 0

新手上路之Hibernate(二):基本映射以及一些原则与主键生成策略

一、什么是映射 在上一篇文章中 新手上路之Hibernate:第一个Hibernate例子,通过一个例子了解了什么是hibernate。而其中最重要的就是通过User.hbm.xml来配置映射。这里所说的映射就是对象关...

Airship ⋅ 2016/12/12 ⋅ 0

在 Ubuntu 16.04 下随机化你的 WiFi MAC 地址

你的设备的 MAC 地址可以在不同的 WiFi 网络中记录你的活动。这些信息能被共享后出售,用于识别特定的个体。但可以用随机生成的伪 MAC 地址来阻止这一行为。 每一个诸如 WiFi 或者以太网卡这...

作者: Paul M Furley ⋅ 2017/12/11 ⋅ 0

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

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

强船生 ⋅ 2015/08/04 ⋅ 7

海莲花APT组织使用最新MacOS后门程序发动攻击

  海莲花APT组织(又名APT 32,APT-C-00,SeaLotus和Cobalt Kitty)是一个高度组织化的、专业化的境外黑客组织,该APT组织主要针对人权组织,媒体,研究机构和海事建筑公司等进行高级持续性...

FreeBuf ⋅ 04/28 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

20.zip压缩 tar打包 打包并压缩

6月25日任务 6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩 6.5 zip压缩工具: zip支持压缩目录 zip压缩完之后原来的文件不删除 不同的文件内容其实压缩的效果不一样 文件内有很多重复的用xz压...

王鑫linux ⋅ 16分钟前 ⋅ 0

double类型数据保留四位小数的另一种思路

来源:透析公式处理,有时候数据有很长的小数位,有的时候由在四位以内,如果用一般的处理方法,那么不足四位的小树会补充0到第四位,这样子有点画蛇添足的感觉,不太好看。所以要根据小数的...

young_chen ⋅ 23分钟前 ⋅ 0

Python 优化 回溯下降算法

使用sympy构造表达式,实现回溯下降算法 画出函数图像,先使用暴力搜索,找到最小值约为2.5左右 然后选定初始点,开始进行回溯搜索,下降方向为负梯度方向 下降的误差与步数大致呈现下面的状...

阿豪boy ⋅ 27分钟前 ⋅ 0

Django配置163邮箱出现 authentication failed(535)错误解决方法

最近用Django写某网站,当配置163邮箱设置完成后,出现535错误即:smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed') Django初始配置邮箱设置 EMAIL_HOST = "smtp.1...

陈墨轩_CJX ⋅ 29分钟前 ⋅ 0

用接口模拟可伸缩枚举(34)

1、枚举的可伸缩性最后证明都不是什么好点子 扩展类型的元素是基本类型实例,基本类型的实例却不是扩展类型的元素,很混乱 目前还没有很好的方法来枚举基本类型的所有元素,及其扩展 可伸缩性...

职业搬砖20年 ⋅ 32分钟前 ⋅ 0

Ubuntu18.04 IDEA快捷键无法使用

IDEA默认的回退到上一视图的快捷键是Ctrl + Alt + Left,在ubuntu中这个快捷键被占用了,在16.04中可以在界面中取消这个快捷键,但是18.04就看不到了,可以使用以下命令解决 gsettings set ...

Iceberg_XTY ⋅ 37分钟前 ⋅ 0

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 49分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 今天 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 今天 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部