当前位置: 首页 > news >正文

myWebserver 介绍

项目总结

项目准备过程中,主要阅读了《Linux 高性能服务器编程》游双 一书。源码参考的是:TinyWebServer,我在此源码的基础上做了一定的优化和修改

我的代码:Github: myWebserver: 我的C++服务器项目

我的 Webserver 项目总结:WebServer 项目解读 / 代码分析 / 改进

我的《Linux 高性能服务器编程》学习笔记:《Linux 高性能服务器编程》总结_红茶川的博客-CSDN博客

我的 CSDN 博客:红茶川-CSDN博客,上面同步更新了所有内容。

《Linux 高性能服务器编程》学习笔记

书本中的样例代码

书中的部分样例代码,我都在笔记中给出了可以运行的代码,大家可以编译运行一下看看效果。

所有代码我都放在了 Github 仓库:《Linux 高性能服务器编程》—游双,阅读笔记及相关代码

完整笔记:《Linux 高性能服务器编程》总结_红茶川的博客-CSDN博客


实战 1:TCP通信实现(服务器端和客户端)

实战 2:使用 MSG_OOB 选项发送带外数据

实战 3:实现一个简单的 CGI 服务器

实战 4:测试 UID 和 EUID 的区别

实战 5:使用 setsid() 创建一个新的会话和进程组

实战 6:select 调用同时接收普通数据和带外数据

实战 7:使用 SIGURG 信号检测带外数据是否到达

实战 8:使用 SO_SNDTIMEO 选项设置定时

实战 9:利用 alarm 函数周期性触发 SIGALRM 信号

实战 10:利用 Libevent 库实现一个“Hello World”程序

实战 11:在进程间传递文件描述符

实战 12:死锁举例

实战 13:使用条件变量模拟实现生产者—消费者问题

实战 14:多线程环境中,使用fork调用产生的死锁问题

实战 15:在一个线程中统一处理所有信号

实战 16:用进程池实现简单的 CGI 服务器

第一篇 前置知识 TCP / IP 协议

1. IP协议

2. TCP协议

3. 访问一个网页的全过程

第二篇 深入解析高性能服务器编程

4. Linux网络编程基础API

5. 高级 I/O 函数

6. Linux服务器程序规范

7. 高性能服务器程序框架

7. 高性能服务器程序框架

8. I/O 复用

9. 信号

10. 定时器

11. 高性能I/O框架库Libevent

12. 多进程编程

14. 进程池和线程池

14. 进程池和线程池

第三篇 高性能服务器优化与监测

15. 服务器调制、调试和测试

参考

TinyWebServer

GitHub地址:https://github.com/qinguoyi/TinyWebServer

  • 小白视角:一文读懂社长的TinyWebServer
  • 最新版Web服务器项目详解 - 01 线程同步机制封装类
  • 最新版Web服务器项目详解 - 02 半同步半反应堆线程池(上)
  • 最新版Web服务器项目详解 - 03 半同步半反应堆线程池(下)
  • 最新版Web服务器项目详解 - 04 http连接处理(上)
  • 最新版Web服务器项目详解 - 05 http连接处理(中)
  • 最新版Web服务器项目详解 - 06 http连接处理(下)
  • 最新版Web服务器项目详解 - 07 定时器处理非活动连接(上)
  • 最新版Web服务器项目详解 - 08 定时器处理非活动连接(下)
  • 最新版Web服务器项目详解 - 09 日志系统(上)
  • 最新版Web服务器项目详解 - 10 日志系统(下)
  • 最新版Web服务器项目详解 - 11 数据库连接池
  • 最新版Web服务器项目详解 - 12 注册登录
  • 最新版Web服务器项目详解 - 13 踩坑与面试题

其他参考

  1. 什么是 web 服务器? - 学习 Web 开发 | MDN
  2. 基于 Linux 的 web 服务器_基于linux系统的webserve服务器开发-CSDN博客
  3. 代码随想录项目精讲系列-webserver.pdf 密码:
  4. Linux高性能服务器编程.pdf
  5. 从零开始自制实现C++ High-Performance WebServer 全流程记录_c++ webserver项目 速成-CSDN博客
  6. 从零开始实现C++ TinyWebServer_JehanRio的博客-CSDN博客
http://www.lryc.cn/news/475903.html

相关文章:

  • 钉钉平台开发小程序
  • 九识智能与徐工汽车达成战略合作,共绘商用车未来新蓝图
  • Serverless + AI 让应用开发更简单
  • 外包功能测试就干了4周,技术退步太明显了。。。。。
  • 外观模式及运用场景
  • PyQt5实战——多脚本集合包,UI以及工程布局(二)
  • Python 数据结构对比:列表与数组的选择指南
  • gem5运行简单RISC-V全系统模拟
  • 洛谷 P1195 口袋的天空
  • ffmpeg视频滤镜:膨胀操作-dilation
  • 3.3 windows,ReactOS系统中页面的换出----2,结构体PHYSICAL_PAGE
  • lvgl
  • 【django】RESTful API 设计指南
  • 提升大数据量分页查询性能:深分页优化全解
  • WPF 实现冒泡排序可视化
  • Claude 3.5 新功能 支持对 100 页的PDF 图像、图表和图形进行可视化分析
  • 正式开源:从 Greenplum 到 Cloudberry 迁移工具 cbcopy 发布
  • Python如何读写文件?
  • 100种算法【Python版】第38篇——Boyer-Moore算法
  • 贪心算法---java---黑马
  • 程序员的减压秘籍:高效与健康的平衡艺术
  • 2024 年 QEMU 峰会纪要
  • C++/list
  • 刘艳兵-DBA015-对于属于默认undo撤销表空间的数据文件的丢失,哪条语句是正确的?
  • 树莓派基本设置--10.使用MIPI摄像头
  • 【ARCGIS实验】地形特征线的提取
  • HTML 基础标签——表格标签<table>
  • 线程函数和线程启动的几种不同形式
  • 数组排序简介-基数排序(Radix Sort)
  • 进程间通信(命名管道 共享内存)