• Как управлять транзакциями в spring data?

    BorLaze
    @BorLaze
    Java developer
    Не надо это именно делать через транзакции.

    На каждую "покупку" создаешь заявку в отдельной таблице "бронь".
    При поступлении оплаты - продаешь билет, удаляешь запись из заявок.
    С определенной периодичностью проходишь по этой таблице, удаляешь устаревшие заявки.
    Вот тут, да - все делаем в транзакции.

    Соответственно, при расчете количества доступных билетов считаешь как КОЛ_БИЛЕТОВ - КОЛ_ЗАЯВОК.
    Ответ написан
    Комментировать
  • "Сложное" ограничение для символьного поля SQL?

    @d-stream
    Готовые решения - не подаю, но...
    Check - это скорее проверить и если не выполняются условия - то "сломаться"

    Можно что-то подобное по смыслу сделать в виде вычисляемого поля - возможно в рамках 3-4 категорий
    - много
    - мало
    - только спецрезерв
    - вообще нет

    И потом уже опираться на это значение в логике более верхнего уровня

    Но и это плохо, т.к. сами значения порогов могут зависеть от сезона, направления, самолета, клиента и т.п. - то есть опять же им место где-то в уровнях бизнес-логики)
    Ответ написан
    Комментировать
  • Область видимости/замыкание лямбда в Java?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Дело в том, что human1 и human2 - действительно EffectivelyFinal.
    Эти переменные содержат ссылку на объект. Эта ссылка не изменяется.
    Переменная var - очевидно, не EffectivelyFinal.
    Попробуйте присвоить human1 новый объект и увидите такое же предупреждение компилятора.

    Цитата из книги «Современный язык Java. Лямбда-выражения, потоки и функциональное программирование»:

    Возможно, вы слышали термин «замыкание» (closure, не путайте с языком программи- рования Clojure) и вам интересно, соответствуют ли его определению лямбда-выражения. На более формальном языке замыкание — экземпляр функции с возможностью без всяких ограничений обращаться к нелокальным по отношению к этой функции переменным. Например, замыкание можно передать как аргумент другой функции. Оно может также обращаться к переменным, объявленным вне его области видимости, и изменять их значения. Лямбда-выражения и анонимные классы Java 8 похожи на замыкания: их можно передавать в качестве аргументов методам, они могут обращаться к переменным вне своей области видимости. Но на них налагается ограничение: они не могут модифицировать содержимое локальных переменных метода, в котором описаны. Эти переменные фактически являются неизменяемыми (final). Удобно считать, что лямбда-выражения замыкают значения, а не переменные. Как уже объяснялось ранее, это ограничение связано с тем, что локальные переменные располагаются в стеке и неявным образом ограничены своим потоком выполнения. Если разрешить захват изменяемых локальных переменных, это приведет к открытию новых потоконебезопасных, а значит, нежелательных возможностей (переменные экземпляра в этом смысле допустимы, поскольку хранятся в куче, совместно используемой разными потоками выполнения).
    Ответ написан
    Комментировать
  • "Скрипт" для загрузки файлов на сайт с помощью Java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Как сделать так чтобы скрипт использовал мой браузер или был залогинен на нужном сайте.

    Selenium + любой браузер (chromium, firefox) + drive для этого браузера.
    Запускаете браузера в headless режиме и производите все что нужно (загрузить файлы и т.д.).
    Если нужно регулярно выполнять задачу, то добавьте системный процесс.
    Но на мой взгляд в вашем случае скриптовым язык будет лучше реализовать подобное. А-ля js, python.
    Ответ написан
    2 комментария