Category : golang

golang
Слабые указатели в Go: в консерватории не всё в порядке

Меня зовут Дмитрий Солдатенко, я разработчик в Ви.Tech, IT-дочке ВсеИнструменты.ру. И теперь, когда формальное представление завершено, хочу поделиться своим, местами не очень формальным, батхертом по поводу слабых указателей.Предполагается, что вы пишете на Go и хотя бы на уровне чтения релиз-ноутов знакомы с концепцией слабых указателей (weak pointers).На первый взгляд, это полезный механизм для некоторых сценариев. Но у меня есть одна идеологическая и несколько фактических претензий к их реа…

  • вторник, 1 апреля 2025 г. в 00:00:10
golang
Разбираем паттерны конкурентности

БазаПараллельность - выполнение задач в один момент времени на разных логических ядрах.Конкурентность - выполнение задач последовательно, но со сменой контекста на другую задачу в ожидание завершения иной задачи. У пользователя может возникнуть иллюзия многозадачности даже в однопроцессорной системе, поскольку смена контекста происходит быстро (микросекунды).Процессы:Раздельная памятьРаздельные ресурсыРаздельные регистрыПотоки:Общая памятьОбщие ресурсыРаздельные стэк и регистрыГорутины:Общая па…

  • вторник, 1 апреля 2025 г. в 00:00:08
golang
Параллельное программирование на Go

На практике, создаваемое нами ПО выполняется на множестве процессоров. К сожалению, многие наши допущения, справедливые для одного процессора, в случае нескольких процессоров становятся ложными. Например, каким будет состояние памяти, если два процессора изменяют один блок памяти? В общем случае на этот вопрос ответить сложно. Может случиться так, что внесённое одним процессом изменение перепишет внесённое другим. Справедливо может быть и обратное: может «победить» изменение другого процессора…

  • вторник, 1 апреля 2025 г. в 00:00:07
golang
Архитектура продуктового Go-сервиса

ВведениеВ статье рассматривается подход к построению архитектуры сервиса с использованием языка Go для продуктовых команд, ориентированных на решение бизнес-задач. Особое внимание уделяется вопросам выделения слоев в приложении и обеспечению низкой связанности между ними. Приведённые рекомендации могут быть менее актуальны для команд, занимающихся инфраструктурной разработкой.Цель статьи — систематизировать и поделиться накопленными знаниями. Описанный подход основан на первоисточнике, но адапт…

  • воскресенье, 30 марта 2025 г. в 00:00:07
golang
Планировщик Go

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

  • суббота, 29 марта 2025 г. в 00:00:08
golang
Свои языки программирования: зачем компании изобретают колесо заново

Кажется, языков программирования уже предостаточно, но IT-гиганты продолжают плодить свои. Google, Apple, JetBrains — готовых решений хватает до отказа, а им все равно хочется иметь что-то свое, эксклюзивное. Дело в технологической необходимости, гордыне или «синдроме NIH», когда чужое не берут? Может, это попытка захватить контроль над всем технологическим стеком или хитрый маркетинговый ход для завоевания умов разработчиков? Давайте копнем глубже, чтобы разобраться. Когда старые языки мешаю…

  • суббота, 29 марта 2025 г. в 00:00:07
golang
Удобное сканирование в структуры в связке Go/PgX. Решение проблемы сканирования в PgX. Golang

Работая с базами данных в Go, многие из нас сталкивались с библиотекой pgx — высокопроизводительным драйвером для PostgreSQL. Однако при всей ее мощи есть одна неудобная особенность: сканирование результатов запросов в структуры может быть довольно громоздким, особенно когда речь идет о вложенных структурах или списках.Проблема неудобного сканирования в go/pgxОсновная сложность заключается в том, что при выполнении SQL-запросов и получении результатов нам часто приходится вручную сканировать ка…

  • суббота, 29 марта 2025 г. в 00:00:06
golang
Планировщик ОС

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

  • четверг, 27 марта 2025 г. в 00:00:14
golang
«Основы Go: Community edition» 1-е издание

Привет, Хабр!Не так давно мне удалось вернуть эксклюзивные авторские права на книгу по Go. Писалась она 3 года назад и с тех пор добавила мне немного седых волос. А все из-за неопытности и надежды на ее лучшее будущее в руках одного издательства... Чем я тогда думал отдавая все права (электронка + печатное издание) - фиг его знает, но с другой стороны, если бы не пережитый звиздец, то не начал бы процедуру возвращения авторских прав на свои книги, чтобы теперь никогда не передавать издателю эк…

  • четверг, 27 марта 2025 г. в 00:00:12