Как выполнить «инверсию» зависимости между микросервисами? Сервис A обращается к сервису B напрямую, поэтому между ними возникает жесткая связь — tight coupling Инверсия зависимости достигается за счет асинхронного…
Как индексы влияют на производительность Индекс представляет собой структуру данных, предназначенную для ускорения поиска в БД С его помощью строки находятся без полного просмотра таблицы (избегают full table scan)…
Обмен данными выполняется по асинхронному протоколу Для передачи используются очереди (queue) либо топики (publish-subscribe) Микросервисы отправляют сообщения в брокер и подписываются на нужные события Поддерживаются…
Как применять Optional вместо проверок на null? Optional представляет собой контейнер, в котором может находиться значение либо пустота Он применяется вместо null, помогая предотвращать NPE Основные методы:…
Как Redis используется для кэширования данных? Redis представляет собой in-memory key-value хранилище предоставляет микросекундный доступ к данным поддерживает TTL, автоматически удаляя кэш по истечении срока…
Как исправить использование CountDownLatch с неатомарным счётчиком? проблема: счётчик не является атомарным, поэтому возникают состояния гонки решение 1: использовать AtomicInteger вместо обычного счётчика (если это…
SQL-запрос и выборка данных чем больше полей, тем больше данных передаётся: растёт объём в байтах и сетевой трафик увеличение числа полей повышает нагрузку на I/O и сеть сложные типы данных, например LOB и TEXT, могут…
Контейнеризация Java-приложений с помощью Docker Docker представляет собой платформу для изоляции приложений внутри контейнеров Сначала создают Dockerfile, в котором выбирают базовый образ, как правило openjdk В…
Java-коллекции, в том числе HashMap, используют hashCode() для ускорения поиска Правило контракта таково: при результате equals() true метод hashCode() обязан возвращать одинаковое значение Если правило нарушено,…
Как с помощью Spring Boot Actuator контролировать работоспособность приложения? Spring Boot Actuator — инструмент мониторинга Spring Boot открывает доступ к профилям, метрикам и состоянию здоровья приложения через…
Как логируют ошибки и исключения в Celery? контекст: логирование задач Celery применяется стандартный модуль Python logging Celery создает собственный логгер с именем celery для записи ошибок используются методы…
Как IQueryable<T> преобразует лямбда-выражения в SQL IQueryable<T> предназначен для формирования запросов к удалённому источнику данных, например к базе данных. В этом случае лямбда-выражения представлены как…