是否可以创建相同的指南

发布于 2024-10-19 16:24:14 字数 78 浏览 3 评论 0原文

是否可以在一个应用程序中创建相同的指南

Guid id = Guid.NewGuid();

Is it possible to create identical guids in one application

Guid id = Guid.NewGuid();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

燃情 2024-10-26 16:24:14

从技术上来说,是的。例如,创建的 Guid 看起来像这样:

26de36b7-76f5-4f17-8f9d-44eb429f151b

这意味着 32 个字符可以是字母(26 种可能性)或数字(10 种可能性)

这意味着每个位置有 36 种可能性,总共 36^32,大约为 36^32。 60 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000。

这意味着如果您创建 2 000 000 000 000 000 000 000 000 000 000 000每毫秒 0 000 个引导(这是不可能的),您将会平均一次会获得相同的 guid 创建两次,并且所有其他 guid 将是唯一的。

所以在实践中。不 ;)

Technically, yes. A created Guid looks for example like this:

26de36b7-76f5-4f17-8f9d-44eb429f151b

That means 32 chars that can be a letter (26 possibilities) or a digit (10 possibilities)

That means 36 posibilities per position for a total of 36^32 that is approx. 60 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000.

That means that if you create 2 000 000 000 000 000 000 000 000 000 000 000 000 000 Guids every millesecond (which is impossible), you will on average get the same guid created twice one time, and all the other guids will be unique.

So in practice. No ;)

私藏温柔 2024-10-26 16:24:14

如果您询问 Guid.NewGuid() 创建重复 guid 的风险是否很高,那么答案是否定的。这取自维基百科

GUID 的值表示为 32 个字符的十六进制字符串,例如 {21EC2020-3AEA-1069-A2DD-08002B30309D},通常存储为 128 位整数。唯一密钥的总数为 2128 个或 3.4×1038 — 地球整个体积的每立方毫米大约为 2 万亿个。这个数字太大了,同一个数字出现两次的概率极小。

如果您问我们如何创建两个重复的 guid,那么答案就是:

Guid g1 = new Guid("21EC2020-3AEA-1069-A2DD-08002B30309D");
Guid g2 = new Guid("21EC2020-3AEA-1069-A2DD-08002B30309D");

If you are asking if the risk of Guid.NewGuid() creating duplicate guids is high, then the answer is no. This is taken from Wikipedia:

The value of a GUID is represented as a 32-character hexadecimal string, such as {21EC2020-3AEA-1069-A2DD-08002B30309D}, and is usually stored as a 128-bit integer. The total number of unique keys is 2128 or 3.4×1038 — roughly 2 trillion per cubic millimeter of the entire volume of the Earth. This number is so large that the probability of the same number being generated twice is extremely small.

If you are asking us how to create two duplicate guids, then this is the answer:

Guid g1 = new Guid("21EC2020-3AEA-1069-A2DD-08002B30309D");
Guid g2 = new Guid("21EC2020-3AEA-1069-A2DD-08002B30309D");
铜锣湾横着走 2024-10-26 16:24:14

理论上?是的,

实际上吗?即使在单个应用程序中,与创建两个相同的 GUID 相比,您连续 10 次中奖的机会更高。

请参阅GUID 不唯一的简单证明

Theoreticaly? Yes

Practicaly? You have higher chance of winning lottery 10 times in a row, than creating two same GUIDs, even in single application.

See Simple proof that GUID is not unique

落叶缤纷 2024-10-26 16:24:14

Guid.NewGuid() 将始终在全球范围内创建唯一的 Guid,而不仅仅是在单个应用程序内。

Guid.NewGuid() will always create a unique Guid, worldwide, not only inside a single application.

倾城°AllureLove 2024-10-26 16:24:14

GUID 中的 U 代表唯一。 ;-) 所以这应该是不可能的。

The U in GUID stands for Unique. ;-) So it shouldn't be possible.

深海里的那抹蓝 2024-10-26 16:24:14

其实我刚刚也遇到过这种情况。我有一个包含 7 个项目的数据库表。在我的程序中,我添加了一个新实例,并使用 Guid.NewGuid() 作为其 ID。我收到一个 DbUpdateException 消息,告诉我该 ID 与现有 ID 相同。再次尝试,效果很好。

I've actually just had this happen. I had a database table containing 7 items. From my program, I added a new instance, using Guid.NewGuid() for its ID. I got a DbUpdateException telling me the ID was identical to an existing one. Tried it again, it works fine.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文