Есть ли библиотека Java, которая выполняет дайджест сообщения на дереве объектов? - PullRequest
0 голосов
/ 31 августа 2009

Я ищу библиотеку, которая, учитывая дерево объектов, выполняет дайджест сообщения или хэширование всей структуры.

Я хочу посмотреть, изменяется ли объект, переданный методу, или нет (этот объект содержит другие объекты, которые содержат объекты и т. Д. - ни один из них не является неизменным).

Есть ли способ проверить, изменяется ли состояние какого-либо объекта в структуре во время вызова?

Ответы [ 3 ]

1 голос
/ 31 августа 2009

Вы можете реализовать hashCode () для всех объектов в дереве. Если хэш-код корневого объекта изменился, вы знаете, что состояние некоторого объекта в дереве изменилось.

0 голосов
/ 31 августа 2009

Я сделал это, используя стандартные MessageDigest и MD5, поставляемые с JRE.

Одна ссылка

Что касается коллизий, когда у меня 2 объекта с одинаковым MD5, я знаю, что они потенциально одинаковы, поэтому я делаю полное рекурсивное сравнение. Тем не менее, столкновения маловероятны, и это действительно стоит реализовать эту технику.

0 голосов
/ 31 августа 2009

Проблема с использованием хеширования для обнаружения изменений заключается в том, что он не дает абсолютного ответа «нет». Это просто говорит вам, что что-то , вероятно, не изменилось.

Если у вас все в порядке с пропуском некоторых изменений, то обязательно хеш над деревом.

Если нет, вам придется рассмотреть другие варианты, но мне нужно больше узнать о вашей ситуации, прежде чем я смогу что-то предложить.

...