这是一篇针对qinguoyi/TinyWebServer 的学习文章。
TinyWebServer 以基于socket + epoll 等基础api构建最基础的服务为目标。最终实现如使用Nodejs的http 构建监听端口并接收接口信息,发送页面。其中实现方式都是最简化方案。以商用、生产环境为目的上线,则需要优化对应的模块实现。
如果要快速实现,推荐使用libuv,libevent等知名库,本文仅方便了解Web服务实现,了解并跟着实现其中最基础实现方式。在学习之前,提前先了解下相关api知识,请查看博主网页罗列的相关api。该博主还有与TinyWebServer 相关的博文,有兴趣可以查看。本篇文章和该博文区别在于更注重写和实现。
Platform: Windows
IDE : VSCode
Running : WSL-ubuntu
运行本地mysql, 填写db_user, db_pass, db_name 到main.cpp中。
cp .vscode/launch.example.json .vscode/launch.json
cp .vscode/tasks.example.json .vscode/tasks.json
# 键盘F5 启动debug
以下按章节循序渐进学习:
- sem / lock / cond
- block_queue
- log
- sql pool && RAII interface
- lst_timer && utils
- threadpool
- webserver(constitude all logic above)
- http logic
https://github.com/akerdi/sigAttachEpoll_sample