Таймауты и ретраи во взаимодействии микросервисов сетевые запросы выполняются с ограниченным временем ожидания таймауты не позволяют запросам зависать надолго экспоненциальная задержка между ретраями уменьшает…
базовый подход к объектно-ориентированному проектированию название пяти принципов: S (Single Responsibility) — у класса должна быть только одна ответственность O (Open/Closed) — класс открыт для расширения, но закрыт…
массив имеет фиксированный размер, поэтому его очищают перезаписью элементов нулевыми значениями слайс — динамическая структура, которая ссылается на массив сбросить длину: slice = slice[:0] — элементы логически…
Рефакторинг: изменение имени поля в таблице БД проанализировать зависимости: найти использование поля в приложении и базе данных — в запросах, индексах и триггерах подготовить миграцию: создать скрипт изменения схемы…
Основные рекомендации по переопределению equals и hashCode для entity Методы equals и hashCode обязаны соответствовать общему контракту: если equals возвращает true, значения hashCode должны совпадать сравнивать…
Как применять JOIN, GROUP BY и HAVING в SQL JOIN: связывает строки двух или нескольких таблиц по общему ключу; доступны варианты INNER, LEFT, RIGHT и FULL GROUP BY: объединяет строки в группы по заданным столбцам для…
Область: отказоустойчивость, устойчивость системы и интеграция email Организовать циклические попытки с заранее установленным максимальным числом повторов Использовать экспоненциальный бэкофф, постепенно увеличивая…
безопасность: дополнительный уровень проверки личности пользователя 1-й фактор: обычный пароль — то, что пользователь знает 2-й фактор: предмет или устройство во владении пользователя — телефон, токен варианты второго…
Паттерн, обеспечивающий наличие только одного экземпляра класса Для хранения объекта применяется статическая переменная Закрытый или приватный конструктор не позволяет создавать объект напрямую Метод доступа…
Как правильно сделать класс иммутабельным? не использовать сеттеры и методы, изменяющие состояние объявить все поля как final или константы выполнять инициализацию полей только в конструкторе клонировать ссылки на…
Как сопоставлять доменные ошибки с HTTP-кодами? Доменная ошибка описывает бизнес-логику, а HTTP-код относится к протоколу 400 (Bad Request): ошибки валидации и некорректные входные параметры 404 (Not Found):…
Область: обработка ошибок, backend, REST API Для этого применяют глобальные обработчики исключений, например @ControllerAdvice в Spring. Обработка ошибок выносится за пределы контроллеров, благодаря чему соблюдается…