Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ n值UUID生成器,可重用ID_C++_Qt_Unique - Fatal编程技术网

C++ n值UUID生成器,可重用ID

C++ n值UUID生成器,可重用ID,c++,qt,unique,C++,Qt,Unique,我需要一个简单的UUID生成器。 此实例的ID必须是唯一的。 另一个要求是,它有n个哈希同时存在,并且是可发布的。 我不知道这是否符合UUID的概念。 我曾经考虑过使用pop和push实现一个具有n个值的堆栈,但这种做法在内存方面似乎不太好 使用基于随机的UUID(不包括加密的UUID)是不够的,因为如果运气不好,可能会有2个匹配的ID,它们不能被接受(尽管有不可忽略的机会),因为这应该在生产环境中使用。我强烈推荐使用库,这是一个提振候选者——我们正在我们的一个项目中使用它,而且效果很好。链接到

我需要一个简单的UUID生成器。 此实例的ID必须是唯一的。 另一个要求是,它有n个哈希同时存在,并且是可发布的。 我不知道这是否符合UUID的概念。 我曾经考虑过使用pop和push实现一个具有n个值的堆栈,但这种做法在内存方面似乎不太好

使用基于随机的UUID(不包括加密的UUID)是不够的,因为如果运气不好,可能会有2个匹配的ID,它们不能被接受(尽管有不可忽略的机会),因为这应该在生产环境中使用。

我强烈推荐使用库,这是一个提振候选者——我们正在我们的一个项目中使用它,而且效果很好。链接到v13。此版本+其他版本可位于

例如:

#include <string>
#include <iostream>
#include <UUID/boost/uuid/uuid.hpp>
using namespace std;

/*! returns a filename which is a uuid + .dat*/
std::string generate_filename()
{
    boost::uuids::uuid_generator gen;
    boost::uuids::uuid u = gen();
    return u.to_string()+ ".dat";
}

void main()
{
    for(int i = 0; i < 10; i++)
        cout << generate_filename() << endl;
}
#包括
#包括
#包括
使用名称空间std;
/*! 返回一个文件名,该文件名为uuid+.dat*/
std::字符串生成_文件名()
{
boost::uuids::uuid_生成器gen;
boost::uuids::uuid u=gen();
将u.返回到_string()+“.dat”;
}
void main()
{
对于(int i=0;i<10;i++)
cout我强烈推荐这个库,它是一个增强候选库-我们正在我们的一个项目中使用它,它工作得很好。链接到v13。这个版本+其他版本可以在

例如:

#include <string>
#include <iostream>
#include <UUID/boost/uuid/uuid.hpp>
using namespace std;

/*! returns a filename which is a uuid + .dat*/
std::string generate_filename()
{
    boost::uuids::uuid_generator gen;
    boost::uuids::uuid u = gen();
    return u.to_string()+ ".dat";
}

void main()
{
    for(int i = 0; i < 10; i++)
        cout << generate_filename() << endl;
}
#包括
#包括
#包括
使用名称空间std;
/*!返回uuid+.dat文件名*/
std::字符串生成_文件名()
{
boost::uuids::uuid_生成器gen;
boost::uuids::uuid u=gen();
将u.返回到_string()+“.dat”;
}
void main()
{
对于(int i=0;i<10;i++)

cout通用唯一标识符(UUID)/全局唯一标识符(GUID)

生成唯一ID的问题可以分解为空间上的唯一性和时间上的唯一性,当组合起来时,目标是生成全局唯一序列

UUID被正式明确定义为ISO-11578标准的一部分,其他规范也存在,如RFC 4122、ITU-T Rec.X.667

OSSP uuid()是一个用于ISO C、ISOC++、Perl和PHP的API,以及相应的CLI,用于生成DCE 1.1、ISO/IEC 11578:1996和符合RCF4122的通用唯一标识符(UUID)。它支持版本1(基于时间和节点的)的DCE 1.1变体UUID、版本3(基于名称、MD5)、版本4(基于随机数)和版本5。(基于名称,SHA-1)。UUID是128位数字,在空间和时间上具有很高的唯一性,并且在计算上难以猜测。它们是全局唯一标识符,可以在本地生成,无需联系全球注册机构。它是MIT/X Consortium许可下的开源

我在报告中还作了一些进一步的解释


在windows上检查RPC库(请参见#include“Rpcdce.h”),它具有生成UUID的函数。

通用唯一标识符(UUID)/全局唯一标识符(GUID)

生成唯一ID的问题可以分解为空间上的唯一性和时间上的唯一性,当组合起来时,目标是生成全局唯一序列

UUID被正式明确定义为ISO-11578标准的一部分,其他规范也存在,如RFC 4122、ITU-T Rec.X.667

OSSP uuid()是一个用于ISO C、ISOC++、Perl和PHP的API,以及相应的CLI,用于生成DCE 1.1、ISO/IEC 11578:1996和符合RCF4122的通用唯一标识符(UUID)。它支持版本1(基于时间和节点的)的DCE 1.1变体UUID、版本3(基于名称、MD5)、版本4(基于随机数)和版本5。(基于名称,SHA-1)。UUID是128位数字,在空间和时间上具有很高的唯一性,并且在计算上难以猜测。它们是全局唯一标识符,可以在本地生成,无需联系全球注册机构。它是MIT/X Consortium许可下的开源

我在报告中还作了一些进一步的解释


在windows上检查RPC库(请参见#include“Rpcdce.h”)它具有生成UUID的功能。

是否想详细说明您在这里需要什么?我至少无法理解您所说的一半。还要注意,GUI实际上在生产环境中使用,尽管它们可能会发生冲突,但可能性大于0。从长远来看:即使服务器只为所有用户生成UUID它的生命,更大的可能性是它将被流星湮灭。好吧,谢谢你的时间。这是unix下的/dev/random给出的吗?我读了很多文章,它们并不像预期的那样随机,而我第一次尝试使用的quuid使用的是那个(据我所知)。感谢您的回复。通过一些硬件解决方案和运行从不同来源收集更多熵的守护进程,您可以使/dev/random变得更好。如果您关心熵池,我建议您使用类似于熵键中的设备:介意详细说明您到底需要什么吗?我至少无法理解您需要的一半'你是说。还要注意的是,GUI实际上是在生产环境中使用的,尽管它们可能发生冲突的可能性大于0。从长远来看:即使服务器一生只生成UUID,它也有更大的可能性被流星湮灭。好吧,谢谢你的时间。这是用/dev/r给出的吗我读了很多文章,它们并不像我想象的那样随机,而我第一次尝试使用的quuid使用的就是那个(据我所知)。感谢您的回复。通过一些硬件解决方案和运行从不同来源收集更多熵的守护进程,您可以使/dev/random变得更好。如果您关心熵池,我建议使用类似于熵键中的设备:这会生成基于随机的v4 UUID,这并不比
quid::createUuid()更好
。所以我