Многопоточность, асинхронность и мультипроцессинг в Python Многопоточность: одновременная работа нескольких потоков в рамках одного процесса. Потоки используют общую память и требуют сравнительно небольших ресурсов.…
Пример решения 10 CPU-bound и 10 IO-bound задач на Python CPU-bound-задачи: вычислительная нагрузка приходится на CPU, поэтому требуется распределение работы по ядрам IO-bound-задачи: выполнение замедляется из-за…
Как в Python создать генератор с помощью yield? функция Python с ключевым словом yield приостанавливает работу после возврата значения сохраняет своё состояние между вызовами формирует объект-генератор (итератор)…
Гарантии доставки сообщений в RabbitMQ в асинхронной модели RabbitMQ представляет собой брокер сообщений, поддерживающий надежную доставку Применяются гарантии at-most-once, at-least-once и условно exactly-once Для…
RabbitMQ — брокер сообщений, работающий по протоколу AMQP Продюсер публикует сообщения в exchange, который выполняет роль маршрутизатора Затем exchange передает сообщения в очередь согласно binding — правилам…
Redis представляет собой высокопроизводительное хранилище данных в формате ключ—значение Прямой поиск по значению не поддерживается, поскольку значения не индексируются Для такой задачи можно задействовать структуры…
персистентность — это гарантия сохранения данных на диске предусмотрено два основных механизма: RDB (Snapshotting): через заданные интервалы создаёт моментальные снимки состояния памяти и сохраняет их в компактные…
Как работает принцип внедрения зависимостей (Dependency Injection)? принцип SOLID, связанный с инверсией управления объект получает зависимости извне, а не создает их самостоятельно передача зависимостей выполняется…
аспектно-ориентированное программирование (AOP), управление транзакциями обозначает метод или класс для автоматического открытия, фиксации и отката транзакции при вызове метода Spring создаёт новую транзакцию либо…
Оба варианта блокировок доступны в Spring ORM через JPA Оптимистичный подход использует контроль версий: на сущность добавляется аннотация @Version Во время обновления версия сравнивается; при расхождении возникает…
Параллельное выполнение задач в асинхронном коде асинхронность в JS и Python (Node.js, asyncio) Promise.all / asyncio.gather — одновременно запускают задачи и ожидают завершения каждой из них запуск задач без await —…
Как в куче организована память объекта ссылочного типа? управление памятью объектов в куче объект представлен блоком памяти, в котором хранятся его данные каждый объект содержит метаданные, включая ссылку на тип в…