import java.util.HashSet;
import java.util.Random;
import java.util.ResourceBundle;
import java.util.UUID;
/**
*
*类名称:各种id生成策略
*类描述:
*
*编 写 人:kxw
*编写日期:2016-8-29
*
*修改人:
*修改日期:
*修改内容:
*
*版本:1.0
*/
public class IDUtils {
private static int id=0;
private static long time;
private static String hostCode;
//主机编号
static{
//读取配置文件
ResourceBundle conf = ResourceBundle.getBundle("host");
hostCode=conf.getString("hostCode");
} /**
* 图片名生成
*/
public static String genImageName() {
//取当前时间的长整形值包含毫秒
long millis = System.currentTimeMillis();
//long millis = System.nanoTime();
//加上三位随机数
Random random = new Random();
int end3 = random.nextInt(999);
//如果不足三位前面补0
String str = millis + String.format("%03d", end3);
return str;
}
/**
* id生成
*/
public static long getId() {
//取当前时间的长整形值包含毫秒
long millis = System.currentTimeMillis();
//long millis = System.nanoTime();
//加上两位随机数
long end3 = getRand(millis);
//如果不足两位前面补0
//String str = millis + String.format("%03d", end3);
//long id = new Long(str);
return end3;
}
private synchronized static long getRand(long l){
if(l>time){
time=l;
id=0;
}else{
id++;
}if(id>99){
id=0;
time=time+1;
}
String str = time+hostCode + String.format("%02d", id);
long ids = new Long(str);
//System.out.println(ids);
return ids;
}
public static void main(String[] args) {
int m=0;
System.out.println(System.currentTimeMillis());
HashSet hashSet = new HashSet();
for(int i=0;
i<99999;
i++){
//
//if(getId()==getId()){
//m++;
//System.out.println("重复了"+m+"ci");
//}
hashSet.add(getId());
}
System.out.println(hashSet.size());
System.out.println(getId());
System.out.println(System.currentTimeMillis());
System.out.println(UUID.randomUUID().toString());
if(UUID.randomUUID().toString().equals(UUID.randomUUID().toString())){
m++;
System.out.println("重复了"+m+"ci");
}
}
}
【自动生成全局时间戳id的工具类】
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)