@jvmchat

Страница 2588 из 2890
Alexander
26.06.2018
22:28:41
конечно

Georgy
26.06.2018
22:31:50
конечно
Ну ты бы конкретно хоть сказал что не нравится с примером каким нибудь

Alexander
26.06.2018
22:32:26
не нравится то, что у меня над методом теперь по 4-5 строчек аннотаций например

Google
Alexander
26.06.2018
22:33:04
со всякими spel-ем

Marat
26.06.2018
22:33:12
если они похожи

Alexander
26.06.2018
22:33:58
ну да, одна базовая @Caching и в ней куча @Cacheable

Marat
26.06.2018
22:34:57
ну и параметры, если они отличаются, то через @AliasFor просаживать в твою новую анноташечку

Alexander
26.06.2018
22:40:00
ну и конфигурирование кэша что бы потом по ним еще стату считать тоже боль и страх



я сделал покрасивше наследованием

но все равно ад какой-то

Victor
27.06.2018
04:04:58
А можно посмореть

Код ??

Интересная темка

Andrey
27.06.2018
04:41:09
Друзья, снова я с вопросом по mongo async driver Итак, есть проблема Есть коллекция счетов Есть операции пополнения и снятия средств Причем могут выполняться с кучи разных потоков, могут обновлять один счёт, а могут разные Так вот Возникает проблема с валидностью данных при снятии средств. Для того, чтобы провести снятие, я должен узнать, что я снимаю не больше, чем осталось (не выпало за 0). Но при параллельном выполнении этой операции возникает проблема, что два потока одновременно получают одно и то же значение счёта и снятие проходит не верно(было 10 и в одну секунду приходит два снятия по 10, оба потока видят баланс - 10 и начниюат снимать, а остаётся -10) Обычная блокировка потока здесь не подходит, ТК это сильная просадка по производительности (люди, работающие с другими счетами не смогут работать , ТК один счёт заблокирует поток) Как поступить, кто что может посоветовать ?
Есть ConcurentHashMap который умеет блокироваться только по ключу, или в твоём случае по номеру счета. Но если это не просто тестовое задание, то все сложнее. Монга будет в кластере и твое приложение тоже. В банковском софте не вносят изменения в баланс счёта а записывают транзакции сколько пришло / ушло и на основании этого считают баланс

Google
Владислав
27.06.2018
04:46:04
Хотя , все равно же нужно как-то понять, не вышли ли мы за лимит

Так скажем, если это подсчитывать через транзакции,то нужно постоянно иметь доступ к текущей сумме, чтоб понять можем ли мы следующую транзакцию выполнить

Павел
27.06.2018
05:43:49
Народ есть что почитать по построению хорощего API? Бест практикс, паттерны и т.д.

Павел
27.06.2018
05:45:10
Rest
Java

Я тоже написал одно хорошее слово. Или книга называется rest?

Pavel
27.06.2018
05:46:25
Rest это архитектурный стиль проектирования / подход

Почитай про него

Andrey
27.06.2018
05:47:26
Хотя , все равно же нужно как-то понять, не вышли ли мы за лимит
Возьми атомикЛонг для хранения баланса :) не помню, хватит ли там методов атомарно уменьшить значение одновременно с проверкой.

Павел
27.06.2018
05:47:33
Rest это архитектурный стиль проектирования / подход
Дружище я прекрасно знаю что такое рест. Я веть спросил есть ли что почитать как именно им пользоваться правильно. Паттерны какие либо. У тебя рест сервисы а как ими кашерно управлять. И тд

Pavel
27.06.2018
05:48:15
Эм? Что значит управлять?

Владислав
27.06.2018
05:49:13
Возьми атомикЛонг для хранения баланса :) не помню, хватит ли там методов атомарно уменьшить значение одновременно с проверкой.
Ну вот тоже думал Правда счетов то может быть куча Да и то, что в кластере будут сервера работать На каждом все равно будет локальная копия хранится, которую нельзя будет засинхронить

Павел
27.06.2018
05:51:08
Ты наверняка видел как пишут рест контроллеры в спринге... беспорядочные url не структурированые где рестом и не пахнет. Это одно. А второе я хочу понять может есть ьест практикс как правильно разделять контроллеры урлы в них. Делать логинку например для разных клиентов. И тд

В "спринг в действии" есть глава про рест. Где очень хорошо многое описывается. Я хочу найти более углубленое раскрытие темы

Павел
27.06.2018
05:55:19
Luger
27.06.2018
05:55:34
Google
Pavel
27.06.2018
05:56:55
По моему все очевидно

О чем это говорит?

Павел
27.06.2018
05:58:19
Api/users/makePayment Api/users/addUser
Или вот есть у тебя магазины авто в каждом тачка. И получается Api/markets/{ marketId}/cars/{carId} В каком контролере это писать?

Pavel
27.06.2018
05:59:32
То, в каком контроллере писать это уже дело имплементации

Павел
27.06.2018
06:01:56
То, в каком контроллере писать это уже дело имплементации
Вот мне нужна инфа про варианты имплементаций и как на уровне приложения внутри правильно реализоват этот рест. Чтобы не премешивались урлы в разных контроллерах

Pavel
27.06.2018
06:02:19
Если твой вопрос в том, как писать такие контроллеры, то это гуглится за O(1)

Denis
27.06.2018
06:05:10
Господа, а подскажите какой нить обфускатор для jar файлов. Бесплатный. Есть такие?

Pavel
27.06.2018
06:07:05
Denis
27.06.2018
06:13:57
Zelix
Он точно бесплатный?

Vladimir
27.06.2018
06:15:44
Он точно бесплатный?
Нет, но есть пиратка. А бесплатные обфускаторы очень легко вскрываются

Dmitry
27.06.2018
06:17:49
Друзья, снова я с вопросом по mongo async driver Итак, есть проблема Есть коллекция счетов Есть операции пополнения и снятия средств Причем могут выполняться с кучи разных потоков, могут обновлять один счёт, а могут разные Так вот Возникает проблема с валидностью данных при снятии средств. Для того, чтобы провести снятие, я должен узнать, что я снимаю не больше, чем осталось (не выпало за 0). Но при параллельном выполнении этой операции возникает проблема, что два потока одновременно получают одно и то же значение счёта и снятие проходит не верно(было 10 и в одну секунду приходит два снятия по 10, оба потока видят баланс - 10 и начниюат снимать, а остаётся -10) Обычная блокировка потока здесь не подходит, ТК это сильная просадка по производительности (люди, работающие с другими счетами не смогут работать , ТК один счёт заблокирует поток) Как поступить, кто что может посоветовать ?
Атомики уже предлагали? Но это будет работать только в пределах одной jvm

Владислав
27.06.2018
06:20:06
Есть ConcurentHashMap который умеет блокироваться только по ключу, или в твоём случае по номеру счета. Но если это не просто тестовое задание, то все сложнее. Монга будет в кластере и твое приложение тоже. В банковском софте не вносят изменения в баланс счёта а записывают транзакции сколько пришло / ушло и на основании этого считают баланс

Так скажем, если это подсчитывать через транзакции,то нужно постоянно иметь доступ к текущей сумме, чтоб понять можем ли мы следующую транзакцию выполнить

Возьми атомикЛонг для хранения баланса :) не помню, хватит ли там методов атомарно уменьшить значение одновременно с проверкой.

Ну вот тоже думал Правда счетов то может быть куча Да и то, что в кластере будут сервера работать На каждом все равно будет локальная копия хранится, которую нельзя будет засинхронить

Google
Владислав
27.06.2018
06:20:06
Атомики уже предлагали? Но это будет работать только в пределах одной jvm

Dmitry
27.06.2018
06:28:51
А задание какое ?

Admin
ERROR: S client not available

Mikhail
27.06.2018
06:42:22
Или вот есть у тебя магазины авто в каждом тачка. И получается Api/markets/{ marketId}/cars/{carId} В каком контролере это писать?
У меня вообще ощущение, что просто спринга тут может не хватить, надо что-то более хитрое заюзать. Мб какой-то модуль есть для спринга, конечно...

Друзья, снова я с вопросом по mongo async driver Итак, есть проблема Есть коллекция счетов Есть операции пополнения и снятия средств Причем могут выполняться с кучи разных потоков, могут обновлять один счёт, а могут разные Так вот Возникает проблема с валидностью данных при снятии средств. Для того, чтобы провести снятие, я должен узнать, что я снимаю не больше, чем осталось (не выпало за 0). Но при параллельном выполнении этой операции возникает проблема, что два потока одновременно получают одно и то же значение счёта и снятие проходит не верно(было 10 и в одну секунду приходит два снятия по 10, оба потока видят баланс - 10 и начниюат снимать, а остаётся -10) Обычная блокировка потока здесь не подходит, ТК это сильная просадка по производительности (люди, работающие с другими счетами не смогут работать , ТК один счёт заблокирует поток) Как поступить, кто что может посоветовать ?
CQRS попробуй, должно решить.

Artjom
27.06.2018
06:58:42
Какие-то игнайты ресты граали, нет чтобы вебсферку взять =)

Владислав
27.06.2018
06:59:10
Изучу, спасибо

CQRS попробуй, должно решить.

Возьми Apache ignite, Сбербанк на нем работает. Думаю и на твои масштабы получиться натянуть.

Alexander
27.06.2018
07:17:42
лол, щас бы для платежной системы данные в монге держать. да

Valeriy
27.06.2018
07:17:43
Api/users/makePayment Api/users/addUser
Это не рест, это rpc

Artjom
27.06.2018
07:20:22
Почему это не рест?

Sergey
27.06.2018
07:20:38
Потому что это не рест

Рест это когда /users

И действия четко определены HTTP глаголами

а когда /addUsers - это хуйня из под коня

Alexander
27.06.2018
07:22:26
а когда /addUsers - это хуйня из под коня
вот плюсану. POST/PUT/GET/DELETE на эндпоинт. а не /users/{get, add, delete}.

Google
Alexander
27.06.2018
07:22:35
addUsers - это порно какое-то

Владислав
27.06.2018
07:22:42
лол, щас бы для платежной системы данные в монге держать. да
А где? И как другая бд поможет в решении данной проблемы?

Alexander
27.06.2018
07:23:06
А где? И как другая бд поможет в решении данной проблемы?
казалось бы, я может от жизни отстал. монга в транзакции научилась ? ACID там, все дела

Artjom
27.06.2018
07:23:10
Владислав
27.06.2018
07:23:51
казалось бы, я может от жизни отстал. монга в транзакции научилась ? ACID там, все дела
Разве транзакции решат проблему? Или ты предлагаешь откатывать каждую транзакцию, которую счёт за 0 переведет?

Valeriy
27.06.2018
07:25:08
Почему это не рест?
В ресте в урл могут быть только существительные, а глагол идёт из http метода

Alexander
27.06.2018
07:25:22
Разве транзакции решат проблему? Или ты предлагаешь откатывать каждую транзакцию, которую счёт за 0 переведет?
нет, я предлагаю то, что уже раньше предлагали. использовать блокировки. чтобы не было просадки по производительноси - использовать оптимистичные блокировки. чтобы не было такого, что для одного счета изменения откатили, а для другого нет - нужна нормальная база, которая умеет в acid, а не монга, прости господи.

Marat
27.06.2018
07:27:07
вот плюсану. POST/PUT/GET/DELETE на эндпоинт. а не /users/{get, add, delete}.
сколько раз в большинстве долгоживущих проектов видел: когда в ресте глаголов перестает хватать, то на рест кладут и уходят в гибрид - rest+rpc

Alexander
27.06.2018
07:27:45
сколько раз в большинстве долгоживущих проектов видел: когда в ресте глаголов перестает хватать, то на рест кладут и уходят в гибрид - rest+rpc
это уже кривая архитектура, имхо. может быть не надо в один модуль столько функционала пихать ?

Tolegen
27.06.2018
07:28:05
Alexander
27.06.2018
07:28:40
Чем плох rpc?
пошел легкий запах CORBA!

Sergey
27.06.2018
07:28:58
Чем плох rpc?
В контексте беседы - тем, что он - не рест

Сергей
27.06.2018
07:29:03
Всем привет. Кто может подсказать. Делаю разбитие файла на zip архивы (.z01, .z02, ..., .zip). Разбитие файла у меня получилось, но обратно zip его не собирает. По спеке вроде как надо проставить заголовок 0x30304b50, но куда его ложить я так и не понял.

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