Почему эти два файла хешируют к тому же значению, когда я использую MemoryStream?

Я ищу много ответов, чтобы узнать о новых инструментах и консолидировать это знание в одном вопросе/потоке, таким образом, я сомневаюсь, что будет 1 истинный ответ на этот вопрос.

Мой ответ на мой собственный вопрос - то, что мы используем:

  • Findbugs для поиска плохих распространенных ошибок / кодирование - выполненный от знатока, и также интегрируется легко в Eclipse
  • Cobertura для наших отчетов о покрытии - выполненный от знатока

, Гудзон также имеет плагин сканера задачи, который отобразит количество TODO и FIXMEs, а также покажет, где они находятся в исходных файлах.

Все интегрированы со Знатоком 1.x в нашем случае и наброшены Гудзон, который выполняет наши сборки на регистрации, а также дополнительных вещах ночью и еженедельно. Гудзонская тенденция изображает в виде графика наши тесты JUnit, покрытие, findbugs, а также открытые задачи. Существует также Гудзонский плагин, который сообщает и изображает наши предупреждения компиляции в виде графика. У нас также есть несколько тестов производительности с их собственными графиками производительности и использования памяти, со временем использование Гудзона выводит плагин на печать также.

7
задан Lee Warner 11 November 2009 в 14:32
поделиться

1 ответ

Вы не перематываете свои MemoryStreams, поэтому хеш вычисляется из пустой последовательности байтов. Используйте

ms1.Position = 0;
ms2.Position = 0;

после вызова Save .

Еще одно замечание: не используйте GetBuffer таким образом. Используйте ToArray , который даст вам массив байтов того же размера, что и длина потока - GetBuffer возвращает необработанный буфер, который (обычно) будет иметь некоторые отступы, которые вы бы не хотели использовать случайно. Вы можете использовать GetBuffer , если затем убедитесь, что используете только соответствующую его часть, конечно - это позволяет избежать создания новой копии данных.

s length - GetBuffer возвращает необработанный буфер, который (обычно) будет иметь некоторые отступы, которые вы не захотите использовать случайно. Вы можете использовать GetBuffer , если затем убедитесь, что используете только соответствующую его часть, конечно - это позволяет избежать создания новой копии данных.

s length - GetBuffer возвращает необработанный буфер, который (обычно) будет иметь некоторые отступы, которые вы не захотите использовать случайно. Вы можете использовать GetBuffer , если затем убедитесь, что используете только соответствующую его часть, конечно - это позволяет избежать создания новой копии данных.

17
ответ дан 6 December 2019 в 11:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: