Details
Title | Введение в язык программирования Go: учебник |
---|---|
Creators | Никифоров Игорь Валерьевич ; Андрианов Артемий Алексеевич ; Александрова Ольга Всеволодовна ; Юсупова Ольга Андреевна ; Денисенко Богдан Александрович ; Тянутов Максим Владимирович ; Клочкова Лидия Игоревна ; Ромашов Всеволод Александрович ; Королев Денис Олегович ; Дутова Анна Алексеевна ; Котлярова Лина Павловна ; Зеленая Валерия Брониславовна ; Саламатов Михаил Александрович |
Other creators | Никифоров Игорь Валерьевич |
Organization | Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и кибербезопасности. Высшая школа программной инженерии |
Imprint | Санкт-Петербург: ПОЛИТЕХ-ПРЕСС, 2025 |
Collection | Учебная и учебно-методическая литература ; Общая коллекция |
Document type | Tutorial |
File type | |
Language | Russian |
Speciality code (FGOS) | 09.00.00 |
Speciality group (FGOS) | 090000 - Информатика и вычислительная техника |
DOI | 10.18720/SPBPU/2/id25-34 |
Rights | Доступ по паролю из сети Интернет (чтение, печать) |
Additionally | New arrival |
Record key | RU\SPSTU\edoc\76530 |
Record create date | 7/14/2025 |
Allowed Actions
–
Action 'Read' will be available if you login or access site from another network
Group | Anonymous |
---|---|
Network | Internet |
Учебник содержит информацию о языке программирования Go и его экосистеме. Рассматривается язык программирования Go и его использование для разработки многопоточных приложений, клиент-серверных приложений, работы с базами данных и создания серверной части REST-интерфейсов. Учебник охватывает навыки написания модульных и интеграционных тестов, а также сборки исходных кодов в конечный дистрибутив. В учебнике излагаются материалы учебно-методического комплекса, посвященного дисциплине «Введение в язык программирования Go». Приводится описание структуры лекций, практических работ, курсового проекта и контроля знаний. Даются методические рекомендации для проведения лекционных и практических занятий, для выполнения курсового проекта и проведения оценки успеваемости. В учебнике даны методические рекомендации для студентов по освоению дисциплины и для преподавателей по организации учебного процесса. Материал способствует развитию у обучающихся навыков применения современных технологий и инструментальных средств в профессиональной деятельности. Учебник предназначен для студентов, обучающихся по направлению подготовки бакалавров 09.03.04 «Программная инженерия».
The textbook contains information about the Go programming language and its ecosystem. It considers the Go programming language and its use for developing multi-threaded applications, client-server applications, working with databases, and creating the server side of REST interfaces. The textbook covers the skills of writing unit and integration tests, as well as compiling the source code into a final distributive. The textbook presents materials of the educational and methodological complex devoted to the discipline “Introduction to the Go programming language”. It describes the structure of lectures, practical work, course project, and knowledge assessment. Methodological recommendations are given to conduct lectures and practical classes, to carry out a course project and assesss the learning progress. The textbook provides methodological guidelines for students to master the discipline and for teachers to organize the learning process. The material contributes to the development of students' skills in the application of modern technologies and tools in professional activities. The textbook is intended for students studying in the Bachelor's degree major 09.03.04 “Software Engineering”.
Network | User group | Action |
---|---|---|
ILC SPbPU Local Network | All |
|
Internet | Authorized users SPbPU |
|
Internet | Anonymous |
|
- ОГЛАВЛЕНИЕ
- СПИСОК СОКРАЩЕНИЙ
- ПРЕДИСЛОВИЕ
- 1. ВВЕДЕНИЕ В GO И НАСТРОЙКА ОКРУЖЕНИЯ ДЛЯ РАЗРАБОТКИ
- 1.1. Введение в Go
- 1.1.1. Что такое Go. История языка
- 1.1.2. Актуальность языка Go
- 1.1.3. Особенности языка Go. Отличия от других языков (C++, Java, Python)
- 1.1.4. Область применения языка
- 1.1.5. Компиляция программы на языке Go. Зависимость от платформы
- 1.2. Работа Go
- 1.2.1. Настройка IDE. Установка
- 1.2.2. Структура проекта
- 1.2.3. Зависимости
- 1.2.4. Тесты
- 1.2.5. Debug
- 1.2.6. Сборка
- 1.2.7. Полезные команды и переменные среды
- 1.3. Упражнение
- Вопросы
- 2. ОСОБЕННОСТИ СИНТАКСИСА И СТРУКТУРЫ ДАННЫХ
- 2.1. Основные типы данных
- 2.1.1. Типы данных
- 2.1.2. Строки
- 2.1.3. Константы
- 2.2. Работа с основными типами данных
- 2.2.1. Условные конструкции
- 2.2.2. Циклы
- 2.3. Составные типы данных
- 2.3.1. Массивы
- 2.3.2. Срезы
- 2.3.3. Отображения (map)
- 2.3.4. Структуры
- 2.4. Интерфейсы
- 2.5. Пакет containers
- 2.5.1. Container/list
- 2.5.2. Сontainer/ring
- 2.5.3. Сontainer/heap
- 2.6. Пакет BTree
- 2.7. Пакет Sort
- 2.8. Сериализация
- 2.9. Десериализация
- 2.10. Переменные стека или кучи
- 2.11. Сборка мусора
- 2.11.1. Трехцветный алгоритм
- 2.11.2. Incremental Garbage Collector
- 2.11.3. Concurrent Garbage Collector
- 2.11.4. Запуск Garbage Collector
- 2.12. Упражнения
- Вопросы
- 3. РАБОТА С ЗАВИСИМОСТЯМИ И БИБЛИОТЕКАМИ В GO
- 3.1. Система модулей в Go
- 3.1.1. Создание модуля
- 3.2. Публикация модулей
- 3.2.1. Рекомендации по названию модулей, публикуемых в Сети
- 3.2.2. Зеркало зависимостей
- 3.2.3. База контрольных сумм
- 3.2.4. Добавление версии модуля
- 3.3. Работа с зависимостями
- 3.3.1. Настройка источников получения модулей
- 3.3.2. Добавление зависимости
- 3.3.3. Обнаружение доступных обновлений
- 3.3.4. Вендоринг
- 3.3.5. Синхронизация зависимостей кода
- 3.3.6. Удаление зависимости
- 3.4. Упражнение
- Вопросы
- 4. СБОРКА ПРОЕКТА В ДИСТРИБУТИВ
- 4.1. Команды сборки
- 4.1.1. Go build [-o output] [-i] [build flags] [packages]
- 4.1.2. Go install
- 4.1.3. Go run
- 4.1.4. Go generate
- 4.1.5. Go embed
- 4.2. Сборка приложений Go для разных операционных систем и архитектур
- 4.3. Теги сборки
- 4.4. Компиляция
- 4.4.1. Синтаксический разбор
- 4.4.2. Построение AST
- 4.4.3. SSA
- 4.4.4. Генерация ассемблерного кода
- 4.4.5. Машинный код
- 4.4.6. Особенности компиляции
- 4.5. Объектный файл
- 4.6. Компоновка и релокация
- 4.7. Оптимизация размера исполняемого файла
- 4.7.1. Стриппинг
- 4.7.2. Сжатие
- 4.8. Распространение дистрибутива
- 4.9. Передача аргументов командной строки
- 4.10. Troubleshooting
- 4.11. Упражнение
- Вопросы
- 5. АВТОМАТИЗАЦИЯ ТЕСТИРОВАНИЯ ПРОЕКТА НА ЯЗЫКЕ GO
- 5.1. Тестирование
- 5.2. Тестирование в языке Go
- 5.2.1. Пакет testing
- 5.3. Статические анализаторы кода
- 5.3.1. Линтеры
- 5.3.2. Установка
- 5.3.3. Настройка и запуск
- 5.4. Упражнение
- 6. МНОГОПОТОЧНОСТЬ В GO
- 6.1. Горутины и конкурентность – многопоточность в Go
- 6.1.1. Запуск горутины в Go
- 6.1.2. Создание нескольких горутин в Go
- 6.1.3. Каналы в Go
- 6.1.4. Channelaxioms
- 6.1.5. Использование select в канале горутин
- 6.1.6. Deadlock
- 6.1.7. Конвейер (pipeline)
- 6.2. Race conditional
- 6.2.1. Применение распознавателя Race Conditional
- 6.2.2. Формат отчета
- 6.3. Общий доступ к разделяемым ресурсам
- 6.3.1. Mutex
- 6.3.2. RWMutex
- 6.3.3. WaitGroup
- 6.3.4. Once
- 6.3.5. Метод Do для Once
- 6.3.6. Атомарные операции в Go. Пакет atomic
- 6.4. Упражнение
- Вопросы
- 7. ПРОЕКТИРОВАНИЕ REST API НА GO
- 7.1. HTTP
- 7.1.1. Структура сообщения HTTP
- 7.1.2. Идемпотентность
- 7.2. Основные понятия
- 7.2.1. REST
- 7.2.2. API
- 7.2.3. REST API
- 7.3. Передача и обработка ошибок через HTTP
- 7.3.1. Передача ошибок
- 7.3.2. Передача пользовательских ошибок
- 7.3.3. Чтение и использование пользовательских сообщений об ошибках
- 7.4. Паттерны проектирования
- 7.4.1. Применение паттернов
- 7.4.2. Паттерны и REST API
- 7.5. Упражнение
- Вопросы
- 8. СОВРЕМЕННЫЕ ПОДХОДЫ К РАЗВЕРТЫВАНИЮ ПРИЛОЖЕНИЙ
- 8.1. Recreate deployment
- 8.1.1. Общее описание подхода
- 8.1.2. Плюсы и минусы подхода Recreate deployment
- 8.1.3. Использование подхода Recreate deployment
- 8.2. Rolling deployment
- 8.2.1. Общее описание подхода Rolling deployment
- 8.2.2. Плюсы и минусы подхода Rolling deployment
- 8.2.3. Использование подхода Rolling deployment
- 8.3. Ramped deployment
- 8.3.1. Общее описание подхода Ramped deployment
- 8.3.2. Плюсы и минусы подхода Ramped deployment
- 8.3.3. Использование подхода Ramped deployment
- 8.4. Blue/green deployment
- 8.4.1. Общее описание подхода Blue/green deployment
- 8.4.2. Плюсы и минусы подхода Blue/green deployment
- 8.4.3. Использование подхода Blue/green deployment
- 8.5. A/B Testing
- 8.5.1. Общее описание подхода A/B Testing
- 8.5.2. Плюсы и минусы подхода A/B Testing
- 8.5.3. Использование подхода A/B Testing
- 8.5.4. Проведение тестов
- 8.5.5. Примеры метрик
- 8.5.6. Анализ результатов
- 8.6. Shadow testing
- 8.6.1. Общее описание подхода Shadow testing
- 8.6.2. Плюсы и минусы подхода Shadow testing
- 8.6.3. Использование подхода Shadow testing
- 8.7. Canary deployment
- 8.7.1. Общее описание подхода Canary deployment
- 8.7.2. Плюсы и минусы подхода Canary deployment
- 8.7.3. Использование подхода Canary deployment
- 8.7.4. Реализация подхода Canary deployment
- 8.8. Сравнение методов развертывания приложений
- Вопросы
- 9. ВИРТУАЛИЗАЦИЯ И ЕЕ ТИПЫ, КОНТЕЙНЕРИЗАЦИЯ, DOCKER
- 9.1. Виртуализация
- 9.1.1. Определение
- 9.1.2. Преимущества виртуализации
- 9.1.3. Недостатки виртуализации
- 9.1.4. Типы виртуализации
- 9.1.5. Типы гипервизоров
- 9.2. Контейнеризация
- 9.3. Docker
- 9.3.1. Установка Docker
- 9.3.2. Dockerfile
- 9.3.3. Запуск приложения
- 9.3.4. Основные команды Docker
- 9.3.5. Docker и CI/CD
- 9.4. Docker compose
- 9.4.1. Сервисы
- 9.4.2. Тома
- 9.4.3. Сеть
- 9.5. Упражнение
- Вопросы
- 10. УПРАВЛЕНИЕ DOCKER-КЛАСТЕРАМИ. KUBERNETES
- 10.1. Оркестраторы
- 10.2. Docker swarm
- 10.2.1. Основные команды
- 10.2.2. Запуск приложения в кластере
- 10.2.3. Команды состояния стека и сервисов
- 10.2.4. Масштабирование и запуск на конкретных нодах
- 10.2.5. Веб-панель Portainer
- 10.3. Kubernetes
- 10.3.1. Основные компоненты Kubernetes
- 10.3.2. Модуль
- 10.3.3. Контроллер репликации (Replication Controller) и другие контроллеры
- 10.3.4. Службы
- 10.3.5. Volume
- 10.3.6. Развертывание
- 10.3.7. Ресурсы StatefulSet: развертывание реплицируемых приложений с внутренним состоянием
- 10.4. Упражнение
- 11. CONTINUOUS INTEGRATION,DELIVERY, DEPLOYMENT
- 11.1. Определение CI/CD
- 11.1.1. Цикл работы CI/CD
- 11.1.2. Преимущества CI/CD
- 11.1.3. Реализация CI/CD
- 11.2. Jenkins
- 11.2.1. Работа с Jenkins
- 11.3. GitLab CI/CD
- 11.4. Упражнение
- 12. КУРСОВОЕ ПРОЕКТИРОВАНИЕ
- 12.1. Краткое описание проекта
- 12.2. Техническое задание
- 12.3. Технические требования
- 12.3.1. Общие требования к системе
- 12.3.2. Требования к модулю коннектора
- 12.3.3. Требования к базе данных
- 12.3.4. Требования к rest-интерфейсу
- 12.3.5. Требования к web-ui
- 12.4. База данных
- 12.5. Коннектор JIRA
- 12.5.1. Эндпоинты
- 12.5.2. Ограничение JIRA
- 12.5.3. Эффективность загрузки
- 12.5.4. Конфигурационный файл
- 12.6. Серверная часть
- 12.6.1. Архитектура серверной части
- 12.6.2. Richardson maturity model
- 12.6.3. Пример запроса
- 12.6.4. Документирование API
- 12.6.5. Конфигурационный файл
- 12.6.6. Описание эндпоинтов
- 12.7. Пользовательский интерфейс
- 12.7.1. Архитектура приложения
- 12.7.2. Примеры запросов к REST API
- 12.7.3. Пример использования сервиса в компонентах
- 12.7.4. Конфигурационный файл
- 12.8. Пример дизайна клиентского приложения
- БИБЛИОГРАФИЧЕСКИЙ СПИСОК
- ПРИЛОЖЕНИЯ
Access count: 0
Last 30 days: 0