Skip to content

lishiyi-ai/WebServer-C

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WebServer-C

使用数据库连接池管理数据连接

使用RAII对每个数据库的存还进行管理,通过C++类来保证其安全的存取。

使用线程池进行线程管理,使用同步I/O模拟proactor模式

锁类封装了互斥锁,信号量,条件变量

http类采用主从状态机进行,从状态机负责读取行,主状态机负责解析行,主状态机调用从状态机,从状态机驱动主状态机

日志类实现了同步 和 异步模式,异步模式采用阻塞队列进行管理。

实现按天、超行分类。 webserver类中支持react模式 和 proactor模式 代码中在数据库连接池与日志类中采用了单例模式中的懒汉模式,C++11之后保证了懒汉模式的线程安全。 定时器类采用了双端链表进行定时器管理,采用信号量触发定时任务,主要处理非活动连接。

-服务器测试环境 -Ubuntu版本24.04 -MySQL版本8.0.34 -浏览器测试环境 -Window、Linux均可 -FireFox -Chrome -Edge

  • -p,自定义端口号
    • 默认9000
  • -l,选择日志写入方式,默认同步写入
    • 0,同步写入
    • 1,异步写入
  • -m,listenfd和connfd的模式组合,默认使用LT + LT
    • 0,表示使用LT + LT
    • 1,表示使用LT + ET
    • 2,表示使用ET + LT
    • 3,表示使用ET + ET
  • -o,优雅关闭连接,默认不使用
    • 0,不使用
    • 1,使用
  • -s,数据库连接数量
    • 默认为8
  • -t,线程数量
    • 默认为8
  • -c,关闭日志,默认打开
    • 0,打开日志
    • 1,关闭日志
  • -a,选择反应堆模型,默认Proactor
    • 0,Proactor模型
    • 1,Reactor模型

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages