首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
tinywebserver专题
C++ TinyWebServer项目总结(13. 多进程编程)
本章讨论Linux多进程编程的以下内容: 复制进程映像的fork系统调用和替换进程映像的exec系列系统调用。僵尸进程以及如何避免僵尸进程。进程间通信(Inter Process Communication,IPC)最简单的方式:管道。三种System V进程间通信方式:信号量、消息队列、共享内存。它们是由AT&T System V2版本的UNIX引入的,所以统称为System V IPC。在进
阅读更多...
C++ TinyWebServer项目总结(10. 信号)
信号是由用户、系统、进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。Linux信号可由以下条件产生: 对于前台进程,用户可通过输入特殊终端字符来给它发送信号,如输入Ctrl+C通常会给进程发送一个中断信号。系统异常。如浮点异常或非法内存段访问。系统状态变化。如alarm定时器到期将引起SIGALRM信号。运行kill命令或调用kill函数。 服务器程序必须处理(或至少忽略)一
阅读更多...
C++ TinyWebServer项目总结(9. I/O 复用)
I/O 复用使得程序能够同时监听多个文件描述符,从而提高程序的性能。I/O 复用本身是阻塞的。Linux 下实现 I/O 复用的系统调用主要有 select、poll 和 epoll。 select 系统调用 select API select系统调用:在一段指定时间内,监听用户感兴趣的文件描述符上的可读、可写、异常事件: #include <sys/select.h>int selec
阅读更多...
c++服务器开源项目Tinywebserver运行
c++服务器开源项目Tinywebserver运行 一、Tinywebserver介绍二、环境搭建三、构建数据库四、编译Tinywebserver五、查看效果 Tinywebserver是github上一个十分优秀的开源项目,帮助初学者学习如何搭建一个服务器。 本文讲述如何在使用mysql跟该项目进行连接并将项目运行起来。 一、Tinywebserver介绍 Linux下
阅读更多...
TinyWebServer整体流程
从main主函数开始: 一、定义MySQL数据库的账号、密码和用到的数据库名称。 二、调用Config获得服务器初始化属性 在这一步确定触发模式端口等信息。 三、创建服务器实例对象 设置根目录、开辟存放http连接对象的空间,开辟定时器空间。 四、利用Config里面的属性值初始化server的属性值 五、开启日志 选择同步日志还是异
阅读更多...
TinyWebServer学习笔记-互斥锁、信号量、条件变量
为什么要使用锁、信号量、条件变量? 网站不可能是单线程的,否则网站的性能和响应都会收到严重的影响。因此,这个项目一定是运行在多线程条件下的。而在多线程条件下,对共享资源的互斥访问就极其重要。 为什么要将资源封装成类? 首先,我们要明确资源的使用一般有三个步骤: 1、获取资源 2、使用资源 3、释放资源 然而,大多数情况下,我们一定能做到前两点,而总是忘记第三步,这就会造成资源的泄露
阅读更多...
TinyWebServer学习笔记-让程序跑起来
目标:通过这个HTTP项目熟悉网络编程 系统:Ubuntu20.04 首先,学习的第一步就是先让程序跑起来,使用git将项目下载到虚拟机内: git clone https://github.com/qinguoyi/TinyWebServer.git 提前把MySQL数据库安装好,(还要下载好connector,这里名有本项目需要使用的MySQL源代码)在里面建立新的数据库并创建表:
阅读更多...
TinyWebServer学习笔记-互斥锁、信号量、条件变量
为什么要使用锁、信号量、条件变量? 网站不可能是单线程的,否则网站的性能和响应都会收到严重的影响。因此,这个项目一定是运行在多线程条件下的。而在多线程条件下,对共享资源的互斥访问就极其重要。 为什么要将资源封装成类? 首先,我们要明确资源的使用一般有三个步骤: 1、获取资源 2、使用资源 3、释放资源 然而,大多数情况下,我们一定能做到前两点,而总是忘记第三步,这就会造成资源的泄露
阅读更多...
TinyWebServer学习笔记——Day01
目标:通过这个HTTP项目熟悉网络编程 系统:Ubuntu20.04 首先,学习的第一步就是先让程序跑起来,使用git将项目下载到虚拟机内: git clone https://github.com/qinguoyi/TinyWebServer.git 提前把MySQL数据库安装好,(还要下载好connector,这里名有本项目需要使用的MySQL源代码)在里面建立新的数据库并创建表:
阅读更多...