Полезные ссылки¶
Тематическая подборка — то, что реально стоит читать и смотреть. Каждая ссылка с короткой аннотацией и пометкой языка. Не заходи во всё подряд: бери, когда тема актуальна.
Старт¶
- Go Tour (официальный) — EN. Базовый интерактивный тур по синтаксису. Минимум, чтобы понять как пишется Go.
- Ardan Tour of Go — EN. Улучшенный тур с акцентом на Language Mechanics и интерфейсы. Лучше официального.
- proglib — самоучитель по Go, часть 1 — RU. Установка, настройка, особенности языка.
- proglib — самоучитель, часть 10 (ООП) — RU. Как устроено ООП в Go: embedding, интерфейсы, полиморфизм через duck-typing.
- Oh Shit, Git!?! — RU. Шпаргалка «как откатить фигню в git». Пригодится в первый же день.
- Learn Git Branching — RU. Интерактивный визуальный тренажёр по веткам. Понять rebase/merge за час.
Видео по темам¶
Слайсы¶
- Slices в Go под капотом — RU. Header (ptr/len/cap), shared backing array, append.
Мапы¶
- Map в Go под капотом, часть 1 — RU. Bucket'ы, hashing, итерация.
- Map в Go под капотом, часть 2 — RU. Эвакуация (incremental rehash), concurrent writes.
Каналы и горутины¶
- Каналы в Go — RU. Buffered vs unbuffered, close, select.
- Горутины и каналы — практика — RU. Pipeline, fan-in/fan-out.
- Многопоточка в Go (плейлист) — RU. Развёрнутый курс по конкурентности.
Планировщик Go (G/M/P)¶
- Go scheduler — как работает — RU.
- Go scheduler в деталях, часть 2 — RU.
- Преемптивность и системные вызовы — RU.
- Внутренности рантайма — RU.
- Хабр — Планировщик Go (статья 1) — RU. M:N scheduling, work stealing.
- Хабр — Планировщик Go (статья 2) — RU.
- Хабр — Планировщик Go (свежая статья) — RU.
Garbage Collector¶
- GC в Go — обзор — RU.
- GC в Go — детали алгоритма — RU.
- GC в Go — практика и тюнинг — RU.
- Хабр (Avito) — GC Go под нагрузкой — RU.
- Исходник mgc.go — EN. Tri-color mark & sweep, write barrier.
Аллокатор памяти¶
- Memory allocator в Go — RU. mcache → mcentral → mheap, size classes.
Outbox pattern (важно)¶
- Outbox pattern — как и зачем — RU. Атомарность INSERT + publish в Kafka через одну транзакцию.
Go runtime¶
- Внутренности Go runtime — RU.
- База по собесам — что спрашивают — RU. Обзор частых вопросов.
Practical Go (Dave Cheney)¶
- Practical Go: Real World Advice (PDF) — EN. Идиомы, naming, error handling.
Хабр-статьи¶
- Golang база (Nixys) — RU. Базовое введение в язык.
- Работа с ошибками в Go (VK) — RU. errors.Is, errors.As, wrapping, паттерны.
- Table-driven tests (Go wiki) — EN. Каноничный шаблон тестов в Go.
- Уровни изоляции в БД — RU. Read Committed, Repeatable Read, Serializable — что от чего защищает.
- sync.Map — как устроена — RU. Read map
- dirty map, когда выбирать вместо
map+Mutex. - Базы данных — что спросят на собесе (VK) — RU. Индексы, нормализация, репликация.
- Базы данных — видео — RU. Тот же материал в видео-формате.
Брокеры сообщений¶
- Брокеры — обзор и сравнение — RU. Kafka vs RabbitMQ vs NATS.
- Kafka — внутренности — RU. Partition, offset, consumer group.
- RabbitMQ — exchange types — RU.
- Гарантии доставки — RU. At-most-once / at-least-once / exactly-once.
- Идемпотентность consumer'а — RU.
- Брокеры на собесе — RU.
- Сценарии использования брокеров — RU.
Микросервисы¶
- microservices.io — каталог паттернов — EN. Канонический справочник: Saga, CQRS, API Gateway, Sidecar — с описанием и tradeoff'ами.
Docker¶
- Karpov.Courses — Docker (бесплатный) — RU. Базовый курс: образы, контейнеры, сети, compose.
Алгоритмы¶
- Два указателя + хэш-мапа — RU. Разбор паттерна на простых задачах с LeetCode.
📝 Подумай¶
- Какие три ссылки выберешь читать первыми, если у тебя 4 часа в неделю и ты только что начал Sprint 1?
- По какому критерию ты решил бы открыть статью про GC: «надо знать на собес» или «упёрся в проблему в проде»?
Ответ
- Если только что начал — Ardan Tour of Go (Language Mechanics), самоучитель proglib часть 10 (ООП), и Oh Shit Git. Этого достаточно, чтобы писать код в Sprint 0 и не запутаться в git'е. GC, scheduler, allocator — потом, когда будет время и контекст.
- Оба валидны, но «упёрся в проблему» даёт в 10 раз более глубокое понимание. Знания «впрок» забываются за неделю. Если же ты увидел в проде GC pause 200ms — статья про tri-color mark&sweep врежется в память навсегда.