有兩臺計算機具有相同數量的多個文件。我們如何確定一臺電腦中的任何一個文件是否有輕微變化。這些計算機之間的網絡通信非常緩慢兩臺不同計算機上的文件差異
回答
您可以散列這些文件並通過網絡比較散列。
一個好的散列函數被設計成如果函數的輸入只有一點區別,那麼輸出將是完全不同的。此外,大多數散列函數現在具有160-512位的輸出長度。這意味着儘管你可能想要比較幾個千兆字節大的兩個文件,但你只需要在網絡上發送一個512位的小字符串來查看哈希值是否匹配。
如果你有幾百萬個文件,這可能已經很多了。一種解決方案是這樣的:
- 散列每個文件的每臺計算機上
- 然後串連的散列和散列連接字符串再次
- 如果它不同於你知道,這是有區別的現在比較這個輸出在那些文件中。
- 要查找的文件不同(甚至確切位置在文件中),你可以使用二進制搜索:
- 斯普利特百萬計的文件分爲兩個部分,現在轉到步驟1-3(如果你有足夠的空間,你可以保存每個文件的散列以加快速度)。
- 現在對於不同的兩個散列中的每一個,遞歸地進行步驟4-6。
- 如果你找到了不同的文件,你可以再次按照行數分割文件,並像4-6中那樣工作。
- 在某些時候,行數將會很小,以至於散列可能會比行的實際內容更長。現在,以天真的方式比較實際內容當然更有效率。
假設你只有一個不同的文件,只需要在網絡上發送對數許多散列,從而最大限度地減少網絡流量。
一個想法是爲每個文件生成一個散列。散列將任意長度的文件轉換爲固定大小。你可以進一步散列哈希,然後上傳並比較。散列是廣泛使用的,以確保下載不被破壞。
謝謝......您能請詳細說明一下我在面試中被問及與Web安全相關的問題(顯然我不適合)。讓我重新解釋一下這個問題:這是兩個系統中的數百萬個文件,網絡速度很慢,我們如何檢查一個文件中是否有一個字符是錯誤的 –
您想要查找特定字符還是隻需查找文件與錯位的性格? –
您可以使用md5sum實用程序。對於Windows請檢查[this](https://support.microsoft.com/en-us/help/889768/how-to-compute-the-md5-or-sha-1-cryptographic-hash-values-for-a-file)和linux使用md5sum filename
,然後比較散列值。
- 1. 計算同一文檔上的兩個值之間的差異
- 2. 如何計算Linux上兩個文件之間的差異?
- 3. HTMLBody屬性返回兩臺計算機上的不同結果
- 4. 在兩個不同的平臺上,類文件的大小是否有差異?
- 5. Python 2.7.10在兩臺不同的計算機上運行代碼不同
- 6. 在同一臺計算機上同步兩個ruby腳本
- 7. 算法需要兩次計算差異
- 8. 確定運行Windows XP的兩臺計算機之間的差異?
- 9. 在兩臺不同的計算機上開發相同的應用程序
- 10. 計算不同分支上文件的差異。 GitHub的服務器VS GIT(CLI)
- 11. 兩臺計算機上的同一個Mercurial帳戶
- 12. Js文件在兩臺開發計算機中的加載方式不同
- 13. 從兩臺不同的計算機在onedrive中打開一個文件
- 14. 計算差異
- 15. 計算差異
- 16. 計算差異
- 17. 計算差異
- 18. 計算差異
- 19. 計算差異
- 20. angular-cli在同一臺計算機上的不同版本
- 21. ColdFusion和PHP在同一臺計算機上,不同的環境
- 22. 計算文件中兩個數字之間的差異
- 23. 計算兩個HTML文件的百分比差異
- 24. 計算兩次之間的差異
- 25. 計算兩列之間的差異sql
- 26. 計算兩次python之間的差異
- 27. 用於更新計算機之間文件差異的腳本
- 28. 在同一臺計算機上安裝兩個Java 6更新
- 29. 在Visual Studio中同時在兩臺計算機上工作
- 30. SQL2008 Express Edition:同一臺計算機上有兩個實例?
謝謝...您能否詳細說明一下我在面試中被問及與Web安全相關的位置(顯然我不適合)。讓我重新修改這個問題: 這兩個系統中的數百萬個文件和網絡速度很慢,我們如何檢查是否有一個字符在任何一個文件中都是錯誤的 –
@VivekKumar請參閱我的編輯 –