node.js - 我们可以在node.js中使用process.hrtime()作为UUID吗?

标签 node.js npm process uuid v8

我们可以使用process.hrtime()作为当前进程内的通用唯一ID吗?

var uuid = parseInt(process.hrtime().join(''));

最佳答案

您可以使用process.hrtime()来创建冲突几率较低的标识符,但它们不是唯一的,尤其是在应用程序重新启动时(如果您将其中任何一个持久保存到数据库中,这一点很重要)或类似),而不是在涉及多个线程/进程/实例时。

来自documentation :

These times are relative to an arbitrary time in the past, and not related to the time of day

此外,通过使用 parseInt(....join('')),您引入了第二种发生冲突的方式:例如[1, 23][12, 3] 将得到相同的结果。

如果您想构建自己的解决方案(a[0] * 1e9 + a[1] 是一种幼稚的方法),您还应该了解 JavaScript 的精度限制数字——hrtime() 返回一个元组而不仅仅是一个数字是有原因的。如果有疑问,当您需要正确的 UUID 时,您可能应该使用正确的 UUID ;-)

关于node.js - 我们可以在node.js中使用process.hrtime()作为UUID吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49708974/

相关文章:

java - 如何使用 apache telnet 在远程服务器中打开进程

mysql - 在nodejs中使用关联和排序来 Sequelize findAll

javascript - 如何在没有 express 的情况下处理多部分/表单数据请求

reactjs - 错误: Do not use Array index in keys

visual-studio - VS 信息消息 : "Package restore on project open is disabled. Change the npm package management settings in Project Properties ..."

c - Linux 内核 task_struct void *stack

node.js - 有关使用 NodeJS 中的 GlusterFS 的任何示例

javascript - 如何在 Jade 中选择一个选项?

angular - “npm update”命令无法更新 Angular2 中的依赖项

java - Runtime.getRuntime().exec 提示时传递参数