⚡️ Соберите стартап, взорвите рынок и заберите AirPods, iPad или даже MacBook — всё это в нашей безумной игре ко Дню программиста

startup-crunch

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

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

Начало: По мере набора группы
Длительность: 1 неделя
СертификатОнлайн

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

Освойте Golang от основ до продвинутого уровня и создавайте современные приложения.

В ходе курса вы узнаете о преимуществах и областях применения Golang.

Вы изучите основные концепции:

  • Переменные;
  • Типы данных;
  • Операции;
  • Управляющие конструкции.

Основные темы курса:

  • Плюсы и минусы;
  • Сферы применения;
  • Кто использует;
  • Типизация в Go;
  • Объявление переменной;
  • Операция присваивания;
  • Указатели;
  • Расположение переменных в памяти;
  • Понятие "zero value";
  • Приведение типов;
  • Дженерики;
  • Конструкции if ... {} else {}, switch;
  • Условия и логические операции;
  • Цикл for;
  • Метки;
  • Виды функций;
  • Сигнатура функции;
  • Передача аргументов в функцию по ссылке и по значению;
  • Области видимости, {};
  • Ошибки, связанные с областью видимости;
  • Замыкания;
  • Затенения;
  • Определение структур;
  • Инкапсуляция полей структуры;
  • Композиция;
  • Выравнивание;
  • Методы;
  • Утиная типизация;
  • Композиция интерфейсов;
  • Утверждение типов;
  • Конструкция type switch;
  • Определение и реализация интерфейсов;
  • Внутреннее устройство интерфейса;
  • Влияние использования интерфейсов на производительность программы;
  • Значение типа интерфейс и ошибки, связанные с nil;
  • Правила присваивания значений переменным типа интерфейс;
  • Опасное и безопасное приведение типов (type cast);
  • Массивы и слайсы, мапы;
  • Длина и ёмкость;
  • Внутренняя структура слайсов и мап;
  • Различные способы итерации;
  • Частые ошибки и затруднения;
  • Строки, руны и массивы байт;
  • Стандартные функции для работы со строками и Unicode;
  • Работа со строками через strings.Builder;
  • Интерфейс error;
  • Конструкция defer;
  • Функции panic и recover;
  • Кастомные ошибки;
  • Обертывание ошибок;
  • Сопоставление ошибок;
  • Виды и назначение тестов, пирамида тестирования;
  • Понятие табличных тестов;
  • Пакет gomock для тестирования;
  • Golden files;
  • Fuzzing;
  • Горутины и каналы;
  • Сравнение буферизированных и небуферизированных каналов;
  • Использование каналов для передачи данных и синхронизации;
  • Получение данных из канала: select, range;
  • Пул объектов sync.Pool;
  • Мьютексы sync.Mutex/RWMutex;
  • Словарь sync.Map;
  • Условные переменные sync.Cond;
  • Группа ожидания sync.WaitGroup, errgroup.WithContext;
  • Атомарные операции — пакет atomic;
  • Гарантировано одноразовое выполнение sync.Once;
  • Понятие сериализации/десериализации;
  • Протоколы JSON, XML, protobuf, gob;
  • Структурные тэги;
  • Архитектура Интернета;
  • Клиент-серверное взаимодействие;
  • Пакет net/http, работа с HTTP;
  • Пакет net, работа с низкоуровневыми протоколами;
  • CRUD, REST;
  • OpenAPI, Swagger;
  • Oauth, basic, jwt;
  • Различные варианты конфигурации программы;
  • Использование простых форматов конфигурации: .ini, .yaml, .json и т.п.;
  • Чтение конфигурации из окружения;
  • Библиотека для работы с конфигурацией: viper;
  • Стандартная библиотека для логирования;
  • Использование интерфейсов для логирования;
  • Расширенное логирование на примере zerolog;
  • Реляционные/нереляционные СУБД и области их применения;
  • Основные понятия реляционных БД;
  • Подключение к СУБД и настройка пула соединений;
  • Выполнение SQL-запросов и получение результатов;
  • Стандартные интерфейсы sql.DB, sql.Rows и sql.Tx;
  • Использование транзакций;
  • SQL-инъекции;
  • Работа с базами данных через пакет gorm;
  • Работа с базами данных через пакет sqlx;
  • Сравнение монолитной и микросервисной архитектур;
  • Плюсы и минусы микросервисов;
  • Понятие 12-факторного приложения;
  • Пример микросервисов на Golang (сервис регистрации пользователей и сервис рассылки уведомлений);
  • gRPC и protobuf;
  • Создание gRPC клиента и сервера, лучшие практики gRPC;
  • Интерсепторы, надежность (ретраи, задержки);
  • LS при работе с gRPC;
  • Событийно-ориентированные архитектуры;
  • Apache Kafka;
  • NATS;
  • RabbitMQ;
  • Примеры работы с RabbitMQ из Go;
  • Возможные проблемы с очередями: перегрузка, падение обработчиков, сбойные сообщения и пр.;
  • RequestId;
  • OpenTelemetry;
  • Jaeger;
  • Работа с многими каналами: fan in, fan out;
  • Pipelines;
  • Cancellation;
  • Graceful shutdown;
  • Особенности памяти программы на Go;
  • Выделение и освобождение памяти на стеке и куче;
  • Escape analysis;
  • Механизм сборки мусора в Go;
  • Обработка аргументов командной строки: flags, pflag;
  • Работа с сигналами ОС;
  • Запуск внешних программ;
  • Стандартные интерфейсы io.Reader, io.Writer и io.Closer;
  • Последовательные и произвольные доступы и интерфейс io.Seeker;
  • Буферизация ввода/вывода и оптимизация копирования;
  • Работа с каталогами;
  • Работа с файлами;
  • Работа с потоками ввода/вывода;
  • Regex;
  • Использование пакета reflect;
  • Плюсы и минусы рефлексии;
  • Reflect.Type и reflect.Value;
  • Примеры использования рефлексии;
  • Пакет unsafe и тип unsafe.Pointer;
  • Понятие кодогенерации, инструмент `go generate`;
  • Полезные библиотеки, использующие кодогенерацию: impl, stringer, jsonenums, easyjson и пр.;
  • Работа с AST, практическая кодогенерация;
  • Бенчмарки;
  • Pprof;
  • Профилирование;
  • Cache miss, cache hit;
  • Прогрев кэша;
  • LRU, LFU кэш;
  • Инвалидация кэша;
  • Ленивый кэш;
  • Вытеснение данных;
  • Основные структуры планировщика: P, M, G;
  • Механизм переключения горутин;
  • Обработка системных и сетевых вызовов планировщиком.

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

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