UUID的生成——JAVA

UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成UUID的API。UUID按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。

在Java中生成UUID方式如下:

调用JAVA.util.UUID类

即:UUID uuid  =  UUID.randomUUID();

String str = uuid.toString();

得到的结果即是“a933bd2c-de9f-4e3a-8782-b4e11dc42641”;

可能通过截取字符串将“-”去掉:

即:str.substring(0,8)+str.substring(9,13)+str.substring(14,18)+str.substring(19,23)+str.substring(24);

可得到:a933bd2cde9f4e3a8782b4e11dc42641

UUID由以下几部分的组合:

  (1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。

  (2)时钟序列

  (3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。

  UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函数很简单的生成UUID,其格式为:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12),可以从cflib 下载CreateGUID() UDF进行转换。

  使用UUID的好处在分布式的软件系统中(比如:DCE/RPC, COM+,CORBA)就能体现出来,它能保证每个节点所生成的标识都不会重复,并且随着WEB服务等整合技术的发展,UUID的优势将更加明显。根据使用的特定机制,UUID不仅需要保证是彼此不相同的,或者最少也是与公元3400年之前其他任何生成的通用惟一标识符有非常大的区别。

  通用惟一标识符还可以用来指向大多数的可能的物体。微软和其他一些软件公司都倾向使用全球惟一标识符(GUID),这也是通用惟一标识符的一种类型,可用来指向组建对象模块对象和其他的软件组件。第一个通用惟一标识符是在网罗计算机系统(NCS)中创建,并且随后成为开放软件基金会(OSF)的分布式计算环境(DCE)的组件。

时间: 2024-09-30 15:37:13

UUID的生成——JAVA的相关文章

UUID详解,uuid在线生成

看这篇文章前可以先直接在线生成一个uuid,预览一下, http://www.uuid.online/ UUID是什么? UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可能的数字.由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UU

MyEclipse生成java API文档

API文档是提供接口是必须的,如果用word文档,不仅书写起来很麻烦,而且对于使用者来说很不方便.可以使用myEclipse来生成API文档,与java提供的官方API文档一样.一下是详细步骤. /**  * 数据库操作通用程序包  */ package xju.dbhelper; import java.sql.*; /**  * 数据库操作通用接口  * @author xju  * @version 1.0  */ public abstract interface DBHelper {

在线数据库表(sql语句)生成java实体类工具

相信每个做java开发的读者,都接触过SQL建表语句,尤其是在项目开发初期,因为数据库是项目的基石. 在现代项目开发中,出现了许多ORM框架,通过简单的实体映射,即可实现与数据库的交互,然而我们最初设计的一定是数据库表结构,而不是实体类.实体类仅仅是对底层数据结构的有损压缩,它仅仅是数据载体,不具备数据归档能力. 因此,很多时候,我们需要将原始的SQL建表语句转换成java实体类,这项工作看似简单,但若人工完成,工作量也是相当可观的,而且难免会出现差错. 到目前为止,笔者还没有发现比较靠谱的此类

mybatis怎样自动生成java类,配置文件?

其实没有什么东西是可以自动生成的,只不过是别人已经写好了,你调用罢了. 所以想要mybatis自动生成java类,配置文件等,就必须要一些配置和一些jar包.当然这些配置也很简单. 为了有个初步的认识,首先我列出了所需要的文件: 其中标红的比较重要.好了,让我们开始吧 1.首先需要在数据库建好表,随便建几个就好. 2.下载mybatis-generator-core包 下载地址:http://search.maven.org/ 然后搜索mybatis-generator-core下载即可 3.下

ORACLE uuid自动生成主键

-- Create table create table TECHNOLOGYCOMPANY ( ID VARCHAR2(32) default SYS_GUID() not null, FLOWID VARCHAR2(50), CONPANYID NUMBER, ISCOMMUNICATION VARCHAR2(10) ) tablespace USERS pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K minextents 1

JSP-讲解(生成java类、静态导入与动态导入)

一.JSP技术简介 JSP是Java Server Page的缩写,它是Servlet的扩展,它的作用是简化网站的创建和维护. JSP是HTML代码与Java代码的混合体. JSP文件通常以JSP或JSPX的扩展名. JSP拥有自己的语法. JSP形式上像HTML,但本质上是Servlet. JSP的出现,使得将Web开发中的HTML与业务逻辑代码有效分离成为可能.通常JSP只负责生成动态的HTML文档,而业务逻辑由其他Java组件如JavaBean来实现.JSP可以通过Scriptlet来访问

Java与XML的故事一:通过XSD生成Java类

JAXB让Java与XML之间繁琐的机械编码成为过去,现在可以简单的通过XSD文件生成对应的Java文件,我一般使用maven-jaxb2-plugin来实现xsd到java文件的生成. POM配置 指定xsd文件路径,制定binding文件路径,指定生成java文件路径 <plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifact

动态生成java、动态编译、动态加载

我曾经见过一个“规则引擎”,是在应用系统web界面直接编写java代码,然后保存后,规则即生效,我一直很是奇怪,这是如何实现的呢?实际这就好像jsp,被中间件动态的编译成java文件,有被动态的编译成class,同时又动态的加载到classloader中.所以,本质上,纯java得规则引擎,是100%可以实现的. 1.动态生成java源代码.这个过程太过简单,直接略过. 2.动态编译. 我看我们自己的规则引擎也有动态编译,就是在生成BOM模型的时候.但是是调用Process执行javac.但这种

使用Myeclipse插件将wsdl生成java客户端代码

使用环境:MyEclipse9.0 本教程使用Myeclipse内置插件生成java代码,网上说这是xfire插件,不管怎样,生成和调用客户端代码都十分简单. 1.在项目上右键,选择New->Other->Web Service->Web Service Client->Next,会看到以下界面: 这里可以选择wsdl文件,也可以写上wsdl的url地址,推荐是写url,这样调用的时候不需要修改生成的代码.然后使用默认设置一路next,最后finish. 2.调用过程 生成代码后,