Этот урок представляет собой процесс изучения C++, когда я был студентом.После работы у меня уже нет сил писать остальное. Оглядываясь назад на код того времени, я вижу много несовершенств и даже недостатков. Желающие могут свободно. модифицировать, развивать и продолжать проект. Чтобы получить более совершенную базовую библиотеку языка C, перейдите на Wheelib.
Позвольте мне начать с вывода: независимо от того, какой язык используется, основой всей серверной разработки является разработка сервера C/C++ для Linux.
Почти все серверы с высоким уровнем параллелизма работают в среде Linux. Автор раньше писал серверы на Java и Node, но в конце концов я обнаружил, что изучил только технологию и язык, но не понял основных принципов. Процесс HTTP-запроса, почему можно достичь высокого параллелизма, как управлять TCP-соединениями, как обрабатывать логику передачи данных и т. д., можно глубоко понять только при программировании на C/C++.
Это руководство имитирует «30 дней, чтобы создать свою собственную операционную систему» и предназначено для новичков с нулевым опытом. Оно научит вас, как начать разработку серверов Linux за 30 дней. Это руководство более практично и посвящено тому, как писать код, не тратя слишком много места на объяснение основных компьютерных принципов, лежащих в его основе, где это уместно, но это не означает, что эти теоретические знания не важны. На самом деле теоретическая основа очень важна. Без теоретической поддержки строить высокопроизводительный сервер – это нонсенс.
В этом уроке мы надеемся, что читатели:
После завершения этого руководства вы легко поймете исходный код Muduo.
Одна из трудностей в изучении C/C++ заключается в том, что вы не можете делать реальные вещи, когда впервые изучаете. Нет обратной связи, и программа работает в темной командной строке. В отличие от веб-разработки, вы можете увидеть результаты своего обучения. в любое время. Код этого руководства помещается в папку кода. После каждого дня обучения вы можете получить сервер, который можно скомпилировать и запустить, и продолжить итеративную разработку.
В папке кода есть папка с кодом. Войдите в нее и используйте команду make
для компиляции. Будут созданы два исполняемых файла. Введите команду ./server
чтобы увидеть результаты сегодняшнего обучения! Затем создайте новый терминал и введите ./client
для запуска клиента и взаимодействия с сервером.
day01-Начните с самого простого сокета
day02-Не допускайте ошибок
day03 – для обеспечения высокого параллелизма необходимо использовать epoll.
day04- Давайте посмотрим на наш первый урок
Day05-epoll расширенное использование - Дебют канала
Появляются day06-Server и основные классы, управляемые событиями.
day07-Добавить акцептора на наш сервер
day08-Все является классом, даже TCP-соединения не являются исключением
Day09-буфер-большая роль
day10-присоединить пул потоков к серверу
day11-Улучшите пул потоков и добавьте простую тестовую программу.
day12-Переписать сервер в многопоточный режим master-slave Reactor.
day13-C++ инжиниринг, анализ кода, оптимизация производительности
day14-Поддержка настройки бизнес-логики и улучшение класса Connection.
day15-macOS поддерживает и улучшает настройку бизнес-логики
day16-Рефакторинг сервера и использование интеллектуальных указателей
таймер
Система регистрации
Поддержка протокола HTTP
веббенч тест
Загрузка файла возобновляется в точках останова
Статическое хранилище ресурсов
...
Проект Wlgls/30daysCppWebServer пытается продолжить написание последующих частей, которые можно использовать в качестве учебного пособия.
Мои способности средние, а уровень ограничен. Если вы обнаружите, что мои уроки неверны или заслуживают улучшения, пожалуйста, не стесняйтесь поднимать вопрос или напрямую пиариться.
Каждый может внести свой собственный код в этот проект. Если у вас есть код, который, по вашему мнению, лучше, сообщите о проблеме или напишите напрямую. Все предложения будут рассмотрены.
Чтобы добавить код, перейдите в проект pine, который представляет собой сетевую библиотеку, разработанную в этом руководстве, а также является последней версией кода.