
Georgy
26.06.2018
22:27:19

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? Бест практикс, паттерны и т.д.

Pavel
27.06.2018
05:44:43

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

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

Andrey
27.06.2018
05:47:26

Павел
27.06.2018
05:47:33

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

Владислав
27.06.2018
05:49:13

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

Pavel
27.06.2018
05:54:20

Павел
27.06.2018
05:55:19

Luger
27.06.2018
05:55:34

Pavel
27.06.2018
05:56:42

Google

Pavel
27.06.2018
05:56:55
По моему все очевидно
О чем это говорит?

Павел
27.06.2018
05:58:19

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:05:47

Vladimir
27.06.2018
06:06:04

Pavel
27.06.2018
06:06:36

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


Andrey
27.06.2018
06:52:21

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

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

Sergey
27.06.2018
07:20:38
Потому что это не рест
Рест это когда /users
И действия четко определены HTTP глаголами
а когда /addUsers - это хуйня из под коня

Alexander
27.06.2018
07:22:26

Cargeh
27.06.2018
07:22:32

Google

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

Владислав
27.06.2018
07:22:42

Alexander
27.06.2018
07:23:06

Artjom
27.06.2018
07:23:10

Владислав
27.06.2018
07:23:51

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

Alexander
27.06.2018
07:25:22

Marat
27.06.2018
07:27:07

Alexander
27.06.2018
07:27:45

Tolegen
27.06.2018
07:28:05

Alexander
27.06.2018
07:28:40

Sergey
27.06.2018
07:28:58

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