【问题标题】:Javascript: GUID collisionsJavascript:GUID 冲突
【发布时间】:2016-02-25 13:34:02
【问题描述】:

我们使用这个函数来生成 GUID 并分配给记录:

var genguid = function b(a) {
    return a ? (a ^ Math.random() * 16 >> a / 4).toString(16) : ([1e6] + '').replace(/[018]/g, b)
}

问题是,我们开始从多个设备获取重复。

随机部分可以使用盐,可能来自当前时间或位置(因为这些用于移动设备)。

关于使用什么功能/方法来获得它的任何建议?

更新: 该代码在使用 JS 的移动应用程序上运行。我只是在 1 万亿个 GUID 上运行旧代码,并且没有重复。所以我猜这与移动客户端上的 JS 实现有关?

【问题讨论】:

  • 为什么生成 GUID 取决于传入的参数?在没有传入a 的情况下,它看起来根本就不是很“全球唯一”......
  • 听起来很像this articlehere ("Modern Browsers") 描述了一个可能的解决方案。
  • 这是有趣的部分。该代码在使用 JS 的移动应用程序上运行。我只是在 1 万亿个 GUID 上运行旧代码,并且没有重复。所以我猜这与移动客户端上的 JS 实现有关?
  • @R0b0tn1k 我提到的那篇文章指出,尤其是 V8 的 Math.random() 实现很差,因此 Chrome 和相关浏览器使用它更容易产生冲突。

标签: javascript guid uuid


【解决方案1】:

此功能可用于确保没有重复。

https://github.com/dustinpoissant/GUIDJS

var myGuid = GUID();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-22
    • 2011-11-22
    • 2011-08-04
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多