![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
TinyWebServer笔记
文章平均质量分 60
学习GitHub项目TinyWebServer的一些理解和笔记。
爱躺平的咸鱼
这个作者很懒,什么都没留下…
展开
-
TinyWebServer整体流程
在这一步确定触发模式端口等信息。原创 2023-10-06 20:07:46 · 296 阅读 · 0 评论 -
TinyWebServer学习笔记-threadpool
从任务队列头部取出任务,释放锁,如果取出的任务对象是有效指针,如果是Proactor并发模型代表有数据要读,调用函数读取客户端数据,标记请求已被处理,获得数据库连接执行数据库操作。采用Proactor并发模型,主线程负责监听文件描述符,接受socket连接,若当前监听的socket发生了读写事件,就把任务插入到请求队列中,工作线程从请求队列中取出任务,完成读写数据的处理。如果读取失败,表示需要进行定时器的处理,如果m_stat=1,那么表示要写入数据,写入成功标记请求已经被处理,否则设置定时器。原创 2023-10-03 20:48:33 · 265 阅读 · 0 评论 -
TinyWebServer学习笔记-log
在服务器运行期间,可能会发生各种问题和故障,例如程序崩溃、性能下降、异常请求等。日志记录了服务器的运行状态、错误信息和各种操作,这些日志可以用来快速定位和排查问题,帮助开发人员更容易地找到问题的根本原因,从而更快地修复bug和提高服务器稳定性。通过日志系统可以记录服务器的性能数据,包括请求处理时间、吞吐量、内存使用情况、CPU利用率等等。这些数据有助于监控服务器的性能,发现潜在的性能瓶颈,以便进行性能优化。日志可以记录系统的安全事件,如登录失败尝试、异常访问等。原创 2023-10-03 19:44:39 · 244 阅读 · 0 评论 -
TinyWebServer学习笔记-MySQL数据库连接
我们的网站允许用户注册,在没有池的情况下,假设只有一个人,那么流程就是,用户点击注册,通过socket将用户的账号和密码发送到服务器,然后就需要创建MySQL数据库连接,然后插入数据,插入完毕后销毁该连接;然而当用户很多时,这个设计就会花费大量的时间在数据库连接的创建和释放上。为了避免这种情况,引入池的概念,在程序初始化的时候,集中建立多个数据库连接,并集中管理,供程序使用,更见安全和可靠。池是一组资源的机会,这组资源在服务器启动之初就被完全创建好并初始化,池是资源的容器,实现对资源的复用。原创 2023-10-03 16:32:42 · 209 阅读 · 0 评论 -
TinyWebServer学习笔记-互斥锁、信号量、条件变量
网站不可能是单线程的,否则网站的性能和响应都会收到严重的影响。因此,这个项目一定是运行在多线程条件下的。而在多线程条件下,对共享资源的互斥访问就极其重要。原创 2023-10-03 15:55:56 · 279 阅读 · 0 评论 -
TinyWebServer学习笔记-Config
对于边缘模式,socket上每新来一次数据就会触发一次,如果上一次触发后,没有将socket上的数据读完,也不会再次触发,除非再来新的数据。对于socket写事件,如果socket的TCP窗口一致不饱和,会一直出发EPOLLOUT事件,对于边缘模式,只会触发一次,除非TCP窗口从不饱和变成饱和再一次变成不饱和才会触发。在LT模式下,不需要写事件一定要移除,避免不必要的触发,浪费CPU资源,ET模式下,写事件触发后,如果还要下一次的写事件触发来驱动任务,需要继续注册检测可写事件。argc:命令行参数的数量;原创 2023-10-03 15:21:31 · 138 阅读 · 0 评论 -
TinyWebServer学习笔记-让程序跑起来
之后我们在浏览器输入ip:9006即可访问。目标:通过这个HTTP项目熟悉网络编程。现在我们就已经将程序跑起来了。系统:Ubuntu20.04。原创 2023-10-03 13:11:42 · 356 阅读 · 0 评论