我经常使用文件路径为某些软件系统提供某种唯一ID。有没有办法采用文件路径并以相对快速(计算)的方式将其转换为唯一的整数?
我可以使用更大的整数。据我所知,这必须是一个非常漂亮的算法,但在某些情况下会非常有用。
有人知道这样的事情是否存在?
答案 0 :(得分:1)
您可以尝试使用inode编号:
fs.statSync(filename).ino
答案 1 :(得分:1)
另一种简单方法是将路径散列到大整数空间。例如。使用128位杂音(在Java中我使用的是Guava Hashing
类;有几个js端口),十亿个路径之间发生碰撞的几率仍然是1/2 ^ 96。如果您真的偏执,请保留一组您已经使用过的哈希值,并在碰撞时重新进行哈希值。
答案 2 :(得分:1)
这只是我的评论转向答案。 如果在内存中运行它,则可以使用相应语言中的一个标准哈希映射。不只是文件名,而是任何类似的情况。通常,不同编程语言中的哈希映射满足桶的冲突,因此哈希值和相应的桶号将提供唯一的ID。
顺便说一句,编写自己的hashmap并不难,这样你就可以控制底层结构(例如检索数字等)。