我正在研究如何獲取目錄(文件夾)並派生某種形式的唯一數字標識符。我調查了「字符串哈希」方法,然而,Pigeon Hole Principle意味着永遠不可能爲每個字符串派生一個真正唯一的數字。如何將目錄路徑轉換爲唯一的數字標識符(Linux/C++)?
字符串到唯一哈希是不好的。
我最近一直在研究實現我的目標等手段,從而有以下問題要問:
目錄時間戳 - 如何「獨一無二」是什麼人? here(第二篇文章)中以'stat'報告的時間戳記是什麼分辨率?如果分辨率足夠小,是否有可能多個文件夾在Linux系統上共享完全相同的時間戳?
如果任何人有其他方法/技術,他們想與大家分享,我很樂意聽:)
編輯1爲了澄清我的使用情況,迴應迄今發佈的答案:我我在Android平臺上工作,所以文件系統沒有鏈接到任何其他(除了Micro SD卡等可移動媒體除外)。
我將每個路徑插入數據庫,但在查詢表時試圖避免字符串比較。在這裏,地圖/ hashmaps的使用不是一種選擇。是的,路徑本身是唯一的,但理想情況下,我需要一個數字標識符,可用於查詢表格而不是路徑本身。每個路徑的標識符也必須是唯一的。我用std :: collate進行了實驗,但發現哈希中存在許多碰撞(一個包含20,000條路徑的數據集,約有100次碰撞)。更令人驚訝的是,每次運行我的應用程序時,哈希似乎都大不相同。我想知道它是否以某種方式播種?
非常感謝, P
大概每個文件夾的絕對路徑都由唯一的字符序列描述。或者你必須允許重複? – juanchopanza
所有目錄都在同一個捲上嗎? –
@ juanchopanza,從某種意義上來說,它並不完全適用於數字標識符。時間戳也不符合要求,因爲您可以將它們設置爲任何您想要的值(無論FS的分辨率爲多少,「stat」只會在第二秒內報告它們)。 –