Другое событие 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));
}
Короткий ответ: нет. Более длинный ответ: но можно сделать его произвольно трудным. Что я сделал бы:
Ни один из этих методов не составляет 100%, но надо надеяться объединился, они дают Вам уровень гарантии, в котором Вы нуждаетесь. Если Вы хотите взять это уровень выше, необходимо добавить некоторую регистрацию пользователя (который может быть столь же простым как выяснение у допустимого адреса электронной почты, когда голосование происходит и отправление ссылки подтверждения к данному адресу и не подсчету голосов, для которых на ссылку не нажали - таким образом, это не должно быть законченное, "создают учетную запись с именем пользователя / пароль / имя елей / фамилия / и т.д.").
Нет, Вы не можете, и только требуются один человек и согласный форум для изменения результата голосования онлайн.
Необходимо понять, что свойственные дефекты голосования онлайн и вместо того, чтобы пытаться обойти их пытаются использовать их в ваших интересах.
- Adam
Клиентские решения отсутствуют по причинам, которые Вы перечислили - ими может управлять пользователь. Решения серверной стороны - как Вы сказали - можно дурачить и обойти.
Если Вы готовы принять то, что Вы не можете действительно быть на 100% уверены, что получаете точно одно голосование на человека, то существуют некоторые меры, которые можно принять для сокращения шума.
Это - хорошее начало.
Можно, конечно, мешать.
Что относительно того, чтобы создать профиль пользователя с такими вещами как IP-адрес, браузер useragent, название машины, и безотносительно другой информации можно добраться.
Сохраните профиль для каждого пользователя, затем при получении профиля, который уже достаточно подобен одному в базе данных (необходимо будет настроить это), можно вывести то голосование.
Я предполагаю, что можно, вероятно, создать лучший профиль с помощью Silverlight, хотя я не уверен, какая информация, которая предоставляет Вам доступ к.
мой личный опыт в разработке конкурса и контроле говорит мне что не, нет никакого надежного способа постараться не обманывать, если Вы позволяете анонимным пользователям голосовать (или сделать что-либо, что позволяет им участвовать в конкурсе).
Вы могли играть с IP, представить задержки между действием и следующим, но это действительно трудно: лучший способ, представляют капчу или что-то подобное, если применимо в Вашей конкретной ситуации.
лучший из всех, не позволяйте анонимным пользователям участвовать: позвольте им "играть" и доступ к моделированию, но конкурсу нужен вход в систему.
Нет, это - компьютер пользователя, и они сознают ситуацию. К сожалению, единственное решение состоит в том, чтобы возвратить его на Вашем суде так сказать и потребовать аутентификации.
Однако КАПЧА помогает ограничить голоса пользователям - людям, по крайней мере.
Конечно, даже с аутентификацией Вы не можете осуществить единственное голосование, потому что затем они учат ботов регистрироваться...