Go sync.WaitGroup и Проблема выравнивания

Go sync.WaitGroup и Проблема выравнивания

WaitGroup - это способ подождать, пока несколько горутин закончат свою работу. Мы начнем с основ, а затем разберемся, как это устроено под капотом....

октября 17, 2024 · 12 минут · German Gorelkin
Go sync.Mutex. Normal и Starvation Mode

Go sync.Mutex. Normal и Starvation Mode

Mutex, или MUTual EXclusion, в Go - это способ убедиться, что только одна горутина одновременно работает с общим ресурсом. Этим ресурсом может быть кусок кода, целое число, map, структура, канал или практически все, что угодно....

октября 13, 2024 · 8 минут · German Gorelkin
Go Profilers

Go Профилировщики

Обзор профилировщиков, встроенных в среду выполнения Go: CPU Profiler, Memory Profiler, Block Profiler и Mutex Profiler....

октября 7, 2024 · 15 минут · German Gorelkin
Ментальная модель языка Go

Ментальная модель языка Go

Основная задача Go - мультиплексировать и абстрагировать аппаратные ресурсы, подобно операционной системе. Для этого обычно используются две основные абстракции: Планировщик Goroutine(Goroutine Scheduler) и Сборщик мусора(Garbage Collector)...

сентября 18, 2024 · 5 минут · German Gorelkin
Сравнение производительности с пакетом unique

Сравнение производительности с пакетом unique

Interning - это процесс хранения в памяти только одной копии значения и совместного использования уникальной ссылки на нее вместо аллокации нескольких копий и траты памяти....

сентября 6, 2024 · 2 минуты · German Gorelkin
Реализация interning в Go

Реализация interning в Go

В стандартную библиотеку Go 1.23 добавили новых пакет unique. Цель этого пакета - позволить канонизировать сравниваемые(comparable) значения. Другими словами, этот пакет позволяет вам убрать дубли значений так, чтобы они указывали на единственную, каноническую, уникальную копию, при этом эффективно управляя каноническими копиями под капотом. Возможно, вы уже знакомы с этой концепцией, которая называется “interning”....

августа 31, 2024 · 6 минут · German Gorelkin
Измерение производительности системы с помощью программного обеспечения

Измерение производительности системы с помощью программного обеспечения

Разрабатывая программы, мы работаем над абстракцией системы. Оборудование может не знать о ваших функциях, переменных и данных. Оно может видеть только биты и инструкции. И все же, чтобы писать эффективные программы, программист должен знать характеристики базовой системы. К счастью, мы можем использовать и само программное обеспечение, чтобы наблюдать за поведением системы с помощью экспериментов....

июня 11, 2024 · 33 минуты · German Gorelkin
Надежные дженерик функции для слайсов

Надежные дженерик функции для слайсов

Пакет slices предоставляет функции, которые работают со слайсами любого типа. В этой статье мы обсудим, как можно использовать эти функции более эффективно, понимая, как слайсы представлены в памяти и как это влияет на сборщик мусора, а также расскажем, как мы недавно скорректировали эти функции, чтобы сделать их более предсказуемыми....

марта 25, 2024 · 5 минут · German Gorelkin
Algebraic Data Types

Алгебраические Типы Данных

Сделаем из простых типов другие, составные и более сложные. Это и будут алгебраические типы данных....

июля 27, 2022 · 4 минуты · German Gorelkin
go-patterns-circuit-breaker

Go Patterns. Circuit Breaker

Circuit Breaker предотвращает попытки приложения выполнить операцию, которая скорее всего завершится неудачно, что позволяет продолжить работу дальше не тратя важные ресурсы, пока известно, что проблема не устранена....

июля 14, 2020 · 7 минут · German Gorelkin