#статьи
😊 Не допускайте сбоя: паттерн повторной попытки (Retry Pattern) в Go
Статья объясняет, как реализовать паттерн повторных попыток (retry) в Go для обработки временных сбоев — например, сетевых ошибок.
Описываются разные стратегии (фиксированная задержка, экспоненциальный бэкофф с джиттером) и дается пример универсального retry-механизма.
Читать
👉 Новости 👉 База вопросов
Статья объясняет, как реализовать паттерн повторных попыток (retry) в Go для обработки временных сбоев — например, сетевых ошибок.
Описываются разные стратегии (фиксированная задержка, экспоненциальный бэкофф с джиттером) и дается пример универсального retry-механизма.
Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 1518. Water Bottles
Есть numBottles бутылок , которые изначально наполнены водой. Вы можете обменять numExchange пустых бутылок на одну полную бутылку воды на рынке.
Операция питья полной бутылки воды превращает её в пустую бутылку.
Даны два целых числа numBottles и numExchange. Верните максимальное количество бутылок с водой, которые вы можете выпить.
Пример:
👨💻 Алгоритм:
1️⃣ Инициализируйте переменную ответа consumedBottles значением 0.
2️⃣ Продолжайте выполнять следующие действия, пока количество numBottles больше или равно numExchange:
— Выпейте numExchange количество полных бутылок, т.е. добавьте numExchange к consumedBottles.
— Уменьшите numExchange от доступных полных бутылок numBottles.
— Обменяйте пустые бутылки на одну полную бутылку, т.е. увеличьте numBottles на одну.
3️⃣ Верните consumedBottles + numBottles.
😎 Решение🐍
👉 Новости 👉 База вопросов
Задача: 1518. Water Bottles
Есть numBottles бутылок , которые изначально наполнены водой. Вы можете обменять numExchange пустых бутылок на одну полную бутылку воды на рынке.
Операция питья полной бутылки воды превращает её в пустую бутылку.
Даны два целых числа numBottles и numExchange. Верните максимальное количество бутылок с водой, которые вы можете выпить.
Пример:
Input: numBottles = 9, numExchange = 3
Output: 13
Explanation: You can exchange 3 empty bottles to get 1 full water bottle.
Number of water bottles you can drink: 9 + 3 + 1 = 13.
— Выпейте numExchange количество полных бутылок, т.е. добавьте numExchange к consumedBottles.
— Уменьшите numExchange от доступных полных бутылок numBottles.
— Обменяйте пустые бутылки на одну полную бутылку, т.е. увеличьте numBottles на одну.
func numWaterBottles(numBottles int, numExchange int) int {
consumedBottles := 0
for numBottles >= numExchange {
consumedBottles += numExchange
numBottles -= numExchange
numBottles++
}
return consumedBottles + numBottles
}
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #redis
🤔 Основные различия между RDB и AOF.
RDB (Redis Database): Создаёт периодические снимки данных. Подходит для быстрого восстановления, но может привести к потере данных, изменённых после последнего снимка.
AOF (Append Only File) : Логирует каждую операцию записи. Гарантирует минимальные потери данных, но работает медленнее и создаёт более крупные файлы.
👉 Новости 👉 База вопросов
RDB (Redis Database): Создаёт периодические снимки данных. Подходит для быстрого восстановления, но может привести к потере данных, изменённых после последнего снимка.
AOF (Append Only File) : Логирует каждую операцию записи. Гарантирует минимальные потери данных, но работает медленнее и создаёт более крупные файлы.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Инструмент, который сканирует указанные организации или учетные записи пользователей на GitHub в поиске публичных Go-модулей, парсит их прямые зависимости из файлов go.mod и генерирует граф зависимостей в формате DOT или топологически отсортированный список
Гитхаб
👉 Новости 👉 База вопросов
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👨💻 Функционально насыщенный, быстрый и гибкий контроллер входящего трафика, нативный для Kubernetes, и шлюз API следующего поколения, построенный на базе Envoy, реализованный на Go.
Гитхаб
👉 Новости 👉 База вопросов
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🤓 Объяснение CPU requests и limits в контейнерах с настройкой GOMAXPROCS
Одна из самых интересных статей, которые я читал в последнее время
В ней объясняется:
🟠 Как на самом деле работают CPU requests и limits, включая внутренние механизмы
🟠 Почему установка GOMAXPROCS важна для Go-приложений, работающих в контейнеризованных средах
🟠 Как на самом деле работает uber-go/automaxprocs
🟠 Какие метрики можно использовать, чтобы определить, подвергается ли контейнер throttling'у
Читать
👉 Новости 👉 База вопросов
Одна из самых интересных статей, которые я читал в последнее время
В ней объясняется:
Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #redis
🤔 Объясните концепцию транзакций в Redis.
Транзакции в Redis позволяют выполнять группу команд как единое целое. С помощью команд
👉 Новости 👉 База вопросов
Транзакции в Redis позволяют выполнять группу команд как единое целое. С помощью команд
MULTI
, EXEC
, DISCARD
И WATCH
можно гарантировать, что все команды либо выполняются успешно, либо не выполняются вовсе. Это обеспечивает целостность данных без традиционных механизмов, таких как откаты операций.Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😬 Использование сигналов в Go
Статья рассказывает, как обрабатывать системные сигналы в Go с помощью пакета
Читать
👉 Новости 👉 База вопросов
Статья рассказывает, как обрабатывать системные сигналы в Go с помощью пакета
os/signal
: как подписываться на сигналы (например, SIGINT
при Ctrl+C), зачем это нужно (например, для graceful shutdown), и как отключить обработку сигналов с помощью signal.Stop
Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🛞 Утилита для парсинга лог-файлов в форматах Common и Combined Log Format (CLF) и сохранения их в SQLite для последующего анализа. Разработана с учетом конкурентности.
Гитхаб
👉 Новости 👉 База вопросов
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Dbmate — инструмент для миграций БД без привязки к языку.
Это самодостаточный бинарник, который не требует интеграции с конкретным фреймворком и одинаково хорошо работает с Go.
Главная фишка Dbmate — простота. Вместо сложных DSL миграции пишутся на чистом SQL, а для подключения к БД используется привычное
Гитхаб
👉 Новости 👉 База вопросов
Это самодостаточный бинарник, который не требует интеграции с конкретным фреймворком и одинаково хорошо работает с Go.
Главная фишка Dbmate — простота. Вместо сложных DSL миграции пишутся на чистом SQL, а для подключения к БД используется привычное
DATABASE_URL.
При этом инструмент не забывает о важных деталях: атомарности выполнения, версионировании по времени и возможности быстрого создания/удаления тестовых БД.Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #redis
🤔 Как обеспечить устойчивость данных в Redis?
Redis поддерживает два механизма сохранения данных: - RDB (Redis Database Backups): Создание моментальных снимков данных через определённые интервалы времени.
- AOF (Append Only File): Запись каждой операции изменения данных в лог, который может быть воспроизведён для восстановления.
👉 Новости 👉 База вопросов
Redis поддерживает два механизма сохранения данных: - RDB (Redis Database Backups): Создание моментальных снимков данных через определённые интервалы времени.
- AOF (Append Only File): Запись каждой операции изменения данных в лог, который может быть воспроизведён для восстановления.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 gRPC в Go: Потоковые RPC, перехватчики и метаданные
Это самое полное базовое руководство, охватывающее типы RPC, перехватчики, заголовки, трейлеры и многое другое
Тык сюда
👉 Новости 👉 База вопросов
Это самое полное базовое руководство, охватывающее типы RPC, перехватчики, заголовки, трейлеры и многое другое
Тык сюда
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 "Go Docs Syntax Highlighter" - это полезное для Гоферов Chrome расширение, которое
добавляет синтаксическую подсветку (раскрашивает ключевые слова, типы данных, строки, комментарии и т.д.) к блокам кода Go на различных сайтах и документах.
Расширение делает примеры кода значительно более наглядными и легкими для восприятия.
Скачать
👉 Новости 👉 База вопросов
добавляет синтаксическую подсветку (раскрашивает ключевые слова, типы данных, строки, комментарии и т.д.) к блокам кода Go на различных сайтах и документах.
Расширение делает примеры кода значительно более наглядными и легкими для восприятия.
Скачать
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 643. Maximum Average Subarray I
Вам дан целочисленный массив nums, состоящий из n элементов, и целое число k. Найдите смежный подмассив, длина которого равна k и который имеет максимальное среднее значение, и верните это значение. Принимается любой ответ с погрешностью вычислений менее 10-5.
Пример:
👨💻 Алгоритм:
1⃣ Инициализация скользящего окна
Вычислите сумму первых k элементов массива nums. Это будет начальное значение максимальной суммы.
2⃣ Перемещение окна
Перемещайте окно длиной k по массиву, добавляя следующий элемент и убирая предыдущий, чтобы поддерживать сумму текущего окна.
3⃣ Обновление максимальной суммы
На каждом шаге обновляйте максимальную сумму, если текущая сумма больше, и в конце верните среднее значение этой суммы.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 643. Maximum Average Subarray I
Вам дан целочисленный массив nums, состоящий из n элементов, и целое число k. Найдите смежный подмассив, длина которого равна k и который имеет максимальное среднее значение, и верните это значение. Принимается любой ответ с погрешностью вычислений менее 10-5.
Пример:
Input: nums = [1,12,-5,-6,50,3], k = 4
Output: 12.75000
Вычислите сумму первых k элементов массива nums. Это будет начальное значение максимальной суммы.
Перемещайте окно длиной k по массиву, добавляя следующий элемент и убирая предыдущий, чтобы поддерживать сумму текущего окна.
На каждом шаге обновляйте максимальную сумму, если текущая сумма больше, и в конце верните среднее значение этой суммы.
package main
func findMaxAverage(nums []int, k int) float64 {
currentSum := 0
for i := 0; i < k; i++ {
currentSum += nums[i]
}
maxSum := currentSum
for i := k; i < len(nums); i++ {
currentSum += nums[i] - nums[i - k]
if currentSum > maxSum {
maxSum = currentSum
}
}
return float64(maxSum) / float64(k)
}
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #redis
🤔 Что такое Pub/Sub в Redis?
Pub/Sub — это механизм обмена сообщениями в Redis, где издатели (publishers) отправляют сообщения в каналы, а подписчики (subscribers), подписанные на эти каналы, получают их. Этот механизм используется для реализации систем реального времени, таких как чаты, уведомления или системы трансляции данных.
👉 Новости 👉 База вопросов
Pub/Sub — это механизм обмена сообщениями в Redis, где издатели (publishers) отправляют сообщения в каналы, а подписчики (subscribers), подписанные на эти каналы, получают их. Этот механизм используется для реализации систем реального времени, таких как чаты, уведомления или системы трансляции данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👋 depgraph
Инструмент для анализа зависимостей Go-модулей (на GitHub).
Что делает:
🟠 Сканирует указанные GitHub-аккаунты или организации
🟠 Ищет публичные репозитории с Go-кодом
🟠 Читает их go.mod файлы (в них указаны зависимости)
🟠 Строит граф зависимостей между модулями
Выводит:
Граф зависимостей в формате DOT (можно визуализировать через Graphviz)
Или топологическую сортировку — порядок, в котором модули зависят друг от друга (например, для правильной сборки)
Пример применения:
- У тебя есть несколько Go-проектов в организации, и ты хочешь:- Понять, какие модули используют какие зависимости
- Найти циклы, повторяющиеся зависимости
- Визуализировать это как граф
Github
👉 Новости 👉 База вопросов
Инструмент для анализа зависимостей Go-модулей (на GitHub).
Что делает:
Выводит:
Граф зависимостей в формате DOT (можно визуализировать через Graphviz)
Или топологическую сортировку — порядок, в котором модули зависят друг от друга (например, для правильной сборки)
Пример применения:
- У тебя есть несколько Go-проектов в организации, и ты хочешь:- Понять, какие модули используют какие зависимости
- Найти циклы, повторяющиеся зависимости
- Визуализировать это как граф
go install github.com/ldemailly/depgraph@latest
Github
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 mcp-golang — это реализация Model Context Protocol (MCP) на языке Go, предназначенная для быстрой разработки серверов MCP!
MCP стандартизирует взаимодействие приложений с моделями машинного обучения, обеспечивая типобезопасность и упрощённую обработку запросов. Библиотека позволяет минимизировать шаблонный код, автоматически создавая MCP-эндпоинты и обрабатывая схемы, десериализацию и ошибки.
Гитхаб
👉 Новости 👉 База вопросов
MCP стандартизирует взаимодействие приложений с моделями машинного обучения, обеспечивая типобезопасность и упрощённую обработку запросов. Библиотека позволяет минимизировать шаблонный код, автоматически создавая MCP-эндпоинты и обрабатывая схемы, десериализацию и ошибки.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
❤️🔥 Лёгкая очередь сообщений, реализованная на Go, с поддержкой SQLite, PostgreSQL и ORM в качестве постоянного хранилища
Гитхаб
👉 Новости 👉 База вопросов
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #redis
🤔 Может ли Redis использоваться в многопоточных приложениях, и как он обрабатывает конкурентность?
Redis является однопоточной системой, что упрощает архитектуру за счёт исключения проблем конкурентности, характерных для многопоточных приложений. Конкурентность в Redis обрабатывается с использованием неблокирующего мультиплексирования ввода/вывода и атомарных операций, что позволяет эффективно обслуживать несколько клиентов одновременно.
👉 Новости 👉 База вопросов
Redis является однопоточной системой, что упрощает архитектуру за счёт исключения проблем конкурентности, характерных для многопоточных приложений. Конкурентность в Redis обрабатывается с использованием неблокирующего мультиплексирования ввода/вывода и атомарных операций, что позволяет эффективно обслуживать несколько клиентов одновременно.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😱 Ninjabot — фреймворк для алгоритмического трейдинга на крипторынке, написанный на Go.
Он позволяет тестировать стратегии на исторических данных и запускать их в реальной торговле на Binance (спот и фьючерсы).
Проект позиционируется как образовательный, но выглядит более чем серьезно — здесь есть backtesting, симулятор бумажного кошелька и даже CLI для загрузки рыночных данных. В примерах можно найти готовые стратегии с визуализацией сделок через веб-интерфейс.
GitHub
👉 Новости 👉 База вопросов
Он позволяет тестировать стратегии на исторических данных и запускать их в реальной торговле на Binance (спот и фьючерсы).
Проект позиционируется как образовательный, но выглядит более чем серьезно — здесь есть backtesting, симулятор бумажного кошелька и даже CLI для загрузки рыночных данных. В примерах можно найти готовые стратегии с визуализацией сделок через веб-интерфейс.
GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM