我正在创建一个我需要生成唯一ID的应用程序。
当生成ID时,避免冲突的最佳方法是,它是简单的强制生成 - 然后 - 检查,还是有一种方法来支持独特的生成。
我确信蛮力方法会好一段时间,但我觉得像谷歌这样的公司没有使用这种方法。
其他的是如何在node.js中实际生成它们。
我想过从'0 - 63'生成int,然后像这样解析为base-64:
var map = {
0:0, 1:1 ... 16:"Q" ... 63:"/"
}; /* I used object so you can see the indexes,
this would be an array - or even a string? */
for (var i = IDLENGTH, id=""; i--;) id+=map[~~(Math.random*64)];
然而,这似乎是不合适的,特别是首先考虑map
。
我在另一篇SO帖子中看到了这段代码
console.log(new Buffer("Hello World").toString('base64'));
> SGVsbG8gV29ybGQ=
这似乎更有意义,但这似乎不符合我的需要,这不是char集的转换吗?
答案 0 :(得分:0)
这是一个非常开放的问题,但您可能希望生成UUID
。基本上它是一个随机的128位数。如果正确完成,重复的概率为extremely low。我相信对于大多数应用程序来说,不需要检查,但您可能仍然希望这样做。
使用经过良好测试的库而不是自己实现,我建议使用node-uuid
。生成好的随机数与加密操作非常相似 - 要做到正确并非易事。