В чём init() отличается от new()? new — создаёт экземпляр класса и вызывается первым init — инициализирует уже созданный объект new — статический метод, который возвращает новый экземпляр init — обычный метод,…
Разница между defer, panic и recover в Go defer — отложенный вызов функции: она выполняется при выходе из текущей функции и обычно используется для освобождения ресурсов panic — прерывание обычного выполнения…
Различия горизонтального и вертикального масштабирования масштабирование — наращивание ресурсов системы для увеличения производительности вертикальное (scale-up): расширение CPU, RAM и дискового пространства одного…
управление памятью в языках со сборкой мусора (Java, C#) сильная ссылка — пока ссылка существует, объект остаётся живым слабая ссылка — не мешает сборщику мусора удалить объект сильные ссылки приводят к удержанию…
распределённая платформа для потоковой передачи сообщений Kafka использует модель доставки "at least once" обеспечивает запись в логи партиций с последующей репликацией при сбоях или повторной обработке возможны…
позднее статическое связывание представляет собой отложенное до компиляции разрешение вызова функции с учётом конкретного статического типа. Его применяют в шаблонах и для оптимизации полиморфизма времени компиляции.
Зачем закрывать тело HTTP-ответа в Go? Тело HTTP-ответа представляет собой поток данных (io.ReadCloser) Вызов Close освобождает сетевые ресурсы и дескрипторы Если не закрыть тело, возможны утечки памяти и зависшие…
Repository в Laravel: зачем и когда он нужен? паттерн архитектуры для организации доступа к данным скрывает детали работы с ORM (Eloquent) и иными источниками данных делает тестирование удобнее благодаря мокированию…
Зачем нужна consumer group в Kafka? Kafka представляет собой распределённую систему обмена сообщениями. Consumer group — объединение потребителей, совместно считывающих данные из топика. Внутри группы каждый partition…
DDD и гексагональная архитектура DDD (Domain-Driven Design) — метод разработки, в основе которого лежит глубокое понимание предметной области Важный принцип DDD — выделить ядро домена, содержащее бизнес-логику, и…
Различия Kafka и RabbitMQ в гарантированной доставке сообщений Kafka представляет собой распределённый commit log, в котором сообщения хранятся постоянно Данные попадают в топики, разделённые на partitions, благодаря…
Каким образом Kafka обеспечивает отказоустойчивость за счёт репликации и кластеризации? распределённый кластер брокеров, обеспечивающий масштабирование и отказоустойчивость данные распределяются по партициям, для…