Distributed tracing в Go
Представьте, что у вас есть цепочка сервисов, которые взаимодействуют друг с другом.
И, например, запрос от одного к другому длится очень долго. Как быстро найти проблему?
Здесь поможет distributed tracing. Вы сможете визуализировать полный путь запроса через все системы, что ускорит поиск проблемы.
Об инструментах трейсинга в Go, их плюсах и минусах рассказал Константин Гвенцадзе, разработчик из отдела развития услуг 1С в @selectelcareers 🦖
А еще он подготовил для вас репозиторий с инструкциями и командами, чтобы вы могли потестить и выбрать для себя подходящий инструмент!
Кстати, в Selectel сейчас открыто несколько интересных вакансий в Backend-разработку на Golang — заглядывайте посмотреть 😉
Реклама, АО «Селектел», ИНН: 7810962785, ERID: 2VtzqwWKz2a
Представьте, что у вас есть цепочка сервисов, которые взаимодействуют друг с другом.
И, например, запрос от одного к другому длится очень долго. Как быстро найти проблему?
Здесь поможет distributed tracing. Вы сможете визуализировать полный путь запроса через все системы, что ускорит поиск проблемы.
Об инструментах трейсинга в Go, их плюсах и минусах рассказал Константин Гвенцадзе, разработчик из отдела развития услуг 1С в @selectelcareers 🦖
А еще он подготовил для вас репозиторий с инструкциями и командами, чтобы вы могли потестить и выбрать для себя подходящий инструмент!
Кстати, в Selectel сейчас открыто несколько интересных вакансий в Backend-разработку на Golang — заглядывайте посмотреть 😉
Реклама, АО «Селектел», ИНН: 7810962785, ERID: 2VtzqwWKz2a
❤3👍3🌭1
@golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥2
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥6❤3
Forwarded from Golang
@devopsitsec
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Представляем вам крутую шпаргалку по шести основным архитектурным шаблонам, каждый из которых подходит для разных сценариев.
Это самый простой и традиционный подход, при котором все компоненты связаны между собой в единой кодовой базе. Монолитная архитектура проста и идеально подходит для небольших приложений, не требующих обширной масштабируемости. Однако по мере роста систем ее масштабирование, тестирование и поддержка могут стать сложными. Идеально подходит для стартапов или небольших команд, ищущих быструю разработку.
Любимый вариант для больших сложных приложений, которым требуется масштабируемость и гибкость. Здесь приложение разделено на независимо развертываемые сервисы, каждый из которых обрабатывает определенные бизнес-функции. Микросервисы позволяют командам использовать различные технологические стеки и масштабировать сервисы независимо. Этот шаблон популярен в приложениях с высоким трафиком и организациях, которым нужна свобода для независимого развертывания функций.
Этот шаблон разделяет задачи на контроллеры и рабочие. Контроллер управляет взаимодействиями с пользователем, в то время как рабочие выполняют фоновые задачи, такие как обработка данных, создавая систему, которая является высокомасштабируемой и эффективной. Идеально подходит для приложений, которым необходимо выполнять интенсивные фоновые задания, такие как обработка заказов, аналитика в реальном времени или уведомления.
Классический шаблон, обычно используемый в веб-приложениях, MVC разделяет логику приложения (модель), пользовательский интерфейс (представление) и взаимодействие (контроллер). Такое разделение задач упрощает поддержку и обновление определенных частей, не затрагивая всю систему. MVC является популярным выбором для приложений, которым требуются пользовательские интерфейсы, особенно в сферах электронной коммерции и управления контентом.
Идеально подходит для систем, которым необходимо реагировать на определенные действия или события, такие как щелчки пользователя, обновления базы данных или показания датчиков. В этом шаблоне компоненты реагируют на события асинхронно, что делает его масштабируемым и слабосвязанным. Архитектура, управляемая событиями, отлично подходит для приложений со сложными рабочими процессами или асинхронными потребностями в обработке, такими как IoT, аналитика в реальном времени и системы уведомлений клиентов.
Организует приложение по слоям (Презентация, Бизнес, Доступ к данным и Инфраструктура) для создания четкого разделения интересов. Каждый слой отвечает за определенный аспект, делая систему более обслуживаемой и тестируемой. Многоуровневый подход часто используется в корпоративных приложениях и идеально подходит для создания четкой стандартизированной структуры во всей системе.
#doc #web #cheatsheet
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🥴5❤3🤣3🥰2🥱2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍5❤2🤔1
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤4🔥4
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤3👍2
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥2🥰2🥱2💯1
В этой задаче Вам необходимо найти самую длинную подстроку строки \(s\), такую что каждая буква в ней встречается не менее \(k\) раз.
Если такой подстроки нет, вернуть 0.
Пример:
Вход: s = "aaabb", k = 3
Выход: 3
Объяснение: Самая длинная подходящая подстрока – "aaa", так как буква 'a' повторяется три раза.
### Описание алгоритма:
1. Генерация подстрок: Генерируем все возможные подстроки строки \(s\). Для каждой подстроки будем отслеживать частоту появления символов при помощи массива countMap.
2. Проверка валидности: Метод isValid проверяет, что каждый символ в текущей подстроке появляется хотя бы \(k\) раз. Это делается через проверку значений в массиве countMap. Если все символы удовлетворяют условию, то подстрока считается допустимой.
3. Обновление результата: Отслеживаем максимальную длину допустимых подстрок. Когда находим новую подходящую подстроку большей длины, обновляем результат. В итоге возвращаем длину самой длинной найденной подстроки.
Ответ:
package main
import (
"fmt"
)
func longestSubstring(s string, k int) int {
if len(s) == 0 || k > len(s) {
return 0
}
n := len(s)
result := 0
for start := 0; start < n; start++ {
countMap := make([]int, 26)
for end := start; end < n; end++ {
countMap[s[end]-'a']++
if isValid(countMap, k) {
if end-start+1 > result {
result = end - start + 1
}
}
}
}
return result
}
func isValid(countMap []int, k int) bool {
countLetters, countAtLeastK := 0, 0
for _, count := range countMap {
if count > 0 {
countLetters++
}
if count >= k {
countAtLeastK++
}
}
return countLetters == countAtLeastK
}
func main() {
fmt.Println(longestSubstring("aaabb", 3)) // Output: 3
fmt.Println(longestSubstring("ababbc", 2)) // Output: 5
}
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4❤2🥱2🥴2🤣1
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9🥱6👍4❤3
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👏5❤3👍3🔥1🤔1
⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:
МАШИННОЕ ОБУЧЕНИЕ: www.tgoop.com/ai_machinelearning_big_data
C++ www.tgoop.com/cpluspluc
Python: www.tgoop.com/pythonl
Linux: www.tgoop.com/linuxacademiya
Хакинг: www.tgoop.com/linuxkalii
Devops: www.tgoop.com/DevOPSitsec
АНАЛИЗ Данных: www.tgoop.com/data_analysis_ml
Javascript: www.tgoop.com/javascriptv
C#: www.tgoop.com/csharp_ci
Java: www.tgoop.com/javatg
Базы данных: www.tgoop.com/sqlhub
Python собеседования: www.tgoop.com/python_job_interview
Мобильная разработка: www.tgoop.com/mobdevelop
Docker: www.tgoop.com/DevopsDocker
Golang: www.tgoop.com/golang_interview
React: www.tgoop.com/react_tg
Rust: www.tgoop.com/rust_code
ИИ: www.tgoop.com/vistehno
PHP: www.tgoop.com/phpshka
Android: www.tgoop.com/android_its
Frontend: www.tgoop.com/front
Big Data: www.tgoop.com/bigdatai
Собеседования МЛ: www.tgoop.com/machinelearning_interview
МАТЕМАТИКА: www.tgoop.com/data_math
Kubernets: www.tgoop.com/kubernetc
Разработка игр: https://www.tgoop.com/gamedev
💼 Папка с вакансиями: www.tgoop.com/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: www.tgoop.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: www.tgoop.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://www.tgoop.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://www.tgoop.com/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: www.tgoop.com/memes_prog
🇬🇧Английский: www.tgoop.com/english_forprogrammers
🧠ИИ: www.tgoop.com/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://www.tgoop.com/addlist/BkskQciUW_FhNjEy
МАШИННОЕ ОБУЧЕНИЕ: www.tgoop.com/ai_machinelearning_big_data
C++ www.tgoop.com/cpluspluc
Python: www.tgoop.com/pythonl
Linux: www.tgoop.com/linuxacademiya
Хакинг: www.tgoop.com/linuxkalii
Devops: www.tgoop.com/DevOPSitsec
АНАЛИЗ Данных: www.tgoop.com/data_analysis_ml
Javascript: www.tgoop.com/javascriptv
C#: www.tgoop.com/csharp_ci
Java: www.tgoop.com/javatg
Базы данных: www.tgoop.com/sqlhub
Python собеседования: www.tgoop.com/python_job_interview
Мобильная разработка: www.tgoop.com/mobdevelop
Docker: www.tgoop.com/DevopsDocker
Golang: www.tgoop.com/golang_interview
React: www.tgoop.com/react_tg
Rust: www.tgoop.com/rust_code
ИИ: www.tgoop.com/vistehno
PHP: www.tgoop.com/phpshka
Android: www.tgoop.com/android_its
Frontend: www.tgoop.com/front
Big Data: www.tgoop.com/bigdatai
Собеседования МЛ: www.tgoop.com/machinelearning_interview
МАТЕМАТИКА: www.tgoop.com/data_math
Kubernets: www.tgoop.com/kubernetc
Разработка игр: https://www.tgoop.com/gamedev
💼 Папка с вакансиями: www.tgoop.com/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: www.tgoop.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: www.tgoop.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://www.tgoop.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://www.tgoop.com/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: www.tgoop.com/memes_prog
🇬🇧Английский: www.tgoop.com/english_forprogrammers
🧠ИИ: www.tgoop.com/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://www.tgoop.com/addlist/BkskQciUW_FhNjEy
👍1
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥2
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥2
Senior Go Developer в VK AdBlogger
VK AdBlogger — платформа, которая соединяет рекламодателей и блогеров ВКонтакте, помогая брендам размещать рекламу напрямую в аккаунтах авторов.
В команду ищут опытного Go-разработчика, который будет:
• создавать и развивать доменное направление для платформы influence- и performance-маркетинга;
• участвовать в системном дизайне;
• следить за выполнением задач доменной команды.
Стек: Go, React, Postgres, Kafka, Kuber.
Ожидается: вы в бэкенде от четырёх лет, в Go-разработке — от трёх, уже имели дело с PostgreSQL и in-memory хранилищами.
Подробнее о вакансии тут
VK AdBlogger — платформа, которая соединяет рекламодателей и блогеров ВКонтакте, помогая брендам размещать рекламу напрямую в аккаунтах авторов.
В команду ищут опытного Go-разработчика, который будет:
• создавать и развивать доменное направление для платформы influence- и performance-маркетинга;
• участвовать в системном дизайне;
• следить за выполнением задач доменной команды.
Стек: Go, React, Postgres, Kafka, Kuber.
Ожидается: вы в бэкенде от четырёх лет, в Go-разработке — от трёх, уже имели дело с PostgreSQL и in-memory хранилищами.
Подробнее о вакансии тут
@golang_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥3🥰1
Forwarded from Golang
🗣 Анонс: https://groups.google.com/g/golang-announce/c/3DyiMkYx4Fo
⬇️ Скачать: https://go.dev/dl/#go1.23.4
#golang
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍7❤4