Go Runtime Finalizer и Keep Alive

Go Runtime Finalizer и Keep Alive

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

января 23, 2025 · 8 минут · German Gorelkin
Быстрый альтернативный способ выполнения операции взятия по модулю(остаток от деления)

Быстрый альтернативный способ выполнения операции взятия по модулю(остаток от деления)

Операция взятия по модулю применяется для ограничения значения хэш-функции размером массива. Это делает её полезной в хэш-таблицах для выбора соответствующего бакета или в циклических структурах данных, таких как ring-buffer. Так же в некоторых алгоритмах генерации псевдослучайных чисел операция взятия по модулю используется для ограничения диапазона значений....

января 20, 2025 · 7 минут · German Gorelkin
Как устроен map в go

Как устроен map в go

map — это встроенный тип данных, предназначенный для хранения пар ключ-значение. В отличие от массивов, где ключи являются возрастающими индексами, такими как 0, 1, 2 и так далее, в map ключ может представлять собой любой сопоставимого(comparable) тип....

января 7, 2025 · 11 минут · German Gorelkin
Weak Pointers в Go

Слабые Указатели в Go

Слабый указатель (weak pointer) — это указатель, который ссылается на участок памяти без его блокировки, позволяя сборщику мусора удалить этот участок, если больше никто не удерживает его активно....

января 2, 2025 · 5 минут · German Gorelkin
Go sync.Cond - самый недооцененный механизм синхронизации

Go sync.Cond - самый недооцененный механизм синхронизации

Когда горутина ожидает определённого события, например, изменения общих данных, она может «блокироваться», то есть приостанавливать свою работу до тех пор, пока не получит разрешение на продолжение....

декабря 15, 2024 · 15 минут · German Gorelkin
Go Production Performance Gotcha - GOMAXPROCS

Go Production Performance Gotcha - GOMAXPROCS

Переменная GOMAXPROCS ограничивает количество потоков операционной системы, которые могут одновременно выполнять user-level Go код. Количество потоков, которые могут быть заблокированы в системных вызовах от имени кода Go, не ограничено; они не учитываются в ограничении GOMAXPROCS...

декабря 10, 2024 · 4 минуты · German Gorelkin
Range по функциям в Go 1.23

Range по функциям в Go 1.23

В Go 1.23 добавлена новая возможность *ranging over functions* (итераторы)...

ноября 16, 2024 · 10 минут · German Gorelkin
Go sync.Pool и механика, лежащая в его основе

Go sync.Pool и механика, лежащая в его основе

sync.Pool - это место, где вы можете хранить временные объекты для последующего использования....

ноября 11, 2024 · 19 минут · German Gorelkin
Использование benchstat проекций в анализе Go бенчмарков

Использование benchstat проекций в анализе Go бенчмарков

В 2023 году benchstat был полностью переработан: появились проекции(projections), фильтрация и группировки, позволяющие проводить надежные сравнения по любому измерению, определяемому вашими суббенчмарками (они же «cases»)...

ноября 6, 2024 · 11 минут · German Gorelkin
Go sync.WaitGroup и Проблема выравнивания

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

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

октября 17, 2024 · 12 минут · German Gorelkin