java生成32位的UUID通用唯一识别码 (Universally Unique Identifier)

为啥用uuid而不用自增长方式呢?

首先为什么要用uuid控制主键呢?

相比较自动增长的int类型的主键有什么好处?

当数据量多、登录用户量多、遇到高并发的时候,自增长不利于维护,也不利于拓展,而且也有可能出现几个人同时插入自增长的同一个id 比如自增长到了100,ABC三个用户同时插入的时候会不会出现同时插入101?或者覆盖101数据呢?这就是弊端。

然而用uuid控制的话  当调用的插入的时候才自动生成一个识别号。。。

生成32位的uuid字符串

<span style="font-size:14px;">package com.cmcc.tools;

import java.util.UUID;

public class UUIDTool {

	public UUIDTool() {
	}
	/**
	 * 自动生成32位的UUid,对应数据库的主键id进行插入用。
	 * @return
	 */
	public static String getUUID() {
		/*UUID uuid = UUID.randomUUID();
		String str = uuid.toString();
		// 去掉"-"符号
		String temp = str.substring(0, 8) + str.substring(9, 13)
				+ str.substring(14, 18) + str.substring(19, 23)
				+ str.substring(24);
		return temp;*/
		
		return UUID.randomUUID().toString().replace("-", "");
	}


	public static void main(String[] args) {
//		String[] ss = getUUID(10);
		for (int i = 0; i < 10; i++) {
			System.out.println("ss[" + i + "]=====" + getUUID());
		}
	}
}
</span>



Java生成唯一UUID的方法通常是指使用Universally Unique Identifier通用唯一识别码),这是一种32个十六进制数字的字符串,通过特殊算法计算得出,目的是保证在时间和空间上的唯一性。Java生成UUID的一个常见方式是使用`java.util.UUID`类,它提供了一系列静态方法来生成UUID。以下是两种常见的方法: 1. 使用`randomUUID()`方法生成随机UUID: ```java import java.util.UUID; public class GenerateUUID { public static void main(String[] args) { UUID uuid = UUID.randomUUID(); System.out.println("生成的随机UUID是: " + uuid.toString()); } } ``` 这个方法会生成一个随机的UUID,它包含了随机生成的128位数字。 2. 使用`nameUUIDFromBytes(byte[] name)`方法生成基于命名空间的UUID: ```java import java.util.Arrays; import java.util.UUID; public class GenerateUUID { public static void main(String[] args) { // 示例:以某个字符串为命名空间生成UUID String name = "example.com"; byte[] nameBytes = name.getBytes(); UUID uuid = UUID.nameUUIDFromBytes(nameBytes); System.out.println("基于命名空间生成UUID是: " + uuid.toString()); } } ``` 这个方法可以生成一个基于输入命名空间的UUID,它将这个命名空间的信息转换成一个特定格式的字节数组,然后通过算法计算生成UUID。 这两种生成UUID的方式都可以保证在不同的时间和空间中产生的值具有很高的唯一性,但仍然有极小的概率发生碰撞。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值