Перейти к содержимому

Поиск по платформе

Все пути
Путь golang Intermediate 5 модулей 23 шага (16 теор · 2 лаб · 5 квиз) ~3 ч 5 мин

Go Race Conditions: от горутин до инвариантов БД

Путь разделяет гонки данных в памяти Go, логические TOCTOU и аномалии БД. Вы воспроизведёте многократное начисление одноразового промокода и lost update при параллельных покупках, затем построите полные атомарные границы, оцените, выберете и обоснуете proof-план для нескольких pod, retry и сбоев и подберёте доказательный тест для каждого класса гонки.

01

Модуль 1: Горутины, память и классы гонок

Отличаем конфликтующие доступы к памяти Go от логических и DB-гонок.

0/3~13 мин
02

Модуль 2: Logical TOCTOU — одноразовый промокод

Разбираем, как параллельные запросы многократно начисляют бонус по одному промокоду, и связываем marker и credit одной транзакцией.

0/5~1 ч 3 мин
  • 1
    1. Механика: TOCTOU (Time-of-Check Time-of-Use)
    ~5 мин
  • 2
    2. Последствия: двойное расходование и обход лимитов
    ~5 мин
  • EXP FIX
    3. Практика — многократное начисление одноразового промокода
    medium ~45 мин
  • 4
    4. Защита: Mutex, Atomic и каналы в Go
    ~5 мин
  • 5
    5. Тест: Logical TOCTOU — одноразовый промокод
    ~3 мин
03

Модуль 3: Database race — lost update при покупке

Сопоставляем Read → Check → stale absolute Write из практики с отдельным дефектом относительного UPDATE и строим атомарную транзакцию debit+order.

0/5~1 ч 3 мин
04

Модуль 4: Детекторы и межпроцессные гарантии

Используем Go Race Detector только для исполненных memory accesses, затем разбираем multi-pod locking, fencing и durable idempotency.

0/6~28 мин
05

Модуль 5: Синтез и перенос

Собираем таксономию, чек-лист и доказательные проверки, затем переносим их на незнакомый reservation/outbox-сценарий с бизнес-инвариантом и отказами.

0/4~18 мин финальный