масштабирование: горизонтальное (добавление серверов) и вертикальное (наращивание ресурсов) балансировщик нагрузки (load balancer), который направляет запросы на доступные инстансы с учётом health checks и выбранных…
Индекс — это структура данных, предназначенная для ускорения поиска в БД На практике его часто строят на основе B-дерева или B+-дерева B-дерево сохраняет балансировку и обеспечивает логарифмическую сложность поиска…
Реализация аккордеона с бесконечной вложенностью и оптимизация рендеринга структура: каждый узел представлен рекурсивным компонентом, который получает массив дочерних элементов управление: состояние раскрытия можно…
Реализация офлайн-приложений и кэширования с помощью Service Workers Service Worker — фоновый скрипт, расположенный между приложением и сетью Он перехватывает запросы и выполняет программное кэширование с…
Оптимизация отчёта о наличии книг в магазинах при проблеме N+1 проблема N+1 приводит к лишним обращениям к БД один основной запрос получает книги, после чего для каждой книги выполняется отдельный запрос о наличии…
Как связаны точки и пиксели и как рассчитать масштаб устройства? точки (points) — логические единицы для измерения интерфейса пиксели (pixels) — физические элементы экрана scale = pixels / points — коэффициент…
DispatchGroup — инструмент GCD для объединения асинхронных задач Перед запуском каждого запроса создаём DispatchGroup и вызываем enter() После завершения очередного запроса вызываем leave() С помощью notify() получаем…
Оптимизация производительности при работе с 50 спрайтами и их анимацией Пятьдесят спрайтов создают заметную нагрузку на GPU и CPU, поскольку требуют отрисовки и последующей композиции Для статичных спрайтов стоит…
Optional представляет собой контейнер, который может содержать значение или nil Собственный аналог Optional можно описать через enum с вариантами .some и .none Вложенный Optional, например Int???, — это Optional,…
Проектирование gRPC API с сохранением backward compatibility gRPC API описывается с помощью Protocol Buffers (proto) Не удаляйте существующие поля — добавляйте новые, назначая им уникальные номера для расширения схемы…
Анализ требований: пропускная способность, время отклика и возможности масштабирования Выбор модели БД: SQL с шардированием либо NoSQL для горизонтального масштабирования Применение кэширования (Redis/Memcached),…