GraphLMS

Go
0/32 решеноНачать

Учебник по Go, который проверяется кодом.

Каждая глава заканчивается задачей, а задача — прогоном через go test -race. Теория, практика и эталонный разбор — без воды. Сейчас в фокусе: конкурентность — горутины, каналы, sync, context.

32
задач
10
глав
7
топиков
0/32
решено
GraphLMS — 25 · Пул с ограничением параллелизмаPASS · 1.84s
Топик 07 · Воркер-пулы
23Простой воркер-пул
24Пул с результатами
25Пул с ограничением
26Конвейер из 3 стадий
27Graceful shutdown
28Динамическое масштабир.
pool.go
1func WorkerPool(jobs []int, limit int,2    fn func(int) int) []int {3    res := make([]int, len(jobs))4    sem := make(chan struct{}, limit)5    var wg sync.WaitGroup6    for i, j := range jobs {7        wg.Add(1)8        sem <- struct{}{}9        go func(i, j int) {10            defer wg.Done()11            defer func() { <-sem }()12            res[i] = fn(j)13        }(i, j)14    }15    wg.Wait(); return res16}
УсловиеТеорияРешение
Ограничение параллелизма

Счётный семафор на буферизованном канале. Ёмкость = максимум одновременных горутин: запись блокируется, когда слотов нет.

Захватывай i, j параметрами горутины — иначе гонка.
--- PASS: TestWorkerPool (0.42s)
ok  concurrency/workerpool 1.84s
01

Как работает тренажёр по Go

читай
Теория к задаче

Идиомы, грабли и подсказки — без спойлера ответа.

решай
Код в редакторе

Monaco с подсветкой Go, по готовой сигнатуре функции.

прогоняй
go test -race

Настоящий прогон в песочнице. Вердикт и полный вывод.

разбирай
Эталонный разбор

Решение по шагам, альтернативы и вопросы интервьюера.

02

Программа курса по Go · 7 топиков · 32 задач

все задачи
03

Что внутри курса по конкурентности Go

// sandbox
Реальные go test -race

Код исполняется в изолированной песочнице с детектором гонок. Видишь PASS/FAIL, упавшие проверки и полный вывод — как в настоящем CI.

// editor
Песочница-редактор

Monaco с подсветкой Go и номерами строк. Хоткей ⌘↵ запускает тесты, не отрывая рук от клавиатуры.

// theory
Теория до и после

Перед задачей — идиомы и грабли без спойлеров. После прохождения открывается эталонный разбор и follow-up вопросы интервьюера.

// progress
Прогресс без регистрации

Решённые задачи и последний код хранятся локально. Аккаунт и синхронизация — когда понадобятся, без обязательного входа.

04

Учебник по конкурентности Go

10 глав-основ по конкурентности

Горутины, модель памяти, каналы, select, sync, atomic, context, паттерны, утечки и гонки, планировщик. Линейное чтение с перекрёстными ссылками на задачи тренажёра.

Читать учебник