Golang разработчик
Курс «Golang разработчик» представляет собой комплексную программу обучения, которая призвана помочь вам освоить язык программирования Golang от основ до продвинутого уровня. В ходе курса вы узнаете о преимуществах и областях применения Golang. Вы изучите основные концепции, такие как переменные, типы данных, операции и управляющие конструкции. Вам будет представлено ООП в Golang, включая структуры, методы и интерфейсы. Вы также овладеете работой с массивами, слайсами, мапами и строками.
80 ак.ч.
Онлайн
GO-I-001
Golang разработчик
Записаться на курс
Длительность
80 ак.ч.
Локация
Онлайн
Код
GO-I-001
Расписание и цены
* Для физических лиц действует скидка 10% Закажите корпоративное обучение с учетом ваших потребностей
Golang разработчик
Записаться на курс
Длительность
80 ак.ч.
Локация
Онлайн
Код
GO-I-001
Расписание и цены
* Для физических лиц действует скидка 10% Закажите корпоративное обучение с учетом ваших потребностей

Описание

Курс также охватывает обработку ошибок и паник, позволяя вам создавать надежные и безопасные программы на Golang.

В дальнейшем, вам будет предложено углубиться в продвинутые темы, такие как многопоточность и параллельное программирование, сетевое программирование и веб-разработка с использованием Golang. Вы изучите работу с базами данных, создание и использование пакетов, а также разработку тестов для проверки функциональности кода. Курс также охватывает аспекты производительности и оптимизации кода, а также лучшие практики разработки на Golang. По окончании курса вы будете готовы к созданию проектов на Golang и использованию его мощных возможностей для разработки современных приложений.

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

Обучение проходит в формате вебинаров с экспертами, самостоятельным выполнением практики.

Целевая аудитория

Разработчики

Разбираемые темы

  • 1.Знакомство с Golang

    • Плюсы и минусы

    • Сферы применения

    • Кто использует

  • 2.Переменные и элементарные типы данных

    • Типизация в Go

    • Объявление переменной

    • Операция присваивания

    • Арифметические операции

    • Указатели

    • Расположения переменных в памяти

    • Понятие "zero value"

    • Приведение типов

    • Дженерики

  • 3.Управляющие конструкции языка и отладка программ

    • Конструкции if ... {} else {}, switch

    • Условия и логические операции

    • Цикл for

    • Метки

  • 4.Функции

    • Виды функций.

    • Сигнатура функции

    • Передача аргументов в функцию по ссылке и по значению

    • Области видимости, {}

    • Ошибки, связанные с областью видимости

    • Замыкания

    • Затенения

  • 5.ООП в Golang

    • Определение структур

    • Инкапсуляция полей структуры

    • Композиция

    • Выравнивание

    • Методы

  • 6.Интерфейсы

    • Утиная типизация

    • Композиция интерфейсов

    • Утверждение типов

    • Конструкция type switch

    • Определение и реализация интерфейсов

    • Внутреннее устройство интерфейса

    • Влияние использования интерфейсов на производительность программы

    • Значение типа интерфейс и ошибки, связанные с nil

    • Правила присваивания значений переменным типа интерфейс

    • Опасное и безопасное приведение типов (type cast)

  • 7.Массивы и слайсы, мапы

    • Массивы и слайсы, мапы

    • Длина и ёмкость

    • Внутренняя структура слайсов и мап

    • Различные способы итерации

    • Частые ошибки и затруднения

  • 8.Строки и руны

    • Строки, руны и массивы байт

    • Стандартные функции для работы со строками и Unicode

    • Работа со строками через strings builder

  • 9.Обработка ошибок и паник

    • Интерфейс error

    • Конструкция defer

    • Функции panic и recover.

    • Кастомные ошибки

    • Обертывание ошибок

    • Сопоставление ошибок

  • 10.Тестирование

    • Виды и назначение тестов, пирамида тестирования

    • Понятие табличных тестов

    • Пакет gomock для тестирования

    • Golden files

    • Fuzzing

  • 11.Конкурентность и параллелизм в Golang

    • Горутины и каналы

    • Сравнение буферизированных и небуферизованных каналов

    • Использование каналов для передачи данных и синхронизации

    • Получение данных из канала: select, range

  • 12.Примитивы синхронизации

    • Пул объектов sync.Pool

    • Мьютексы sync.Mutex/RWMutex

    • Словарь sync.Map

    • Условные переменные sync.Cond

    • Группа ожидания sync.WaitGroup, errgroup.WithContext

    • Атомарные операции - пакет atomic

    • Гарантировано одноразовое выполнение sync.Once

  • 13.Сериализация данных

    • Понятие сериализации/десериализации

    • Протоколы JSON, XML, protobuf, gob

    • Структурные тэги

  • 14.Работа с сетью

    • Архитектура Интернета

    • Клиент-серверное взаимодействие

    • Пакет net/http, работа с HTTP

    • Пакет net, работа с низкоуровневыми протоколами

    • CRUD, REST

    • OpenAPI, Swagger

    • Oauth, basic, jwt

  • 15.Конфигурация

    • Различные варианты конфигурации программы

    • Использование простых форматов конфигурации: .ini, .yaml, .json и т.п.

    • Чтение конфигурации из окружения

    • Библиотека для работы с конфигурацией: viper

  • 16.Логирование

    • Стандартная библиотека для логирования

    • Использование интерфейсов для логирования

    • Расширенное логирование на примере zerolog

  • 17.Работа с базами данных

    • Реляционные /нереляционные СУБД и области их применения

    • Основные понятия реляционных БД

    • Подключение к СУБД и настройка пула соединений

    • Выполнение SQL-запросов и получение результатов

    • Стандартные интерфейсы sql.DB, sql.Rows и sql.Tx

    • Использование транзакций

    • SQL-инъекции

    • Работа с базами данных через пакет gorm

    • Работа с базами данных через пакет sqlx

  • 18.Микросервисы

    • Сравнение монолитной и микросервисной архитектур

    • Плюсы и минусы микросервисов

    • Понятие 12-факторного приложения

    • Пример микросервисов на Golang (сервис регистрации пользователей и сервис рассылки уведомлений)

  • 19.gRPC

    • gRPC и protobuf

    • Создание gRPC клиента и сервера, лучшие практики gRPC

    • Интерсепторы, надежность (ретраи, задержки)

    • TLS при работе с gRPC

  • 20.Очереди сообщений

    • Событийно-ориентированные архитектуры

    • Apache Kafka

    • NATS

    • RabbitMQ

    • Примеры работы с RabbitMQ из Go

    • Возможные проблемы с очередями: перегрузка, падение обработчиков, сбойные сообщения и пр.

  • 21.Трейсинг

    • RequestId

    • OpenTelemetry

    • Jaeger

  • 22.Паттерны многопоточности

    • Работа с многими каналами: fan in, fan out

    • Pipelines

    • Cancellation

    • Graceful shutdown

  • 23.Память и сборка мусора

    • Особенности памяти программы на Go

    • Выделение и освобождение памяти на стеке и куче

    • Escape analysis

    • Механизм сборки мусора в Go.

  • 24.Работа с ОС

    • Обработка аргументов командной строки: flags, pflag

    • Работа с сигналами ОС

    • Запуск внешних программ

    • Стандартные интерфейсы io.Reader, io.Writer и io.Closer

    • Последовательные и произвольные доступы и интерфейс io.Seeker

    • Буферизация ввода/вывода и оптимизация копирования

    • Работа с каталогами

    • Работа с файлами

    • Работа с потоками ввода/вывода

    • Regex

  • 25.Рефлексия

    • Использование пакета reflect

    • Плюсы и минусы рефлексии

    • Reflect.Type и reflect.Value

    • Примеры использования рефлексии

    • Пакет unsafe и тип unsafe.Pointer

  • 26.Кодогенерация

    • Понятие кодогенерации инструмент `go generate`

    • Полезные библиотеки, использующие кодогенерацию: impl, stringer, jsonenums, easyjson и пр.

    • Работа с AST, практическая кодогенерация

  • 27.Профилирование и оптимизация Go программ

    • Бенчмарки

    • Pprof

    • Профилирование

  • 28.Кэширование

    • Cache miss, cache hit

    • Прогрев кэша

    • LRU, LFU кэш

    • Инвалидация кэша

    • Ленивый кэш

    • Вытеснение данных

  • 29.Внутреннее устройство планировщика

    • Основные структуры планировщика: P, M, G

    • Механизм переключения горутин

    • Обработка системных и сетевых вызовов планировщиком

  • Итого на программу 80 часов: теория – 40 ч (59%), практика – 40 ч (50%)

  • Развернуть программу
Раcписание курсов
Вид:
Регистрируйтесь на следующий курс
Предварительная регистрация гарантирует участие в обучении. Мы обязательно оповестим вас, когда курс будет запланирован
+
Ваши преимущества
Экспертность
Тренеры-эксперты из реальных проектов крупнейших компаний, лидеров в своей отрасли
Живое обучение
“Живая” коммуникация с тренером даже в онлайн-формате
Практика
Максимально наполненные практикой занятия, работа в группах, выполнение домашних заданий
Пользователь только что записался на курс ""
Спасибо!
Форма отправлена успешно.