java插入唯一值的方式有好多中,有自带的,有开源的,这里将分享一些获取唯一值的方法,希望可以帮到大家
方法/步骤
-
1
第一步:java获取唯一值,在jdk里面可以使用随机数方法,随机种子可以cup的频率,当前时钟等等,代码如下:
Random r = new Random();
for(int i=0 ; i<100 ; i++){
int x = r.nextInt(100000000);
System.out.println(x);
}
-
2
第二步:当然随机数获取在某种程度上有重复的问题,所以在JDK里面有UUID的类,此类就是获取唯一字符串的,代码如下:
UUID uuid = UUID.randomUUID();
System.out.println(uuid.toString());
-
3
第三步:通过nanoTime()来获取唯一值,这个是个静态方法,获取微秒数,比时间戳更精细,代码如下:
long l = System.nanoTime();
System.out.println(l);
-
4
第四步:雪花算法。分布式ID解决方案,生成的值是唯一的,代码如下:
long id = IdUtil.getSnowflake(0, 0).nextId();
System.out.println(id);
(这里用hutool工具包)
-
5
第五步:在java.util包里面还有一个线程安全的加减操作,AtomicInteger,此方法可以提供安全的加减,也可以做唯一值生成工具,代码如下:
AtomicInteger counter = new AtomicInteger(0);
if (counter.get() > 999999) {
counter.set(1);
}
long t = System.currentTimeMillis();
long x = t * 100 + counter.incrementAndGet();
System.out.println(x);
-
6
第六步:如果是插入数据的话,在mysql里面自增注解和唯一外键,通过这个也可以控制值的唯一
END
文章评论