Как эффективнее использовать память в Go? управление памятью при работе горутин и стека: Go применяет динамический стек, благодаря чему уменьшаются накладные расходы эффективное использование срезов и массивов:…
массив имеет фиксированный размер, поэтому его очищают перезаписью элементов нулевыми значениями слайс — динамическая структура, которая ссылается на массив сбросить длину: slice = slice[:0] — элементы логически…
Как работает секционирование таблиц (table partitioning) в PostgreSQL? большая таблица разделяется на отдельные части — партиции каждая партиция представляет собой таблицу с собственным условием отбора, например…
Каналы служат примитивом синхронизации и обмена данными между goroutine Они реализованы в виде буферизированных и небУферизированных очередей Размер буферизации задаёт число элементов, которые можно отправить в канал…
Риски глобального кеша и способы их устранения Проблемы: При параллельном доступе возможны состояния гонки (race conditions) Изменение данных в разных участках программы приводит к непредсказуемому состоянию…
буферизированные: обладают ёмкостью и не блокируют операции сразу небуферизированные: отправитель и получатель блокируются до момента согласования каналы с направлением: односторонние, только для отправки или…
Слайс в Go представляет собой структуру из трёх полей: указателя на массив, длины и ёмкости. Он передаётся как значение: копируется структура слайса, а не весь массив. При таком копировании указатель остаётся тем же,…
Почему context не следует надолго сохранять в структуре? context — объект, который передаёт отмену, дедлайны и значения по цепочке вызовов он не рассчитан на длительное хранение, поскольку привязан к сроку жизни…
Что будет, если читать из канала быстрее, чем в него записывают? Каналы Go обеспечивают блокирующую синхронизацию если данных нет, операция чтения заблокируется горутина будет ожидать отправки значения в канал пока…
Что представляет собой sync.Cond и когда он предпочтительнее каналов? sync.Cond — примитив условной синхронизации в Go с его помощью можно ожидать наступления заданного условия при организации конкурентного выполнения…
Что означает relation в PostgreSQL? понятие из реляционной модели данных в базе данных соответствует таблице включает строки (кортежи) и столбцы (атрибуты) каждая строка представляет отдельный экземпляр данных…
контекст: Go, каналы (channels) неинициализированный канал — это значение nil запись в nil-канал блокирует горутину навсегда при записи или чтении ошибка и паника не возникают если нет других горутин, способных снять…