`

java Uuid学习

阅读更多
 
package com.apusic.string;

import java.util.UUID;

public class UuidGenetor {
	
	public static String getUuid(){
		String uuid = UUID.randomUUID().toString();
		return uuid;
	}
	
	/**
	 * 返回uuid数组
	 * length 为数组的长度
	 */
	public static String[] getUuidArray(int length){
		if(length<1){
			return null;
		}
		String[] uuidArray = new String[length];
		for(int i=0; i<length; i++){
			uuidArray[i] = getUuid();
			String str = uuidArray[i].replace("-", "");
			System.out.println(str);
		}
		return uuidArray;
	}
	
	
	public static void main(String[] args) {
		getUuidArray(5);
	}

}


理论说明:
   UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的, 基于128 位唯一值产生算法生成16 进制数值(编码后以长度32 的字符串表示)。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。


  关于使用UUID作为数据库主键的优劣分析:
  优点:
  1、 便于指定比较个性化的主键,如我想每个主键都是以"yao"开头的,那么我就可以采取“yao"+uuid的形式
  2、 能够保证独立性,程序可以在不同的数据库间迁移,效果不受影响。
保证生成的ID不仅是表独立的,而且是库独立的,这点在你想切分数据库的时候尤为重要。

  缺点:
  1、 比较占地方,和INT类型相比,存储一个UUID要花费更多的空间
  2、 使用UUID后,URL显得冗长,不够友好(但此处有时也能成为优势)
  3、 性能问题:数据在索引的时候效率会随着体积的增加而降低,但也有许多数据库有针对uuid的主键生成策略, 据说效率与原生主键一样, ^_^ ^_^ 没试过。
分享到:
评论

相关推荐

    浅谈java获取UUID与UUID的校验

    java 获取 UUID 与 UUID 校验详解 Java 获取 UUID 是一个非常常见的操作,UUID(Universally Unique ...通过本文,我们可以了解到 UUID 的基本概念和使用方法,并且可以学习到如何使用 Java 实现 UUID 的生成和校验。

    java学习UUID的放弃,切换到ULID

    日常开发中我们会遇到使用字符串ID,最先行到的就是UUID生成我们的随机字符串,但是UUID也是会出现重复的几率的!所以我们引入的新的ULID ULID的特性 与UUID的128位兼容性 每毫秒1.21e + 24个唯一ULID 按字典顺序...

    java生成UUID通用唯一识别码 中文WORD版

    提供的“java生成UUID通用唯一识别码.docx”文档,可能是详细介绍了如何在Java项目中使用UUID,包括代码示例和具体应用场景,对初学者来说是一份很好的学习资料。而其他如“电子书频道.url”、“下载频道.url”、...

    通过NDK获得UUID

    标题"通过NDK获得UUID"和描述涉及到利用Native Development Kit (NDK) 在Android系统底层获取UUID,以及通过Java层获取Android的唯一标识码。NDK允许开发者用C/C++编写部分应用,从而提高性能,特别是对于计算密集型...

    BLE 128bit UUID profile

    **蓝牙4.0 128位UUID简介** 在物联网技术中,蓝牙低功耗(Bluetooth Low Energy,简称BLE)是一种广泛使用的...通过提供的资源,开发者可以学习如何在实际项目中有效地使用128位UUID,以实现更高效、安全的蓝牙通信。

    UUID使用总结

    例如,在Java中,可以使用`java.util.UUID`类来生成和操作UUID;在Python中,可以导入`uuid`模块来实现相同功能。在实际应用中,UUID常用于数据库主键、临时文件命名、分布式系统中的唯一标识等场景,避免了命名冲突...

    UuidGen:基于 JAVA 的 UUID 生成-开源

    通过这个开源项目,开发者不仅可以获取UUID,还可以了解如何在Java中实现这样的工具,甚至可以学习到关于命令行接口(CLI)和剪贴板操作的知识。同时,参与到开源社区中,可以提升自己的编程技能,也可以为社区做出...

    uuid 资料包

    在编程语言中,UUID的使用非常广泛,例如在Java、Python、JavaScript等语言中都有对应的库或内置支持。在数据库设计中,UUID常用于主键,因为它可以避免在分布式环境中出现主键冲突。在分布式服务和微服务架构中,...

    开源项目-frankenbeanies-uuid4.zip

    开源项目“frankenbeanies-uuid4.zip”是一个基于Java的...通过深入研究源代码和相关文档,我们可以学习到UUID4的生成原理,以及如何设计和实现一个简单的Java库。同时,这也是一个实践和理解开源协作精神的好机会。

    UUID生成器

    由于已包含jre(Java Runtime Environment),这意味着该程序基于Java编写,用户无须额外安装Java环境就能执行。这种打包方式使得软件具有良好的平台无关性,无论是在Windows、Linux还是Mac OS等操作系统上,只要...

    UUID-generate-.zip_doc_uuid

    例如,你可能会看到如何使用编程语言(如Java、Python或C++)来实现UUID的生成,或者关于如何选择合适的UUID版本以满足特定需求的讨论。 UUID在数据库设计、分布式系统、网络通信等多个领域都有广泛的应用。比如,...

    Fastblue指定uuid 发送十六进制指令,蓝牙框架进制转换

    Fastblue是一个Java编写的Android库,它的设计目标是简化蓝牙连接和数据交换的过程。在蓝牙框架中,UUID(Universally Unique Identifier)是识别服务、特征或描述符的唯一标识符。开发者可以使用UUID来定位并访问...

    aven依赖的配置,使用命令。eclipse中安装和使用

    【 Maven 概述 】 Maven 是一个强大的项目管理工具,它主要负责构建、依赖管理和项目信息管理。Maven 的核心理念是“约定优于配置”,这意味着...通过学习和熟练使用 Maven,开发者可以更好地应对复杂的项目构建需求。

    Java-Bluetooth-API.rar_bluetooth-API_java bluetooth_java 蓝牙api_j

    Java Bluetooth API.pdf文档可能包含了这些概念的详细解释、示例代码以及API参考,是学习和开发蓝牙应用的重要资源。建议仔细阅读该文档,结合实践来提升蓝牙编程能力。通过熟练掌握Java蓝牙API,你可以开发出各种...

    全国计算机二级JAVA学习资料大全.doc

    全国计算机二级JAVA学习资料主要涵盖了EJB(Enterprise JavaBeans)中的生命周期注解和Hibernate的对象-关系映射(ORM)基础。以下是对这两个知识点的详细解释: 1. EJB生命周期注解: EJB容器管理的对象,如...

    Java相关课程系列笔记之十四Hibernate学习笔记

    【Java相关课程系列笔记之十四Hibernate学习笔记】 Hibernate是一个开源的对象关系映射(ORM)框架,它极大地简化了Java应用程序对数据库的操作。本笔记将详细阐述Hibernate的核心概念、使用方法和特性。 一、...

    31个java工具类大汇总

    在Java中,可以使用`java.util.UUID`类来生成全局唯一标识符(UUID),这是一个128位的数字,通常表示为32个十六进制数字,可以满足生成32位不重复随机数的需求。如果仅需要32位,可以进一步进行转换或截取。 4. *...

    java实现电脑和Android蓝牙连接

    通过分析和理解这些代码,开发者可以学习到如何在Java环境下与Android设备进行蓝牙通信。同时,为了确保安全性和效率,开发者还需要考虑连接超时、错误处理、数据编码解码以及资源管理等方面的问题。 总之,Java和...

    java常用工具类

    Java作为一个广泛使用的...此外,不断学习和研究新的开源工具库,如Guava,Apache Commons,Google Collections等,也是Java开发者持续进步的重要途径。记得适时更新和优化自己的工具集,以便适应不断变化的开发需求。

    java_学习资料

    ### Java框架知识学习 #### Struts 1.x **手写MVC框架** - **概念理解**:在探讨Struts框架之前,先了解MVC(Model-View-Controller)架构模式的基本原理。这是一种广泛应用于软件工程的设计模式,尤其是用于Web...

Global site tag (gtag.js) - Google Analytics