Category : golang

golang
Обработка ошибок в go в 2023 г

В go нет исключений. Разработчики, начинающие знакомиться с go, часто не знают как лучше всего обработать ошибку, как её отобразить в логах и что с ней делать дальше.Попробуем рассмотреть все варианты, которые можно встретить в проектах на golang в 2023 году.Статья больше рассчитана на начинающих разработчиков. Но, надеюсь, и разработчики с опытом сочтут этот обзор полезным и будут более осознанно выбирать стратегию обработки ошибок для своих проектов.Стандартная библиотекаОсновная идеяНачнем …

  • среда, 5 июля 2023 г. в 00:00:19
golang
Оптимизация памяти и управление сборщиком мусора в Go: GOGC и GOMEMLIMIT

Всем привет, меня зовут Нина Пакшина, я работаю Golang разработчиком в Лента Онлайн.В данной статье я расскажу о том, как управлять сборщиком мусора в Go, как оптимизировать потребление памяти приложением и защититься от ошибки out-of-memory.Стек и куча в GoЯ не буду подробно рассказывать о том, как работает сборщик мусора, поскольку на эту тему уже существует много статей и есть подробная официальная документация (это и это). Но я хочу упомянуть базовые понятия, которые помогут разобраться в …

  • вторник, 4 июля 2023 г. в 00:00:16
golang
Анонимная сеть в 200 строк кода на Go

ВведениеАнонимность — великая штука. Высшее наслаждение. Это что-то, чего ты не можешь оценить до тех пор, пока не потеряешь.(Билл Мюррей)Реализации анонимных сетей всегда стремятся быть как можно проще, доступнее для понимания, как на теоретическом, так и на программном уровнях. Такие условия становятся необходимыми вследствие одного из основных принципов построения безопасных программ — чем проще объяснить, тем легче доказать. Но к сожалению теория часто может расходиться с практикой, и то, …

  • воскресенье, 2 июля 2023 г. в 00:00:13
golang
Эффективная работа с битами при помощи Go

Это статья познакомит вас с использованием возможностей Go для выполнения манипуляций с битами. Здесь мы разберём установку, очистку, инвертирование, сдвиг битов, использование техники SWAR, эффективную обработку Юникода и прочие приёмы, позволяющие повысить продуктивность программирования. На самом фундаментальном уровне программисту нужно манипулировать битами. Современные процессоры работают с данными через регистры, а не в виде отдельных битов, поэтому необходимо уметь управлять битами …

  • суббота, 1 июля 2023 г. в 00:00:31
golang
Атомики в Go: особенности внутренней реализации

Атомики в Go - это один из методов синхронизации горутин. Они находятся в пакете стандартной библиотеки sync/atomic. Некоторые статьи сравнивают atomics с mutex, так как это примитивы синхронизации низкого уровня. Они предоставляют бенчмарки и сравнения по скорости, например Go: How to Reduce Lock Contention with the Atomic Package. Однако важно понимать, что, хотя это примитивы синхронизации низкого уровня, они разные по своей сути. Прежде всего атомики являются "low-level atomic memory …

  • суббота, 1 июля 2023 г. в 00:00:27
golang
Пишем свою мини-СУБД на Golang (Часть 1)

Привет, Хабр! Создание небольшой системы управления базами данных - это всегда прекрасный опыт и способ почерпнуть новые знания или же, закрепить уже существующие навыки. В этом цикле статей мы попробуем собрать нашу небольшую СУБД с использованием стандартной библиотеки Go :P Та самая инновационная СУБДТребованияНачнем с определения требований, которые мы хотим выдвинуть к нашей будущей СУБД (далее для позерства удобства будем называть ее repaDB). Здесь выделяют множество этапов, но если крат…

  • суббота, 1 июля 2023 г. в 00:00:26
golang
Инструменты сисадмина: Perl и Golang

В статье отражен опыт применения языков Perl и Golang в повседневной работе бородатого сисадмина в качестве скриптового языка и показаны примеры использования.Начало временКогда-то давно в молодости я выбирал инструмент, который помог бы мне автоматизировать ручной труд, а именно распарсить лог или конфиг, протестировать коннект к базе данных, собрать ответы от сайтов и т.д. И я выбрал Perl. Он до сих пор является палочкой-выручалочкой. Внятное объяснение этому можно найти в данной заметке, из…

  • пятница, 30 июня 2023 г. в 00:00:17
golang
Типы, больше типов

ВведениеПри описании модели данных, часто приходится создавать новые типы, в первую очередь, используя такие ключевые слова как class/struct/record. Такие типы агрегируют в себе другие типы как простые, так и составные. Все это знают и применяют. Я же предлагаю взглянуть на случаи, когда моделируемая сущность, описывается существующими, часто простыми типами, такими как целое число или строка.В статье я хочу поделиться мыслями, которые привели меня к использованию специальных типов там, где ча…

  • четверг, 29 июня 2023 г. в 00:00:16
golang
Типы, методы и интерфейсы

Автор статьи: Рустем ГалиевIBM Senior DevOps Engineer & Integration Architect. Официальный DevOps ментор и коуч в IBMВсем привет. Сегодня на примере разберем методы и интерфейсы в go. Большая часть того, что называют написанием идиоматического кода на Go — это изучение использования преимуществ определяемых пользователем типов Go. Интерфейсы — единственный тип в Go с динамической диспетчеризацией. Поскольку они реализованы неявно,то позволяют разработчикам создавать несвязанный, удобный …

  • среда, 28 июня 2023 г. в 00:00:13