В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.
При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.
Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».
Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this
. Возьмем этот пример:
public class Some {
private int id;
public int getId(){
return this.id;
}
public setId( int newId ) {
this.id = newId;
}
}
И в другом месте вашего кода:
Some reference = new Some(); // Point to a new object of type Some()
Some otherReference = null; // Initiallly this points to NULL
reference.setId( 1 ); // Execute setId method, now private var id is 1
System.out.println( reference.getId() ); // Prints 1 to the console
otherReference = reference // Now they both point to the only object.
reference = null; // "reference" now point to null.
// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );
// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...
Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference
и otherReference
оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.
Я изучил бы использование рычаг постфиксации для обновления сайта, когда изменения внесены. Это могло быть чем-то столь же простым как использующий "svn экспорт" для экспорта текущего состояния репозитория к живому местоположению веб-сайта. Конечно, это имеет соображения производительности, если Ваш сайт имеет много содержания, таким образом, можно хотеть сделать что-то более сложное и только требовать у обновлений содержание, которое было изменено в фиксации.
Вы могли бы хотеть использовать комбинацию CruiseControl (или CruiseControl.NET) и Муравей (или NAnt). Это делает задание чрезвычайно хорошо для нас.
Да, post_commit рычаг то, что Вы хотите.
, Что сцепиться с ? Я рекомендовал бы rsync (если Ваш экземпляр сайта не является svn, работающим копия), или ssh с ключевым автором, называющим сценарий, который делает 'CD WEBDIR & & svn' (если это).
Рычаг post_commit SVN идеален для вещей как это.
ADS (сценарий автоматического развертывания похож на решение этого, но я никогда не пробовал его - просто, нашел его с несколькими секундами Гугления.
Эффективно, что потребности произойти то, который изменяется, я отметил как живые или стабильные потребности, которые будут объединены с Живым веб-сайтом. Это эффективно означает, что я не должен волноваться о случайно копировании по файлам и если что-то идет не так, как надо, оно могло бы вернуться к предыдущей версии снова.
я исследую рычаг post_commit, но я должен буду найти способ сделать резервное копирование сначала так, чтобы проблема с subversiondoesn't уничтожила сайт.
Можно хотеть смотреть на Унисон . Я был довольно доволен им как механизм публикации для сайта, где я хотел, эффективно, умный двухсторонний rsync. Вы могли, вероятно, связать его с SVN без большой трудности.
svn2web, установленный как рычаг постфиксации, будет ftp или scp файлы от репозитория подверсии до одного или нескольких веб-серверов на каждой фиксации. См. проект SourceForge для деталей.
Assembla получил это с их инструментами FTP и Subversion.
Beanstalk - это решение, объединяющее ftp с Subversion.