порядок байтов новых макинтошей - действительно ли все платформы ПК является тем же теперь?

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

13
задан codeforester 22 February 2019 в 01:19
поделиться

7 ответов

Вы, кажется, забываете, что порядок байтов превышает архитектуры процессора. Существует много алгоритмов и протоколов, которые требуют конкретного порядка байтов. Например, я провел две недели, пытаясь заставить алгоритм хеширования MD5 работать, только понимать, что я принял сетевой порядок байтов (Обратный порядок байтов), в то время как Ronald Rivest принял (не указывая так в RFC), что конструктор будет использовать Прямой порядок байтов.

Напоминают мне причинять тому человеку боль когда-то.:-P

9
ответ дан 1 December 2019 в 20:58
поделиться

Это является, конечно, не последним из этой проблемы, особенно если Вы пишете для встроенных систем, включая Pocket PC, и т.д. MIPS, ARM и другая архитектура поддерживают архитектуру с переключаемым порядком байтов, которая может выбрать их порядок байтов на системном запуске.

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

4
ответ дан 1 December 2019 в 20:58
поделиться

Ну, на самом деле существует много перенесенных центральных процессоров с обратным порядком байтов.

На самом деле PPC не мертва. Вы знаете, что Xbox360 использует центральные процессоры PPC (и это - хороший пример, что эти центральные процессоры не так плохи как их репутация - Xbox360 является совсем не медленным). Хорошо, этот не может рассчитать как ПК.

, Но сервер рассчитывает как ПК? Существует все еще много центральных процессоров UltraSparc Sun использования серверов, которые являются обычно обратным порядком байтов, хотя последние модели могут быть или или прямым порядком байтов с обратным порядком байтов. Существует много центральных процессоров, которые могут быть или один или другой (например, ARM, все еще используемый во многих устройствах как мобильные телефоны и т.п.), как поддерживающий, и добавляют самую большую гибкость для аппаратных средств и для поставщиков программного обеспечения. Даже центральные процессоры IA64 (Intanium, который был предназначен для замены x86 перед AMD, изобрел x86-64, который составлял истинные 64 бита и мог только эмулировать 32 бита, в отличие от x86-64, который может быть оба) являются одним из центральных процессоров, которые могут быть переключены на обратный порядок байтов. Центральные процессоры, которые могут быть оба, называют переключаемым порядком байтов.

На самом деле при игнорировании Intel (и совместимые центральные процессоры) в течение секунды большинство центральных процессоров на рынке является или обратным порядком байтов или по крайней мере с переключаемым порядком байтов, хотя большинство из них не используется ни в каких потребительских ПК насколько я знаю.

Однако я не вижу проблемы порядка байтов, как многие программисты делают. Каждый современный ЦП может подкачать порядок байтов в аппаратных средствах. На самом деле, если Вы записали бы программу на небольшом ЦП Intel порядка байтов, который подкачивает порядок байтов каждого целочисленного чтения из памяти и снова при обратной записи к памяти, это вызовет, возможно, потерю производительности всего 5%; и на практике только необходимо подкачать порядок байтов для данных, входящих и выходящих приложения, как в рамках приложения порядок байтов является постоянным, конечно.

Также примечание: Почти все сетевые протоколы, которые я знаю, определяют порядок байтов быть обратным порядком байтов, при этом TCP/IP является самой знакомой семьей. Таким образом, если Вы работаете над более низкими сетевыми уровнями, необходимо будет всегда продолжать подкачивать байты.

9
ответ дан 1 December 2019 в 20:58
поделиться

dirtying противного x86 мои регистры памяти с их указателями сегмента!;)

я полагаю, что Вы не должны зеркально отражать слова между PCs и Macs больше, предполагая воздержание назад-совместимости с PowerPC.

2
ответ дан 1 December 2019 в 20:58
поделиться

Определите ПК, что Вы рассматриваете ПК?

я в настоящее время ввожу это от дистрибутива Linux, который работает на руке 9 процессоров, которые могут быть установлены в другой порядок байтов, но значение по умолчанию является обратным порядком байтов. Прямой порядок байтов используется Intel, AMD и Через (x86 совместимый).

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

Посмотрите статья Wikipedia о Порядке байтов для получения дополнительной информации.

0
ответ дан 1 December 2019 в 20:58
поделиться

Я думал о том же вопросе: поскольку Mac теперь являются Intel, проблема с порядком байтов мертва? Нет. Помимо некоторых суперкомпьютеров (с которыми, давайте посмотрим правде в глаза, нам, неспециалистам, никогда не придется иметь дело), ​​есть еще одна важная область, где используется прямой порядок байтов: сетевые протоколы , в частности: Интернет-протокол (например, "IP" TCP / IP).

3
ответ дан 1 December 2019 в 20:58
поделиться

Сейчас, более чем когда-либо, вероятность того, что главный компьютер человека будет настольным, работает под управлением операционной системы общего назначения, меньше. Хотя это все еще довольно распространено, многие другие люди используют смартфоны или устройства UMPC, специально созданные, например, для просмотра веб-страниц. Эти платформы не обязательно имеют процессоры x86. Чаще, особенно со смартфонами, они используют ядро ​​ARM с прямым порядком байтов.

1
ответ дан 1 December 2019 в 20:58
поделиться
Другие вопросы по тегам:

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