Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы. 3 изд

Оглавление⌄
Об авторе....17 О научном редакторе....18 Предисловие....19 Для кого эта книга....19 Структура издания....19 Как сделать книгу максимально полезной....21 Файлы с примерами кода....22 Цветные иллюстрации....22 Условные обозначения....22 От издательства....23 Глава 1. Краткое введение в Go....24 Введение в Go....25 История Go....26 Почему UNIX, а не Windows....27 Преимущества Go....28 Утилиты go doc и godoc....30 Hello World!....31 Введение в функции....32 Введение в пакеты....32 Запуск Go-кода....33 Компиляция Go-кода....33 Использование Go в качестве языка скриптов....33 Важные правила форматирования и кодирования....34 Важные особенности Go....35 Определение и использование переменных....36 Управление ходом выполнения программы....39 Итерации с помощью циклов for и range....41 Получение пользовательского ввода....43 Использование переменных ошибок для различения типов входных данных....48 Знакомство с моделью параллелизма в Go....49 Разработка утилиты which(1) на Go....51 Вывод информации в лог....54 Функции log.Fatal() и log.Panic()....56 Запись в пользовательский файл журнала....58 Вывод номеров строк в записях журнала....59 Обзор Go-дженериков....61 Разработка базового приложения телефонной книги....62 Упражнения....66 Резюме....66 Дополнительные ресурсы....67 Глава 2. Основные типы данных Go....68 Тип данных error....69 Числовые типы данных....72 Нечисловые типы данных....75 Строки, символы и руны....75 Время и даты....82 Go-константы....87 Генератор констант iota....88 Группировка схожих данных....90 Массивы....90 Срезы....91 Указатели....108 Генерация случайных чисел....112 Генерация случайных строк....113 Генерация безопасных случайных чисел....114 Обновление приложения телефонной книги....115 Упражнения....117 Резюме....117 Дополнительные ресурсы....117 Глава 3. Составные типы данных....118 Карты....119 Сохранение в карту nil....120 Перебор карт....122 Структуры....123 Определение новых структур....123 Использование ключевого слова new....124 Срезы структур....126 Регулярные выражения и сопоставление с образцом....128 О регулярных выражениях Go....129 Сопоставление имен и фамилий....130 Сопоставление целых чисел....131 Сопоставление полей записи....132 Улучшение приложения телефонной книги....133 Работа с CSV-файлами....133 Добавление индекса....137 Улучшенная версия приложения для телефонной книги....138 Упражнения....146 Резюме....147 Дополнительные ресурсы....147 Глава 4. Рефлексия и интерфейсы....148 Рефлексия....149 Изучение внутренней структуры Go-структуры....151 Изменение значений структуры с использованием рефлексии....153 Три недостатка рефлексии....154 Методы типа....155 Создание методов типа....155 Использование методов типа....156 Интерфейсы....159 Интерфейс sort.Interface....162 Пустой интерфейс....164 Утверждения типа и переключатели типов....166 Карта map[string]interface{}....170 Тип данных error....173 Написание собственных интерфейсов....176 Работа с двумя различными форматами файлов CSV....182 Объектно-ориентированное программирование в Go....185 Обновление приложения телефонной книги....189 Настройка значения CSV-файла....189 Использование пакета sort....190 Упражнения....192 Резюме....192 Дополнительные ресурсы....193 Глава 5. Пакеты и функции Go....194 Go-пакеты....195 Скачивание Go-пакетов....195 Функции....198 Анонимные функции....198 Функции, возвращающие несколько значений....199 Возвращаемые значения функции могут иметь имя....200 Функции, которые принимают другие функции в качестве параметров....201 Функции могут возвращать другие функции....202 Функции с переменным количеством параметров....204 Ключевое слово defer....208 Разработка собственных пакетов....210 Функция init()....211 Порядок исполнения....212 Использование GitHub для хранения Go-пакетов....213 Пакет для работы с базой данных....215 Знакомство с базой данных....216 Хранение Go-пакета....220 Дизайн Go-пакета....221 Реализация Go-пакета....223 Тестирование Go-пакета....230 Модули....233 Создание более качественных пакетов....234 Создание документации....235 GitLab Runners и Go....242 Начальная версия файла конфигурации....243 Окончательная версия конфигурационного файла....245 GitHub Actions и Go....246 Хранение секретов в GitHub....248 Окончательная версия конфигурационного файла....248 Утилиты управления версиями....250 Упражнения....252 Резюме....252 Дополнительные ресурсы....253 Глава 6. Даем указания системе UNIX....254 stdin, stdout и stderr....255 Процессы UNIX....256 Обработка сигналов UNIX....256 Файловый ввод-вывод....260 Интерфейсы io.Reader и io.Writer....260 Правильное и неправильное использование io.Reader и io.Writer....261 Буферизованный и небуферизованный файловый ввод-вывод....265 Чтение текстовых файлов....266 Чтение текстового файла построчно....266 Чтение текстового файла слово за словом....267 Чтение текстового файла символ за символом....269 Чтение из /dev/random....270 Считывание определенного объема данных из файла....271 Запись в файл....272 Работа с JSON....275 Использование Marshal() и Unmarshal()....275 Структуры и JSON....277 Чтение и запись данных JSON в виде потоков....278 Структурный вывод записи JSON....279 Работа с XML....281 Преобразование JSON в XML и обратно....282 Работа с YAML....283 Пакет viper....285 Использование флагов командной строки....286 Чтение конфигурационных файлов JSON....289 Пакет cobra....292 Утилита с тремя командами....294 Добавление флагов командной строки....294 Создание псевдонимов команд....295 Создание подкоманд....296 Поиск циклов в файловой системе UNIX....297 Новое в Go 1.16....300 Встраивание файлов....300 ReadDir и DirEntry....303 Пакет io/fs....304 Обновление приложения телефонной книги....306 Использование cobra....307 Хранение и загрузка данных в формате JSON....308 Реализация команды delete....308 Реализация команды insert....309 Реализация команды list....309 Реализация команды search....310 Упражнения....311 Резюме....312 Дополнительные ресурсы....312 Глава 7. Параллельное выполнение в Go....313 Процессы, потоки и горутины....314 Планировщик Go....315 Переменная среды GOMAXPROCS....317 Параллелизм и распараллеливание....319 Горутины....319 Создание горутины....320 Создание нескольких горутин....321 Ожидание завершения горутин....321 Что делать, если количество вызовов Add() и Done() разное....323 Создание нескольких файлов с помощью горутин....325 Каналы....326 Запись в канал и чтение из него....326 Прием из закрытого канала....329 Каналы как параметры функций....330 Состояния гонки....331 Ключевое слово select....333 Установка тайм-аута горутины....335 Ограничение времени выполнения горутины — внутри main()....335 Ограничение времени выполнения горутины — вне main()....337 Еще раз о каналах в Go....338 Буферизованные каналы....339 Nil-каналы....340 Пулы рабочих процессов....342 Сигнальные каналы....345 Общая память и общие переменные....348 Тип sync.Mutex....349 Тип sync.RWMutex....351 Пакет atomic....354 Совместное использование памяти с помощью горутин....356 Закрытые переменные и оператор go....358 Пакет context....360 Пакет semaphore....365 Упражнения....368 Резюме....368 Дополнительные ресурсы....369 Глава 8. Создание веб-сервисов....370 Пакет net/http....371 Тип http.Response....371 Тип http.Request....372 Тип http.Transport....372 Создание веб-сервера....373 Обновление приложения телефонной книги....377 Определение API....377 Реализация обработчиков....378 Предоставление метрик для Prometheus....386 Пакет runtime/metrics....387 Предоставление метрик....389 Чтение метрик....396 Ввод метрик в Prometheus....397 Визуализация метрик Prometheus в Grafana....401 Разработка веб-клиентов....403 Использование http.NewRequest() для улучшения работы клиента....404 Создание клиента для сервиса телефонной книги....407 Создание файловых серверов....412 Загрузка содержимого приложения телефонной книги....414 Время ожидания HTTP-соединений....416 Использование функции SetDeadline()....416 Установка периода ожидания на стороне клиента....417 Установка времени ожидания на стороне сервера....420 Упражнения....421 Резюме....421 Дополнительные ресурсы....422 Глава 9. Работа с TCP/IP и WebSocket....423 TCP/IP....424 Пакет net....426 Разработка TCP-клиента....426 Разработка TCP-клиента с помощью net.Dial()....426 Разработка TCP-клиента, использующего net.DialTCP()....428 Разработка TCP-сервера....430 Разработка TCP-сервера с помощью net.Listen()....430 Разработка TCP-сервера, использующего net.ListenTCP()....433 Разработка UDP-клиента....435 Разработка UDP-сервера....437 Разработка параллельных TCP-серверов....440 Работа с доменными сокетами UNIX....442 Сервер на сокетах домена UNIX....442 Клиент сокета домена UNIX....444 Создание сервера WebSocket....447 Реализация сервера....448 Создание клиента WebSocket....455 Упражнения....459 Резюме....460 Дополнительные ресурсы....460 Глава 10. Работа с REST API....461 Введение в REST....462 Разработка серверов и клиентов RESTful....464 Сервер RESTful....465 Клиент RESTful....473 Создание функционального сервера RESTful....481 REST API....482 Использование пакета gorilla/mux....483 Использование подмаршрутизаторов....484 Работа с базой данных....484 Тестирование пакета restdb....490 Реализация сервера RESTful....491 Тестирование сервера RESTful....495 Создание клиента RESTful....499 Создание структуры клиента командной строки....500 Реализация клиентских команд RESTful....501 Использование клиента RESTful....505 Работа с несколькими версиями REST API....507 Загрузка и скачивание двоичных файлов....507 Использование Swagger для документации REST API....512 Документирование REST API....514 Создание файла документации....517 Обслуживание файла документации....518 Упражнения....521 Резюме....521 Дополнительные ресурсы....521 Глава 11. Тестирование и профилирование кода....523 Оптимизация кода....524 Оценка производительности....525 Переписывание функции main() для более качественного тестирования....526 Анализ производительности буферизованной записи и чтения....527 Утилита benchstat....531 Неправильно определенные бенчмарк-функции....532 Профилирование кода....533 Профилирование приложения командной строки....534 Профилирование HTTP-сервера....537 Веб-интерфейс профилировщика Go....539 Утилита go tool trace....540 Трассировка веб-сервера со стороны клиента....542 Посещение всех маршрутов веб-сервера....544 Тестирование Go-кода....548 Написание тестов для ./ch03/intRE.go....549 Функция TempDir()....551 Функция Cleanup()....551 Пакет testing/quick....553 Тайм-аут тестов....555 Покрытие тестового кода....556 Поиск недостижимого Go-кода....559 Тестирование HTTP-сервера с помощью серверной части базы данных....561 Фаззинг....566 Кросс-компиляция....567 Использование директивы go:generate....569 Создание примеров функций....571 Упражнения....573 Резюме....573 Дополнительные ресурсы....574 Глава 12. Работа с gRPC....575 Введение в gRPC....575 Буферы протокола....576 Определение файла языка определения интерфейса....577 Разработка сервера gRPC....581 Разработка клиента gRPC....584 Упражнения....588 Резюме....588 Дополнительные ресурсы....589 Глава 13. Дженерики Go....590 Введение в дженерики....591 Ограничения....593 Определение новых типов данных с помощью дженериков....596 Интерфейсы и дженерики....600 Рефлексия и дженерики....602 Упражнения....604 Резюме....605 Дополнительные ресурсы....605 Приложение. Сборщик мусора Go....607 Куча и стек....607 Сборка мусора....611 Алгоритм трех цветов....614 Подробнее о работе сборщика мусора в Go....617 Карты, срезы и сборщик мусора Go....618 Сравнение эффективности представленных техник....621 Дополнительные ресурсы....622Описание
В этом материале разберём тему: языка.
В таком случае эта книга для вас. Вам уже знакомы основы языка Go? Михалис Цукалос продемонстрирует возможности языка, даст понятные и простые объяснения, приведет примеры и предложит эффективные паттерны программирования.
Изучая нюансы Go, вы освоите типы и структуры данных языка, а также работу с пакетами, конкурентность, сетевое программирование, устройство компиляторов, оптимизацию и многое другое. Закрепить новые знания помогут материалы и упражнения в конце каждой главы.
Вы изучите классификацию, нейронные сети и приёмы выявления аномалий. Уникальным материалом станет глава о машинном обучении на языке Go, в которой вы пройдёте от основополагающих статистических приемов до регрессии и кластеризации. Из прикладных разделов вы узнаете: как использовать Go с Docker и Kubernetes, Git, WebAssembly, JSON и др.
На этом основные моменты по теме закрыты.
Поделиться
Частые вопросы
Можно ли скачать «Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы. 3 изд» бесплатно?
Да, «Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы. 3 изд» доступна для бесплатного скачивания на нашем сайте в формате PDF. Ссылка на файл находится на этой странице.
В каком формате и какого размера файл?
Книга предоставляется в формате PDF.
Кто автор и когда вышла книга?
автор — Цукалос Михалис, издательство Питер, год выпуска 2024, 624 страниц.
О чём книга «Golang для профи: Создаем профессиональные утилиты, параллельные серверы и сервисы. 3 изд»?
Вам уже знакомы основы языка Go?