3ий спринт В третьем спринте модуля «Пакеты стандартной библиотеки» вы узнаете, как управлять временем выполнения операций и задавать интервалы. Также вы подключите к своему сервису базу данных и научитесь выявлять специфические ошибки. Тема: Пакеты time, context. Отмена операций и управление временем выполнения 1) Время: даты, интервалы, таймеры 1) Форматирование даты и времени 2) Парсинг даты и времени 3) Интерфейсы типа Time 4) Тип Duration 5) Тип Location 6) Типы Month и Weekday 7) Остановка программы на время 8) Время и горутины 9) Типы Timer и Ticker 2) Контекст: отмена операций 1) Родительский контекст 2) Контекст WithCancel 3) Контексты WithTimeout и WithDeadline 4) Передача значений через контекст 5) Контекст для запроса 6) Лучшие практики по использованию контекста Тема: Пакет database/sql. Взаимодействие с базами данных SQL 1) Пакет gomock. Имитация данных для тестирования 1) Создаём моки с помощью пакета gomock 2) Абстрактный интерфейс и SQL-драйверы 1) Установка MySQL и PostgreSQL 2) Установка SQLite 3) Выбор драйвера 4) Пакет database/sql 5) MySQL 6) PostgreSQL 7) SQLite 8) Подготовка базы данных 3) Запросы к базе данных 1) SELECT-запрос 2) Методы Go для отправки запросов 3) Как работает метод Scan 4) Передача параметров 5) Работа с NULL значениями 6) Выбор нескольких строк 7) Расширение поддерживаемых типов 4) Запись в базу данных 1) Памятка по SQL-командам 2) Приступаем к практике 3) Транзакции 4) Подготовленные SQL-запросы 5) Множественная вставка 6) Индексы 7) Изменение записей 8) Использование именованных параметров в запросе 9) Настройка пула соединений 10) SQLx 11) Почему в Go не используют ORM Тема: Пакет errors. Обработка ошибок 1) Интроспекция ошибок 1) Тип error 2) Упаковка ошибок 3) Интроспекция ошибок 4) Функция Join() 4ый спринт В четвёртом спринте вы завершите модуль «Пакеты стандартной библиотеки» и изучите последнюю его тему — хеширование и шифрование. Затем вы приступите к модулю «Конкурентность», который полностью посвящён многопоточности. В результате вы добавите в свой сервис авторизацию и обработку данных в асинхронном режиме. Тема: Пакеты hash, crypto. Безопасность информации 1) Хеширование и шифрование 1) Шифрование 2) Генераторы случайных чисел 3) Криптостойкий генератор случайных чисел 4) Хеширование 5) Криптографические хеш-функции 6) Подпись данных 2) Авторизация: JSON Web Token 1) Что такое JWT 2) Где используют JWT 3) Из чего состоит структура JWT 4) Полезная нагрузка 5) Подпись 6) Как работает JWT 7) JWT и Go: как создать сервер аутентификации 8) Как проверить валидность токена 9) С какими проблемами можно столкнуться, используя JWT 10) Где хранить токены Тема: Многопоточность 1) Основы многопоточности 1) Процессы и потоки 2) Многопоточность в Go 3) Проблемы многопоточности 2) Многопоточность в Go 1) Горутины 2) Планировщик горутин 3) Типы sync.WaitGroup и sync.Once 4) Примитивы синхронизации 5) Тип sync.Mutex 6) Тип sync.RWMutex 7) Тип sync.Cond 3) Каналы 1) Создание каналов 2) Операторы для работы с каналами 3) Однонаправленные каналы 4) Атомарные операции 4) Паттерны многопоточности: Генератор, Стоп-Кран, Паттерн обработки ошибок 1) Канал всегда должен быть закрыт отправителем 2) Паттерн Генератор 3) Паттерн обработки ошибок в горутинах 4) Паттерн Стоп-Кран 5) Паттерны многопоточности: Конвейер, Fan-In, Fan-Out, Семафор 1) Паттерн Конвейер 2) Паттерны Fan-In и Fan-Out 3) Паттерн Семафор 4) Паттерн Worker Pool