Golang-разработчик [IBS Training Center]
Курс «Golang-разработчик» представляет собой комплексную программу обучения, которая призвана помочь вам освоить язык программирования Golang от основ до продвинутого уровня. В ходе курса вы узнаете о преимуществах и областях применения Golang. Вы изучите основные концепции: переменные, типы данных, операции и управляющие конструкции. Вам будет представлено ООП в Golang, включая структуры, методы и интерфейсы. Вы также разберетесь с принципами работы с массивами, слайсами, мапами и строками.
О чём курс
Курс также охватывает обработку ошибок и паник, позволяя вам создавать надежные и безопасные программы на Golang.
В будущем вы сможете углубиться в более сложные темы, включая многопоточность, параллельное и сетевое программирование, веб-разработку на Golang. Вы изучите работу с базами данных, создание пакетов, а также разработку тестов для проверки функциональности вашего кода. Помимо этого курс охватывает аспекты производительности и оптимизации кода, а также лучшие практики разработки на Golang. По окончании обучения вы будете готовы к созданию проектов на Golang и использованию его мощных возможностей для разработки современных приложений.
Программа включает два больших блока, каждый из которых разбит на небольшие курсы, выстроенные в логической последовательности. Они содержат практические задания, которые позволяют отрабатывать навыки как самостоятельно, так и во время онлайн-встреч с преподавателем.
Обучение проходит в формате вебинаров с экспертами, самостоятельным выполнением практики.
Программа курса
01.Знакомство с Golang
02.Переменные и элементарные типы данных
03.Управляющие конструкции языка и отладка программ
04.Функции
05.ООП в Golang
06.Интерфейсы
07.Массивы и слайсы, мапы
08.Строки и руны
09.Обработка ошибок и паник
10.Тестирование
11.Конкурентность и параллелизм в Golang
12.Примитивы синхронизации
13.Сериализация данных
14.Работа с сетью
15.Конфигурация
16.Логирование
17.Работа с базами данных
18.Микросервисы
19.gRPC
20.Очереди сообщений
21.Трейсинг
22.Паттерны многопоточности
23.Память и сборка мусора
24.Работа с ОС
25.Рефлексия
26.Кодогенерация
27.Профилирование и оптимизация Go программ
28.Кэширование
29.Внутреннее устройство планировщика
Итого на программу 80 часов: теория – 40 ч (50%), практика – 40 ч (50%)
Цена 85000 руб
Курс «Golang-разработчик» представляет собой комплексную программу обучения, которая призвана помочь вам освоить язык программирования Golang от основ до продвинутого уровня. В ходе курса вы узнаете о преимуществах и областях применения Golang. Вы изучите основные концепции: переменные, типы данных, операции и управляющие конструкции. Вам будет представлено ООП в Golang, включая структуры, методы и интерфейсы. Вы также разберетесь с принципами работы с массивами, слайсами, мапами и строками.
О чём курс
Курс также охватывает обработку ошибок и паник, позволяя вам создавать надежные и безопасные программы на Golang.
В будущем вы сможете углубиться в более сложные темы, включая многопоточность, параллельное и сетевое программирование, веб-разработку на Golang. Вы изучите работу с базами данных, создание пакетов, а также разработку тестов для проверки функциональности вашего кода. Помимо этого курс охватывает аспекты производительности и оптимизации кода, а также лучшие практики разработки на Golang. По окончании обучения вы будете готовы к созданию проектов на Golang и использованию его мощных возможностей для разработки современных приложений.
Программа включает два больших блока, каждый из которых разбит на небольшие курсы, выстроенные в логической последовательности. Они содержат практические задания, которые позволяют отрабатывать навыки как самостоятельно, так и во время онлайн-встреч с преподавателем.
Обучение проходит в формате вебинаров с экспертами, самостоятельным выполнением практики.
Программа курса
01.Знакомство с Golang
02.Переменные и элементарные типы данных
03.Управляющие конструкции языка и отладка программ
04.Функции
05.ООП в Golang
06.Интерфейсы
07.Массивы и слайсы, мапы
08.Строки и руны
09.Обработка ошибок и паник
10.Тестирование
11.Конкурентность и параллелизм в Golang
12.Примитивы синхронизации
13.Сериализация данных
14.Работа с сетью
15.Конфигурация
16.Логирование
17.Работа с базами данных
18.Микросервисы
19.gRPC
20.Очереди сообщений
21.Трейсинг
22.Паттерны многопоточности
23.Память и сборка мусора
24.Работа с ОС
25.Рефлексия
26.Кодогенерация
27.Профилирование и оптимизация Go программ
28.Кэширование
29.Внутреннее устройство планировщика
Итого на программу 80 часов: теория – 40 ч (50%), практика – 40 ч (50%)
01.Знакомство с Golang
- Плюсы и минусы
- Сферы применения
- Кто использует
- Типизация в Go
- Объявление переменной
- Операция присваивания
- Арифметические операции
- Указатели
- Расположения переменных в памяти
- Понятие "zero value"
- Приведение типов
- Дженерики
- Конструкции if ... {} else {}, switch
- Условия и логические операции
- Цикл for
- Метки
- Виды функций.
- Сигнатура функции
- Передача аргументов в функцию по ссылке и по значению
- Области видимости, {}
- Ошибки, связанные с областью видимости
- Замыкания
- Затенения
- Определение структур
- Инкапсуляция полей структуры
- Композиция
- Выравнивание
- Методы
- Утиная типизация
- Композиция интерфейсов
- Утверждение типов
- Конструкция type switch
- Определение и реализация интерфейсов
- Внутреннее устройство интерфейса
- Влияние использования интерфейсов на производительность программы
- Значение типа интерфейс и ошибки, связанные с nil
- Правила присваивания значений переменным типа интерфейс
- Массивы и слайсы, мапы
- Длина и ёмкость
- Внутренняя структура слайсов и мап
- Различные способы итерации
- Частые ошибки и затруднения
- Строки, руны и массивы байт
- Стандартные функции для работы со строками и 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
- Интерсепторы, надежность (ретраи, задержки)
- TLS при работе с 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
- Механизм переключения горутин
- Обработка системных и сетевых вызовов планировщиком
https://ibs-training.ru/kurs/golang_razrabotchik.html