@jvmchat

Страница 2623 из 2890
Владислав
03.07.2018
16:21:58
транзакции?
Так и что?

Как я понимаю, вот в двух потоках сразу начнется транзакция Или не может в двух потоках начаться Тогда на каком уровне блокировка происходит?

Dima
03.07.2018
16:29:25
Друзья , вопрос Как мне постгрес гарантирует, что при параллельном изменении поля данные будут валидны?
Нужно использовать транзакции, если хотите обеспечить консистентность данных при работе из разных потоков. При этом, если сильно заморочиться, нужно использовать правильный уровень изоляции транзакции

Google
Владислав
03.07.2018
16:30:17
Вот сейчас начал читать и увидел про уровень изоляции Попытаюсь разобраться и потом уже уточнить, если что не пойму

M
03.07.2018
17:13:47
ребят подскажите если запущено несколько apps в томкат то когда одно создаёт проблему то tomcat полностью. выключается и все остальные страдают, как можно этого избежать?

можно ли при помощи tomcat запускать отдельную jvm для каждого проекта

Dima
03.07.2018
17:16:07
Можно докером растиражиповать столько томкатом, сколько нужно

Slava
03.07.2018
17:16:33
Либо джетти бери

M
03.07.2018
17:16:37
Можно докером растиражиповать столько томкатом, сколько нужно
ты имеешь ввиду на каждый проект свой томкат?

Dima
03.07.2018
17:16:50
Да

M
03.07.2018
17:16:50
Либо джетти бери
а что он делает?

можно скинуть ссвлочку, и он умеет virtual host?

Slava
03.07.2018
17:17:11
Варник твой запускает

java -jar jetty-runner.jar myapp.war

Как-то так

Google
Slava
03.07.2018
17:19:01
Или вообще как зависимость в варник запихать

M
03.07.2018
17:19:34
Можно докером растиражиповать столько томкатом, сколько нужно
ну тут тогда и без докер можно просто запускать отдельный том для каждого с разным портом

Dima
03.07.2018
17:20:37
Можно, но если их много, неудобно

Если томкат падает из-за нагрузки, может имеет смысл настроить кластер и спрятать за балансировщиком

M
03.07.2018
17:22:00
и нот он падает потому что иногда проекты разные

и кто-то может быть не добросовестно, memory leak создаёт, а tomcat как я понял их всех убивает

Slava
03.07.2018
17:27:16
Отдельный томкат под каждый варник - это толсто. Попробуй джетти, может зайдёт и понравится

Slava
03.07.2018
17:29:58
Ты весь фунуционал томката используешь? Или только варники туда деплоишь?

Если только варники, то советую джетти попробовать

M
03.07.2018
17:31:15
Ты весь фунуционал томката используешь? Или только варники туда деплоишь?
там servlet запускаются, и нужно проксирлвание по именам

ну virtual host

Slava
03.07.2018
17:32:41
То есть по доменам дальше запрос куда-то проксирует?

M
03.07.2018
17:33:53
ну в принципе посмотрю jetty.

я вообде думал что tomcat умеет для каждого проекта запускать свою jvm

или что есть какой-то менеджер для этого

Slava
03.07.2018
17:35:41
Я такое видел только в Больших AS типа вебсферы и веблоджика, и то настраивается овер геморройно

Таир
03.07.2018
18:06:16
Странно, что он лочит на только что созданном объекте r. Не может ли быть так, что два потока создадут два объекта?
ага, на первый взгляд херь какая-то, какой смысл лочиться вокруг нового объекта, если его все равно не будет видно другим потокам, пока данный не выскочит из блока?

Jev
03.07.2018
18:13:01
Добрый! Сообщение о поиске практикантов можно сюда или это будет спам?

Google
Митко Соловец?
03.07.2018
18:13:39
и в лс любому из админов

Jev
03.07.2018
18:13:56
Евгений
03.07.2018
18:47:59
а кто нибудь сталкивался с проблемай,что метод doThrow в Мокито может иногда не отрабатывать?

все, разобрался

anyList() != null

Mikhail
03.07.2018
19:09:48
Apache FOP - хуже бормотографа с пылесосом

Извините

Magzhan
03.07.2018
20:04:16
ага, на первый взгляд херь какая-то, какой смысл лочиться вокруг нового объекта, если его все равно не будет видно другим потокам, пока данный не выскочит из блока?
На самом деле интересная конструкция. Судя по сорсам: Создает корзину-затычку, сразу же попадает в блок synchronized потому что некому конкурировать и добавляет эту корзину в свое хранилище. Теперь любой кто захочет изменить корзину по индексу i будет вынужден ждать пока этот код не отпустит эту корзину(то есть по сути ждать завершения маппера + сет корзины в хранилище). Далее выполняется вычисление этого маппера и результат запишется в новую корзину которая сохранится заменив ReservationNode. Учитывая что остальные апдейты выглядят как: java while(true) { ... f = tabAt(tab, i); synchronized (f) { if (tabAt(tab, i) == f) { } получается что если во время вычисления кто-то пытался что-то записать в корзину под номером i - то ему придется дождаться чтобы узнать что значение поменялось и в следущей итерации цикла обработать уже вставленное посчитанное значение. В доках описаны следущие гарантии: java * The entire method invocation is performed atomically, so the function is applied at most once per key Получается такой способ залочить корзину под номером i во время работы гарантированно единственного вызова маппера

Таир
03.07.2018
20:07:17
На самом деле интересная конструкция. Судя по сорсам: Создает корзину-затычку, сразу же попадает в блок synchronized потому что некому конкурировать и добавляет эту корзину в свое хранилище. Теперь любой кто захочет изменить корзину по индексу i будет вынужден ждать пока этот код не отпустит эту корзину(то есть по сути ждать завершения маппера + сет корзины в хранилище). Далее выполняется вычисление этого маппера и результат запишется в новую корзину которая сохранится заменив ReservationNode. Учитывая что остальные апдейты выглядят как: java while(true) { ... f = tabAt(tab, i); synchronized (f) { if (tabAt(tab, i) == f) { } получается что если во время вычисления кто-то пытался что-то записать в корзину под номером i - то ему придется дождаться чтобы узнать что значение поменялось и в следущей итерации цикла обработать уже вставленное посчитанное значение. В доках описаны следущие гарантии: java * The entire method invocation is performed atomically, so the function is applied at most once per key Получается такой способ залочить корзину под номером i во время работы гарантированно единственного вызова маппера
Я не могу понять, как соседний поток сможет считать корзину по индексу i до того, как данный поток выйдет из синхро-блока

Magzhan
03.07.2018
20:09:15
Я не могу понять, как соседний поток сможет считать корзину по индексу i до того, как данный поток выйдет из синхро-блока
так можно получить корзину: tabAt(tab, i) Но она будет залочена. Не уверен что понял вопрос правильно.

Таир
03.07.2018
20:10:11
так можно получить корзину: tabAt(tab, i) Но она будет залочена. Не уверен что понял вопрос правильно.
Жава же не гарантирует видимость изменений по индексу i из соседнего потока до выхода из синхро-блока

Таир
03.07.2018
20:10:44
Если конечно это изменение не во вложенном блоке

Magzhan
04.07.2018
05:48:33
Жава же не гарантирует видимость изменений по индексу i из соседнего потока до выхода из синхро-блока
Не знал к своему стыду. А на запись в volatile переменную через Unsafe.compareAndSwap это распространяется? Ведь если в любой момент после успешного CAS кто-то в другом потоке также попытается сделать compareAndSwap(tab, i, null, newValue), ему вернется false потому что старое значение уже не нулл и придется заново пытаться делать CAS, а если это работает не так то какой смысл в CAS?

Alexey
04.07.2018
06:12:19
CAS обычно делается в while и успех достигается за счет некоторого количества попыток

Митко Соловец?
04.07.2018
08:10:32
https://spring.io/blog/2018/06/28/hands-on-mongodb-4-0-transactions-with-spring-data

возможно многие теперь вновь обратят свое внимание на монго дб

Mikhail
04.07.2018
08:35:16
так, господа хорошие

кто-нить apache fop использует?

Admin
ERROR: S client not available

Google
Mikhail
04.07.2018
08:35:32
для генерации pdf-ов, например

Александр
04.07.2018
08:36:01
@shelden93 шарит в нем :)

Denis
04.07.2018
08:37:25
для генерации pdf-ов, например
Поробуй JasperReports . Он же iReport

Mikhail
04.07.2018
08:38:19
Поробуй JasperReports . Он же iReport
уже есть написаный код

@shelden93 когда будешь в доступе - напиши, пожалуйста?)

короче, в двух словах - проблема такая

на каждую генерацию файла pdf он грузит шрифт по-новой

а там внутри - IOUtils.toByteArray(in);

и если мы генерируем большую пачку подряд и быстро - память полностью съедается на массивы со шрифтом

то есть явно я делаю что-то неправильно)))

судя по документации - FopFactory создается только один раз, а все прочие объекты - FopAgent и сам Fop - на каждую генерацию

но в этом случае - мы как раз и считываем шрифт каждый раз по-новой

Aliaksandr
04.07.2018
08:44:24
я использую его в cli, а не через java :) и шрифты в таком кейсе он кэширует.

Mikhail
04.07.2018
08:45:10
я использую его в cli, а не через java :) и шрифты в таком кейсе он кэширует.
он их кэширует, если сканит папку или системные берет, да и то - в какой-то файл тоже

а у нас - один шрифт

и мы его явно передаем в конфиге

и он на каждую генерацию его поднимает в память

ну, он большой, конечно, 22 мегабайта - но нам без этого никуда, много языков == много лигатур должен уметь шрифт.

Глеб
04.07.2018
11:34:08
всем привет господа, как называется такая структура? Request request = new Request.Builder() .url(url) .post(rbody) .build();

Google
Глеб
04.07.2018
11:34:25
вызов нескольких методов при инициализации

Yan
04.07.2018
11:34:30
билдер

Глеб
04.07.2018
11:34:39
окей, спасибо

Yan
04.07.2018
11:34:42
"Request.Builder" намекает

Глеб
04.07.2018
11:39:20
Magzhan
04.07.2018
11:40:02
Или fluent interface

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