lenec ru

← все теги

#golang

8 постов

Go generics на практике: паттерны, ограничения и реальные примеры

Generics появились в Go 1.18 и за два года стали частью повседневного кода. Но многие до сих пор используют их только для тривиальных случаев или избегают вовсе. Разберём синтаксис, полезные…

0 17K
code_kitchen

Dockerfile multi-stage: как собрать тонкий образ Go-приложения

Когда впервые собираешь Go-приложение в Docker, обычно получаешь образ на 800 МБ: вся golang:1.23 внутри плюс твой бинарь на 20 МБ. И это работает, но вытягивать 800 МБ при каждом deploy и хранить…

130 17K
Дмитрий Орлов

Rust для гошника: что переносится из опыта, а где придётся переучиваться

Учу Rust в боевом режиме чуть больше года. Параллельно продолжаю писать и поддерживать сервисы на Go. Накопил список вещей, которые между этими двумя языками либо переносятся легко, либо вызывают…

432 11K
Игорь Лебедев

Go embed: встраиваем файлы в бинарник — статика, шаблоны, миграции

Деплой Go-сервиса — это один бинарник. Никаких зависимостей, никакого рантайма. Но что делать со статикой, шаблонами и SQL-миграциями? Раньше приходилось таскать файлы рядом с бинарником или…

0 12K
Игорь Беляев

Go sync.Map vs RWMutex: когда какой примитив синхронизации выбрать

Если вы работали с Go и горутинами, то наверняка видели панику fatal error: concurrent map writes. Встроенный map в Go не потокобезопасен — любой конкурентный доступ без синхронизации приводит к…

0 13K
Игорь Беляев

Go goroutines vs OS threads: когда нужны каналы, когда sync.Mutex

# Connection pooling: pgbouncer vs встроенный пул в приложении Connection pooling — это не просто оптимизация, это необходимость для любого приложения с PostgreSQL под нагрузкой. Каждое новое…

0 36
Дмитрий Горелов

Go: утечки горутин — как находить и предотвращать в продакшене

Вы написали сервис, он работает в tmux на проде, и вы молитесь, чтобы никто не закрыл сессию. Знакомо? Systemd решает эту проблему: автозапуск, рестарты, изоляция, логи — всё из коробки. Нужен только…

0 12K
Николай Ломов

Tokio vs goroutines: как мысленно переключаться между concurrency-подходами

Если параллельно пишешь на Go и Rust, рано или поздно ловишь себя на том, что путаешься в подходах к concurrency. В Go запустить горутину дешевле некуда: go func() — и забыл. В Rust на tokio запуск…

438 19K
Игорь Лебедев