美文网首页
各种os中生成UUID的方法

各种os中生成UUID的方法

作者: Colocasia | 来源:发表于2019-07-14 23:08 被阅读0次

好记性不如烂笔头啊,还是记录一下!


开发人员或多或少都应该知道UUIDGUID,这是摘自维基百科的一段描述。

通用唯一识别码 (Universally Unique Identifier, UUID) 是一个软件建构的标准,亦为自由软件基金会 (Open Software Foundation, OSF) 的组织在分散式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。

UUID的目的,是让分散式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的UUID,即是微软的Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的应用,则有Linux ext2/ext3 档案系统LUKS 加密分割区GNOMEKDEMac OS X 等等。另外我们也可以在 2fsprogs 套件中的UUID 函式库找到实作。

现在自己做的小游戏需要在不同系统及开发环境中生成UUID,故对UUID的生成进行了一些学习,整理如下。


1. Shell

几乎所有Unix和类Unix环境中都包含了一个名为uuidgen的小工具,运行即可生成一个UUID


2. Linux/Mac OS X

#include <stdio.h
#include <uuid/uuid.h>
int main(int argc, char **argv)
{
    uuid_t uuid;
    uuid_generate(uuid);
    unsigned char *p = uuid;
    int i;
    for (i = 0; i < sizeof(uuid_t); i++, p++)
    {
        printf("%02x", *p);
    }
    printf("\n");
    return 0;
}

注意:在Linux下编译时需要链接uuid库(-luuid),在Mac OS X下则不需要。


3. Mac OS X (Cocoa)

进行Cocoa开发时,使用CFUUIDCreate函数可生成UUID,以下代码摘自Vincent Gable’s Blog

+ (NSString*) stringWithUUID
{
    CFUUIDRef uuidObj = CFUUIDCreate(nil);//create a new UUID
    //get the string representation of the UUID
    NSString *uuidString = (NSString*)CFUUIDCreateString(nil, uuidObj);
    CFRelease(uuidObj);
    return [uuidString autorelease];
}

4. Windows

使用API函数HRESULT CoCreateGuid(__out GUID *pguid)可生成GUID(即UUID),由于CoCreateGuidCOM函数,别忘了首先调用CoInitializeEx进行初始化。

int main(int argc, char **argv)
{
    ::CoInitialize( 0 );
    // Generate GUID.
    GUID Guid = { 0 };
    ::CoCreateGuid( &Guid );
    LPOLESTR szGUID = NULL;
    StringFromCLSID(Guid, &szGUID);
    wprintf(L"%s", szGUID);
    GUID Guid2 = {0};
    CLSIDFromString(szGUID, &Guid2);
    if(szGUID)
    {
        CoTaskMemFree(szGUID);
        szGUID = 0;
    }
}

5. C#

using System;
namespace DisplayGUID
{
    class GuidExample
    {
        static void Main(string[] args)
        {
            GenerateGUID();
        }
        static void GenerateGUID() 
        {
            Console.WriteLine("GUID: " + System.Guid.NewGuid().ToString());
        }
    }
}

5. Java

JDK 1.5以上内建了UUID的支持,使用非常简单。

import java.util.UUID;
...
String uuid = UUID.randomUUID().toString();

相关文章

  • 各种os中生成UUID的方法

    好记性不如烂笔头啊,还是记录一下! 开发人员或多或少都应该知道UUID或GUID,这是摘自维基百科的一段描述。 通...

  • (2)分布式ID之UUID适合做分布式ID吗

    UUID的生成策略: UUID的方式能生成一串唯一随机32位长度数据,它是无序的一串数据,按照开放软件基金会(OS...

  • 2021-09-22 JAVA基本语法

    1.UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法。UUID...

  • js常用函数

    1.uuid UUIDGenerator 生成 UUID。 使用cryptoAPI 生成 UUID, 符合RFC4...

  • UUID用法

    java中这个方法: UUID.randomUUID() 可以随机生成16进制数字,可以用来当id 如图:

  • js 生产uuid

    /* 生成uuid */ function uuid() { var s = []; ...

  • UUID生成工具方法

    生成的是一个32位不重复的字符串

  • golang字符串的一般操作

    生成MD5字符串 生成UUID 方法一、自己写 方法二、 方法三、 方法四、 若使用的是linux系统,可以直接使...

  • php代码块

    货号单 0000001的生成方法 通过goole Api以经纬度获取城市名 生成uuid方法 使用PHP内置函数实...

  • UUID——初识

    在线生成UUID:http://www.uuid.online/ 一、什么是UUID? UUID是Universa...

网友评论

      本文标题:各种os中生成UUID的方法

      本文链接:https://www.haomeiwen.com/subject/wohwkctx.html