`
shinestarwang
  • 浏览: 42384 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论
阅读更多
GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。

import java.util.UUID;

public class TestGuid {
public static void main(String[] args) {
  UUID uuid = UUID.randomUUID();
  String a = uuid.toString();
 
 
  System.out.println(uuid.toString());
 
  System.out.println(a.length());
 
 
}
}



  UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID


文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/java/javajs/20071023/79481.html



GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。

import java.net.*;
import java.util.*;
import java.security.*;public class GuidCreator extends Object {

private String seedingString = “”;
private String rawGUID = “”;
private boolean bSecure = false;
private static Random myRand;
private static SecureRandom mySecureRand;

private static String s_id;

public static final int BeforeMD5 = 1;
public static final int AfterMD5 = 2;
public static final int FormatString = 3;

static {
mySecureRand = new SecureRandom();
long secureInitializer = mySecureRand.nextLong();
myRand = new Random(secureInitializer);
try {
s_id = InetAddress.getLocalHost().toString();
} catch (UnknownHostException e) {
e.printStackTrace();
}
}

/*
* Default constructor. With no specification of security option,
* this constructor defaults to lower security, high performance.
*/
public GuidCreator() { }

/*
* Constructor with security option. Setting secure true
* enables each random number generated to be cryptographically
* strong. Secure false defaults to the standard Random function seeded
* with a single cryptographically strong random number.
*/
public GuidCreator(boolean secure) {
bSecure = secure;
}

/*
* Method to generate the random GUID
*/
private void getRandomGUID(boolean secure) {
MessageDigest md5 = null;
StringBuffer sbValueBeforeMD5 = new StringBuffer();

try {
md5 = MessageDigest.getInstance(”MD5″);
} catch (NoSuchAlgorithmException e) {
System.out.println(”Error: ” + e);
}

try {
long time = System.currentTimeMillis();
long rand = 0;

if (secure) {
rand = mySecureRand.nextLong();
} else {
rand = myRand.nextLong();
}

// This StringBuffer can be a long as you need; the MD5
// hash will always return 128 bits. You can change
// the seed to include anything you want here.
// You could even stream a file through the MD5 making
// the odds of guessing it at least as great as that
// of guessing the contents of the file!
sbValueBeforeMD5.append(s_id);
sbValueBeforeMD5.append(”:”);
sbValueBeforeMD5.append(Long.toString(time));
sbValueBeforeMD5.append(”:”);
sbValueBeforeMD5.append(Long.toString(rand));

seedingString = sbValueBeforeMD5.toString();
md5.update(seedingString.getBytes());

byte[] array = md5.digest();
StringBuffer sb = new StringBuffer();
for (int j = 0; j < array.length; ++j) {
int b = array[j] & 0xFF;
if (b < 0×10) sb.append(’0′);
sb.append(Integer.toHexString(b));
}

rawGUID = sb.toString();

} catch (Exception e) {
System.out.println(”Error:” + e);
}
}

public String createNewGuid(int nFormatType, boolean secure) {
getRandomGUID(secure);
String sGuid = “”;
if (BeforeMD5 == nFormatType) {
sGuid = this.seedingString;
} else if (AfterMD5 == nFormatType) {
sGuid = this.rawGUID;
} else {
sGuid = this.toString();
}
return sGuid;
}

public String createNewGuid(int nFormatType) {
return this.createNewGuid(nFormatType, this.bSecure);
}

/*
* Convert to the standard format for GUID
* (Useful for SQL Server UniqueIdentifiers, etc.)
* Example: C2FEEEAC-CFCD-11D1-8B05-00600806D9B6
*/
public String toString() {
String raw = rawGUID.toUpperCase();
StringBuffer sb = new StringBuffer();
sb.append(raw.substring(0,);
sb.append(”-”);
sb.append(raw.substring(8, 12));
sb.append(”-”);
sb.append(raw.substring(12, 16));
sb.append(”-”);
sb.append(raw.substring(16, 20));
sb.append(”-”);
sb.append(raw.substring(20));

return sb.toString();
}
}

/**
* Use Exceple
* public static void main(String args[]) {
* for (int i=0; i< 100; i++) {
* GuidCreator myGUID = new GuidCreator();
* System.out.println(”Seeding String=” + myGUID.getNewGuid(GuidCreator.BeforeMD5));
* System.out.println(”rawGUID=” + myGUID.getNewGuid(GuidCreator.AfterMD5));
* System.out.println(”RandomGUID=” + myGUID.getNewGuid(GuidCreator.FormatString));
* }
* }
*/
摘抄自:http://www.blogjava.net/jelver/articles/161297.html
分享到:
评论

相关推荐

    java代码生成GUID

    标题中的"java代码生成GUID"指的是如何用Java编写代码来生成这样的唯一标识符,而描述中提到的"转换成标准的GUID码"是指将生成的UUID字符串格式化为常见的GUID格式,如"C2FEEEAC-CFCD-11D1-8B05-00600806D9B6"。...

    基于Java生成GUID的实现方法

    在Java编程语言中,生成全局唯一标识符(GUID,Globally Unique Identifier)通常通过使用`java.util.UUID`类来实现。GUID是一个128位的数字,通常以16进制的形式展示,用于确保在分布式环境中的唯一性。由于其生成...

    Java的 GUID 类 型

    大家都知道.NET中有GUID 这个类型,保证每次生成的编号唯一,一般用来作为数据库的主键列使用。 Java里也有这个类型,他位于java.util中 是一个静态类UUID。 具体使用方法,详见附件下载。

    如何生成guid

    生成GUID的方法有很多种,通常包括编程语言内置的库函数或第三方工具。以下是一些常见编程语言生成GUID的实例: 1. **C#**: 在C#中,可以使用`System.Guid`类的静态方法`NewGuid()`来生成新的GUID: ```csharp ...

    GUID代码生成与算法介绍

    GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。生成算法用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。

    生成GUID的小程式

    生成GUID的小程式,感觉添加数据库的数据很方便,大家一起使用啦……

    jdk1.4生成guid

    标题“jdk1.4生成guid”指的是在Java 1.4版本中生成全局唯一标识符(GUID)的技术。GUID,全称Globally Unique Identifier,是一种确保在全球范围内唯一标识对象的128位数字。在Java中,通常使用`java.util.UUID`类...

    mysql_guid主键生成方式范例

    在MySQL中,有几种方式可以生成GUID,包括`UUID()`函数和`BIN_TO_UUID()`函数。`UUID()`函数直接生成一个标准的UUID(即GUID),而`BIN_TO_UUID()`则用于将二进制形式的UUID转换为可读的字符串形式。 接下来,我们...

    GUID.zip_guid_guid 生成器

    标签“guid”和“guid_生成器”进一步明确了这个压缩包的内容,它是一个专注于生成GUID的实用程序。开发者和程序员可能会经常需要这个工具,特别是在需要创建唯一标识符的场景下。 在压缩包的子文件列表中,我们只...

    Java邀请码生成工具类

    超级简单的Java邀请码生成器,输入一个数值类型生成一个6位的0-Z的邀请码,并且邀请码可以反向解析成数值! 非常好用,生成和反向生成的方法已经封装好了 超级简单

    全球唯一码生成器(GUID)

    在Java编程语言中,我们可以使用内置类`java.util.UUID`来生成GUID。`UUID`是通用唯一识别码(Universally Unique Identifier)的缩写,与GUID基本等价。`UUID`提供了多种生成方法,如`randomUUID()`,`...

    JavaScript实现生成GUID(全局统一标识符)

    GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成GUID的API。... 一般在sql、java、C#等后台或数据库语言中生成GUID都很简单,而前端没有直

    java生成UUID通用唯一识别码.docx

    Java中的UUID(Universally Unique Identifier)是一种用于生成全局唯一标识符的标准,由开源软件基金会(OSF)在分布式计算环境中提出。UUID的主要目的是确保在分布式系统中的任何元素都有其独特的识别信息,无需...

    原生JavaScript生成GUID的实现示例

    GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成GUID的API。... 一般在sql、java、C#等后台或数据库语言中生成GUID都很简单,而前端没有直

    uuid生成16位的,唯一码

    uuid生成,可生成16个字符的唯一码。使用方法,见main函数

    JAVA UUID 生成全球唯一ID

    GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复

    java8源码-javaGuid:向导

    java8 源码 准备面试的小伙伴可以考虑面试专版: ,欢迎加入获取更多实用干货。 如果 Github 访问速度比较慢或者图片无法刷新出来的话,可以转移到查看,或者。如果你要提交 issue 或者 pr 的话请到 提交。 ...

    获取Guid唯一码

    在.NET环境下,我们可以使用`System.Guid`类来生成Guid。生成新的Guid实例最简单的方法是使用`NewGuid()`静态方法。例如: ```csharp Guid guid = Guid.NewGuid(); ``` 2. Java: 在Java中,没有内置的Guid类,但...

    Springboot唯一编号整合,vesta全局唯一id生成器

    在现代的分布式系统中,确保每个实体的唯一标识是非常重要的,这通常涉及到全局唯一ID(Global Unique Identifier,简称GUID)的生成。SpringBoot作为一个轻量级的Java开发框架,广泛应用于微服务架构,而Vesta ID ...

Global site tag (gtag.js) - Google Analytics