Месяц Январь 2024

Использование Entity Graph в Java

Entity Graph позволяет определить, как JPA должен загружать связи при запросе определенной сущности. Это позволяет разработчикам указывать, какие связанные объекты следует загружать быстро, а какие — лениво. Entity Graph можно определить с помощью аннотации @NamedEntityGraph в классе сущностей. Эта аннотация…

Webflux горячий и холодный паблишеры

В Spring WebFlux холодный паблишер можно реализовать с помощью класса Flux, а горячий – с помощью класса ConnectableFlux. Вот пример того, как реализовать холодный паблишер с помощью Flux: В этом примере мы возвращаем Flux, который генерирует список строк. Поскольку это…

Основные понятия Spring Webflux

Spring WebFlux — это реактивный веб-фреймворк, являющийся частью экосистемы Spring. Он позволяет разработчикам создавать приложения, управляемые событиями, которые могут обрабатывать большое количество одновременных запросов с низким потреблением ресурсов. Преимущества использования Spring WebFlux – производительность, масштабируемость и скорость реагирования благодаря его…

Основные понятия микросервисной архитектуры

Микросервисная архитектура — это архитектурный стиль, структурирующий приложение как набор небольших автономных сервисов, каждый из которых работает в своем собственном процессе и взаимодействует с другими сервисами через API. Преимущества использования микросервисной архитектуры включают в себя: Недостатки микросервисной архитектуры: Применительно к…

Kubernetes основные понятия

Kubernetes – это платформа оркестрации контейнеров с открытым исходным кодом, которая автоматизирует развертывание, масштабирование и управление контейнерными приложениями. Преимущества использования Kubernetes – масштабируемость, доступность и отказоустойчивость приложений. Это также позволяет упростить развертывание и управление контейнерными приложениями в нескольких средах. Pod…

Fail-safe и fail-fast коллекции в Java

Fail-safe и fail-fast являются двумя различными подходами к обработке изменений в коллекциях в Java. Fail-safe означает, что коллекция может безопасно изменяться (добавлять, удалять элементы) во время итерации. Это достигается путем создания копии коллекции и итерации по этой копии, а не…

Управление взаимодействием между сервисами: оркестрация и хореография

Оркестрация и хореография — это два разных подхода к управлению взаимодействием между сервисами в распределенной системе. Оркестрация относится к централизованному подходу, при котором один компонент (обычно планировщик или оркестратор) отвечает за координацию и управление взаимодействием между сервисами. В этой модели…

Методы equals() и hashcode() в Java

В Java, класс Object является базовым классом для всех остальных классов, и он содержит два важных метода: equals() и hashCode(). Метод equals() используется для сравнения двух объектов на равенство. По умолчанию, метод equals() в классе Object сравнивает объекты по ссылке…

Mockito отличие Spy и Mock

Mockito — это популярная платформа для создания заглушек в Java, которая позволяет разработчикам создавать моки объектов и методы-заглушки для целей тестирования. Mockito предоставляет два основных типа объектов для тестирования: Mock и Spy. Мок-объект — это фиктивный объект, созданный для имитации…

Как устроена JVM

JVM означает виртуальная машина Java и является неотъемлемой частью платформы Java. Она отвечает за выполнение байт-кода Java, который представляет собой скомпилированную версию исходного кода Java.Когда вы запускаете программу Java, исходный код сначала компилируется в байт-код с помощью компилятора Java. Этот…

Взаимодействие JVM с ядром Операционной Системы

JVM взаимодействует с ядром системы несколькими способами, в зависимости от конкретной операционной системы и аппаратной архитектуры. В общем, JVM полагается на операционную систему для предоставления определенных низкоуровневых услуг, таких как управление памятью и планирование потоков. На высоком уровне JVM взаимодействует…

Взаимодействие потоков и процессов с JVM и Операционной Системой

В JVM потоки и процессы управляются с помощью Java Thread API. JVM предоставляет планировщик потоков, который управляет выполнением нескольких потоков в одном процессе. Каждый поток имеет собственный стек вызовов и счетчик программ, что позволяет ему выполнять код независимо от других…

EXPLAIN и ANALYZE в SQL

EXPLAIN используется для отображения плана выполнения запроса без его фактического выполнения. Он предоставляет информацию о том, как ядро базы данных планирует выполнить запрос, включая порядок доступа к таблицам, тип используемого соединения и индексы, которые будут использоваться. ANALYZE, с другой стороны,…

Пошаговый план изучения программирования

Довольно часто меня спрашивают с чего начать свою карьеру программиста. Как правило у желающих, как было и у меня в 2017, нет желания или возможности наверстать упущенное обучаясь в университете. Программу за упущенные 5 лет наверстать будет непросто, предлагаю подумать…

Что из себя представляет и зачем нужен протокол DHCP

DHCP (протокол динамической конфигурации хоста) — это сетевой протокол, используемый для автоматического назначения IP-адресов и других параметров конфигурации сети устройствам в сети. Когда устройство подключается к сети, использующей DHCP, оно отправляет широковещательное сообщение с запросом IP-адреса. DHCP-сервер в сети получает…

Использование git cherry-pick

git cherry-pick — это команда, которая позволяет вам применить конкретный коммит из одной ветки в другую. Это может быть полезно, если вы хотите применить исправление ошибки или функцию из одной ветки в другую, не объединяя всю ветку. Чтобы использовать Cherry-Pick,…

Уровни изоляции транзакций

Уровни изоляции — это концепция систем управления базами данных, которая определяет, как транзакции взаимодействуют друг с другом. Транзакции — это набор операций, которые выполняются как единая единица работы, а уровни изоляции определяют, как одновременным транзакциям разрешен доступ к данным в…