Este tutorial es el proceso de aprendizaje de C ++ cuando era estudiante. Después de trabajar, ya no tengo la energía para escribir el resto. Mirando hacia atrás, hay muchas imperfecciones e incluso fallas. modificar, desarrollar y continuar el proyecto. Para obtener una biblioteca básica en lenguaje C más perfecta, vaya a wheelib
Permítanme comenzar con la conclusión: no importa qué lenguaje se utilice, la base de todo desarrollo backend es el desarrollo de servidores C/C++ para Linux.
Casi todos los servidores de alta concurrencia se ejecutan en el entorno Linux. El autor ha escrito servidores en Java y nodos antes, pero al final descubrí que solo aprendí una tecnología y un lenguaje, pero no entendí los principios básicos subyacentes. El proceso de una solicitud HTTP, por qué se puede lograr una alta concurrencia, cómo controlar las conexiones TCP, cómo manejar la lógica de la transmisión de datos, etc., solo se puede comprender en profundidad mediante la programación en C/C++.
Este tutorial imita "30 días para crear su propio sistema operativo" y está dirigido a principiantes sin experiencia. Le enseñará cómo comenzar con el desarrollo de servidores Linux en 30 días. Este tutorial es más práctico y se centrará en cómo escribir código sin gastar demasiado espacio explicando los principios básicos de la computadora detrás de él. Se proporcionarán capítulos específicos de los libros correspondientes cuando sea relevante, pero esto no significa que este conocimiento teórico no sea importante. De hecho, la base teórica es muy importante. Sin soporte teórico, no tiene sentido construir un servidor de alto rendimiento.
Este tutorial espera que los lectores:
Después de completar este tutorial, comprenderá fácilmente el código fuente de muduo.
Una de las dificultades al aprender C/C++ es que no puedes crear cosas reales cuando aprendes por primera vez. No hay comentarios y el programa se ejecuta en una línea de comandos oscura. A diferencia del desarrollo web, puedes ver los resultados de tu aprendizaje en. en cualquier momento. El código de este tutorial se coloca en la carpeta de códigos. Después de estudiar todos los días, puede obtener un servidor que se puede compilar y ejecutar y continuar con el desarrollo iterativo.
Hay una carpeta de código para cada día en la carpeta de código. Ingrese la carpeta y use el comando make
para compilar. Ingrese el comando ./server
para ver los resultados del aprendizaje de hoy. Luego cree una nueva Terminal e ingrese ./client
para ejecutar el cliente e interactuar con el servidor.
día01-Comience con el enchufe más simple
día02-No dejes pasar ningún error
día03: para alta concurrencia, se debe utilizar epoll
día04- Echemos un vistazo a nuestra primera clase.
día 05-epoll uso avanzado-Debut del canal
día 06: aparecen las clases principales basadas en servidores y eventos
día07-Agregar un aceptador a nuestro servidor
día08-Todo es una clase, incluso las conexiones TCP no son una excepción
día09-búfer-gran rol
día 10: únete al grupo de subprocesos al servidor
día 11: mejore el grupo de subprocesos y agregue un programa de prueba simple
Día 12: reescribe el servidor en modo multiproceso Reactor maestro-esclavo
day13-Ingeniería C++, análisis de código, optimización del rendimiento
Día 14: Admite la personalización de la lógica empresarial y mejora la clase de conexión.
day15-macOS admite y mejora la personalización de la lógica empresarial
día 16: refactorice el servidor y use punteros inteligentes
minutero
Sistema de registro
Soporte de protocolo HTTP
prueba de banco web
La descarga de archivos se reanuda en los puntos de interrupción
Almacenamiento de recursos estáticos
...
El proyecto Wlgls/30daysCppWebServer intenta escribir partes posteriores como referencia.
Mi habilidad es promedio y mi nivel es limitado. Si encuentra que mis tutoriales son incorrectos o dignos de mejora, no dude en plantear un problema o directamente a las relaciones públicas.
Todos pueden contribuir con su propio código a este proyecto. Si tiene un código que cree que es mejor, envíe un problema o haga relaciones públicas directamente. Se considerarán todas las sugerencias.
Para contribuir con código, vaya al proyecto pine, que es la biblioteca de red desarrollada en este tutorial y también es la última versión del código.