Golang Юниор
4.74K subscribers
161 photos
2 videos
175 links
Канал для начинающих изучать язык программирования Go. Юниоры или Junior - Вперед.

Контент нашего канала состоит из:
- туториалы
- вопросы с собесов
- тесты на знания Go

@anothertechrock

Чат для обсуждения задач: https://t.me/+UA9kQbQdpFxmZGY6
Download Telegram
🖥 Как базы данных выполняют SQL-запросы?

Процесс выполнения SQL-запросов в базе данных включает в себя несколько компонентов, взаимодействующих между собой. Хотя конкретная архитектура различных систем баз данных может отличаться, ниже описана общая последовательность действий.

1. Оператор SQL запускается в клиентской программе и передается по сети на сервер базы данных.

2. Когда сервер базы данных получает SQL-оператор, реляционный движок начинает его обработку. Сначала синтаксический анализатор проверяет правильность оператора. Затем он преобразует оператор в дерево запросов, которое представляет собой внутреннюю структуру данных.

3. Оптимизатор запросов просматривает дерево запросов и определяет наиболее эффективный способ выполнения SQL-оператора, создавая план выполнения.

4. План выполнения передается исполнителю запроса, который использует его для координации получения или изменения данных в соответствии с запросом SQL. Для доступа к данным исполнитель взаимодействует с движком хранилища.

5. Движок хранилища использует методы доступа - протоколы чтения и записи данных, наиболее эффективные для выполнения различных операций.

6. При чтении данных менеджер буферов проверяет, кэшированы ли нужные данные в памяти, и при необходимости извлекает их с диска. Это ускоряет последующий доступ.

7. При записи данных со вставкой или обновлением менеджер транзакций следит за тем, чтобы изменения происходили атомарно и сохраняли целостность базы данных.

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

Работая вместе, эти компоненты обеспечивают надежную и эффективную обработку SQL-запросов в системе управления базами данных.

@golangprofi
🔍Хотите углубить свои знания в области backend и блокчейн-разработки?

☄️А теперь представьте, что вы уверенно пишете код на Rust как для классического backend, так и для блокчейн-систем. Вы востребованы и получаете хорошие офферы в финтехе.

Хотите это реализовать? Присоединяйтесь к открытому вебинару «Backend vs Blockchain на Rust» 14 августа в 20:00 мск и сделайте прыжок в будущее! На занятии мы разберём:

- принципы работы блокчейн-систем;
- различия между смарт-контрактами и классическим backend;
- примеры кода и сравнение разработки на Rust для backend и блокчейн.

Спикер Кирилл Федченко — опытный разработчик на нескольких языках.

➡️ Встречаемся в рамках курса «Rust Developer. Professional». Все участники вебинара получат специальную цену на обучение! Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
⭐️ Две структуры с одинаковыми полями могут иметь разный размер.

Это явление известно как "padding", понятие, заимствованное из языка C++, но применимое и в Go.

Рассмотрим приведенный выше пример.

Структуры A и B имеют совершенно одинаковые поля, но если просто переставить порядок полей, то структура A станет в два раза больше.

Она увеличивается до 32 байт, в то время как структура B остается меньше - 16 байт.
This media is not supported in your browser
VIEW IN TELEGRAM
👣 Roboden-game

Создать RTS, которая бы хорошо работала в браузере с помощью #golang, сложная задача, но возможная.

Игра написана с использованием движка Ebitengine и даже доступна в Steam.

Github
Проект

#ebitengine #gamedev #golang
Что выведет код?

package main

var m = make(map[any]any)

func foo[T any](x T) {
type K struct{}
m[K{}] = x
}

func main() {
foo(123)
foo(true)
println(len(m))
}


Ответ
Задача: Идеальное число

Условие: идеальное число - это положительное целое число, которое равно сумме делителей этого же числа, за исключением самого числа.

Необходимо проверить входное число на идеальность.

Пример:

Ввод:
num = 28
Вывод: true
Объяснение: 28 = 1 + 2 + 4 + 7 + 14

Ввод: num = 7
Вывод: false

Решение

Пишите свое решение в комментариях👇
📣Как сделать верификацию пользователя в системе с помощью телеграмм-бота?

Узнайте на открытом вебинаре 18 сентября в 20:00 мск, где мы разберем:

- как реализовать потоко-независимый тип map;
- как создать и настроить телеграмм-бота для постоянного ожидания пользователей;
- как использовать web-socket и каналы для верификации пользователя.

Встречаемся в преддверии старта курса «Go (Golang) Developer Basic». Все участники вебинара получат специальную цену на обучение!

➡️Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://otus.pw/bTU0/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Что выведет код ?


package main

import (
"fmt"
)

func printChannel(ch chan int) {
for {
select {
case num := <-ch:
fmt.Printf("%d ", num)

}
}
}

func main() {
ch := make(chan int)
go printChannel(ch)
for i := 0; i < 5; i++ {
ch <- i
}

}


Ответ
Задача: Ежедневная температура

Условие: дается массив, в котором содержатся на температуры за определенный день. Необходимо вернуть массив, такой что будет содержать на i-ой позиции количество дней, которое необходимо выждать, чтобы наступил день теплее. Если такой ситуации не случается, то на i-ой позиции установить 0.

Пример:

Ввод:
temperatures = [73,74,75,71,69,72,76,73]
Вывод: [1,1,4,2,1,1,0,0]

Ввод: temperatures = [30,40,50,60]
Вывод: [1,1,1,0]

Решение

Пишите свое решение в комментариях👇
This media is not supported in your browser
VIEW IN TELEGRAM
Enola Holmes

Это усовершенствованная версия утилиты Sherlock и современный CLI-инструмент, написанный на Go, который позволяет находить учетные записи в социальных сетях по имени пользователя.

go install github.com/theyahya/enola/cmd/enola@latest

▪️ Github

👉 Golang Юниор | #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотите узнать, как использовать Patroni для управления высокодоступными кластерами PostgreSQL?

Ждем вас на открытом вебинаре 24 октября в 20:00 мск, где мы разберем:

- что такое Patroni и как он помогает обеспечить высокую доступность для PostgreSQL;
- основные компоненты и архитектуру Patroni;
- настройку и конфигурацию Patroni для работы с PostgreSQL;
- примеры использования Patroni для управления кластером PostgreSQL;
- практические советы по оптимизации и мониторингу работы кластера.

👨‍💻🛠👨🏻‍💻 Урок для DevOps-инженеров, системных администраторов, backend-разработчиков и тимлидов, стремящихся обеспечить высокую доступность PostgreSQL.

Спикер Андрей Поляков — старший разработчик в Unlimint.

Встречаемся в преддверии старта курса «Highload Architect». Все участники вебинара получат специальную цену на обучение! Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⚡️ Выпущен Go-HTML 1.0

Go-HTML предоставляет платформу для программирования интерактивных компонентов пользовательского интерфейса с использованием Go (вместо JavaScript) для веб-приложений.

##golang #htmx #javascript #программирование #релиз #webdev

Go-HTML может использовать компоненты Templ.

- https://go.dev/
- https://htmx.org/
- https://templ.guide/

▪️ Github

👉 Golang Юниор | #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
Какие брокеры использовать, чтобы обеспечить асинхронную связь между микросервисами?

Узнайте на открытом практическом уроке «Брокеры сообщений: RabbitMQ и Kafka» от OTUS, где мы узнаем:

что такое брокеры сообщений и как они помогают в архитектуре микросервисов
основные различия между RabbitMQ и Kafka, включая их архитектурные подходы
как развернуть и настроить RabbitMQ и Kafka для ваших приложений
практическое использование обоих брокеров на реальных примерах в live demo

🗓 Встречаемся 24 октября в 20:00 мск в преддверии старта курса «Microservice Architecture». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS!

➡️ Ссылка для регистрации

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👩‍💻 Пакет unique в Go 1.23 — хороший способ оптимизировать ваши ресурсы

👉 Golang Юниор | #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 Операции со слайсами в Go

Будет полезно начинающим гоферам;
здесь наглядно показывается, как работают слайсы, какие они имеют методы и как взаимодействуют с разными функциями

📎 Go slice tricks

👉 Golang Юниор | #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
👣 go-backend-clean-architecture-chi

Проект чистой архитектуры Go Backend с Chi (стандартный net/http), MongoDB, JWT Authentication Middleware, Test и Docker.
#golang

▪️Github

👉 Golang Юниор | #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой самый больной вопрос для IT-команд? Тестирование микросервисов!

Откройте все секреты! Как повысить отказоустойчивость и управлять взаимодействиями между сервисами?

👨‍💻🛠👨🏻‍💻 На открытом уроке мы разберем всё: от юнит-тестов до тестов производительности.

Присоединяйтесь к бесплатному вебинару 7 ноября в 20:00 мск и получите практические инструменты для работы с микросервисами. А еще скидку на обучение на курсе «Software Architect»!

🔴 Регистрируйтесь прямо сейчас и получите доступ к лучшим практикам тестирования в распределённых системах

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👣 Video Transcoding Service

Масштабируемый сервис транскодирования (конвертация видеофайлов из одного кодека или формата в другой.) видео, созданный с использованием Golang, Gin, AWS, Pulumi, MongoDB и Redis.

git clone https://github.com/yourusername/video-transcoding-service.git
cd video-transcoding-service


#golang

▪️ Github

👉 Golang Юниор | #golang
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотите создавать масштабируемую и отказоустойчивую микросервисную архитектуру?

19 ноября в 20:00 мск приглашаем на открытый вебинар, где вы узнаете, как применять ключевые стратегии Circuit Breaker, Retry и Load Balancing для повышения стабильности систем.

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

👨‍💻🛠👨🏻‍💻 Вебинар будет полезен разработчикам, архитекторам и DevOps-инженерам, которые хотят повысить производительность своих микросервисов, внедрив современные решения для автоматического масштабирования и балансировки.

🔴 Регистрируйтесь прямо сейчас и получите скидку на курс «Software Architect»

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👣 Как работать с часовыми поясами и синхронизировать время в вашем приложении на стороне сервера с помощью Go?

💡 Если ваше приложение используется пользователями по всему миру, у вас может возникнуть проблема с синхронизацией времени из за разных часовых поясов. В этом гайде рассказывается, как адаптировать ваше ПО под несколько часовых поясов.

🔗 Ссылка: *клик*

👉 Golang Юниор | #golang
Please open Telegram to view this post
VIEW IN TELEGRAM