이 튜토리얼은 제가 학생이었을 때 C++를 배우는 과정입니다. 작업을 마치고 나면 더 이상 나머지 부분을 작성할 힘이 없습니다. 당시 코드를 되돌아보면 불완전한 부분도 많고, 의지만 있는 사람은 자유롭게 사용할 수도 있습니다. 프로젝트를 수정하고, 개발하고, 계속합니다. 보다 완벽한 C언어 기본 라이브러리를 원하시면 Wheelib로 이동해주세요.
결론부터 시작하겠습니다. 어떤 언어를 사용하든 모든 백엔드 개발의 기초는 Linux용 C/C++ 서버 개발입니다.
거의 모든 동시성이 높은 서버는 Linux 환경에서 실행됩니다. 저자는 이전에 Java 및 노드로 서버를 작성했지만 결국 기술과 언어만 배웠을 뿐 기본 원리를 이해하지 못했다는 것을 알게 되었습니다. HTTP 요청 프로세스, 높은 동시성을 달성할 수 있는 이유, TCP 연결 제어 방법, 데이터 전송 논리 처리 방법 등은 C/C++ 프로그래밍을 통해서만 깊이 이해할 수 있습니다.
이 튜토리얼은 "30일 동안 나만의 운영 체제 만들기"를 모방하며, 경험이 전혀 없는 초보자를 대상으로 30일 안에 Linux 서버 개발을 시작하는 방법을 알려줍니다. 이 튜토리얼은 보다 실용적이며 기본 컴퓨터 원리를 설명하는 데 너무 많은 공간을 들이지 않고 코드를 작성하는 방법에 중점을 둘 것입니다. 관련 책의 특정 장이 제공될 것이지만 이것이 이 이론적 지식이 중요하지 않다는 것을 의미하지는 않습니다. 사실 이론적 기반이 매우 중요하기 때문에, 고성능 서버를 구축한다는 것은 말도 안되는 일입니다.
이 튜토리얼은 독자들에게 다음 사항을 희망합니다.
이 튜토리얼을 마치시면, muduo 소스코드를 쉽게 이해하실 수 있을 것입니다.
C/C++를 배울 때 어려운 점 중 하나는 처음 배울 때 피드백이 없고 프로그램이 어두운 명령줄에서 실행된다는 점입니다. 언제든지. 본 튜토리얼의 코드는 code 폴더에 들어있습니다. 매일 공부하면 컴파일과 실행이 가능한 서버를 얻을 수 있고, 반복적인 개발이 계속됩니다.
코드폴더에는 요일별 코드폴더가 있습니다. 그 폴더에 들어가 make
명령어를 사용하여 컴파일하면 ./server
명령어를 입력하면 오늘의 학습결과를 보실 수 있습니다! 그런 다음 새 터미널을 만들고 ./client
입력하여 클라이언트를 실행하고 서버와 상호 작용합니다.
day01 - 가장 간단한 소켓으로 시작하세요
day02 - 어떤 실수도 놓치지 마세요
day03-높은 동시성을 위해서는 epoll을 사용해야 합니다.
day04- 첫 수업을 살펴보겠습니다
day05 - epoll 고급 사용법 - 채널 데뷔
day06-Server 및 이벤트 기반 핵심 클래스가 나타납니다.
day07-서버에 Acceptor 추가
day08-모든 것은 클래스입니다. TCP 연결도 예외는 아닙니다.
day09-버퍼-큰 역할
day10-스레드 풀을 서버에 조인
day11 - 스레드 풀 개선 및 간단한 테스트 프로그램 추가
day12-서버를 마스터-슬레이브 Reactor 다중 스레드 모드로 다시 작성
day13-C++ 엔지니어링, 코드 분석, 성능 최적화
day14 - 비즈니스 로직 사용자 정의 지원 및 Connection 클래스 개선
day15-macOS는 비즈니스 로직 사용자 정의를 지원하고 개선합니다.
16일 - 서버 리팩터링 및 스마트 포인터 사용
시간제 노동자
로깅 시스템
HTTP 프로토콜 지원
웹벤치 테스트
중단점에서 파일 다운로드가 재개됩니다.
정적 리소스 저장
...
Wlgls/30daysCppWebServer 프로젝트는 참조용 후속 부분을 작성하려고 시도합니다.
내 능력은 평균이고 레벨은 제한되어 있습니다. 내 튜토리얼이 잘못되었거나 개선할 가치가 있다고 생각되면 언제든지 문제를 제기하거나 직접 PR해 주세요.
누구나 이 프로젝트에 자신의 코드를 기여할 수 있습니다. 더 좋다고 생각되는 코드가 있으면 문제를 제출하거나 직접 PR해 주세요. 모든 제안이 고려됩니다.
코드를 제공하려면 이 튜토리얼에서 개발된 네트워크 라이브러리이자 최신 코드 버전인 Pine 프로젝트로 이동하세요.