RU

Закрыл вкладку — ушёл, обновил страницу — остался: присутствие в комнате на WebSocket

Когда человек закрыл вкладку, обновил страницу или потерял сеть, сервер получает один и тот же SessionDisconnectEvent , а реагировать должен по-разн…

websocketstompspring bootrabbitmqmongodbangularzone.jspresenceplanning pokerplaywright
Habr
RU

Модульная надстройка для JasperReports: коллекции, рантайм и границы подхода. Часть 4

Это последняя часть серии — и самая плотная. Поля-коллекции и повторяющиеся субрепорты, что именно роняет сборку, как собирается карта параметров в…

jasperreportsjavaopen sourcejrxmlspring bootотчётыpdfаннотационный процессорсубрепорты
Habr
RU

Возвращаем трассировку логов Quartz-задач после перехода на Spring Boot 3+

Привет! Меня зовут Александр Каненков, я backend-разработчик в компании Домклик. После перевода сервиса со второго Spring Boot на третий (а у кого-т…

kotlinjavaspringspring bootspring frameworkquartzлоггированиетрассировка запросовтрейсингjob-scheduler
Habr
RU

Модульная надстройка для JasperReports: подключение и что делает процессор при сборке. Часть 3

Третья часть серии — практическая. Как подключить библиотеку к Maven-проекту, написать первый модульный отчёт и что после этого происходит с шаблоно…

jasperreportsjavaopen sourcejrxmlspring bootотчётыpdfаннотационный процессорсубрепорты
Habr
RU

Модульная надстройка для JasperReports: один стандарт и три идеи. Часть 2

Во второй части серии — чего ждёт от инструмента отчётов современный Java-разработчик и на каких идеях я собрал свою надстройку над JasperReports —…

jasperreportsjavaopen sourcejrxmlspring bootотчётыpdfаннотационный процессорсубрепорты
Habr
RU

Модульная надстройка для JasperReports: откуда взялся Jasper и почему он так устроен. Часть 1

JasperReports появился в самом начале нулевых: румынский разработчик Теодор Данчу делал большой Java-проект, где нужно было формировать и печатать м…

jasperreportsjavaopen sourcejrxmlspring bootотчётыаннотационный процессорсубрепортыpdf
Habr
RU

23 урока для тех, кто отвечает за бэкенд: архитектура, производительность и надёжность сервисов

По мере роста продукта backend-системы требуют всё больше инженерных решений: появляются новые сервисы, растёт нагрузка, усложняется работа с данным…

backend-разработкамикросервисыбазы данныхархитектура приложенийSQLspring bootвысокие нагрузкипроизводительностьбесплатные урокипрофессиональное развитие
Habr
RU

Свои книжные метаданные: Pivot-архитектура, Spring Boot и бесплатный API для Obsidian

Как я собрал бесплатный сервис метаданных книг на Java и Spring Boot — с EAV/Pivot-схемой БД вместо ALTER TABLE на каждое новое поле, агрегацией нес…

javaspring bootpostgresqlpivot architecturebook metadataisbnopen libraryobsidianmultitenancyмикросервисы
Habr
RU

[Перевод] Мутационное тестирование: прекрасная концепция, которой вы редко будете пользоваться на практике

В новом переводе от команды Spring АйО на простом Java-примере показываем: – как работает мутационное тестирование с Pitest;   – почему 100% по…

javaspringtesttestingtesting toolsspring bootspring-bootspring framework
Habr
RU

Свежий взгляд на бронирование тайм‑слотов, или как я это сделал на Spring boot, используя пессимистические блокировки

Здравствуйте, Хабровчане! Меня зовут Дмитрий, я бэкенд разработчик Java. Недавно я наткнулся на задачу, которая сначала показалась мне копеечной, а…

javaspring bootpostgresqlbackendarchitectureslots apib2bsaas
Habr
RU

OpenIDE Pro в деле: Java, Spring, базы данных и AI-агенты в одной IDE

За последние несколько лет часть привычных инструментов разработки стала для российских компаний ограничена или недоступна: возникли сложности с зак…

IDEOPENIDEaxiom jdkaxiomjdkspring bootpythonc++kotlingoразработка приложений
Habr
RU

Как я ускорил работу с топом-пользователей с 36 минут до 20 секунд, используя Redis Sorted Set

Всем привет, меня зовут Михаил, я работаю Java/Kotlin разработчиком в ОТП Банке. Все мы знаем про Redis. Часто используем его для in-memory кэша. В…

javaredishighloadвысоконагруженные системыоптимизацияоптимизация кодаоптимизация запросовhighload systemsspringspring boot
Habr
RU

Я продал одно место на концерт 20 раз. Разбираемся, как правильно защититься от race condition в Spring Boot

Однажды я решил проверить на практике байку, которую слышал на десятке собеседований: “у нас на проде было такое-то место продано дважды, потому что…

javahibernatespring data jparedisoptimistic lockingpessimistic lockingrace conditionspring boot
Habr
RU

Дело о молчаливой JVM: мониторинг Spring Boot с Prometheus и Grafana. Production-нуар

Она умерла в воскресенье вечером, и никто не услышал ни звука. Детективная история о том, как поставить прослушку на собственное приложение: Prometh…

spring bootprometheusgrafanamicrometerмониторингметрикиsloalertmanagerjvmpromql
Habr
RU

[Перевод] Проблема фантомной записи: почему ваша реализация идемпотентности незаметно теряет данные

В проде бывает так, что одна и та же операция часто повторяется : клиент не дождался ответа и ретраит, балансер порвал соединение, очередь переиграл…

javakotlinspringspring bootspring frameworkspring-bootspring data
Habr