Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Приблизительно 1 в 256 байтах, как известно, повреждается, и повреждение, как известно, происходит только в байтах со значением '\012'. Таким образом, коэффициент ошибок байта является 1/256 (0,39% входа), и 2/256 байта (0,78% входа) является подозреваемым. Но так как только три бита на разбитый байт затронуты, коэффициент битовых ошибок - только 3 / (256*8): 0,15% плохи, 0,29% подозреваемый.
...
Ошибка в сжатом входе разрушает процесс распаковки для всех последующих байтов... То, что распакованный вывод узнаваемо плох так быстро, является причиной для надежды - поиск корректного ответа может определить неправильные ответы быстро.
В конечном счете несколько методов были объединены для успешного извлечения разумных данных из этих файлов:
- Проблемно-ориентированный парсинг полей и заключенных в кавычки строк
- Машинное обучение от предыдущих данных с низкой вероятностью повреждения
- Допуск для файла повреждает из-за других причин (например, диск, полный при входе)
- Предвидение для руководства поиска вдоль путей самой высокой вероятности
Эти методы определяют 75% необходимых восстановлений с уверенностью, и остаток исследуется highest-probability-first, так, чтобы вероятные реконструкции были сразу определены.
Вы могли попытаться писать немного сценария для замены всего CRS с CRLFs (предполагающий, что направление повреждения было CRLF к CR), подкачивая их случайным образом на блок, пока у Вас не было корректного crc. Предполагая, что данные не были особенно большими, я предполагаю, что это не могло бы использовать весь Ваш ЦП до смерти тепла вселенной для завершения.
Как существует определенная информационная потеря, я не знаю, что существует лучший путь. Потерю в CR к направлению CRLF могло бы быть немного легче откатывать.