简单生成随机数id的方法
近期项目中需要生成不同的id,之前都是使用UUID来实现的,现在需求是只要8位数的,也就是说用户量是有限的,暂时是不需要太多的,所以就简单的使用Set实现了这一功能。
/**
* 生成8位不重复随机id
* @author xiaoquan
* @created 2015年10月24日 下午4:13:57
*/
public class RandomUtils {
private static Set<String> set = new HashSet<String>();
// private static List<String> list = new ArrayList<String>(); /**
* 数据库重启时,需要将id缓存在内存set中
* @param list
*/
public static void initSet(List<String> list){
for(String str : list){
set.add(str);
}
} /**
* 随机获取八位不同的Id
* @return
*/
public static synchronized String generateSetRandom(){
String r = null;
boolean success = true;
do{
r = RandomStringUtils.randomNumeric(8);
success = set.add(r);
}while(!success);//避免重复,false循环随机获取
return r;
}
}
上面代码中,注释掉List是因为我发现使用list存储的话,其生成性能有着非常大的差别,感兴趣的童鞋可以测试下。
如果不限制位数的话,我觉得有一种生成随机数比较好的方式大可以试下:
public static synchronized String generateRandom(){
//使用当前时间生成时间戳yyyyMMddHHmmssSSS
StringBuffer suf = new StringBuffer(DateFormatUtils.format(Calendar.getInstance(), "yyyyMMddHHmmssSSS"));
//生成3位随机数
suf.append(RandomStringUtils.randomNumeric(3));
return suf.toString();
}
使用这段代码生成的随机数可以保证唯一,也是一种比较好的方式,可以调整randomNumeric(n)中n的大小来减小相同的概率
简单生成随机数id的方法的更多相关文章
- PyTorch 常用方法总结1:生成随机数Tensor的方法汇总(标准分布、正态分布……)
在使用PyTorch做实验时经常会用到生成随机数Tensor的方法,比如: torch.rand() torch.randn() torch.normal() torch.linespace() 在很 ...
- PHP生成唯一ID的方法
PHP自带生成唯一id的函数:uniqid() 它是基于当前时间微秒数的 用法如下: echo uniqid(); //13位的字符串 echo uniqid("php_"); / ...
- DotNet生成随机数的一些方法
在项目开发中,一般都会使用到“随机数”,但是在DotNet中的随机数并非真正的随机数,可在一些情况下生成重复的数字,现在总结一下在项目中生成随机数的方法. 1.随机布尔值: /// <summa ...
- 关于使用jmeter函数助手生成随机数的使用方法
记录自己的生活! 1.使用jmeter函数助手的生成随机数的方法,主要包含以下几个函数: [_Random] [_RandomString] 2.关于[_Random]函数的说 ...
- Python生成唯一id的方法
1. uuid import uuid def create_uid(): return str(uuid.uuid1()) if __name__ == '__main__': print(type ...
- 如何使用php生成唯一ID的4种方法
php生成唯一ID的应用场景非常普遍,如临时缓存文件名称,临时变量,临时安全码等,uniqid()函数基于以微秒计的当前时间,生成一个唯一的 ID.由于生成唯一ID与微秒时间关联,因此ID的唯一性非常 ...
- pytorch 生成随机数
在使用PyTorch做实验时经常会用到生成随机数Tensor的方法,比如: torch.rand() torch.randn() torch.normal() torch.linespace() 在很 ...
- (摘)C#生成随机数的三种方法
随机数的定义为:产生的所有数字毫无关系. 在实际应用中很多地方会用到随机数,比如需要生成唯一的订单号. 在C#中获取随机数有三种方法: 一.Random 类 Random类默认的无参构造函数可以根据当 ...
- C#生成随机数的三种方法
随机数的定义为:产生的所有数字毫无关系. 在实际应用中很多地方会用到随机数,比如需要生成唯一的订单号. 在C#中获取随机数有三种方法: 一.Random 类 Random类默认的无参构造函数可以根据当 ...
随机推荐
- [django]上下文管理器
上下文管理器django提取context中的数据去供模板调用 需求: 所有的页面都需要一个特定的变量 本质: python函数 , 接收一个HttpRequest对象的参数 , 且返回的必须是一个字 ...
- HTML转换PDF及SWF及图片
一.源码特点 在一些应用场景中,出于某些目的(例如需要对文章内容进行保护,禁止用户真接复制文字内容),不能直接提供HTML的方式进行浏览,那么就需要将文章内容转换为其它的格式如PDF.图 ...
- Scrapy爬虫框架下执行爬虫的方法
在使用Scrapy框架进行爬虫时,执行爬虫文件的方法是 scrapy crawl xxx ,其中 xxx 是爬虫文件名. 但是,当我们在建立了多个文件时,使用上面的命令时会比较繁琐麻烦,我们就可以使用 ...
- UITextView输入中文时限制字数
最近因为项目中输入用户简称时限制长度,被测试部多次提交问题,最终将解决方法分享给大家. 刚开始用最简单的方法,在textView的代理方法里面做处理 - (void)textViewDidChange ...
- 【C++进阶:STL常见性质】
STL中的常用容器包括:顺序性容器(vector.deque.list).关联容器(map.set).容器适配器(queue.stac) 转载自:https://blog.csdn.net/u0134 ...
- 2013 AAAI: Uncorrelated Lasso
Si-Bao Chen, Chris Ding, Bin Luo and Ying Xie. Uncorrelated Lasso. AAAI, 2013. 第一作者是安徽大学陈思宝副教授. 第二作者 ...
- python 网络编程 代码版
写博客最怕写什么? 系统原理,框架内核... #!/usr/bin/env python # -*- coding:utf-8 -*- import socket sk = socket.socket ...
- 010-Spring Boot 扩展分析-ApplicationContextInitializer、CommandLineRunner、ApplicationRunner
一.常见的两个扩展点 1.ApplicationContextInitializer 1.1.作用实现 作用:接口实在Spring容器执行refresh之前的一个回调. Callback interf ...
- 007-Spring Boot-@Enable*注解的工作原理-EnableConfigurationProperties、ImportSelector、ImportBeanDefinitionRegistrar
一.@Enable* 启用某个特性的注解 1.EnableConfigurationProperties 回顾属性装配 application.properties中添加 tomcat.host=19 ...
- Delphi XE2 之 FireMonkey 入门(5) - TAlphaColor
不是 TColor, 是 TAlphaColor 了. TAlphaColor = type Cardinal; 还是一个整数. 四个字节分别是: AA RR GG BB(透明度.红.绿.蓝); 这和 ...