- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
switch (status) {
case "createInitRequest":
requestXml = ExtFunc.executeFreemarker(initReqTempl, null, values, em);
//values.put("soap", soap);
status = "signInitRequest";
//return;
case "signInitRequest":
initReqSoap = ExtFunc.signSoap(requestXml, context, em);
if (initReqSoap == null) return;
infomsg = "Запрос сформирован и подписан. Нажмите 'Продолжить' для отправки запроса.";
status = "preSendInitRequest";
//return;
case "preSendInitRequest":
status = "sendInitRequest";
return;
// далее ещё 20 кейсов, каждый из которых меняет значение status на значение следующего кейса
}
Анонимус 27.11.2014 17:12 # 0
Ну а на самом деле конечно автора расстрелять и переписать все на SCXML (ввиду наличия редактора) потому что такое писать императивно это пздц, благо под джаву есть реализации SCXML от апаче.
зы: свич по стринге? В шестерке такого не было
bormand 27.11.2014 17:22 # −15
Анонимус 27.11.2014 17:28 # +1
разработчики: сан, сан, сан, ну что ты нам принес? Лямбды? Сахар для async?
сан: вот вам дети switch по строке
bormand 27.11.2014 17:29 # −15
У него еще реализация прикольная и не требующая никаких изменений в jvm.
Анонимус 27.11.2014 17:30 # 0
bormand 27.11.2014 17:30 # −14
guest 28.11.2014 15:55 # −14
bormand 28.11.2014 16:10 # −15
1) А она в жабе вообще есть?
2) Рандомизацию, емнип, пилят на уровне самого хешмапа, а не объектов, которые в него суют. Поэтому мешать не будет.
> Захардкоженный дикт, короче.
Угу.
Анонимус 28.11.2014 16:12 # 0
hashCode должен иметь максимальный расброс, тогда хешмапа будет лучше работать. В вырожденном случае (hashCode == 42) всё свалится в одну ветку и будет такой лист с O(N)
bormand 28.11.2014 16:15 # −15
Мы с s-a--m'ом говорим об атаке, когда злоумышленник, зная функцию хеширования, вынуждает сервер упихать большую часть ключей в одну корзинку дабы хешмапа выродилась в связный список и сдохла в мучениях.
3.14159265 28.11.2014 17:41 # 0
Выродится в дерево. Не сдохнет.
TREEIFY_THRESHOLD = 8;
http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/util/HashMap.java?av=f
guest 29.11.2014 19:49 # −14
3.14159265 28.11.2014 17:39 # 0
Не будет.
Будет дерево с O(log(N))
Анонимус 28.11.2014 17:40 # 0
3.14159265 28.11.2014 17:49 # 0
Отвечу вопросом. А как же функционирует дерево?
Анонимус 28.11.2014 17:53 # 0
В случае если хешкод будет всегда одинаковым, то для поиска нужного элемента всё равно придется проверить все элементы, а значит O(n), а значит разницы с листом никакой.
Вы наверное имеете ввиду что внутри-то там всё равно будет дерево, а не лист. Ну тут наверное можно согласиться)
3.14159265 28.11.2014 18:24 # 0
>Зная хешкод, можно сразу пойти в нужную ветку и таким образом вызывать equals надо не для всех элементов в дереве, а лишь для её части.
А можно поподробнее?
Анонимус 28.11.2014 18:36 # 0
is implementation provides constant-time performance for the basic operations (get and put), assuming the hash function disperses the elements properly among the buckets. Iteration over collection views requires time proportional to the "capacity" of the HashMap instance (the number of buckets) plus its size (the number of key-value mappings).
см. так же HashMap#get(). По хешкоду мы сразу идем в нужный бакет и уже там ищем нужный там элемент.
3.14159265 28.11.2014 18:41 # 0
Речь идёт о функционировании дерева. Причём тут хешмап?
>В дереве данные разложены по веточкам.
Анонимус 28.11.2014 21:02 # 0
На первом уровне ветки по hashCode, на втором -- по значению.
Если речь идет о TreeMap, то там и вовсе RBTree (как следует из названия)
guest 28.11.2014 16:19 # −15
Должна быть везде.
>2) Рандомизацию, емнип, пилят на уровне самого хешмапа, а не объектов, которые в него суют. Поэтому мешать не будет.
Я так и не понял, куда именно ее засунули, но ее смысл, чтобы удаленный пользователь не мог предсказать, у каких строк совпадет хеш.
bormand 27.11.2014 17:35 # −15
И ведь лямбды тоже не повлияли на jvm. Ведь они всего лишь реализации интерфейсов с одним методом...
Анонимус 27.11.2014 17:36 # +1
повлияло dynamic invoke (спасибо от имени всех пользователей грувей)
bormand 27.11.2014 17:39 # −15
А из жабы оно доступно?
Анонимус 27.11.2014 17:41 # 0
Это же для поддержки ЯПов без статики в JVM.
Кста в C# есть dynamic, он позволяет отказаться от статической проверки типов (рантаймовая проверка остается конечно). Думаю что он нужен чуть реже чем никогда.
koodeer 27.11.2014 18:06 # 0
Некоторые алгоритмы получаются намного короче и проще с dynamic. Тот же паттерн визитор. Или использование заранее неизвестных типов в рантайме. Но, учитывая отсутствие интеллисенса для динамики, усложнение рефакторинга, лучше использовать это только для прототипов, чтобы быстро получить результат. А потом переписать без dynamic.
А также dynamic сильно упрощает взаимодействие c COM (если это кому-то ещё нужно).
guest 03.12.2014 02:46 # −15
А не лучше ли для этого взять изначально динамический язык?
guest 28.11.2014 15:52 # −15
guest 28.11.2014 14:43 # −14
guest 28.11.2014 15:49 # −15
Нахуй.
guest 28.11.2014 15:51 # −15
Ага, хуй тебе. В 2020 выйдет.
guest 28.11.2014 15:51 # −14
Не все поцреоты руssкого мира с руssким языком знают термин "конечный автомат"?
Анонимус 28.11.2014 15:54 # −1
guest 28.11.2014 15:54 # −15
>устоявшиеся термины
Где? На кабре?
Анонимус 02.12.2014 18:16 # 0
Результатов: примерно 64 700 (0,29 сек.)
bormand 02.12.2014 18:22 # −15
Результатов: примерно 278 000 (0,42 сек.)
Анонимус 02.12.2014 18:27 # 0
А стейтмашина -- устоявшийся
bormand 02.12.2014 18:31 # −13
Есть finite state machine. Есть конечный автомат. Зачем изобретать новую хрень, которая мало того, что кривая калька с английского, так еще и без finite...
Соглашусь с s-a--m'ом. Задрали уже все эти мерчандайзеры, супервайзеры, митапы и прочие воркшопы.
Анонимус 02.12.2014 18:35 # 0
bormand 02.12.2014 18:36 # −15
Миллионы мух не могут ошибаться?
> описании сетевых протоколов
> поведению разных компонентов PC, PCI master'а например
Если переводчик не знает терминологии и пишет "стейт-машина", то доверие к нему падает ниже плинтуса... Я лучше на английском прочитаю, ей-богу.
Анонимус 02.12.2014 18:44 # 0
Оттуда он перекочевал в жаргон программистов. Никто не говорит "точка останова", "ловушка" (всмысле trap: эксепшен или фолт в IA-32), "отладчик" или "связывание", правда?
bormand 02.12.2014 18:48 # −15
Из-за этого сраного жаргона у меня профдеформация - многие английские слова не могу правильно произносить :(
Имхо, если уж и использовать такие слова - так писать их латиницей, без уродской транслитерации, а читать - правильно.
> отладчик
Ну вот отладчик зря... Тут, вроде бы, большинство так говорит. И по исключению так же (эксепшн редко пишут).
Анонимус 02.12.2014 18:50 # +1
bormand 02.12.2014 18:52 # −15
P.S. А чем транслит то лучше? Как-то так надо по-вашему: "Когда я компилю мою апликуху кликнув шифт-ф10 в моем ИДЕ, я всегда думаю о том, что слова из манов на инглише лучше писать латиницей"? Ну для форума кулхацкеров - само то...
Анонимус 02.12.2014 19:00 # 0
Транзлит выглядит не так глупо, имхо)
Ах нет, не имхо! Пмсм!
1024-- 02.12.2014 19:55 # −14
Вот это верно подмечено. Если читать статьи на сами знаете каком сайте, то можно прочувствовать всю боль ситуации. Одни делают ошибки из-за того, что они не специалисты в описываемых областях. Другие - узкоспециализированные авторы-профессионалы уже нужные термины знают, но, как и Кегдан, делают ошибки из-за того, что вертели они русский язык сами знаете на чём.
(Конечно, есть и промежуточные варианты, но крайности достаточно устойчивы, чтобы в них скатываться.)
Анонимус 02.12.2014 21:43 # +1
Всмысле те, кто ни в русском языке ни в предметной области не силен?
Таких и правда предостаточно)_
guest 03.12.2014 02:44 # −15
1024-- 03.12.2014 10:39 # −15
Анонимус 03.12.2014 16:33 # 0
1024-- 03.12.2014 17:35 # −15
guest 03.12.2014 22:31 # −13
1024-- 03.12.2014 22:45 # −14
Анонимус 03.12.2014 23:39 # 0
guest 04.12.2014 00:10 # −14
guest 03.12.2014 02:43 # −15
someone 27.11.2014 20:03 # 0
_a_o_O 02.12.2014 16:23 # 0
bormand 02.12.2014 16:26 # −15
Анонимус 02.12.2014 18:16 # 0
guest 01.04.2017 10:44 # −15