Как получить дельту из одного файла? - PullRequest
0 голосов
/ 10 августа 2011

Dropbox использует алгоритм дельта-кодирования, чтобы найти разницу между двумя файлами, первый - измененный файл, а второй - старый файл.Но где они хранят старый файл, как они могут найти разницу, потому что у них есть только новый файл, у них не было старого файла.Невозможно сначала загрузить файл с сервера, а затем найти разницу, какой метод они используют?

1 Ответ

0 голосов
/ 10 августа 2011

согласно этой записи сотрудником Dropbox, может показаться, что они хранят данные такого рода в памяти:

Dropbox хранит метаданные о ваших файлах в оперативной памяти, чтобы предотвратитьдорогой доступ к базе данных во время синхронизации.Метаданные включают пути к файлам в вашем Dropbox, контрольные суммы, время модификации и т. Д. Мы прилагаем все усилия, чтобы сделать эту информацию более компактной, и работаем над несколькими аспектами, чтобы улучшить использование памяти.Наши методы не ограничиваются переписыванием фрагментов Python и написанием пользовательских распределителей памяти: -).

Чтобы сделать это, я бы предположил, что у них есть какой-то особый обработчик, который позволяет им делать дельта-разность, когдапользователь копирует файл в папку (и) Dropbox.для этого что-то вроде FileSystemWatcher класса из .Net сделало бы трюк вместе с вашим собственным сквозным обработчиком копирования оболочки (так что вы можете сохранить временную копию файла до завершения diff, еслидолжно быть сделано).

Также, как примечание, дропбокс написан на python и wxWdigets.


некоторые сайты, которые могут оказаться полезными для дельта-сжатия:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...