使用java.util.UUID生成唯一标识,为啥生成唯一标识的方法有些还需要参数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用java.util.UUID生成唯一标识,为啥生成唯一标识的方法有些还需要参数?相关的知识,希望对你有一定的参考价值。
比如UUID.nameUUIDFromBytes(byte[] name) 需要提供参数来生成唯一标识,
用不带参数的UUID.randomUUID() 方法也能生成唯一标识,还为什么需要有参数的方法呢?
public static UUID randomUUID()
SecureRandom ng = Holder.numberGenerator;
byte[] randomBytes = new byte[16];
ng.nextBytes(randomBytes);
randomBytes[6] &= 0x0f; /* clear version */
randomBytes[6] |= 0x40; /* set to version 4 */
randomBytes[8] &= 0x3f; /* clear variant */
randomBytes[8] |= 0x80; /* set to IETF variant */
return new UUID(randomBytes);//看到这里没,其实也是调用的带参数的,只不过
//所带参数的是给你随机出来的
//再看带参数的
public static UUID nameUUIDFromBytes(byte[] name)
MessageDigest md;
try
md = MessageDigest.getInstance("MD5");
catch (NoSuchAlgorithmException nsae)
throw new InternalError("MD5 not supported");
byte[] md5Bytes = md.digest(name);//这里就是对给的byte[]参数进行md5运算之后再进行计算UUID
md5Bytes[6] &= 0x0f; /* clear version */
md5Bytes[6] |= 0x30; /* set to version 3 */
md5Bytes[8] &= 0x3f; /* clear variant */
md5Bytes[8] |= 0x80; /* set to IETF variant */
return new UUID(md5Bytes);
参考技术A api,,,,,, 参考技术B 一个是随机的,一个不是本回答被提问者采纳
什么是UUID,Java中怎么产生UUID
UUID: 通用唯一识别码 (Universally Unique Identifier),是根据时间,机器码,网络地址生成的全球唯一数。引入 java.util.UUID,直接调用以下即可得到一个32为的随机数,即UUID.
UUID uuid = UUID.randomUUID(); 参考技术A GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随机数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。
UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID。
import java.util.UUID;
public class Test
public static void main(String[] args)
UUID uuid = UUID.randomUUID();
System.out.println (uuid);
以上是关于使用java.util.UUID生成唯一标识,为啥生成唯一标识的方法有些还需要参数?的主要内容,如果未能解决你的问题,请参考以下文章