TinywebServer代码详解-服务器主程序(14)
TinywebServer代码详解– 服务器主程序(14)原项目地址(点击跳转)
博主添加注释后项目地址(点击跳转)
本文将介绍TinyWebServer服务器主程序的代码
一、代码详解1.头文件webserver.h
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111#pragma once#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <stdio.h>#include <unistd.h>#include < ...
TinywebServer代码详解-配置文件(13)
TinywebServer代码详解– 配置文件(13)原项目地址(点击跳转)
博主添加注释后项目地址(点击跳转)
一、基础知识1.解析JSON文件在本文中,使用JSON文件存储,数据库服务器相关信息,有数据库服务器端口、数据库服务器用户名、密码、以及使用的数据库名
在程序运行时,调用函数对JSON文件进行解析,获取数据。在本文中使用JSONCPP库对JSON文件进行解析
按照JSONCPP库之后,出了源文件中包含JSONCPP的头文件外#include <jsoncpp/json/json.h>,在编译时,CMakeLists.txt中也需要添加相关信息,使得程序可以正常编译,如下是一个使用JSONCPP库的CMakeLists.txt
123456789101112131415cmake_minimum_required(VERSION 3.10)project(MyProject)# 查找 JSONCPPfind_package(jsoncpp REQUIRED)# 使用 find_package 成功找到 JSONCPP 后,它会设置一些变量,包括包含目录# ...
TinywebServer代码详解-注册登录(12)
TinywebServer代码详解– 注册登录(12)该blog内容转自:最新版Web服务器项目详解 - 12 注册登录
该blog对上述内容进行补充(在本人的角度)
原项目地址(点击跳转)
博主添加注释后项目地址(点击跳转)
一、章节内容1.整体概述本项目中,使用数据库连接池实现服务器访问数据库的功能,使用POST请求完成注册和登录的校验工作
2.本文内容本篇将介绍同步实现注册登录功能,具体的涉及到流程图,载入数据库表,提取用户名和密码,注册登录流程与页面跳转的的代码实现
流程图,描述服务器从报文中提取出用户名密码,并完成注册和登录校验后,实现页面跳转的逻辑
载入数据库表,结合代码将数据库中的数据载入到服务器中
提取用户名和密码,结合代码对报文进行解析,提取用户名和密码
注册登录流程,结合代码对描述服务器进行注册和登录校验的流程
页面跳转,结合代码对页面跳转机制进行详解
3.流程图具体的,描述了GET和POST请求下的页面跳转流程
界面跳转:在服务器源码,访问资源的html文件中,对表单的action属性进行修改,这是为如下形式:
1234567891011 ...
TinywebServer代码详解-数据库连接池(11)
TinywebServer代码详解– 数据库连接池(11)该blog内容转自:最新版Web服务器项目详解 - 11 数据库连接池
该blog对上述内容进行补充(在本人的角度)
结合此前记录的blog一起学习:牛客WebServer项目实战(点击跳转)
结合此前记录的blog一起学习:多线程与线程同步(点击跳转)
关于数据线程池相关blog(点击跳转)
原项目地址(点击跳转)
博主添加注释后项目地址(点击跳转)
一、基础知识1.数据库连接池池是一组资源的集合,这组资源在服务器启动之初就被完全创建好并初始化。通俗来说,池是资源的容器,本质上是对资源的复用
连接池中的资源为一组数据库连接,由程序动态地对池中的连接进行使用,释放。数据库连接池是一种技术,主要用于管理数据库连接,以提高数据库操作的效率和性能。它允许系统预先创建一定数量的数据库连接,并将这些连接存储在一个“池”中。当应用程序需要访问数据库时,它可以直接从池中取出一个现有的连接,使用完毕后再放回池中,而不是每次需要时都创建和销毁连接
主要优势:
资源重用:重复使用现有的数据库连接,减少创建和销毁连接的开销
提高性能:减 ...
TinywebServer代码详解-日志系统-下(10)
TinywebServer代码详解– 日志系统-下(10)该blog内容转自:最新版Web服务器项目详解 - 10 日志系统(下)
该blog对上述内容进行补充(在本人的角度)
结合此前记录的blog一起学习:牛客WebServer项目实战(点击跳转)
结合此前记录的blog一起学习:多线程与线程同步(点击跳转)
原项目地址(点击跳转)
博主添加注释后项目地址(点击跳转)
一、基础知识1.本文内容
日志系统分为两部分,其一是单例模式与阻塞队列的定义,其二是日志类的定义与使用。
本篇将介绍日志类的定义与使用,具体的涉及到基础API,流程图与日志类定义,功能实现。
基础API,描述fputs,可变参数宏__VA_ARGS__,fflush
流程图与日志类定义,描述日志系统整体运行流程,介绍日志类的具体定义
功能实现,结合代码分析同步、异步写文件逻辑,分析超行、按天分文件和日志分级的具体实现
2.基础API(1)fputsfputs 函数的原型定义在 <cstdio>(C++ 中)或 <stdio.h>(C 中)头文件中
1int fputs(const ...