Учебный центр IBS

GO-I-001 Golang разработчик

Для кого: Бэкенд разработчикМидл Мидл
Начало: По факту набора потока
Длительность: 1 неделя
Улучшаемые навыки:
gRPCXMLRESTApache KafkaNATSJSONSwaggerProtobufООПHTTPSQLGolangМногопоточностьRabbitMQ
СертификатОнлайн

Описание курса

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

Модуль 1

  • Плюсы и минусы
  • Сферы применения
  • Кто использует

Модуль 2

  • Типизация в Go
  • Объявление переменной
  • Операция присваивания
  • Арифметические операции
  • Указатели
  • Расположения переменных в памяти
  • Понятие "zero value"
  • Приведение типов
  • Дженерики

Модуль 3

  • Конструкции if ... {} else {}, switch
  • Условия и логические операции
  • Цикл for
  • Метки

Модуль 4

  • Виды функций.
  • Сигнатура функции
  • Передача аргументов в функцию по ссылке и по значению
  • Области видимости, {}
  • Ошибки, связанные с областью видимости
  • Замыкания
  • Затенени<span style="font-family: var(--ui-font-family-primary, var(--ui-font-family-helvetica));">я</span>

Модуль 5

  • Определение структур
  • Инкапсуляция полей структуры
  • Композиция
  • Выравнивание
  • Методы

Модуль 6

  • Утиная типизация
  • Композиция интерфейсов
  • Утверждение типов
  • Конструкция type switch
  • Определение и реализация интерфейсов
  • Внутреннее устройство интерфейса
  • Влияние использования интерфейсов на производительность программы
  • Значение типа интерфейс и ошибки, связанные с nil
  • Правила присваивания значений переменным типа интерфейс
  • Опасное и безопасное приведение типов (type cast)

Модуль 7

  • Массивы и слайсы, мапы
  • Длина и ёмкость
  • Внутренняя структура слайсов и мап
  • Различные способы итерации
  • Частые ошибки и затруднения

Модуль 8

  • Строки, руны и массивы байт
  • Стандартные функции для работы со строками и Unicode
  • Работа со строками через strings builder

Модуль 9

  • Интерфейс error
  • Конструкция defer
  • Функции panic и recover.
  • Кастомные ошибки
  • Обертывание ошибок
  • Сопоставление ошибок

Модуль 10

  • Виды и назначение тестов, пирамида тестирования
  • Понятие табличных тестов
  • Пакет gomock для тестирования
  • Golden files
  • Fuzzing

Модуль 11

  • Горутины и каналы
  • Сравнение буферизированных и небуферизованных каналов
  • Использование каналов для передачи данных и синхронизации
  • Получение данных из канала: 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 и 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

  • Бенчмарки
  • Профилирование

Модуль 28

  • Cache miss, cache hit
  • Прогрев кэша
  • LRU, LFU кэш
  • Инвалидация кэша
  • Ленивый кэш
  • Вытеснение данных

Модуль 29

  • Основные структуры планировщика: P, M, G
  • Механизм переключения горутин
  • Обработка системных и сетевых вызовов планировщиком

Отзывы о курсе

Отзывов пока нет
Будьте первым, напишите отзыв и поставьте оценку этому курсу.

Еще курсы