Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Простой. Один из моих ранних наставников ушел на летних каникулах с его семьей. Когда он возвратился, он сразу сидел на терминале и ввел в стандартной программе GMAP, скомпилированный (убирают) и выставил его. Я спросил, мог ли я помочь тестированию, и он сказал, что оно в порядке, он был бы "песок, протестированный" оно. Ха? По-видимому, он скучал на пляже, так нашел плоский кусок песка, кодированного, и проверил его - "проверенный песок". Блестящий парень.
Это - старое произведение, но для меня это было устройство Вареного пудинга:
http://en.wikipedia.org/wiki/Duff 's_device
(по некоторым причинам я не могу заставить скидку с цены показывать тот URL ссылкой)
<час>strcpy(to, from, count)
char *to, *from;
int count;
{
int n = (count + 7) / 8;
switch (count % 8) {
case 0: do { *to = *from++;
case 7: *to = *from++;
case 6: *to = *from++;
case 5: *to = *from++;
case 4: *to = *from++;
case 3: *to = *from++;
case 2: *to = *from++;
case 1: *to = *from++;
} while (--n > 0);
}
}
Я записал простой пакетный файл Windows, чтобы позволить мне быстро играть треки, соответствующие некоторому шаблону из моей музыкальной библиотеки (на f: диск) на крайне медленной машине (вводный iTunes занимает приблизительно 3 минуты на этой машине!). Это поддерживает регулярные выражения через эти findstr
команда и использует mplayer, чтобы играть треки. Все, что я должен сделать, нажимают Windows+R и тип:
play u2
или:
play "neighbo.+rhood"
или:
play "blink[0-9][0-9][0-9]"
пакетный файл похож на это, в play.bat
.
cd /d f:
findstr /I /R %1 dirlist.txt > playlist.txt
mplayer -playlist playlist.txt
И mplayer и play.bat должны быть добавлены к Вашему пути.
Не сделанный мной, конечно, но я недавно столкнулся с ним, и это выглядело прохладным:
"Игра Conway’s Жизни очаровывала программистов в течение многих десятилетий. Даже при том, что его правила смехотворно просты, вселенная Conway’s дает начало множеству планеров, космических кораблей, осцилляторов, орудий планеров и других форм “life”. Самопечатающим программам столь же любопытно, и - скорее удивительно - имеют важное место в теории вычисления.
, Что происходит, когда Вы комбинируете два? Вы собираетесь узнать, но одна вещь наверняка: фактор гиковатости должен быть довольно высоким.
я записал немного программы C#, которая содержит сетку Игры Жизни. Программа совершенствует игровую сетку к следующему поколению и распечатывает копию себя с обновленной сеткой. Можно взять вывод, скомпилировать его с компилятором C#, выполнить его, и you’ll получают следующее поколение игры. Можно выполнить итерации процесса или изменить начальное состояние сетки вручную".
Переходят по ссылке выше для исходного кода.
Я когда-то взломал вместе простую командную строку стиля DOS для пси-частицы 3a во время университетской лекции. Это могло только сделать основной список каталогов, просмотр, скопировать & переместитесь, но это выглядело соответствующе - полный экран мелкий шрифт.
, О, и я запрограммировал вонь для 68008 с горшками для входа и осциллографом для вывода. Не то, чтобы трудно с помощью dev платы, но было что-то прохладное об игре его на osc.
Мы были скомпрометированы в небольшой компании, в которой я работал некоторыми, предположительно, российскими хакерами. Самостоятельно и несколько других разработчиков хотели видеть, как, и таким образом, я раскрыл самый изящный Сценарий PHP, я когда-либо видел вниз с нашего сервера, и быстро удалял его из нашей живой машины.
Это был троянский конь, названный c99shell, который сделал так много с так мало, что это было и ужасно и красиво одновременно. Вещь имела встроенный GUI с изображениями с помощью base64 для вывода их от PHP, таким образом, все было сам содержавшее. Список функций был болен! Эта вещь могла запустить оболочки, сканирование для строк подключения, сама блокировка вниз и много другой полезный вещи для взломщика.
Это было красиво.
Все в офисе думали, что я был гаек, но действительно, действительно этот код имел довольно мало мысли, помещенной в него. Они сохранили размер файла небольшим, чтобы красться мимо тех противных пределов загрузки и даже имели закодированное уведомление по электронной почте base64, которое собрало всю информацию для взломщика.
Устройство Tesla установило рекорд для искусственной молнии (42 метра или 130 футов), и весь свет в Колорадо-Спрингсе гас.
Я сказал бы Вам, но они могут хотеть мое свидетельство об окончании средней школы назад, если я признался в нем;)
Назад в эпоху DOS, я записал программу сценариев для демонстрации программного обеспечения моей компании. Эта программа сценариев запустила бы приложение и затем открылась бы окна сверху приложения, описала бы некоторые его функции с помощью анимированного типа, затем закрыла бы окно, нажатия клавиш канала к приложению, ожидала бы приложения, чтобы отобразить надлежащий экран, и затем открыться больше окон. Это имело свой собственный язык сценариев и даже редактор сценариев, таким образом, я мог прервать сценарий, отредактировать его, и затем продолжить выполнять его. Большая часть - то, что это работало сверх неизмененной версии нашего приложения.
целое демонстрационное приложение было записано в C и ассемблере. Это сцепило прерывания таймера и клавиатуры для взаимодействия с приложением. Я записал все, включая библиотеку работы с окнами.
Несколько лет назад я написал программу для отображения текста в больших блочных буквах, чтобы положить их в заголовок моих исходных файлов, чтобы я мог печатать их умножению в очень маленьком шрифте. Я построил небольшой стол с информацией пикселя на квадрате 5x5, чтобы распечатать символы. У него были только заглавные буквы и цифры. Итак PA
PA
станет ...
#### #
# # # #
#### # #
# #####
# # #
Некоторое время спустя я нашел в оригинальном списке IBM PC BIOS, который пришел с ссылкой IBM PC Technigal, что у него был генератор символов 8x8. Поэтому я нашел его и извлек его из дампа памяти. Поэтому я смог сгенерировать полный набор символов, поэтому я мог бы использовать строчные буквы ...
## ### ####
## ## ##
## ## #####
##### ## ##
## ### ##
####
Однажды я использовал кнопки в FoxPro (Windows) для создания гистограммы в самой первой написанной мной программе. Для меня это было действительно круто.
Поэма Дэвида Карлайла для TeX:
\let~\catcode~`76~`A13~`F1~`j00~`P2jdefA71F~`7113jdefPALLF
PA''FwPA;;FPAZZFLaLPA//71F71iPAHHFLPAzzFenPASSFthP;A$$FevP
A@@FfPARR717273F737271P;ADDFRgniPAWW71FPATTFvePA**FstRsamP
AGGFRruoPAqq71.72.F717271PAYY7172F727171PA??Fi*LmPA&&71jfi
Fjfi71PAVVFjbigskipRPWGAUU71727374 75,76Fjpar71727375Djifx
:76jelse&U76jfiPLAKK7172F71l7271PAXX71FVLnOSeL71SLRyadR@oL
RrhC?yLRurtKFeLPFovPgaTLtReRomL;PABB71 72,73:Fjif.73.jelse
B73:jfiXF71PU71 72,73:PWs;AMM71F71diPAJJFRdriPAQQFRsreLPAI
I71Fo71dPA!!FRgiePBt'el@ lTLqdrYmu.Q.,Ke;vz vzLqpip.Q.,tz;
;Lql.IrsZ.eap,qn.i. i.eLlMaesLdRcna,;!;h htLqm.MRasZ.ilk,%
s$;z zLqs'.ansZ.Ymi,/sx ;LYegseZRyal,@i;@ TLRlogdLrDsW,@;G
LcYlaDLbJsW,SWXJW ree @rzchLhzsW,;WERcesInW qt.'oL.Rtrul;e
doTsW,Wk;Rri@stW aHAHHFndZPqpa.rtMRrgeLinZ.irLtYer.W,:jbye
запустите pdftex с этим файлом и удивитесь.