Улучшение процедуры хеширования - PullRequest
0 голосов
/ 16 октября 2018

У меня есть следующий (довольно неприятный) фрагмент кода, который генерирует хэш md5 для содержимого элемента:

protected String createHashFromContentNew() throws CrawlerException {
    final StringBuilder builder = new StringBuilder();
    if (getContent() != null) {
        builder.append(new String(getContent()));
    }
    if (builder.length() == 0) {
        throw new CrawlerException(hashErrorMessage("the content of this item is empty!"));
    } else {
        return MD5Utils.generateMD5Hash(builder.toString());
    }
}

функцию MD5Utils.generateMD5Hash(builder.toString()); можно также использовать с InputStream.

getContent() возвращает byte[].

Это работало нормально, пока я не получил предметы с огромным размером содержимого.Поскольку он используется в многопоточной среде, он использует много оперативной памяти, удерживая содержимое несколько раз.

Теперь я хочу использовать generateMD5Hash() с InputStream, чтобы прекратить загрузку всего в ОЗУ.,Проблема в том, что исходящий хеш должен быть таким же, как в текущей функции для всех ранее сгенерированных хешей.

Есть идеи, как добиться этого надлежащим образом?

1 Ответ

0 голосов
/ 16 октября 2018

Может быть, вы хотите ByteArrayInputStream ?

Посмотрите здесь .

...