如何将目录路径转换为唯一的数字标识符 (Linux/C++)?

2024-04-30

我正在研究获取目录(文件夹)并派生某种形式的唯一数字标识符的方法。我研究了“字符串到哈希”方法,但是,鸽子洞原理 http://www.codinghorror.com/blog/2007/12/hashtables-pigeonholes-and-birthdays.html意味着永远无法为每个字符串驱动一个真正唯一的数字。

字符串到唯一的哈希值是不好的。

我最近一直在研究实现我的目标的其他方法,因此有以下问题要问:

目录时间戳 - 它们有多“独特”?如所述,“stat”报告的时间戳的分辨率是多少here http://www.linuxquestions.org/questions/programming-9/how-to-get-directory-time-stamp-in-c-719347/(第二篇文章)?如果分辨率足够小,Linux系统上多个文件夹是否可以共享完全相同的时间戳?

如果有人有其他想要分享的方法/技术,我很乐意倾听:)

Edit 1为了澄清我的用例,以回应迄今为止发布的答案:我正在 Android 平台上工作,因此文件系统不链接到任何其他平台(当然除了可移动媒体,例如 Micro SD 卡)。

我将每个路径插入数据库,但在查询表时试图避免字符串比较。这里不可以选择使用地图/哈希图。是的,路径本身是唯一的,但理想情况下,我需要一个可用于查询表的数字标识符,而不是路径本身。每个路径的标识符也必须是唯一的。我尝试过 std::collat​​e 但发现散列中有很多碰撞(20, 000 条路径的数据集产生大约 100 次碰撞)。更令人惊讶的是,每次运行我的应用程序时,哈希值似乎都有很大不同。我想知道它是否以某种方式播种?

非常感谢, 磷


在任何基于 UNIX 的系统上,您可以使用 inode 号作为该文件系统内的唯一标识符。将其与设备编号结合起来将使其在机器内唯一。如果您希望它是全局唯一的,您可以输入系统的主 MAC 地址。

但请记住:

  1. 如果目录被移动或重命名,索引节点号将“跟随”目录。如果删除并替换该目录,它会发生变化。

  2. 除了一两个真正特殊的目录之外,索引节点号在不同系统中都不稳定。 (例如,/通常是 inode 2。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将目录路径转换为唯一的数字标识符 (Linux/C++)? 的相关文章

  • IEnumerable 的 String.Join(string, string[]) 的类似物

    class String包含非常有用的方法 String Join string string 它从数组创建一个字符串 用给定的符号分隔数组的每个元素 但一般来说 它不会在最后一个元素之后添加分隔符 我将它用于 ASP NET 编码 以用
  • 并行化斐波那契序列生成器

    我正在学习并行化 在一项练习中 我得到了一些我应该提高性能的算法 其中之一是斐波那契数列生成器 array 0 0 array 1 1 for q 2 q lt MAX q array q array q 1 array q 2 我怀疑 这
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • MFC CList 支持复制分配吗?

    我在 MSVC 中查找了 CList 定义afxtempl h http www cppdoc com example mfc classdoc MFC AFXTEMPL H html并记录在MSDN http msdn microsoft
  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • C# 处理标准输入

    我目前正在尝试通过命令行断开与网络文件夹的连接 并使用以下代码 System Diagnostics Process process2 new System Diagnostics Process System Diagnostics Pr
  • 如何以编程方式播放 16 位 pcm 数组 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个包含 16 位 pcm 值的短 数组 我希望能够在不添加任何标题 也不将任何文件保存到内存的情况下播放它 我知道我可能需要一个提供
  • 按值和键对哈希进行排序(按顺序)

    我正在寻找一种很好的方法来在 Perl 中先按值排序 然后再按键排序 Example my userids williams gt Marketing smith gt Research johnson gt Research jones
  • 为什么需要数字后缀?

    C 语言 我确信还有其他语言 需要在数字文字末尾添加后缀 这些后缀指示文字的类型 例如 5m是一个小数 5f是一个浮点数 我的问题是 这些后缀真的有必要吗 或者是否可以从上下文中推断出文字的类型 例如 代码decimal d 5 0应该推断
  • C# 编译器数字文字

    有谁知道 C 编译器数字文字修饰符的完整列表 默认情况下 声明 0 使其成为 Int32 声明 0 0 使其成为 Double 我可以在末尾使用文字修饰符 f 来确保某些内容被视为 Single 例如像这样 var x 0 x is Int
  • 在 C++11 中移出 stdpriority_queue 的元素

    最小的工作示例 include
  • C# 中的 C/C++ 代码编译器

    在 C 中 我可以使用下面的代码编译 VB 和 C 代码 但无法编译 C C 代码 有什么办法可以做到这一点吗 C 编译器 public void Compile string ToCompile string Result null st
  • 为什么 f(i = -1, i = -1) 是未定义的行为?

    我正在读关于违反评估顺序 http en cppreference com w cpp language eval order 他们举了一个令我困惑的例子 1 如果标量对象上的副作用相对于同一标量对象上的另一个副作用是无序的 则行为未定义
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • Autoconf 问题:“错误:C 编译器无法创建可执行文件”

    我正在尝试使用 GNU 自动工具构建一个用 C 编写的程序 但显然我设置错误 因为当configure运行 它吐出 configure error C compiler cannot create executables 如果我看进去con
  • Xamarin.Forms UWP 项目中标题栏和选项卡之间令人恼火的空白

    我几乎是新手Xamarin Forms我正在开发一个相当简单的跨平台应用程序 该应用程序在 Android 中显示得足够好 但在 UWP 中却出现了一个愚蠢的空白 该项目由一个 TabbedPage 组成 其中包含 4 个 Navigati
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • 如果“嵌入式”SQL 2008 数据库文件不存在,如何创建它?

    我使用 C ADO Net 和在 Server Management Studio 中创建的嵌入式 MS SQL 2008 数据库文件 附加到 MS SQL 2008 Express 创建了一个数据库应用程序 有人可以向我指出一个资源 该资
  • 这种尺寸对齐是如何工作的

    对于所提供的评论 我无法理解以下代码 这段代码的作用是什么 以及等效的代码是什么8 aligned segment size must be 4 aligned attr gt options ssize 3 Here ssize is o
  • 嵌入式二进制资源 - 如何枚举嵌入的图像文件?

    我按照中的说明进行操作这本书 http www apress com book view 9781430225492 关于资源等的章节 我不太明白的是 如何替换它 images Add new BitmapImage new Uri Ima

随机推荐

  • Phonegap 中使用 AJAX 的 CSRF 令牌

    我正在开发一个应用程序Phonegap使用 Django 后端 后端使用csrf 所以我需要我的Phonegap要使用的应用程序csrf所以它可以与Django 我读到你可以使用csrf通过Ajax 但我没能让它工作 您能举个例子告诉我我该
  • React Redux 混乱

    事实证明 Redux 对我来说有点难以理解 我想知道是否有人可以帮助我指出正确的方向 以获取我想要的结果 只是一个预警 我正在使用 ES6 语法 好的 我已经设置了一些沙箱来测试 redux 的工作原理 这是我正在使用的当前文件设置 act
  • ActiveAndroid 使用架构迁移预填充表

    我想第一次创建一个表 数据库版本 1 并默认插入2行 该表需要由ActiveAndroid自动创建 并且应该通过我在1 sql文件中编写的SQL插入记录 该表看起来不错 但根本没有插入行 没有抛出错误 该模型如下所示 Table name
  • Select2:预选项并通过templateSelection正确渲染

    使用时选择2 v4 https select2 github io 建议的 实际上是正确的 方式以编程方式设置选定的值 就是操作底层的select元素 添加想要的
  • 来自字符串的 Swift Keypath

    有没有办法在 Swift 4 中从字符串创建 Keypath 以通过路径或变量名访问结构中的值 最后我发现我应该使用 CodingKeys 而不是 KeyPaths 通过 String 访问结构体变量的值 提前致谢 迈克尔 考虑你有这样的东
  • 实体框架将 s 添加到我的 .dbo

    我现在使用 Entity Framework DbContext 但遇到了异常 towars dbo 未找到 这很奇怪 因为在我的网站上我总是询问 towar dbo 但没有 towars dbo 你知道问题出在哪里吗 InnerExcep
  • 如何使用 C# 获取 Mozilla 浏览器的当前位置 URL? [复制]

    这个问题在这里已经有答案了 可能的重复 获取 Firefox 网址 https stackoverflow com questions 430614 get firefox url 我在开发 Windows 应用程序以获取正在运行的 Moz
  • 如何确定Access数据库中哪个表使用的空间最多?

    有没有简单的方法可以确定 Access 2007 数据库中每个表使用了多少空间 我有一个异常大的 Access 数据库 需要找出哪个表使用最多的空间 行计数没有提供有关已用空间的足够信息 我知道这是一篇旧文章 但我根据自己对同一问题的经验有
  • mySQL中外键必须是索引吗?

    我刚刚自己创建了第一个 mySQL 表 除了使用 Joomla Wordpress 等 我是 MS SQL 开发人员多年 但通常我可以轻松地在 MS SQL 中创建外键 但我遇到了困难或这里缺乏知识 这是我的表格 users user id
  • Spark Dataframe 列可为 null 的属性更改

    我想更改 Spark Dataframe 中特定列的可为空属性 如果我当前打印数据框的模式 它看起来如下所示 col1 string nullable false col2 string nullable true col3 string
  • 更改 UIImage 的对比度、亮度、饱和度或颜色

    我正在寻找一种修改某些元素的好方法UIImage例如亮度 对比度 饱和度 对于彩色图像 和颜色 着色 现在我使用每像素操作 但它不是很快 对于图像中的每个像素 我修改对比度 亮度等的颜色数据 我使用来自UI图像调整 https github
  • 什么是 CLR 托管?

    什么是 CLR 托管 其用途是什么 See here http msdn microsoft com en gb library 9x0wh2z3 aspx有关与 CLR v2 NET 2 0 3 0 和 3 5 相关的 CLR 托管的信息
  • 如何在 CSS 中正确定位和缩放这些元素?

    我已经能够使用 html 和 css 正确定位和缩放网页中的一些元素 但是由于定位规则 我陷入了如何使用另外两个元素继续此操作的困境 图片中的 V 形图标必须位于标题为 向下滚动 的最后一段下方 我也希望它能够随屏幕尺寸缩放 正如我已经成功
  • 如何编辑和更新pdf文件?

    我正在使用 ASP NET 开发一个 Web 应用程序 其中一项要求要求我打开包含表单字段的给定 pdf 文件 填写字段 例如选中复选框 从选择输入中选择值以及在文本框中输入文本等 设置字段后 我需要将其提交到服务器并将其另存为新的 pdf
  • PHP 浮点错误与基本数学[重复]

    这个问题在这里已经有答案了 可能的重复 为什么十进制数不能用二进制精确表示 https stackoverflow com questions 1089018 why cant decimal numbers be represented
  • 如何将 MVC 5 IdentityModels.cs 移动到单独的程序集中

    我想知道是否有人遇到了我在尝试搬家时遇到的问题ApplicationUser进入模型项目 所有其他模型都驻留在其中 包括与用户表相关的模型 我的测试 MVC 5 解决方案由一个 Web 项目和两个类库组成 一个用于数据访问层 DAL 另一个
  • C# 和 SQL Server 中嵌套 using 的用法

    这个线程是一个延续是否有理由在 C 中使用子句检查多个内部的 null https stackoverflow com questions 2220422 is there a reason to check for null inside
  • 支持 Edge 浏览器中的滚动条样式

    看起来您可以通过 IE 11 使用 IE 特定的滚动条样式 例如 scrollbar face color scrollbar track color 等 但不能在 Edge 中使用 Edge 有替代方案吗 具体很难知道 没有官方文档 ht
  • 在 Next.js 13 中使用标记为“use client”的提供程序包装整个应用程序

    我正在 Next js 中开发一个小型应用程序 但我还没有完全理解客户端与服务器端渲染的情况 我一直在工作这个伟大的指南 https www misha wtf blog supabase auth next 13 pkce关于使用 Sup
  • 如何将目录路径转换为唯一的数字标识符 (Linux/C++)?

    我正在研究获取目录 文件夹 并派生某种形式的唯一数字标识符的方法 我研究了 字符串到哈希 方法 但是 鸽子洞原理 http www codinghorror com blog 2007 12 hashtables pigeonholes a