Другое событие 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));
}
127.0.0.1
обычно является IP-адресом, назначенным для интерфейса «loopback» или «local-only». Это «поддельный» сетевой адаптер, который может обмениваться данными только с одним и тем же хостом. Он часто используется, когда вы хотите, чтобы приложение, поддерживающее сеть, обслуживало клиентов только на одном хосте. Процесс, который прослушивает 127.0.0.1
для соединений, будет получать только локальные соединения в этом сокете.
«localhost» обычно является именем хоста для 127.0.0.1
IP-адреса. Обычно он устанавливается в /etc/hosts
(или эквивалент Windows с именем «hosts» где-то под %WINDIR%
). Вы можете использовать его так же, как и любое другое имя хоста - попробуйте «ping localhost», чтобы увидеть, как он разрешает 127.0.0.1
.
0.0.0.0
имеет пару различных значений, но в этом контексте, когда сервер предлагается прослушать 0.0.0.0
, что означает «слушать все доступные сетевые интерфейсы». Адаптер loopback с IP-адресом 127.0.0.1
с точки зрения серверного процесса выглядит так же, как и любой другой сетевой адаптер на компьютере, поэтому сервер, которому нужно слушать 0.0.0.0
, также будет принимать соединения на этом интерфейсе.
Это, надеюсь, ответит на IP-вопрос вашего вопроса. Я не знаком с Jekyll или Vagrant, но я предполагаю, что перенаправление вашего порта 8080 => 4000
каким-то образом связано с определенным сетевым адаптером, поэтому оно не находится на пути, когда вы локально подключаетесь к 127.0.0.1
В текущей версии Jekyll по умолчанию используется http://127.0.0.1:4000/ . Это хорошо, если вы подключены к сети, но не хотите, чтобы кто-либо еще обращался к вашему приложению.
Однако может случиться так, что вы хотите увидеть, как ваше приложение работает на мобильном телефоне или с другого ноутбука / компьютера.
В этом случае вы можете использовать
jekyll serve --host 0.0.0.0
. Это связывает ваше приложение с хостом & amp; следующее использование для подключения к нему с другого хоста
http://host's IP adress/4000
ping localhost
, похоже, работает на Windows даже без файла hosts, указывающего127.0.0.1
наlocalhost
. – Pacerier 23 July 2015 в 14:01