💻 Карта сайта - Golang
-
1. Goroutine vs Thread • 2. Channels — безопасный обмен данными • 3. Unbuffered vs Buffered Channels • 4. Select — ожидание нескольких каналов • 5. Timeout / Deadline • Сравнение Go и Java по основам параллельности • Контекст для отмены и таймаутов: `context.Context` vs Java • Пример на Go • Как это решается в Java • Советы и нюансы • Сложные кейсы повышенной сложности • 1. Worker Pool (пул воркеров) • 2. Fan-In / Fan-Out • 3. Timeout / Отмена цепочки задач • Итог
-
Object Allocation — Выделение объектов • Stack — Стек вызовов и локальные переменные • Heap — Куча • Allocation Patterns (Шаблоны выделения памяти) • Object Lifetime Optimization (Оптимизация времени жизни объектов) • Cache Locality (Локальность кэша) • CPU Cache Line • False Sharing • Backpressure через Channels • Вывод
-
atomic.CompareAndSwap • stack vs heap escape • sync.Pool • goroutine stack splitting • memory consistency model • scheduler preemption • unsafe basics • cache locality • allocation cost optimization • runtime.Gosched • runtime.LockOSThread • runtime.GC • High-Concurrency Patterns • GMP Scheduler Model • Вывод / Итог
-
Build Tags • Dead Code Elimination (Удаление неиспользуемого кода) • Package Init Order (Порядок инициализации пакетов) • Linker Behavior • Go Vet • Go Test -bench • Go Tool PProf • Go Tool Trace • Escape Analysis Flags • Общая логика сравнения: как думать про Go ↔ Java • Общая таблица сравнения терминов • Общие схемы и ментальные модели • Практический итог
-
Runtime Scheduler (Планировщик выполнения) • Memory Barriers (Барьеры памяти) • Memory Alignment (Выравнивание памяти) • Stack Growth / Shrinkage (Рост и уменьшение стека) • Memory Fragmentation (Фрагментация памяти) • Allocation Hotspot (Горячие точки аллокации) • mcache / mcentral / mheap (Архитектура аллокатора Go) • Stack Overflow Handling (Обработка переполнения стека) • Span (mspan в Go allocator) • Page (Страница памяти) • Итог
-
unsafe.Pointer • Struct field alignment (выравнивание полей) • Pointer arithmetic (арифметика указателей) • Zero-copy techniques • iota • Interface internals (itab, dynamic dispatch) • runtime.SetFinalizer • runtime.KeepAlive • Обзор тем • Ключевые различия философии Go ↔ Java • Сравнительная таблица всех терминов • Как выбирать подход (Go vs Java) • Итог
Полезные статьи:
Если вы Java-разработчик, привыкший к потокам и ExecutorService, Go предлагает более лёгкий и удобный подход к параллельной обработке — goroutine и каналы. В этой статье мы разберём ключевые концепции...
В этой статье мы собрали ключевые low-level механизмы Go, которые чаще всего вызывают вопросы у разработчиков, приходящих из Java. Мы рассмотрим: unsafe.Pointer, выравнивание структур, арифметику указ...
← Часть 2 — Синхронизация и безопасность в Go В этой части мы рассмотрим практические паттерны параллельной обработки задач: worker pool, pipeline pattern и схемы сборки результатов. Эти паттерн...
Новые статьи:
Конкурентность — это не про «запустить много потоков». Это про договорённости между ними. Представь кухню ресторана: — повара (потоки / горутины) — заказы (задачи) — и главный вопрос: как они коорди...
История начинается не с академической теории, а с типичной production-проблемы. Представьте сервис: 48 CPU 300+ потоков нагрузка 200k операций в секунду много shared state Команда использует обы...
Представьте обычный продакшн-сервис. 32 CPU сотни потоков кэш конфигурации / сессий / rate limits десятки тысяч операций в секунду И где-то внутри — обычный Map. Сначала всё выглядит безобидно. Map&...