Как работает CAS внутри Atomic-классов CAS — это низкоуровневый механизм атомарного обновления значения в памяти Он сопоставляет текущее значение с ожидаемым (compare) При совпадении значение заменяется новым (swap)…
ORM для Go: основные варианты и преимущества к популярным ORM относятся GORM, Ent, SQLBoiler, XORM и Pop GORM: широкий набор возможностей, удобные миграции, работа со связями и большое сообщество Ent: создание…
Антипаттерны аварийного завершения программы Exit внутри глубоко расположенного кода — неожиданный вызов exit/abort из функций Пропуск обработки ошибок — отсутствие реакции на ошибки при критическом fail-fast…
Архитектурные паттерны для Android на Kotlin Android — разработка мобильных приложений MVVM: Model, View и ViewModel разделены, а их взаимодействие связывается через LiveData/StateFlow MVP: Presenter содержит логику и…
Уровни изоляции транзакций: принцип работы область: базы данных, управление транзакциями цель: контроль конкурентного доступа и защита от аномалий уровни определены стандартом SQL ANSI: Read Uncommitted
Виды сильных и слабых ссылок в JVM и сценарии их применения Сильные ссылки (Strong references) обычный, классический механизм ссылок в Java пока существует сильная ссылка, сборщик мусора не удаляет объект по умолчанию…
Механизмы синхронизации в корутинах Корутинa в Go — это легковесный поток, однако при обращении к общим ресурсам ей необходима синхронизация Mutex обеспечивает взаимное исключение: он блокирует участок кода и не…
Операторы обработки ошибок во Flow Flow представляет собой статический типизатор для JavaScript и не содержит традиционных операторов обработки исключений. Flow обнаруживает ошибки во время статического анализа, а не…
Сравнение микросервисной архитектуры и монолита: преимущества и недостатки Микросервисы представляют собой небольшие независимые сервисы, тогда как монолит является единым приложением. Отдельные микросервисы можно…
Типы баз данных по модели данных: реляционные, NoSQL реляционные используют таблицы, SQL и ACID NoSQL представлены колоночными, документными, графовыми моделями и хранилищами ключ-значение реляционные БД отличаются…
gRPC — фреймворк для удалённых процедурных вызовов Unary RPC: один запрос и один ответ Server streaming RPC: один запрос и поток ответов Client streaming RPC: поток запросов и один ответ Bidirectional streaming RPC:…
Какими способами можно создать Flow? Flow представляет собой типизированный поток данных (JS/типизация) Автоматическая типизация задаётся через аннотации (// @flow, type, interface) Для ленивых вычислений применяют…