@jvmchat

Страница 2671 из 2890
Rikland
23.07.2018
19:52:23
А разве есть ещё ламповые C4 сервера без анального гварда (трояна)?
я с 12 года воздерживаюсь, не хочу даже проверять (:

guga
23.07.2018
19:53:46
ладно, давай подвязывать с флудом, а то прийдет Дима и отправит нас во @flood

Rikland
23.07.2018
19:54:04
Google
Alpha
23.07.2018
19:54:45
или я
Так можно лампово перенести бсуждение туда :3

Rikland
23.07.2018
20:02:44
Митко Соловец?
23.07.2018
20:02:56
отставить флуд

Oleg
23.07.2018
20:11:51
хорошо.

Quantum Harmonizer
23.07.2018
20:44:56
Ребят, я правильно понимаю, что если в классе есть final-поля, то в конце конструктора происходит безопасная публикация, т. е. другие треды не увидят полусконструированный объект?

elefus
23.07.2018
20:45:57
если this не утечет раньше выхода из конструктора - значения final полей будут гарантированно видны всем потокам, получившим ссылку после выхода из конструктора

elefus
23.07.2018
20:46:46
если final-поля будут ссылочного типа - то их состояние гарантированно будет столь же актуально как и само final-поле

Google
elefus
23.07.2018
20:47:34
не, примитивы то понятно что будут видны гарантированно

просто если ты напишешь код private final int[] arr; arr = new int[2]; arr[0] = 1; arr[1] = 2;

Quantum Harmonizer
23.07.2018
20:48:29
не, примитивы то понятно что будут видны гарантированно
Ага. То есть наличие файнала гарантирует публикацию всего объекта по завершении конструктора.

elefus
23.07.2018
20:48:30
то потоки снаружи гарантированно увидят arr != null, но могут прочитать arr[0] == 0

а вот arr = new int[] {1, 2}; даст ожидаемое поведение arr[0] == 1, arr[1] == 2

Quantum Harmonizer
23.07.2018
20:49:29
elefus
23.07.2018
20:50:47
при инициализации филда, в блоке инициализации или в конструкторе

Quantum Harmonizer
23.07.2018
20:52:21
при инициализации филда, в блоке инициализации или в конструкторе
тогда arr = new int[2]; arr[0] = 1; arr[1] = 2; абсолютно эквивалентно arr = new int[] {1, 2};

elefus
23.07.2018
20:52:40
нет же оО

elefus
23.07.2018
20:53:06
в момент присвоения ссылки final массив в этом случае содержит значения [0, 0]

а потом ты их изменяешь на [1, 2]

Quantum Harmonizer
23.07.2018
20:53:30
elefus
23.07.2018
20:53:45
а JMM гарантирует что значения будут гарантированно свежими только относительно момента записи, но не выхода из конструктора

Marat
23.07.2018
20:53:51
Ага, new int[size] выделяет память в куче и принудительно обнуляет элементы

elefus
23.07.2018
20:58:16
Там нет хэпэнс-бефор
Запись значения в final-поле (и, если это поле — ссылка, то ещё и всех переменных, достижимых из этого поля (dereference-chain)) при конструировании объекта happens-before запись этого объекта в какую-либо переменную, происходящая вне этого конструктора.

Google
elefus
23.07.2018
20:58:51
прошу прощения, не понял

Dmitrii
23.07.2018
20:59:05
Для них нет)

Но если инициализация не файнал поля само hb инициализации final (program order из JMM) то тогда hb.

Я это имел ввиду)

elefus
23.07.2018
21:04:44
а вот сейчас я не согласен (или опять неправильно понял) Foo { private int val; private final int val2; Foo() { val = 42; val2 = 777; } } т.е. если какой-то поток получит ссылку на корректно сконструированный объект - он должен увидеть там значение 777 и 42 потому что запись в val является pаньше записи в val2, исходя из program order (и следовательно happens before)?

elefus
23.07.2018
21:09:08
но это, к сожалению, уже неправда: hb для записи final-полей является таковым только по отношению к другим записям в final-поля, но не для остальных операций

Quantum Harmonizer
23.07.2018
21:10:01
elefus
23.07.2018
21:10:45
насколько мне известно, JMM такой гарантии не дает, пруфлинк: https://dev.cheremin.info/2011/12/final.html

Oleksandr
23.07.2018
21:11:49
Nikolay
23.07.2018
21:14:48
Черёмин ❤️
Плюс один

Quantum Harmonizer
23.07.2018
21:19:18
> то определение позволяет проводить ребра HB только от таких записей, которые а) происходят до завершения конструктора б) результаты которых видны по цепочке ссылок начиная с final-поля, инициализированного в этом конструкторе. звучит так, будто можно мутировать массив, присвоенный в final-поле, до заморозки

elefus
23.07.2018
21:19:33
верно

Admin
ERROR: S client not available

Dmitrii
23.07.2018
21:22:26
верно
Почему? Заморозка файнал поля после выхода из конструктора. Если мы читаем не файнал после фриза это не даёт гарантии на то что у нас чтение не файнал и фриз memory chained... ?

Dmitrii
23.07.2018
21:23:15
Google
Egor
23.07.2018
21:53:21
О, китайцы атакуют

O
23.07.2018
23:57:45
Пора капчу вводить

Ruslan
24.07.2018
02:12:35
/stat@combot

Combot
24.07.2018
02:12:35
combot.org/c/-1001043090457

Ruslan
24.07.2018
02:26:18
Что лучше использовать сокеты или нио? Задача такая ,написать аукцион. Сервер берёт из базы лоты и кидает клиентам которые подключенные или подключились. Клиенты торгуются и пишут свою цену к определённому лоту. Предположим клиентов может быть 1000+

Реализация в консоле

Ruslan
24.07.2018
03:20:35
а чо бы netty не взять?
Не знаком я с серверным программированием. Вот и думаю что лучше учить

Vik
24.07.2018
03:24:10
тут как обычно, шашечки или ехать. думаю что на netty можно сговнякать быстро. а почему вообще сокетный сервер?

почему не http/wesocket или там http2/grpc ?

Ruslan
24.07.2018
03:26:06
Это задания типа тестового. А через что его реализовать вот и думаю. По нетти мало инфы ,в вот по нио или сокеты полно

Ruslan
24.07.2018
03:27:21
ХЗ на чём. хотят посмотреть реализацию

Vik
24.07.2018
03:30:22
я вам оставлю книжечку почитать, вы только потом верните

Ruslan
24.07.2018
03:30:34
Спасибо большое

Vik
24.07.2018
03:30:46
ну и собствено никому не раздавайте ?

Google
Ruslan
24.07.2018
03:31:11
Да

?

Vik
24.07.2018
03:32:40
если задание просто слабать аукцион - я бы на вебсокетаслабал http://enterprisewebbook.com/ch8_websockets.html#_adding-an-auction-to-save-the-child

Ruslan
24.07.2018
03:33:43
Веб в данной ситуации мимо

Страница 2671 из 2890