Forwarded from YeaHub
[Версия 1.2.1] - Обновление платформы
Мы продолжаем развивать YeaHub, чтобы сделать обучение ещё удобнее, эффективнее и интереснее. В этом обновлении — важные и долгожданные улучшения 👇
🔹 Аналитика платформы
Нам важно понимать, какие вопросы вызывают наибольшие сложности у тех, кто готовится к собеседованиям, поэтому мы начали собирать расширенную статистику.
Какой вопрос самый сложный в нашем тренажёре? Какие навыки наиболее востребованы? Какие темы чаще всего встречаются на реальных собеседованиях? И многое другое — всё это теперь доступно благодаря обновлённой аналитике. Аналитика (после авторизации)
🔹 Обучение и менторы
Вы должны знать героев, которые помогают делать платформу лучше. Это менторы, которые вместе со своими учениками развивают YeaHub, давая бесценный опыт работы над реальным продуктом.
А также крутые эксперты, которые повышают качество контента и помогают нам расти. Все менторы
🔹 Записи собеседований
Мы расширяем партнёрства! Нам важно собрать всё самое полезное в одном месте.
Теперь у нашего партнёра с закрытым чатом собеседований появился отдельный информативный лендинг — удобно, структурировано и всегда под рукой. Записи собесов
🔹 Исправления и улучшения
Мы учли вашу обратную связь: исправили баги, улучшили интерфейс и сделали работу с платформой ещё комфортнее 🧠
🔥 Скоро
1. Парсер навыков и ключевых слов с HH
2. Сервис Лайвкодинга с реальными задачами с собеседований
👉 Обучайтесь, общайтесь, растите вместе с https://yeahub.ru
#release #news #update #yeahub
Мы продолжаем развивать YeaHub, чтобы сделать обучение ещё удобнее, эффективнее и интереснее. В этом обновлении — важные и долгожданные улучшения 👇
🔹 Аналитика платформы
Нам важно понимать, какие вопросы вызывают наибольшие сложности у тех, кто готовится к собеседованиям, поэтому мы начали собирать расширенную статистику.
Какой вопрос самый сложный в нашем тренажёре? Какие навыки наиболее востребованы? Какие темы чаще всего встречаются на реальных собеседованиях? И многое другое — всё это теперь доступно благодаря обновлённой аналитике. Аналитика (после авторизации)
🔹 Обучение и менторы
Вы должны знать героев, которые помогают делать платформу лучше. Это менторы, которые вместе со своими учениками развивают YeaHub, давая бесценный опыт работы над реальным продуктом.
А также крутые эксперты, которые повышают качество контента и помогают нам расти. Все менторы
🔹 Записи собеседований
Мы расширяем партнёрства! Нам важно собрать всё самое полезное в одном месте.
Теперь у нашего партнёра с закрытым чатом собеседований появился отдельный информативный лендинг — удобно, структурировано и всегда под рукой. Записи собесов
🔹 Исправления и улучшения
Мы учли вашу обратную связь: исправили баги, улучшили интерфейс и сделали работу с платформой ещё комфортнее 🧠
1. Парсер навыков и ключевых слов с HH
2. Сервис Лайвкодинга с реальными задачами с собеседований
👉 Обучайтесь, общайтесь, растите вместе с https://yeahub.ru
#release #news #update #yeahub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1🔥1
#Собес #process #thread #multithreading
🤔 В чем разница процесса и потока в рамках операционной системы?
💬 Кратко:
Процесс — это независимая программа, выполняющаяся в памяти, у которой есть собственное адресное пространство. Поток — это единица выполнения внутри процесса, которая использует общее адресное пространство. Потоки легче создавать и переключать, но процессы изолированы друг от друга.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 В чем разница процесса и потока в рамках операционной системы?
💬 Кратко:
Процесс — это независимая программа, выполняющаяся в памяти, у которой есть собственное адресное пространство. Поток — это единица выполнения внутри процесса, которая использует общее адресное пространство. Потоки легче создавать и переключать, но процессы изолированы друг от друга.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍2
gRPC в Go: основы для разработчика
gRPC стал стандартом для межсервисного взаимодействия в микросервисных архитектурах. Разработчику на Go важно понимать его принципы.
Протокол и контракты
Используйте Protocol Buffers для описания API. .proto-файлы определяют контракт между клиентом и сервером. Генерируйте код на Go с помощью protoc.
Определяйте сервисы, методы и сообщения в .proto-файлах. Односторонние (unary) вызовы подходят для большинства сценариев, но также доступны стриминговые методы.
Реализация сервера
Реализуйте сгенерированный интерфейс сервиса. Регистрируйте сервис в gRPC сервере. Используйте middleware для аутентификации, логирования и метрик.
Настраивайте интерцепторы для сквозной функциональности. Перехватывайте вызовы для добавления логики до или после обработки запроса.
Клиентское подключение
Создавайте клиент через grpc.Dial. Используйте пул соединений для эффективного переиспользования. Настраивайте таймауты и retry-логику.
Обрабатывайте ошибки и статусы вызовов. gRPC использует стандартные коды статусов для указания результата операции.
Производительность и безопасность
Включайте компрессию для больших сообщений.
Используйте TLS для шифрования трафика. Настраивайте keepalive для поддержания соединений.
Для потоковой передачи данных используйте bidirectional streaming. Это эффективно для чатов, уведомлений или передачи больших файлов.
Инструменты и отладка
grpcui позволяет тестировать gRPC API через веб-интерфейс. grpcurl — аналог curl для gRPC. Используйте их для отладки и exploration API.
Включайте логирование и метрики для мониторинга вызовов. Отслеживайте длительность запросов, ошибки и объем передаваемых данных.
gRPC в Go — это мощный инструмент для построения эффективных распределенных систем. Понимание его основ обязательно для современного backend-разработчика.
gRPC стал стандартом для межсервисного взаимодействия в микросервисных архитектурах. Разработчику на Go важно понимать его принципы.
Протокол и контракты
Используйте Protocol Buffers для описания API. .proto-файлы определяют контракт между клиентом и сервером. Генерируйте код на Go с помощью protoc.
Определяйте сервисы, методы и сообщения в .proto-файлах. Односторонние (unary) вызовы подходят для большинства сценариев, но также доступны стриминговые методы.
Реализация сервера
Реализуйте сгенерированный интерфейс сервиса. Регистрируйте сервис в gRPC сервере. Используйте middleware для аутентификации, логирования и метрик.
Настраивайте интерцепторы для сквозной функциональности. Перехватывайте вызовы для добавления логики до или после обработки запроса.
Клиентское подключение
Создавайте клиент через grpc.Dial. Используйте пул соединений для эффективного переиспользования. Настраивайте таймауты и retry-логику.
Обрабатывайте ошибки и статусы вызовов. gRPC использует стандартные коды статусов для указания результата операции.
Производительность и безопасность
Включайте компрессию для больших сообщений.
Используйте TLS для шифрования трафика. Настраивайте keepalive для поддержания соединений.
Для потоковой передачи данных используйте bidirectional streaming. Это эффективно для чатов, уведомлений или передачи больших файлов.
Инструменты и отладка
grpcui позволяет тестировать gRPC API через веб-интерфейс. grpcurl — аналог curl для gRPC. Используйте их для отладки и exploration API.
Включайте логирование и метрики для мониторинга вызовов. Отслеживайте длительность запросов, ошибки и объем передаваемых данных.
gRPC в Go — это мощный инструмент для построения эффективных распределенных систем. Понимание его основ обязательно для современного backend-разработчика.
🔥2❤1👍1👏1
#Собес #golang #rest #redis
🤔 Middle Golang Developer в компанию Sisoft
Техническое собеседование. Лето 2024. Вилка: 200к+. Опыт в резюме: 3+ года. Много говорили о базах данных, REST и т.д.
💬 Вопросы:
- Как обеспечить безопасность данных при передаче через API (HTTPS, шифрование, JWT)?
- Какие альтернативные технологии клиент-серверного взаимодействия вы знаете (gRPC, GraphQL)?
- Чем сокеты отличаются от брокеров сообщений (например, Kafka)?
- Что такое сокеты?
- Чем SQL отличается от NoSQL? Когда выбрать каждое решение?
👉 Все вопросы из этого собеседования (13)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Middle Golang Developer в компанию Sisoft
Техническое собеседование. Лето 2024. Вилка: 200к+. Опыт в резюме: 3+ года. Много говорили о базах данных, REST и т.д.
💬 Вопросы:
- Как обеспечить безопасность данных при передаче через API (HTTPS, шифрование, JWT)?
- Какие альтернативные технологии клиент-серверного взаимодействия вы знаете (gRPC, GraphQL)?
- Чем сокеты отличаются от брокеров сообщений (например, Kafka)?
- Что такое сокеты?
- Чем SQL отличается от NoSQL? Когда выбрать каждое решение?
👉 Все вопросы из этого собеседования (13)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
❤1
#Собес #git_init
🤔 Что такое репозиторий Git и как вы его инициализируете?
💬 Кратко:
Репозиторий Git — это хранилище, где отслеживаются все изменения вашего проекта, включая файлы, их историю и ветки. Чтобы инициализировать репозиторий, используйте команду
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое репозиторий Git и как вы его инициализируете?
💬 Кратко:
Репозиторий Git — это хранилище, где отслеживаются все изменения вашего проекта, включая файлы, их историю и ветки. Чтобы инициализировать репозиторий, используйте команду
git init, которая создаёт скрытую папку .git, где Git сохраняет свои данные.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍1
#repository #кибербезопасность
📚 Структурированный 90-дневный план обучения кибербезопасности предназначенный для начинающих специалистов
План обучения, разделённый на ежедневные задания, охватывающие ключевые темы
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Структурированный 90-дневный план обучения кибербезопасности предназначенный для начинающих специалистов
План обучения, разделённый на ежедневные задания, охватывающие ключевые темы
Перейти к материалу
👉 База вопросов 👉 Новости
Forwarded from YeaHub
[Версия 1.3.0] - Обновление платформы
Мы продолжаем развивать YeaHub, чтобы сделать обучение ещё удобнее, эффективнее и интереснее. В этом обновлении — важные и давно ожидаемые улучшения 👇
🔹 Навыки и ключевые слова из вакансий HH
Мы запустили сервис, который помогает прокачать резюме с помощью популярных навыков и ключевых слов, встречающихся в вакансиях. Это поможет вам выше ранжироваться в поиске среди кандидатов и увеличит конверсию откликов.
https://yeahub.ru/hh-analytics?page=1&mode=skills&specialization=11
🔹 Исправления и улучшения
Мы учли вашу обратную связь: исправили баги, улучшили интерфейс и сделали работу с платформой ещё комфортнее 🧠
🔥 Скоро
1. Сервис Лайвкодинга с реальными задачами с собеседований
👉 Обучайтесь, общайтесь, растите вместе с https://yeahub.ru
#release #news #update #yeahub
Мы продолжаем развивать YeaHub, чтобы сделать обучение ещё удобнее, эффективнее и интереснее. В этом обновлении — важные и давно ожидаемые улучшения 👇
🔹 Навыки и ключевые слова из вакансий HH
Мы запустили сервис, который помогает прокачать резюме с помощью популярных навыков и ключевых слов, встречающихся в вакансиях. Это поможет вам выше ранжироваться в поиске среди кандидатов и увеличит конверсию откликов.
https://yeahub.ru/hh-analytics?page=1&mode=skills&specialization=11
🔹 Исправления и улучшения
Мы учли вашу обратную связь: исправили баги, улучшили интерфейс и сделали работу с платформой ещё комфортнее 🧠
1. Сервис Лайвкодинга с реальными задачами с собеседований
👉 Обучайтесь, общайтесь, растите вместе с https://yeahub.ru
#release #news #update #yeahub
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2❤1
#Собес #mutex #synchronization #unlock
🤔 Что такое mutex, какие они бывают и как их использовать?
💬 Кратко:
Mutex — это механизм синхронизации, который предотвращает одновременный доступ к разделяемым ресурсам несколькими горутинами. В Go есть два типа мьютексов: sync.Mutex (блокирует доступ) и sync.RWMutex (разделяет доступ для чтения и записи). Для работы с мьютексами нужно использовать методы
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Что такое mutex, какие они бывают и как их использовать?
💬 Кратко:
Mutex — это механизм синхронизации, который предотвращает одновременный доступ к разделяемым ресурсам несколькими горутинами. В Go есть два типа мьютексов: sync.Mutex (блокирует доступ) и sync.RWMutex (разделяет доступ для чтения и записи). Для работы с мьютексами нужно использовать методы
Lock и Unlock.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
👍2❤1
Кэширование в Go-приложениях: стратегии и инструменты
Кэширование — ключевой метод повышения производительности приложений. В Go есть несколько подходов для его реализации.
Локальное кэширование в памяти
Простейший вариант — использование map с синхронизацией через sync.RWMutex. Подходит для небольших объемов данных с простой инвалидацией.
sync.Map рекомендуется для высококонкурентных read-heavy сценариев, когда ключи редко меняются. Не требует явной синхронизации.
Библиотека groupcache от Google создавалась для распределенного кэширования, но работает и локально. Автоматически управляет памятью и имеет эффективные механизмы обновления.
Внешние системы кэширования
Redis — наиболее популярное решение. Поддерживает различные структуры данных, транзакции, публикацию/подписку. Из Go работают через библиотеки go-redis или rueidis.
Memcached проще Redis, но эффективен для простых ключ-значение структур. Имеет меньше возможностей, но высокую производительность.
Стратегии инвалидации
TTL (Time to Live) — данные удаляются автоматически по истечении времени. Удобно, но может приводить к cache stampede при одновременном обновлении.
Явная инвалидация при изменении данных. Требует отслеживания изменений, но обеспечивает актуальность кэша.
Write-through и write-behind стратегии. Данные записываются одновременно в кэш и основное хранилище или с небольшой задержкой.
Кэширование в Go-приложениях: стратегии и инструменты
Кэширование — ключевой метод повышения производительности приложений. В Go есть несколько подходов для его реализации.
Локальное кэширование в памяти
Простейший вариант — использование map с синхронизацией через sync.RWMutex. Подходит для небольших объемов данных с простой инвалидацией.
sync.Map рекомендуется для высококонкурентных read-heavy сценариев, когда ключи редко меняются. Не требует явной синхронизации.
Библиотека groupcache от Google создавалась для распределенного кэширования, но работает и локально. Автоматически управляет памятью и имеет эффективные механизмы обновления.
Внешние системы кэширования
Redis — наиболее популярное решение. Поддерживает различные структуры данных, транзакции, публикацию/подписку. Из Go работают через библиотеки go-redis или rueidis.
Memcached проще Redis, но эффективен для простых ключ-значение структур. Имеет меньше возможностей, но высокую производительность.
Стратегии инвалидации
TTL (Time to Live) — данные удаляются автоматически по истечении времени. Удобно, но может приводить к cache stampede при одновременном обновлении.
Явная инвалидация при изменении данных. Требует отслеживания изменений, но обеспечивает актуальность кэша.
Write-through и write-behind стратегии. Данные записываются одновременно в кэш и основное хранилище или с небольшой задержкой.
Практические рекомендации
Всегда реализуйте graceful degradation. При недоступности кэша приложение должно продолжать работать, обращаясь к основному источнику данных.
Настройте мониторинг hit/miss ratio. Низкий процент попаданий указывает на неэффективную стратегию кэширования.
Используйте multi-level кэширование: L1 — локальная память, L2 — Redis. Это снижает нагрузку на внешние системы.
Для высоконагруженных систем настройте шардирование кэша между несколькими инстансами. Это распределит нагрузку и увеличит доступную память.
Кэширование требует баланса между производительностью и актуальностью данных. Правильно выбранная стратегия значительно улучшает отзывчивость приложения при сохранении консистентности данных.
Кэширование — ключевой метод повышения производительности приложений. В Go есть несколько подходов для его реализации.
Локальное кэширование в памяти
Простейший вариант — использование map с синхронизацией через sync.RWMutex. Подходит для небольших объемов данных с простой инвалидацией.
sync.Map рекомендуется для высококонкурентных read-heavy сценариев, когда ключи редко меняются. Не требует явной синхронизации.
Библиотека groupcache от Google создавалась для распределенного кэширования, но работает и локально. Автоматически управляет памятью и имеет эффективные механизмы обновления.
Внешние системы кэширования
Redis — наиболее популярное решение. Поддерживает различные структуры данных, транзакции, публикацию/подписку. Из Go работают через библиотеки go-redis или rueidis.
Memcached проще Redis, но эффективен для простых ключ-значение структур. Имеет меньше возможностей, но высокую производительность.
Стратегии инвалидации
TTL (Time to Live) — данные удаляются автоматически по истечении времени. Удобно, но может приводить к cache stampede при одновременном обновлении.
Явная инвалидация при изменении данных. Требует отслеживания изменений, но обеспечивает актуальность кэша.
Write-through и write-behind стратегии. Данные записываются одновременно в кэш и основное хранилище или с небольшой задержкой.
Кэширование в Go-приложениях: стратегии и инструменты
Кэширование — ключевой метод повышения производительности приложений. В Go есть несколько подходов для его реализации.
Локальное кэширование в памяти
Простейший вариант — использование map с синхронизацией через sync.RWMutex. Подходит для небольших объемов данных с простой инвалидацией.
sync.Map рекомендуется для высококонкурентных read-heavy сценариев, когда ключи редко меняются. Не требует явной синхронизации.
Библиотека groupcache от Google создавалась для распределенного кэширования, но работает и локально. Автоматически управляет памятью и имеет эффективные механизмы обновления.
Внешние системы кэширования
Redis — наиболее популярное решение. Поддерживает различные структуры данных, транзакции, публикацию/подписку. Из Go работают через библиотеки go-redis или rueidis.
Memcached проще Redis, но эффективен для простых ключ-значение структур. Имеет меньше возможностей, но высокую производительность.
Стратегии инвалидации
TTL (Time to Live) — данные удаляются автоматически по истечении времени. Удобно, но может приводить к cache stampede при одновременном обновлении.
Явная инвалидация при изменении данных. Требует отслеживания изменений, но обеспечивает актуальность кэша.
Write-through и write-behind стратегии. Данные записываются одновременно в кэш и основное хранилище или с небольшой задержкой.
Практические рекомендации
Всегда реализуйте graceful degradation. При недоступности кэша приложение должно продолжать работать, обращаясь к основному источнику данных.
Настройте мониторинг hit/miss ratio. Низкий процент попаданий указывает на неэффективную стратегию кэширования.
Используйте multi-level кэширование: L1 — локальная память, L2 — Redis. Это снижает нагрузку на внешние системы.
Для высоконагруженных систем настройте шардирование кэша между несколькими инстансами. Это распределит нагрузку и увеличит доступную память.
Кэширование требует баланса между производительностью и актуальностью данных. Правильно выбранная стратегия значительно улучшает отзывчивость приложения при сохранении консистентности данных.
👍2
#Собес #scope #heap #stack
🤔 Middle Golang Backend-разработчик в Газпром.
Техническое собеседование. Осень 2024. Вилка 150к+. Опыт в резюме: 3 года. Были вопросы про текущее место работы.
💬 Вопросы:
- Что произойдёт при попытке записи в неинициализированный канал?
- В чём разница между буферизированным и небуферизированным каналом? Какой из них быстрее передаст значение?
- Как повлияет тип получателя (по значению или по ссылке) на реализацию интерфейса двумя структурами?
- Какие бывают типы интерфейсов?
- Есть ли в Go полиморфизм как принцип ООП?
👉 Все вопросы из этого собеседования (25)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Middle Golang Backend-разработчик в Газпром.
Техническое собеседование. Осень 2024. Вилка 150к+. Опыт в резюме: 3 года. Были вопросы про текущее место работы.
💬 Вопросы:
- Что произойдёт при попытке записи в неинициализированный канал?
- В чём разница между буферизированным и небуферизированным каналом? Какой из них быстрее передаст значение?
- Как повлияет тип получателя (по значению или по ссылке) на реализацию интерфейса двумя структурами?
- Какие бывают типы интерфейсов?
- Есть ли в Go полиморфизм как принцип ООП?
👉 Все вопросы из этого собеседования (25)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
❤1
#Собес #distinct #group_by
🤔 Как еще, кроме DISTINCT, можно добиться уникальности записей в выборке?
💬 Кратко:
Кроме
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как еще, кроме DISTINCT, можно добиться уникальности записей в выборке?
💬 Кратко:
Кроме
DISTINCT, уникальности записей можно добиться с помощью GROUP BY по всем нужным столбцам, использованием оконных функций (например, ROW_NUMBER()) с фильтрацией, или путем агрегации и последующего разворачивания данных. Каждый метод имеет свои применения в зависимости от контекста.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#course #ооп #case
📚 Практический анализ ПО с моделированием на UML
Целью курса является обучение слушателей теоретическим основам объектно-ориентированного подхода, практическим методам визуального проектирования и технологии разработки программного обеспечения с использованием компьютеризированных систем разработки (CASE
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Практический анализ ПО с моделированием на UML
Целью курса является обучение слушателей теоретическим основам объектно-ориентированного подхода, практическим методам визуального проектирования и технологии разработки программного обеспечения с использованием компьютеризированных систем разработки (CASE
Перейти к материалу
👉 База вопросов 👉 Новости
👍2
#Собес #go #workerpool #goroutine
🤔 Как реализовать worker pool с ограничением по concurrency в Go?
💬 Кратко:
Worker pool — это набор фиксированных воркеров, которые получают задачи из канала и обрабатывают их параллельно. Ограничение по concurrency достигается размером пула.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Как реализовать worker pool с ограничением по concurrency в Go?
💬 Кратко:
Worker pool — это набор фиксированных воркеров, которые получают задачи из канала и обрабатывают их параллельно. Ограничение по concurrency достигается размером пула.
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
❤1
Graceful Shutdown в Go: основы
Graceful Shutdown обеспечивает корректное завершение работы приложения без потери данных и обрыва операций.
Механизм работы
При получении SIGINT/SIGTERM приложение начинает плавную остановку: прекращает принимать новые запросы, завершает текущие операции, освобождает ресурсы.
Реализация
Используйте context.WithCancel для создания отменяемого контекста. При сигнале вызывайте cancel() и передавайте контекст во все долгие операции.
Для HTTP серверов вызовите Shutdown() с таймаутом. Сервер перестанет принимать новые соединения, но завершит обработку текущих.
Координация компонентов
Используйте sync.WaitGroup для отслеживания рабочих горутин. Закрытие канала может служить универсальным сигналом остановки.
Закрывайте все внешние соединения: БД, кэши, брокеры сообщений. Используйте встроенные методы Close/Shutdown библиотек.
Практические советы
Настройте обработку SIGINT (Ctrl+C) и SIGTERM через os/signal. Установите разумные таймауты на каждый этап завершения.
Логируйте процесс shutdown для диагностики. При превышении таймаутов продолжайте завершение, фиксируя проблемные компоненты.
В микросервисных архитектурах снимите инстанс с балансировки нагрузки до начала shutdown. В Kubernetes используйте preStop hooks.
Правильная реализация Graceful Shutdown предотвращает потерю данных и улучшает пользовательский опыт при обновлениях и масштабировании.
Graceful Shutdown обеспечивает корректное завершение работы приложения без потери данных и обрыва операций.
Механизм работы
При получении SIGINT/SIGTERM приложение начинает плавную остановку: прекращает принимать новые запросы, завершает текущие операции, освобождает ресурсы.
Реализация
Используйте context.WithCancel для создания отменяемого контекста. При сигнале вызывайте cancel() и передавайте контекст во все долгие операции.
Для HTTP серверов вызовите Shutdown() с таймаутом. Сервер перестанет принимать новые соединения, но завершит обработку текущих.
Координация компонентов
Используйте sync.WaitGroup для отслеживания рабочих горутин. Закрытие канала может служить универсальным сигналом остановки.
Закрывайте все внешние соединения: БД, кэши, брокеры сообщений. Используйте встроенные методы Close/Shutdown библиотек.
Практические советы
Настройте обработку SIGINT (Ctrl+C) и SIGTERM через os/signal. Установите разумные таймауты на каждый этап завершения.
Логируйте процесс shutdown для диагностики. При превышении таймаутов продолжайте завершение, фиксируя проблемные компоненты.
В микросервисных архитектурах снимите инстанс с балансировки нагрузки до начала shutdown. В Kubernetes используйте preStop hooks.
Правильная реализация Graceful Shutdown предотвращает потерю данных и улучшает пользовательский опыт при обновлениях и масштабировании.
❤2👍2🔥1
#Собес #interface #slice #map
🤔 Middle Golang Backend-разработчик в Digital Spirit.
Техническое собеседование. Лето 2024. Опыт в резюме: 3 года. Вилка 200к+. Аутсорс. Были вопросы про текущее место работы, большая теоретическая часть, секция лайвкодинга.
💬 Вопросы:
- Как ООП реализовано в Go?
- Что будет, если попытаться писать в закрытом канале?
- Что такое транзакции в PostgreSQL?
- Что такое индекс в базе данных?
- Что такое type switch в Go?
👉 Все вопросы из этого собеседования (34)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
🤔 Middle Golang Backend-разработчик в Digital Spirit.
Техническое собеседование. Лето 2024. Опыт в резюме: 3 года. Вилка 200к+. Аутсорс. Были вопросы про текущее место работы, большая теоретическая часть, секция лайвкодинга.
💬 Вопросы:
- Как ООП реализовано в Go?
- Что будет, если попытаться писать в закрытом канале?
- Что такое транзакции в PostgreSQL?
- Что такое индекс в базе данных?
- Что такое type switch в Go?
👉 Все вопросы из этого собеседования (34)
📣 Хочешь больше собесов?
Подпишись на наш главный канал
#Собес #git_хуки
🤔 Из чего состоят “хуки” в Git?
💬 Кратко:
Хуки в Git — это скрипты, которые выполняются автоматически при определённых действиях в репозитории, таких как коммиты, слияния или пуши. Они находятся в директории
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Из чего состоят “хуки” в Git?
💬 Кратко:
Хуки в Git — это скрипты, которые выполняются автоматически при определённых действиях в репозитории, таких как коммиты, слияния или пуши. Они находятся в директории
.git/hooks и могут быть настроены для выполнения различных задач.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
#documentation #http
📚 Все про HTTP
Тут собрано всё, что нужно знать про самый популярный протокол интернета
✓ Все статус-коды с понятными объяснениями
✓ Методы и заголовки
✓ Подборка инструментов для тестирования HTTP
✓ Чёткая инфа про HTTP/3
Перейти к материалу
👉 База вопросов 👉 Новости
📚 Все про HTTP
Тут собрано всё, что нужно знать про самый популярный протокол интернета
✓ Все статус-коды с понятными объяснениями
✓ Методы и заголовки
✓ Подборка инструментов для тестирования HTTP
✓ Чёткая инфа про HTTP/3
Перейти к материалу
👉 База вопросов 👉 Новости
🔥1
#Собес #set #map #struct
🤔 Есть ли в Go тип Set?
💬 Кратко:
В Go нет встроенного типа
📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал
🤔 Есть ли в Go тип Set?
💬 Кратко:
В Go нет встроенного типа
Set, но можно легко реализовать множество с помощью map[T]struct{}. Такой подход эффективен и компактен.📌 Полный разбор + примеры использования — на платформе:
👉 Перейти к разбору
📣 Хочешь получать больше таких разборов?
Подпишись на наш главный канал