相关疑难解决方法(0)

在JavaScript中生成UUID时发生冲突?

这涉及到这个问题.我正在使用此答案在JavaScript中生成UUID:

'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
    var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
    return v.toString(16);
});
Run Code Online (Sandbox Code Playgroud)

这个解决方案似乎工作正常,但我遇到了冲突.这就是我所拥有的:

  • 在Google Chrome中运行的网络应用.
  • 16位用户
  • 这些用户在过去2个月内已生成约4000个UUID.
  • 我得到了大约20次碰撞 - 例如,今天生成的新UUID与大约2个月前相同(不同的用户).

所以问题是:

  1. 是什么导致了这个问题?
  2. 我怎么能避免呢?

javascript random uuid collision

90
推荐指数
3
解决办法
2万
查看次数

有什么机会获得Guid.NewGuid()重复?

可能重复:
GUID在100%的时间内是唯一的吗?
简单证明GUID不是唯一的

在MSDN中,您可以阅读:

新Guid的值全部为零或等于任何其他Guid的可能性非常低.

假设您有一个每秒都会创建一个文件的方法,并且您使用该方法 Guid.NewGuid()的文件名,是否可以获得相同的Guid呢?或者本地计算机会以某种方式跟踪?机会有多低?

c# guid

33
推荐指数
3
解决办法
6万
查看次数

在.NET中创建加密安全随机GUID

我想在.NET中创建一个加密安全的GUID(v4).

.NET的Guid.NewGuid()功能不是加密安全的,但.NET确实提供了System.Security.Cryptography.RNGCryptoServiceProvider类.

我希望能够将随机数函数作为委托Guid.NewGuid传递给(或者甚至传递一些提供生成器接口的类),但它看起来并不像默认实现那样.

我可以创建通过使用密码安全GUID System.GUIDSystem.Security.Cryptography.RNGCryptoServiceProvider在一起?

.net c# security guid

24
推荐指数
6
解决办法
5976
查看次数

当我耗尽bigint生成的密钥时会发生什么?怎么处理?

我无法为自己想象一个好的答案,所以我想在这里问一下.在我看来,我总是想知道如果AUTO INCREMENT PRIMARY ID我的MySQL表中的列用尽了会发生什么?

比方说,我有一个有两列的表.的ID(auto increment, primary, BIGINT unsigned)和DESC(VARCHAR 255).我肯定知道BIGINT很多,但它可以达到极限.如何处理场景,其中的情况下,ID达到它的极限?我需要另一台服务器吗?如果那么我该怎么同步呢?这是正确的方法吗?任何见解的朋友.

mysql sql postgresql

18
推荐指数
2
解决办法
5625
查看次数

在10亿次迭代中获得相同GUID的几率是多少?

我正在开发一个项目,我需要生成大约10亿个GUID.

我知道GUID不能保证是唯一的,但几乎在所有时间都是独一无二的.

如果我生成了十亿个GUID,那么匹配的概率是多少?

.net guid

14
推荐指数
2
解决办法
2436
查看次数

生成加密的安全ID,而不是顺序标识/自动递增

我一直处于这种困境中一段时间​​,但是找不到任何提示,尽管似乎有人已经做到了。

我需要的是用加密的安全(即非连续!)ID替换顺序的AUTO_INCREMENT(或等效的)主键,但与此同时,我想保留顺序PK的性能优势:保证未使用的下一个ID,可集群性等。

一种简单的方法似乎实现了一种加密伪随机排列生成器,以将2 ^ N空间唯一地映射到2 ^ N,而不会发生冲突并且具有初始化矢量(IV)。

尽管可以在外部实现,但这确实需要存储和原子访问状态(排列位置或最后一个ID),这意味着从外部实现效率极低(这相当于UPDATE table SET crypto_id = FN_CRYPTO(autoincrement_id) WHERE autoincrement_id=LAST_INSERT_ID()为每个都运行后续操作INSERT)。

您是否知道在商业用途的数据库中有上述任何上述实现?

sql database cryptography

8
推荐指数
1
解决办法
246
查看次数

不使用NewID的SQL上的随机数()

您好我想使用以下语句生成一个唯一随机数:

Convert(int, (CHECKSUM(NEWID()))*100000) AS [ITEM] 
Run Code Online (Sandbox Code Playgroud)

因为当我在"from"上使用连接子句时,它会使用NEWID()生成双重寄存器

我使用的是SQL Server 2000

*PD:当我使用Rand()时,它可能会重复1次100,000的概率,但这是非常重要的,所以它必须是重复生成的随机值的概率的0%

我的带有NewID()的查询和SELECT语句的结果是重复的(x2)我的QUery没有NewID()并且在SELECT语句中使用Rand()是单个(x1)但重复生成的随机值的概率是不确定的但存在!

谢谢!

sql t-sql sql-server random

7
推荐指数
1
解决办法
2万
查看次数

SQL Server唯一GUID

我理解在SQL Server中GUID是最独特的,并且碰撞的可能性很小,但同时有人必须赢得彩票,所以我觉得为这种可能性做准备是有道理的.

这是更快/更好的做法

使用一种技术,我只需插入一行并检查错误(@@ ERROR <> 0)直接分配一个新的GUID,然后重复直到我没有得到错误[我认为理论上最坏的只是一次...]

或使用这样的方法

DECLARE @MyGUID uniqueidentifier
SELECT @MyGUID = NewID()
if exists(select * from tablename where UserID=@MyGUID)
Run Code Online (Sandbox Code Playgroud)

并循环,直到我发现一个没有使用.

我喜欢第二种方法,因为我可以在后面的存储过程中使用GUID,所以我现在倾向于那个.

t-sql sql-server

5
推荐指数
3
解决办法
4889
查看次数

是什么让此伪GUID生成器优于math.random()?

我在这里找到问题:

在JavaScript中创建GUID / UUID?

答案提供了以下JS:

function S4() {
   return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}

function guid() {
   return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
Run Code Online (Sandbox Code Playgroud)

现在,这对我来说似乎有些愚蠢。为什么要这么重复?我计划使用此名称来命名要上传到服务器的文件,以使它们不会彼此覆盖。看起来它不会总是生成一个唯一的数字。

上面的代码有什么好处呢math.random()?它甚至不会改变种子。

抱歉,我从来没有使用过GUID / UUID,并且某些代码对我来说真的没有任何意义...

澄清说明

很多人没有像我问的那样回答这个问题。很多人在解释GUID并不总是唯一的,等等等等。那不是我要的 我在问,在just上使用它有什么意义math.random()

乔在评论中似乎为我提供了最佳答案。

javascript uuid guid

5
推荐指数
1
解决办法
3322
查看次数

ASP.NET服务器是否可以为多个用户生成相同的GUID?

我已经看过GUID Collisons的 讨论,但是如果两个客户端都在同一时间访问同一个生成GUID的网页(可能只有微秒),那么您是否想要了解是否存在GUID冲突?

asp.net guid

0
推荐指数
1
解决办法
420
查看次数