☝️Реальные кадры из жизни команды Go, устраняющей все потребности в Go 2.0, добавляя базовую поддержку обратной и прямой совместимости с использованием переменных окружения и тегов сборки.
🔗 Обратная совместимость, Go 1.21 и Go 2
🔗 Прямая совместимость и управление туллчейном в Go 1.21
🔗 Обратная совместимость, Go 1.21 и Go 2
🔗 Прямая совместимость и управление туллчейном в Go 1.21
😁14❤5👍2
#вопросы_с_собесов
📌В чем разница между очередями, потоками и шаблонами обмена сообщениями pub/sub?
1️⃣Очередь — хранилище, которое обеспечивает размещение и чтение данных в определённом порядке.
2️⃣Потоки и их характерные признаки:
▪️Обработка данных происходит в реальном времени, непрерывно.
▪️Неограниченные события.
▪️Могут быть упорядочены по разделу/теме.
❗️Очереди предназначены для хранения и передачи сообщений между распределенными компонентами, гарантируя, что данные не будут потеряны в процессе, в то время как потоковая передача фокусируется на обработке и аналитике данных в реальном времени.
❗️Очереди подходят для сценариев, в которых основной задачей является надежность, поскольку они обеспечивают гарантированную доставку, сохранение сообщений и подтверждения потребителя.
❗️Потоковая передача хороша в ситуациях, когда критически важны анализ и обработка данных в реальном времени, поскольку она обеспечивает передачу данных с малой задержкой и позволяет анализировать данные в нескольких временных окнах.
3️⃣Шаблоны обмена сообщениями pub/sub
Модель «издатель-подписчик» состоит из 4-х ключевых компонентов:
▪️Сообщение — коммуникационные данные, передаваемые от отправителя к получателю
▪️Тема. Каждое сообщение имеет тему, связанную с ним.
▪️Абонент — получатель сообщения. Подписчики должны подписаться на интересующие их темы.
▪️Издатель — компонент, который отправляет сообщения.
❗️В современной облачной архитектуре приложения разделяют на небольшие независимые стандартные блоки-сервисы. Обмен сообщениями по модели pub/sub обеспечивает мгновенные уведомления о событиях для этих распределенных систем. Она поддерживает масштабируемую и надежную связь между независимыми программными модулями.
📌В чем разница между очередями, потоками и шаблонами обмена сообщениями pub/sub?
1️⃣Очередь — хранилище, которое обеспечивает размещение и чтение данных в определённом порядке.
2️⃣Потоки и их характерные признаки:
▪️Обработка данных происходит в реальном времени, непрерывно.
▪️Неограниченные события.
▪️Могут быть упорядочены по разделу/теме.
❗️Очереди предназначены для хранения и передачи сообщений между распределенными компонентами, гарантируя, что данные не будут потеряны в процессе, в то время как потоковая передача фокусируется на обработке и аналитике данных в реальном времени.
❗️Очереди подходят для сценариев, в которых основной задачей является надежность, поскольку они обеспечивают гарантированную доставку, сохранение сообщений и подтверждения потребителя.
❗️Потоковая передача хороша в ситуациях, когда критически важны анализ и обработка данных в реальном времени, поскольку она обеспечивает передачу данных с малой задержкой и позволяет анализировать данные в нескольких временных окнах.
3️⃣Шаблоны обмена сообщениями pub/sub
Модель «издатель-подписчик» состоит из 4-х ключевых компонентов:
▪️Сообщение — коммуникационные данные, передаваемые от отправителя к получателю
▪️Тема. Каждое сообщение имеет тему, связанную с ним.
▪️Абонент — получатель сообщения. Подписчики должны подписаться на интересующие их темы.
▪️Издатель — компонент, который отправляет сообщения.
❗️В современной облачной архитектуре приложения разделяют на небольшие независимые стандартные блоки-сервисы. Обмен сообщениями по модели pub/sub обеспечивает мгновенные уведомления о событиях для этих распределенных систем. Она поддерживает масштабируемую и надежную связь между независимыми программными модулями.
❤10🥱10👍6🔥3
Дмитрий Королёв, бэкенд-разработчик в Авито, рассказывает об устройстве сборщика мусора в Go и деталях его работы, чтобы вы могли писать более производительные приложения и лучше понимать внутреннее устройство языка.
🔗 Читать
🔗 Читать
🔥18👍2🥱1
Повышение производительности: подробное руководство по кэшированию в Go с Redis
В предыдущем материале рассматривались самые базовые аспекты работы с Redis в Go. В этой статье речь идет о кэшировании в контексте Go и Redis👇
🔗 Читать
В предыдущем материале рассматривались самые базовые аспекты работы с Redis в Go. В этой статье речь идет о кэшировании в контексте Go и Redis
🔗 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Библиотека Go разработчика | Golang
Начало работы с Redis в Go: пошаговое руководство по установке, командам и настройке.
🔗 Читать
🔗 Читать
👍9
golang.pdf
80.9 KB
#холивар
Вы посоветовали бы данную дорожную карту для начинающих разработчиков или тех, кто переходит с другого языка на Go? Если да, есть ли какие-то важные аспекты, которых в ней не хватает? Может быть в ней есть то, что вообще неуместно?
Вы посоветовали бы данную дорожную карту для начинающих разработчиков или тех, кто переходит с другого языка на Go? Если да, есть ли какие-то важные аспекты, которых в ней не хватает? Может быть в ней есть то, что вообще неуместно?
🥱5👍2🤩1
Артём Чаадаев, Go-разработчик из команды ассортимента размещения в Туту, погружается в различные аспекты конкурентной разработки:
🔸Как деактивировать большое количество пользователей в стороннем API (обычно это бывает после применения бизнес-логики) 🔸Как использовать два паттерна конкурентной разработки на Go: семафор (Semaphore) и пул обработчиков (Worker pool)
🔸Какие плюсы/минусы обоих подходов
🔸Как деактивировать большое количество пользователей в стороннем API (обычно это бывает после применения бизнес-логики) 🔸Как использовать два паттерна конкурентной разработки на Go: семафор (Semaphore) и пул обработчиков (Worker pool)
🔸Какие плюсы/минусы обоих подходов
Хабр
Учимся применять Semaphore и Worker Pool на Go
Учимся применять Semaphore и Worker Pool на Go Привет, Хабр! Я Артём Чаадаев из команды ассортимента размещения в Туту и занимаюсь разработкой на языке Go. Большое количество статей посвящено простоте...
👍11🔥5❤1
GoLab — первая итальянская международная конференция по языку программирования Go, организованная компанией Develer.
📌Ловите подборку докладов:
🌐 Uncover Unknown Bugs With Fuzzing in Go | Sagar Sonwane
🌐 Modernizing Falco with Go: a Story of Love and Betrayal | Jason Dellaluce & Leonardo Grasso
🌐 Built-In Testing in Go is More Than Just Passable | Scott McAllister
🌐 Defensive programming techniques in Go | Daniel Martí
🌐 Recipes for reducing cognitive load – yet another idiomatic Go talk | Federico Paolinelli
🌐 High-assurance Go cryptography | Filippo Valsorda
🌐 The Go WebAssembly ABI at a Low Level | Xe Iaso
🌐 Generating Generators | Tamir Bahar
🌐 Call me maybe – communication between microservices | Adelina Simion & Artur Kondas
🌐 Beyond database/sql: The Driver Pattern | Boston Cartwright
🌐 Zig Makes CGo Cross-compilation Just Work | Loris Cro
🌐 Keynote | Things you didn’t know about Go and how to become an expert | Roberto Clapis
📌Ловите подборку докладов:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤔4
📝Глубокое техническое погружение во все аспекты Redis: от различных топологий Redis до data persistence и разветвления процессов.
🤩Если любите подобные визуальные руководства, обратите внимание на другие разделы architecture notes.
🤩Если любите подобные визуальные руководства, обратите внимание на другие разделы architecture notes.
🔥15❤3
В Go 1.21 пакет slog был добавлен в стандартную библиотеку. Он выводит логирование на новый уровень, включая такие функции, как структурированное логирование, кастомизация вывода и многое другое! Самое время разобраться подробнее👇
🔗 Читать
🔗 Читать
pkg.go.dev
slog package - log/slog - Go Packages
Package slog provides structured logging, in which log records include a message, a severity level, and various other attributes expressed as key-value pairs.
👍23🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Как реализовать автозаполнение аргументов в CLI-проекте на Go с использованием Cobra: пошаговый гайд на примере простого проекта.
🔗 Читать
🔗 Читать
👍14
#tip #go #beginner
Использование ссылки на переменную итератора цикла
В Go переменная итератора цикла — это единственная переменная, которая принимает разные значения на каждой итерации цикла. Это очень эффективно, но может привести к непреднамеренному поведению при неправильном использовании. Смотрите пример слева, который выдаст неожиданные результаты:
На каждой итерации мы добавляем адрес
Новый вывод программы — это то, что ожидалось:
Строка
Хотя этот пример может показаться несколько очевидным, такое же неожиданное поведение может быть более скрытым в некоторых других случаях. Например, переменная цикла может быть массивом, а ссылка может быть срезом (пример справа). В результате получаем:
Использование ссылки на переменную итератора цикла
В Go переменная итератора цикла — это единственная переменная, которая принимает разные значения на каждой итерации цикла. Это очень эффективно, но может привести к непреднамеренному поведению при неправильном использовании. Смотрите пример слева, который выдаст неожиданные результаты:
Values: 3 3 3
Addresses: 0x40e020 0x40e020 0x40e020
На каждой итерации мы добавляем адрес
i
к срезу out
, но поскольку это одна и та же переменная, мы добавляем тот же адрес, который в итоге содержит последнее значение, присвоенное i
. Одно из решений — скопировать переменную цикла в новую переменную:for i := 0; i < 3; i++ {
i := i
out = append(out, &i)
}
Новый вывод программы — это то, что ожидалось:
Values: 0 1 2
Addresses: 0x40e024 0x40e028 0x40e032
Строка
i := i
копирует переменную цикла i в новую переменную, ограниченную блоком тела цикла for, также называемым i
. Адрес новой переменной — это тот, который добавляется к массиву. В каждой итерации цикла создается новая переменная.Хотя этот пример может показаться несколько очевидным, такое же неожиданное поведение может быть более скрытым в некоторых других случаях. Например, переменная цикла может быть массивом, а ссылка может быть срезом (пример справа). В результате получаем:
Values: [[3] [3] [3]]
👍22
Новые каналы по Go🎉
Готовимся к собеседованиям по Go и проверяем себя на практических задачках: «Библиотека программиста» запустила два канала специально для Go-разработчиков и тех, кто хочет ими стать👨🏫
Подписывайтесь:
👉Библиотека собеса по Go — тут мы готовимся к интервью
👉Библиотека задач по Go — тут решаем задачи, проходим тесты и изучаем код
Готовимся к собеседованиям по Go и проверяем себя на практических задачках: «Библиотека программиста» запустила два канала специально для Go-разработчиков и тех, кто хочет ими стать👨🏫
Подписывайтесь:
👉Библиотека собеса по Go — тут мы готовимся к интервью
👉Библиотека задач по Go — тут решаем задачи, проходим тесты и изучаем код
👍12😁2
Обзор изменений и нововведений в Go 1.21: взгляд команды МТС
«Зачем читать подобные обзоры» — спросите вы. В первую очередь за тем, что каждый разработчик видит ту или иную фичу языка по-своему, под своим углом. Кто знает, может именно этот обзор покажется вам наиболее интересным. Поэтому читаем и закрепляем знания о новой версии языка.
«Зачем читать подобные обзоры» — спросите вы. В первую очередь за тем, что каждый разработчик видит ту или иную фичу языка по-своему, под своим углом. Кто знает, может именно этот обзор покажется вам наиболее интересным. Поэтому читаем и закрепляем знания о новой версии языка.
🔥9❤2👍2🥱1
Несколько недель назад команда Dolt объявила о первой реализации полнотекстовых индексов. Dolt использует специальный SQL-движок, который позволяет управлять версиями базы данных и при этом должен быть высокопроизводительным.
Это также означает, что для полной замены MySQL 8.0 команда Dolt должна реализовать все функции MySQL в движке Dolt. Ну что ж, глобальная цель поставлена, перейдем к реализации полнотекстовых индексов в SQL-движке👇
🔗 Читать
Это также означает, что для полной замены MySQL 8.0 команда Dolt должна реализовать все функции MySQL в движке Dolt. Ну что ж, глобальная цель поставлена, перейдем к реализации полнотекстовых индексов в SQL-движке👇
🔗 Читать
Dolthub
Announcing Full-Text Indexes
Blog for DoltHub, a website hosting databases made with Dolt, an open-source version-controlled SQL database with Git-like semantics.
👍6❤3🔥3
#linux #tips
Вместо того, чтобы использовать команду cat для просмотра файлов с исходным кодом, просто используйтеVim команду batcat (bat). Это современная версия cat, которая включает в себя подсветку синтаксиса для многих языков программирования и поддержку Git из коробки.
>
>
Вместо того, чтобы использовать команду cat для просмотра файлов с исходным кодом, просто используйте
>
alias cat='batcat --style plain'
>
alias less='batcat --paging=always --style plain'
❤21👍16🔥1
Подробный гайд по разработке масштабируемых микросервисов с использованием Go и RabbitMQ
Автор начинает с фундаментльных основ, затем углубляется в особенности использования Go в сочетании с RabbitMQ.
Понимая основные принципы масштабируемых систем, разработчики и архитекторы могут эффективнее использовать эти инструменты и получить от них максимальную пользу.
🔗 Читать
Автор начинает с фундаментльных основ, затем углубляется в особенности использования Go в сочетании с RabbitMQ.
Понимая основные принципы масштабируемых систем, разработчики и архитекторы могут эффективнее использовать эти инструменты и получить от них максимальную пользу.
🔗 Читать
👍21❤6
🔍Насколько легко «войти в айти»?
IT — перспективная отрасль с высокими зарплатами и огромной конкуренцией. Собираем ваши истории: расскажите, как вам удалось сменить профессию (или сразу найти себя), какие шаги вы для этого предприняли и с какими сложностями пришлось столкнуться.
👉Пройдите наш 10-минутный опрос по ссылке.
IT — перспективная отрасль с высокими зарплатами и огромной конкуренцией. Собираем ваши истории: расскажите, как вам удалось сменить профессию (или сразу найти себя), какие шаги вы для этого предприняли и с какими сложностями пришлось столкнуться.
👉Пройдите наш 10-минутный опрос по ссылке.
❤5🥱2👍1