Go

Модель памяти Go: happens-before и почему гонки — это не «иногда»

Модель памяти Go: happens-before и почему гонки — это не «иногда»

Что на самом деле гарантирует модель памяти Go: отношение happens-before, публикация данных через каналы, мьютексы и атомики, переупорядочивание операций и почему гонка данных делает программу некорректной — модель памяти перестаёт давать нужные гарантии, а не просто «изредка возвращает неверное значение»

Контекст в Go: отмена, дедлайны, values и анти-паттерны

Контекст в Go: отмена, дедлайны, values и анти-паттерны

context.Context — единый механизм отмены, дедлайнов и передачи request-scoped данных сквозь цепочку вызовов. Как отмена распространяется по дереву горутин, почему context идёт первым аргументом и не хранится в структуре, чем опасен WithValue и как не потерять отмену — на живом стенде

Тестирование в Go: table-driven, Testcontainers, -race

Тестирование в Go: table-driven, Testcontainers, -race

Практичное тестирование Go-сервиса: стандартный пакет testing и table-driven как фундамент, httptest для хендлеров, интеграционные тесты через testcontainers-go на реальных Postgres и Redis, детектор гонок -race и честное покрытие без самообмана — на одном сквозном стенде с живыми замерами

Как читать: дизассемблер и Plan 9-синтаксис

Как читать: дизассемблер и Plan 9-синтаксис

Как читать чужой Go-ассемблер: go tool objdump и -gcflags=-S, Plan 9-синтаксис (порядок операндов, суффиксы размера, псевдорегистры FP/SB/SP/PC) и разбор дизасма наивного dot product — доказательство того, что компилятор не векторизовал цикл

Конкурентность в Go: горутины, каналы и context без подводных камней

Конкурентность в Go: горутины, каналы и context без подводных камней

Как в Go на самом деле устроена конкурентность: дешёвые горутины и M:N-планировщик, каналы против мьютексов, context для отмены, рабочие паттерны (worker pool, fan-in/out, pipeline) и типичные подводные камни — гонки, утечки горутин и дедлоки