Golang для профи: работа с сетью, многопоточность, структуры данных и машинное обучение с Go.
Book information
Description
Go является языком высокопроизводительных систем будущего. Эта книга показывает, как заставить Go работать на реальных производственных системах. Для программистов, которые уже знакомы с основами языка Go, эта книга содержит примеры, шаблоны и четкие объяснения, которые помогут вам глубоко понять возможности Go и применить их в своей работе по программированию. Книга охватывает нюансы Go с подробными руководствами по типам и структурам, пакетам, парал- лелизму, сетевому программированию, дизайну компиляторов, оптимизации и многому другому. Каж- дая глава заканчивается упражнениями и ресурсами, чтобы полностью внедрить ваши новые знания. Об авторе О научном редакторе Предисловие Для кого предназначена эта книга О чем эта книга Как получить максимальную пользу от этой книги Загрузите файлы с примерами кода Где скачать цветные иллюстрации Условные обозначения От издательства Глава 1. Go и операционная система История Go Куда движется Go? Преимущества Go Идеален ли Go? Утилита godoc Компиляция Go-кода Выполнение Go-кода Два правила Go Правило пакетов Go: не нужен — не подключай Правильный вариант размещения фигурных скобок — всего один Как скачивать Go-пакеты Стандартные потоки UNIX: stdin, stdout и stderr Вывод результатов Использование стандартного потока вывода Получение данных от пользователя Что такое := и = Чтение стандартного потока ввода Работа с аргументами командной строки Вывод ошибок Запись в файлы журнала Уровни журналирования Средства журналирования Серверы журналов Пример Go-программы, которая записывает информацию в файлы журнала Функция log.Fatal() Функция log.Panic() Запись в специальный файл журнала Вывод номеров строк в записях журнала Обработка ошибок в Go Тип данных error Обработка ошибок Использование Docker Упражнения и ссылки Резюме Глава 2. Go изнутри Компилятор Go Сборка мусора Трехцветный алгоритм Подробнее о работе сборщика мусора Go Отображения, срезы и сборщик мусора Go Небезопасный код Пакет unsafe Еще один пример использования пакета unsafe Вызов C-кода из Go Вызов C-кода из Go в одном файле Вызов из Go C-кода в отдельных файлах C-код Go-код Сочетание кода на Go и C Вызов Go-функций из C-кода Go-пакет C-код Ключевое слово defer Использование defer для журналирования Функции panic() и recover() Самостоятельное использование функции panic() Две полезные UNIX-утилиты Утилита strace Утилита dtrace Среда Go Команда go env Go-ассемблер Узловые деревья Хотите знать больше о go build? Создание кода WebAssembly Краткое введение в WebAssembly Почему WebAssembly так важен? Go и WebAssembly Пример Использование сгенерированного кода WebAssembly Общие рекомендации по программированию на Go Упражнения и ссылки Резюме Глава 3. Работа с основными типами данных Go Числовые типы данных Целые числа Числа с плавающей точкой Комплексные числа Числовые литералы в Go 2 Циклы Go Цикл for Цикл while Ключевое слово range Пример применения нескольких циклов Go Массивы в Go Многомерные массивы Недостатки массивов Go Срезы в Go Выполнение основных операций со срезами Автоматическое расширение срезов Байтовые срезы Функция copy() Многомерные срезы Еще один пример использования срезов Сортировка срезов с помощью sort.Slice() Добавление массива к срезу Отображения Go Запись в нулевое отображение Когда использовать отображения Константы Go Генератор констант iota Указатели в Go Зачем нужны указатели Время и дата Работа со временем Синтаксический анализ времени Работа с датами Синтаксический анализ дат Изменение формата даты и времени Измерение времени выполнения программы Измерение скорости работы сборщика мусора Go Веб-ссылки и упражнения Резюме Глава 4. Составные типы данных Составные типы данных Структуры Указатели на структуры Ключевое слово new Кортежи Регулярные выражения и сопоставление с образцом Немного теории Простой пример Более сложный пример Проверка IPv4-адресов Строки Что такое руны? Пакет unicode Пакет strings Оператор switch Вычисление числа Пи с высокой точностью Разработка на Go хранилища типа «ключ — значение» Go и формат JSON Чтение данных из формата JSON Сохранение данных в формате JSON Использование функций Marshal() и Unmarshal() Синтаксический анализ данных в формате JSON Go и XML Чтение XML-файла Настройка вывода данных в формате XML Go и формат YAML Дополнительные ресурсы Упражнения и ссылки Резюме Глава 5. Как улучшить код Go с помощью структур данных О графах и узлах Сложность алгоритма Двоичные деревья в Go Реализация двоичного дерева в Go Преимущества двоичных деревьев Хеш-таблицы в Go Реализация хеш-таблицы в Go Реализация функции поиска Преимущества хеш-таблиц Связные списки в Go Реализация связного списка в Go Преимущества связных списков Двусвязные списки в Go Реализация двусвязного списка в Go Преимущества двусвязных списков Очереди в Go Реализация очереди в Go Стеки в Go Реализация стека в Go Пакет container Использование пакета container/heap Использование пакета container/list Использование пакета container/ring Генерация случайных чисел Генерация случайных строк Генерация безопасной последовательности случайных чисел Выполнение матричных вычислений Сложение и вычитание матриц Умножение матриц Деление матриц Разгадывание головоломок судоку Дополнительные ресурсы Упражнения Резюме Глава 6. Неочевидные знания о пакетах и функциях Go Что такое Go-пакеты Что такое функции Go Анонимные функции Функции, которые возвращают несколько значений Функции, возвращающие именованные значения Функции, принимающие указатели Функции, которые возвращают указатели Функции, которые возвращают другие функции Функции, которые принимают другие функции в качестве параметров Функции с переменным числом параметров Разработка Go-пакетов Компиляция Go-пакета Закрытые переменные и функции Функция init() Go-модули Создание и использование Go-модулей Использование двух версий одного и того же Go-модуля Где хранятся Go-модули Команда go mod vendor Как писать хорошие Go-пакеты Пакет syscall Как на самом деле работает fmt.Println()? Пакеты go/scanner, go/parser и go/token Пакет go/ast Пакет go/scanner Пакет go/parser Практический пример Поиск имен переменных заданной длины Шаблоны для текста и HTML Вывод простого текста Вывод текста в формате HTML Дополнительные ресурсы Упражнения Резюме Глава 7. Отражения и интерфейсы на все случаи жизни Методы типов Интерфейсы в Go Операции утверждения типа Как писать свои интерфейсы Использование интерфейса Go Использование переключателей для интерфейсов и типов данных Отражения Простой пример отражения Более сложный пример отражения Три недостатка отражений Библиотека reflectwalk Объектно-ориентированное программирование на Go Основы git и GitHub Использование git Отладка с помощью Delve Пример отладки Дополнительные ресурсы Упражнения Резюме Глава 8. Как объяснить UNIX-системе, что она должна делать О процессах в UNIX Пакет flag Пакет viper Простой пример использования viper От flag к viper Чтение конфигурационных файлов в формате JSON Чтение конфигурационных файлов в формате YAML Пакет cobra Простой пример cobra Создание псевдонимов команд Интерфейсы io.Reader и io.Writer Буферизованный и небуферизованный ввод и вывод в файл Пакет bufio Чтение текстовых файлов Построчное чтение текстового файла Чтение текстового файла по словам Посимвольное чтение текстового файла Чтение из /dev/random Чтение заданного количества данных Преимущества двоичных форматов Чтение CSV-файлов Запись в файл Загрузка и сохранение данных на диске И снова пакет strings Пакет bytes Полномочия доступа к файлам Обработка сигналов в UNIX Обработка двух сигналов Обработка всех сигналов Программирование UNIX-каналов на Go Реализация утилиты cat(1) на Go Структура syscall.PtraceRegs Отслеживание системных вызовов Идентификаторы пользователя и группы Docker API и Go Дополнительные ресурсы Упражнения Резюме Глава 9. Конкурентность в Go: Go-подпрограммы, каналы и конвейеры О процессах, потоках и Go-подпрограммах Планировщик Go Конкурентность и параллелизм Go-подпрограммы Создание Go-подпрограммы Создание нескольких Go-подпрограмм Как дождаться завершения Go-подпрограмм, прежде чем закончить программу Что происходит, если количество вызовов Add() и Done() не совпадает? Каналы Запись в канал Чтение из канала Прием данных из закрытого канала Каналы как аргументы функции Конвейеры Состояние гонки Сравнение моделей конкурентности в Go и Rust Сравнение моделей конкурентности в Go и Erlang Дополнительные ресурсы Упражнения Резюме Глава 10. Конкурентность в Go: расширенные возможности И снова о планировщике Go Переменная среды GOMAXPROCS Ключевое слово select Принудительное завершение Go-подпрограммы Принудительное завершение Go-подпрограммы – способ 1 Принудительное завершение Go-подпрограммы – способ 2 И снова о Go-каналах Сигнальные каналы Буферизованные каналы Нулевые каналы Каналы каналов Выбор последовательности исполнения Go-подпрограмм Как не надо использовать Go-подпрограммы Общая память и общие переменные Тип sync.Mutex Тип sync.RWMutex Пакет atomic Совместное использование памяти с помощью Go-подпрограмм И снова об операторе go Распознавание состояния гонки Пакет context Расширенный пример использования пакета context Еще один пример использования пакета context Пулы обработчиков Дополнительные ресурсы Упражнения Резюме Глава 11. Тестирование, оптимизация и профилирование кода Оптимизация Оптимизация кода Go Профилирование кода Go Стандартный Go-пакет net/http/pprof Простой пример профилирования Удобный внешний пакет для профилирования Веб-интерфейс Go-профилировщика Утилита go tool trace Тестирование кода Go Написание тестов для существующего кода Go Тестовое покрытие кода Тестирование HTTP-сервера с базой данных Пакет testing/quick Бенчмаркинг кода Go Простой пример бенчмаркинга Неправильно определенные функции бенчмаркинга Бенчмаркинг буферизованной записи Обнаружение недоступного кода Go Кросс-компиляция Создание примеров функций От кода Go до машинного кода Использование ассемблера в Go Генерация документации Использование образов Docker Дополнительные ресурсы Упражнения Резюме Глава 12. Основы сетевого программирования на Go Что такое net/http, net и http.RoundTripper Тип http.Response Тип http.Request Тип http.Transport Что такое TCP/IP Что такое IPv4 и IPv6 Утилита командной строки nc(1) Чтение конфигурации сетевых интерфейсов Выполнение DNS-поиска Получение NS-записей домена Получение MX-записей домена Создание веб-сервера на Go Использование пакета atomic Профилирование HTTP-сервера Создание веб-сайта на Go HTTP-трассировка Тестирование HTTP-обработчиков Создание веб-клиента на Go Как усовершенствовать наш веб-клиент Go Задержки HTTP-соединений Подробнее о SetDeadline Установка периода ожидания на стороне сервера Еще один способ определить период ожидания Инструменты Wireshark и tshark Go и gRPC Определение файла описания интерфейса gRPC-клиент gRPC-сервер Дополнительные ресурсы Упражнения Резюме Глава 13. Сетевое программирование: создание серверов и клиентов Работа с HTTPS-трафиком Создание сертификатов HTTPS-клиент Простой HTTPS-сервер Разработка TLS-сервера и TLS-клиента Стандартный Go-пакет net TCP-клиент Другая версия TCP-клиента TCP-сервер Другая версия TCP-сервера UDP-клиент Разработка UDP-сервера Конкурентный TCP-сервер Удобный конкурентный TCP-сервер Создание образа Docker для TCP/IP-сервера на Go Дистанционный вызов процедур RPC-клиент RPC-сервер Низкоуровневое сетевое программирование Получение необработанных сетевых данных ICMP Дополнительные ресурсы Упражнения Резюме Глава 14. Машинное обучение на Go Вычисление простых статистических показателей Регрессия Линейная регрессия Реализация линейной регрессии Вывод данных Классификация Кластеризация Выявление аномалий Нейронные сети Анализ выбросов Работа с TensorFlow Поговорим о Kafka Дополнительные ресурсы Упражнения Резюме Что дальше?
Similar books
Методология научных исследований и прикладной аналитики: Учебник. Изд. 5-е, дополн. и перераб. В 2 т. Т.2: Научные исследования: Мастерство и искусство научного мышления и научной работы / Methodology of Scientific Research and Practical Analytics: A Textbook: Fifth Edition. In two volumes. Vol.2: Scientific research: Art of scientific thinking and scientific work / Méthodologie de la recherche scientifique et de l’analytique appliquée: Manuel: Cinquième édition. En 2 tomes. T.2: Recherches scientifiques: Art de la pensée scientifique et du travail scientifique
2025 · PDF
Методы и понятия философии искусства: практикум : уровень подготовки кадров высшей квалификации: ассиснтурв-стажировка : специальности: 54.09.03 "Искусство дизайна (по видам)", 54.09.02 "Мастерство декоративно-прикладного искусства и народных промыслов (по видам)" : укрупненная группа специальностей: 54.00.00 "Изобразительное и прикладные виды искусств" : квалификация выпускника: "Преподаватель творческих дисциплин в высшей школе. Дизайнер", "Преподаватель творческих дисциплин в высшей школе. Художник декоративно-прикладного искусства" : форма обучения: очная
2022 · PDF
Разработка графического интерфейса пользователя информационной системы с использованием библиотеки QT: учебное пособие для студентов 1 курса направлений подготовки 09.04.02 "Информационные системы и технологии", 27.04.03 "Системный анализ и управление" очной формы обучения, 2 курса направления подготовки 10.05.03 "Информационная безопасность автоматизированных систем" очной формы обучения и 3 курса направления подготовки 09.03.02 "Информационные системы и технологии" очной и заочной форм обучения : учебное электронное издание
2021 · PDF
Археологические культуры Сибири в контексте кросс-культурных контактов в Евразии: к 300-летию первых научных археологических раскопок в Сибири (1722 г.) =: Archaeological Cultures of Siberia in the context of Cross-cultural contacts in Eurasia: dedicated to the 300th anniversary of the first scientific archaeological excavations in Siberia (1722) : материалы Международной археологической конференции молодых исследователей "Археологические культуры Сибири в контексте кросс-культурных контактов в Евразии: к 300-летию первых научных археологических раскопок в Сибири (1722 г.)" (Новосибирск, 21-25 ноября 2022 г.)
2022 · PDF
Трешниковские чтения - 2023. Современная географическая картина мира и технологии географического образования =: Treshnikov readings - 2023. Modern geographical global picture and technology of geographic education : материалы Всероссийской научно-практической конференции с международным участием, посвящённой памяти знаменитого российского океанолога, исследователя Арктики и Антарктики, академика Алексея Фёдоровича Трёшникова и 60-летию Ульяновского областного отделения Всероссийской общественной организации "Русское гаографическое общество" (13 апреля 2023)
2023 · PDF
Управление объектами интеллектуальной собственности. Искусство изобретать: учебник для обучающихся по направлениям подготовки 23.00.00 , направлениям подготовки 23.03.01 "Технология транспортных процессов", уровень образования-"бакалавриат", 23.03.03 "Эксплуатация транспортно-технологических машин и комплексов", уровень образования-"бакалавриат", 23.04.01 "Технология транспортных процессов", уровень образования- "магистратура", 23.04.03 "Эксплуатация транспортно-технологических машин и комплексов", уровень образования- "магистратура"
2022 · PDF
Философия. Учебно-методический комплекс дисциплины по направлениям подготовки: 51.03.03 (071800.62) «Социально-культурная деятельность», профили подготовки: «Социально-культурные технологии в индустрии досуга», «Менеджмент социально-культурной деятельности», «Менеджмент детско-юношеского досуга», «Постановка и продюсирование культурно-досуговых программ», «Социально-культурная анимация и рекреация»; 38.03.02 (080200.62) «Менеджмент», профили подготовки: «Управление человеческими ресурсами», «Управление малым бизнесом», квалификации (степень) выпускника – «бакалавр»
2014 · PDF
Проектирование устройств приема и обработки сигналов: учебно-методическое пособие по курсу "Устройства приема и обработки сигналов" для студентов всех форм обучения специальностей: 210400.62 Радиотехника. Бакалавр Б.3.10. Основы цифровой обработки сигналов; 210700.62 Системы мобильной связи. Бакалавр Б.3.19. Радиоприемные устройства систем мобильной связи; 210601.65 Радиоэлектронные системы и комплексы. Специалист С.3.18. Устройства приема и обработки сигналов; 090302.65 Защита информации в системах связи и управления. Специалист С.3.30. Устройства приема и обработки сигналов
2015 · PDF