UUID生成方法总结

来源:互联网 发布:js dom编程艺术第二版 编辑:程序博客网 时间:2024/05/19 18:11

https://puxx.blog.ustc.edu.cn/index.php/2013/06/28/uuid%E7%94%9F%E6%88%90%E6%96%B9%E6%B3%95%E6%80%BB%E7%BB%93/

UUID简介

摘自维基百科

通用唯一识别码(英语:Universally Unique Identifier,简称UUID)是一种软件建构的标准,亦为自由软件基金会组织在分散式计算环境领域的一部份。

UUID的目的,是让分散式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。目前最广泛应用的UUID,是微软公司的全局唯一标识符(GUID),而其他重要的应用,则有Linux ext2/ext3文件系统、LUKS加密分区、GNOME、KDE、Mac OS X等等。另外我们也可以在e2fsprogs包中的UUID库找到实现。


生成方法

搜集了一些UUID的生成方法,整理如下

Shell

  • Unix/Linux环境中大都有一个名为uuidgen的小工具,运行即可生成一个UUID到标准输出
  • 读取文件/proc/sys/kernel/random/uuid即得UUID,例如:

    cat /proc/sys/kernel/random/uuid 

libuuid

libuuid是一个用于生成UUID的C库,具体用法参考http://linux.die.net/man/3/libuuid,示例如下:

#include #include int main(int argc, char **argv){    uuid_t uuid;    char str[36];    uuid_generate(uuid);    uuid_unparse(uuid, str);    printf("%s\n", str);    return 0;} 

在Linux下编译时需要链接uuid库

gcc -o uuid uuid.c -luuid 

在Ubuntu中,可以用下面的命令安装libuuid:

sudo apt-get install uuid-dev 

boost uuid

Boost库是一个可移植的开源C++库,它提供了UUID的实现。

下面的代码可以生成一个UUID

#include #include boost::uuids::uuid a_uuid = boost::uuids::random_generator(); 

Qt QUuid

Qt是一个跨平台的C++编程框架,QUuid类实现了UUID的生成、比较、转换等功能。

函数QUuid createUuid();可用于生成一个随即UUID。示例如下:

#include #include #include int main(){    QUuid uuid = QUuid::createUuid();    std::cout << qPrintable(uuid.toString()) << std::endl;    return 0;} 

CoCreateGuid

Windows下提供了函数CoCreateGuid用于生成GUID。需要使用的头文件是”objbase.h”,需要链接的库是ole32.lib,函数原型为:

HRESULT CoCreateGuid(GUID *pguid); 

GUID的原型为

typedef struct _GUID{    DWORD Data1;    WORD Data2;    WORD Data3;    BYTE Data4[8];} GUID; 

Java

JDK 1.5以上支持UUID,用法如下:

import java.util.UUID;String uuid = UUID.randomUUID().toString(); 
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(3033) | 评论(1) | 转发(0) |
0

上一篇:WGET下载一个网站

下一篇:游戏平台网站系统架构 账号篇

相关热门文章
  • [官版翻译ing]OpenStack云计算...
  • [官版翻译ing]OpenStack云计算...
  • hive的安装和配置
  • OpenStack安装记
  • Hadoop运行class类出现Excepti...
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~

FreemanCh2016-05-12 11:02:05

可以直接在线生成的,也非常好用http://www.uuid.online/

回复 | 举报
原创粉丝点击