IT заметки по программированию
IT заметки по программированию
IT заметки по программированию
IT заметки по программированию

Кооперативная многозадачность — это модель многозадачности, в которой задачи (или горутины, если говорить о Go) сами определяют, когда уступить управление другим задачам. В этой модели операционная система (или планировщик) не прерывает задачу автоматически; вместо этого задачи добровольно освобождают процессор, чтобы другие задачи могли выполняться....

продолжить чтение


RCU (Read–Copy–Update) — это техника синхронизации, разработанная для повышения производительности многопоточных программ, особенно в условиях, когда множество потоков активно читают данные, а операции записи происходят редко. В отличие от традиционных методов синхронизации, таких как мьютексы, которые блокируют доступ к данным, RCU позволяет потокам выполнять чтение параллельно, минимизируя блокировки и задержки....

продолжить чтение


Чтобы обратить (реверсировать) односвязный список в Go, нужно поменять местами ссылки next между узлами, чтобы они указывали на предыдущий элемент, а не на следующий. При этом голова списка (head) после обращения будет указывать на последний элемент исходного списка....

продолжить чтение


В Go для работы с ассоциативными массивами (или словарями) и их маршалинга в формат YAML используется пакет gopkg.in/yaml.v2. Этот пакет позволяет преобразовывать структуры данных Go в формат YAML и обратно....

продолжить чтение


Передача конфигурационного объекта в Go зависит от размера структуры и того, как она будет использоваться. Давайте рассмотрим оба варианта — по значению и по ссылке — и разберём, когда и какой подход лучше....

продолжить чтение


Выбор между плоским конфигурационным объектом и сложным (со вложенными структурами) в Go зависит от нескольких факторов: сложности вашего приложения, количества конфигурационных параметров, удобства использования и поддержки. Давайте рассмотрим преимущества и недостатки каждого подхода....

продолжить чтение


Организация работы с конфигурационным объектом в Go зависит от архитектурных предпочтений, требований проекта и баланса между удобством использования, тестируемостью и поддерживаемостью. Давайте рассмотрим основные подходы:...

продолжить чтение


Да, в Go, а также в среде разработки GoLand, дефис в именах бинарных файлов запрещён, и это связано с правилами именования в самой операционной системе и компиляторе Go. Дефис (-) воспринимается как опция командной строки, и поэтому его нельзя использовать в имени исполняемых файлов....

продолжить чтение


В Go каналы (channels) по своей сути являются ссылочными типами, даже если они передаются в функцию "по значению". Это означает, что при передаче канала в функцию вы фактически передаёте указатель на сам канал, а не копию канала....

продолжить чтение


В Go с помощью библиотеки go.etcd.io/etcd/client/v3 можно отслеживать изменения в etcd-кластере, используя функциональность watcher. Watcher позволяет отслеживать изменения ключей в etcd и получать уведомления, когда данные изменяются....

продолжить чтение


В Go для записи текста в файл по указанному пути можно использовать функции из пакета os или io/ioutil. Вот базовый пример, как создать файл, сохранить в него текст и закрыть его корректно....

продолжить чтение


Когда функция в Go принимает слишком много параметров, это может сделать код менее читаемым, сложным для поддержки и тестирования. В таких случаях есть несколько подходов, которые помогут улучшить читаемость и управление кодом....

продолжить чтение


В Go для получения пути к корневой папке текущего проекта нет встроенной функции, поскольку Go не поддерживает явное понятие "корневой папки проекта" как это делают некоторые другие языки (например, через __dirname в Node.js или os.path в Python). Однако, есть несколько подходов, которые помогут вам получить путь к корневой директории проекта....

продолжить чтение


В Go выбор между возвратом структуры и указателя на структуру зависит от нескольких факторов, таких как объем данных, стоимость копирования, необходимость изменения структуры и семантика кода. Рассмотрим плюсы и минусы каждого подхода:...

продолжить чтение