Библиотека Go (Golang) разработчика
2.65K subscribers
306 photos
99 videos
29 files
370 links
Полезные материалы по всему, что может быть полезно Golang разработчику. По всем вопросам @evgenycarter
Download Telegram
Media is too big
VIEW IN TELEGRAM
Ты не все знаешь о массивах и слайсах в Go

Таймкоды:
00:00 - Введение
00:47 - Устройство массивов в Go
01:40 - Работа с массивами в Go
10:00 - Перемещение массива в стеке
11:29 - Итерация по массивам в Go
15:11 - Где аллоцируются массивы в Go
17:22 - Педедача массива в функцию
18:16 - Слайсы в Go
21:34 - Реаллокация слайса в Go
24:45 - Резервирование памяти под слайс
25:44 - Создание слайса без инициализации
27:38 - Модификация строк в Go
28:35 - Приведение слайсов в строки и обратно без копирования
30:13 - Передача слайса в функцию
31:12 - Итерация по слайсам в Go
33:55 - Оптимизация итерации по слайсам в Go
35:42 - Получение слайсов в Go
42:40 - Получение слайса из массива в Go
43:15 - Конвертация слайса в массив в Go
44:15 - Конвертация слайса в указатель на массив в Go
45:02 - Указатель на нулевой массив в Go
46:18 - Удаление из конца слайса в Go
46:51 - Удаление из начала слайса в Go
49:02 - Реализация стека и очереди в Go
50:00 - Как увеличить размер слайса в Go
50:48 - Как уменьшить емкость слайса в Go
54:05 - Где аллоцируются слайсы в Go
59:12 - Как очистить слайс в Go
01:01:51 - В чем разница пустых и нулевых слайсов в Go
01:05:17 - Как сравнивать слайсы в Go
01:07:53 - Как скопировать данные слайса в Go
01:09:47 - Почему функция appeng возвращает слайсв в Go
01:12:39 - Потенциальные проблемы с функцией append в Go
01:14:10 - Реализация функции append в Go
01:15:32 - Утечки памяти при работе со слайсами в Go
01:21:59 - Курс по глубокому Go

источник

👉 @golang_lib
3👍2🔥1
😨 Даже опытные Go-разработчики часто обходят стороной sync.Cond — это слишком «темная лошадка», не так ли? Но именно она может стать вашим самым точным инструментом для управления конкурентностью, если знать, как использовать её правильно.

📗 На открытом уроке вы разберёте механику этого примитива синхронизации, поймёте, чем он отличается от каналов и мьютексов, и увидите реальные примеры, где без него не обойтись.

❗️ После вебинара вы перестанете «бояться» sync.Cond, научитесь применять его для оптимизации кода и получите новые инструменты для решения задач конкурентности.

Открытый вебинар проходет 📆 20 октября в 20:00 МСК.
👉 Регистрируйтесь и разберитесь, что скрывает Golang: https://vk.cc/cQvBpK

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
1
Статическая и динамическая компоновка бинарных файлов Go

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

И хотя всё выглядит просто, есть определённые нюансы и несколько способов компиляции одной и той же программы, что приводит к разным типам исполняемых файлов.

В этой статье мы рассмотрим статически и динамически слинкованные исполняемые файлы, внутренние и внешние линкеры, а также изучим бинарники с помощью инструментов file, ld, ldd и других.

https://packagemain.tech/p/golang-statically-and-dynamically-linked-binaries

👉 @golang_lib
👍3
Одна строка — тысячи горутин: как мы поймали утечку памяти в сервисе на Go

В этом техническом разборе рассмотрим, как инженеры Harness обнаружили и исправили критическую утечку памяти в Go: переназначение переменной контекста в циклах воркеров порождало невидимые цепочки, мешавшие сборщику мусора освобождать память в тысячах горутин, из-за чего их сервис-делегат CI/CD в итоге потреблял гигабайты памяти.

https://www.harness.io/blog/the-silent-leak

👉 @golang_lib
🤷‍♂1👍1
🔍Тестовое собеседование с Go TeamLead из американского FinTech в этот четверг

23 октября(в четверг!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Go-разработчика.

Как это будет:
📂 Дмитрий Дорофеев, Go TeamLead в американском FitTech Truv Inc, ex-VK, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Дмитрий будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дмитрию

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир
→ @shortcut_go_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Qrcp

Передавайте файлы по Wi-Fi с компьютера на мобильное устройство, сканируя QR-код, не отходя от терминала.

https://github.com/claudiodangelis/qrcp

👉 @golang_lib
👍4
Три способа оптимизировать работу с памятью на Go с помощью memory pools

Меня зовут Александр Иванов, я разрабатываю средства управления сетевыми элементами сотовой связи и пишу на языке Go в YADRO. Однажды я работал над приложением, которое испытывало пиковые нагрузки каждые 10 минут, но выполнить обработку памяти быстро мешал Garbage Collector. Чтобы решить эту проблему, я изучил несколько способов реализации memory pool и провел испытания скорости работы.

В этой статье расскажу, как уменьшить влияние GC на выполнение программы и покажу бенчмарки для разных memory pools. Объясню, какая из реализаций подойдет вашему проекту, а когда лучше не использовать memory pools и полагаться на встроенные механизмы рантайм-окружения Go.

https://habr.com/ru/companies/yadro/articles/842314/

👉 @golang_lib
👍21
🚀 1 ноября в Москве пройдет Я.Субботник по Go — митап для разработчиков и энтузиастов Go

Встречаемся в московском офисе Яндекса и на онлайн-трансляции, чтобы обсудить с коллегами все: от свежих релизов и архитектурных решений до трендов и вызовов индустрии.

В программе:

Доклады спикеров. Старший разработчик бэкенда Яндекс Маркета Александр Никитин расскажет про трассировку логики вычислений с помощью Debug Tree, а разработчик бэкенда Плюса и Финтеха Игорь Панасюк разберет новый garbage collector в Go 1.25.
Полный список спикеров и расписание докладов доступны на сайте.

Круглые столы с экспертами. Обсудим использование AI-инструментов, структуру проектов, highload, нетипичное применение Golang, инструменты разработки и будущее языка.

Живое общение и нетворкинг. Общаемся с коллегами в перерывах между докладами, обсуждаем, делимся опытом и заводим полезные знакомства.

Для тех, кто не сможет посетить митап в Москве, будет доступна онлайн-трансляция докладной части.

Ознакомиться с программой и зарегистрироваться можно тут.
👍1🔥1
Создание приложений на Go с использованием LLM

По мере того как возможности LLM (Large Language Models — большие языковые модели) и связанных инструментов, таких как модели для эмбеддингов, значительно выросли за последний год, всё больше разработчиков задумываются о внедрении LLM в свои приложения.

Поскольку LLM обычно требуют специализированного оборудования и значительных вычислительных ресурсов, их чаще всего упаковывают как сетевые сервисы, предоставляющие API для доступа. Так работают API ведущих LLM, таких как OpenAI или Google Gemini; даже инструменты для локального запуска собственных моделей, например Ollama, оборачивают LLM в REST-API для локального использования. Более того, разработчики, использующие LLM в приложениях, часто нуждаются в дополнительных инструментах вроде векторных баз данных, которые также обычно разворачиваются как сетевые сервисы.

Другими словами, приложения на базе LLM очень похожи на современные cloud-native приложения: они требуют отличной поддержки REST и RPC протоколов, высокой производительности и хорошей работы с конкурентностью. А это как раз те области, в которых Go силён, что делает его великолепным языком для создания приложений с использованием LLM.

Этот пост демонстрирует пример использования Go для простого приложения на базе LLM. Он начинается с описания задачи, которую решает демонстрационное приложение, и затем показывает несколько вариантов его реализации, использующих разные пакеты для достижения одной и той же цели. Весь исходный код примеров доступен онлайн.

https://go.dev/blog/llmpowered

👉 @golang_lib
👍1
Заметки о запуске Go в браузере с WebAssembly

Недавно мне пришлось компилировать Go в WebAssembly, чтобы запускать его в браузере в паре небольших проектов, и вообще я уделил некоторое время изучению WebAssembly. Мне кажется, что WebAssembly — очень захватывающая технология как для веба, так и для других применений (например, через WASI). Особенно классно, что мы можем брать существующие проекты и компоненты, написанные на Go, и запускать их прямо в браузере.

В этом посте я подытожу несколько полезных шаблонов запуска Go в браузере через WebAssembly. Все примеры представлены небольшими, самодостаточными программами, которые можно найти в этом репозитории на GitHub.

https://eli.thegreenplace.net/2024/notes-on-running-go-in-the-browser-with-webassembly/

👉 @golang_lib
👍1
System Design интервью с ТимЛидом из американского FinTech уже завтра

29 октября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью по System Design.

Как это будет:
📂 Дмитрий Дорофеев, TeamLead в американском FitTech Truv Inc, ex-VK, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Дмитрий будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Дмитрию

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Go-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_go_bot

Реклама.
О рекламодателе
Go Singleflight тает в вашем коде, а не в вашей базе данных

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

https://victoriametrics.com/blog/go-singleflight/index.html

👉
Другие статьи в серии:
• Go sync.Mutex: нормальный/starvation режим
• Go sync.WaitGroup и проблема выравнивания
• Go sync.Pool и механика, стоящая за ним
• Go sync.Cond, самый недооцененный механизм синхронизации

👉 @golang_lib
👍2