当前位置: 首页 > 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博客

相关文章:

myWebserver 介绍

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

钉钉平台开发小程序

一、下载小程序开发者工具 官网地址:小程序开发工具 - 钉钉开放平台 客户端类型 下载链接 MacOS x64 https://ur.alipay.com/volans-demo_MiniProgramStudio-x64.dmg MacOS arm64 https://ur.alipay.com/volans-demo_MiniProgramStudio-arm64.dmg Windows ht…...

九识智能与徐工汽车达成战略合作,共绘商用车未来新蓝图

近日,九识智能与徐工汽车签署战略合作协议,标志着双方在智能驾驶技术与新能源商用车融合应用、联合生产及市场推广等方面迈入深度合作的新篇章,将共同引领智能驾驶技术商业化浪潮。 近年来,在国家智能化发展战略的引领下&#xff…...

Serverless + AI 让应用开发更简单

本文整理自 2024 云栖大会,阿里云智能高级技术专家,史明伟演讲议题《Serverless AI 让应用开发更简单》 随着云计算和人工智能(AI)技术的飞速发展,企业对于高效、灵活且成本效益高的解决方案的需求日益增长。本文旨在…...

外包功能测试就干了4周,技术退步太明显了。。。。。

先说一下自己的情况,大专生,21年通过校招进入武汉某软件公司,干了差不多3个星期的功能测试,那年国庆,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我才在一个外包企业干了4周的功…...

外观模式及运用场景

外观模式(Facade Pattern)是一种结构性设计模式,它为复杂子系统提供一个统一的接口,从而简化与这些子系统的交互。通过外观模式,客户端可以更轻松地使用复杂系统,而不必了解其内部实现。接下来,…...

PyQt5实战——多脚本集合包,UI以及工程布局(二)

个人博客:苏三有春的博客 系列往期: PyQt5实战——多脚本集合包,前言与环境配置(一) 布局 2.1 UI页面布局 整体框架分为分为三个部分,垂直分布。 第一个部分为功能选择按钮(如UTF-8转换&#…...

Python 数据结构对比:列表与数组的选择指南

文章目录 💯前言💯Python中的列表(list)和数组(array)的详细对比1. 数据类型的灵活性2. 性能与效率3. 功能与操作4. 使用场景5. 数据结构选择的考量6. 实际应用案例7. 结论 💯小结 &#x1f4af…...

gem5运行简单RISC-V全系统模拟

简单记录gem5中运行最简单的RISC-V Full System Simulation的过程 首先是编译RISC-V和m5term,这部分不多写了,官网均有对应教程。 之后直接使用官方在configs/example/gem5_library目录下的riscv-fs.py 运行如下命令 ./build/RISCV/gem5.opt configs/…...

洛谷 P1195 口袋的天空

自用。 题目传送门&#xff1a;口袋的天空 - 洛谷 题解&#xff1a;Inori_333 参考题解&#xff1a;题解 P1195 【口袋的天空】 - 洛谷专栏 /*P1195 口袋的天空https://www.luogu.com.cn/problem/P11952024/11/03 submit:inori333 */#include <iostream> #include &…...

ffmpeg视频滤镜:膨胀操作-dilation

滤镜介绍 dilation 官网链接 > FFmpeg Filters Documentation 膨胀滤镜会使图片变的更亮&#xff0c;会让细节别的更明显。膨胀也是形态学中的一种操作&#xff0c;在opencv中也有响应的算子。此外膨胀结合此前腐蚀操作&#xff0c;可以构成开闭操作。 开操作是先腐蚀…...

3.3 windows,ReactOS系统中页面的换出----2,结构体PHYSICAL_PAGE

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目…...

lvgl

lvgl 目录 lvgl Lvgl移植到STM32 -- 1、下载LVGL源码 -- 2、将必要文件复制到工程目录 -- 3、修改配置文件 将lvgl与底层屏幕结合到一块 -- lvgl也需要有定时器,专门给自己做了一个函数,告诉lvgl经过了多长时间(ms(毫秒)级别) 编写代码 lvgl的中文教程手册网站…...

【django】RESTful API 设计指南

目录 一、协议 二、域名 三、版本&#xff08;Versioning&#xff09; 四、路径&#xff08;Endpoint&#xff09; 五、HTTP动词 5.1 CRUD操作&#xff1a; 5.2 其他动词&#xff1a; 六、过滤信息&#xff08;Filtering&#xff09; 七、状态码&#xff08;Status Co…...

提升大数据量分页查询性能:深分页优化全解

前言 在处理数据量逐渐增大的数据库表时&#xff0c;优化查询性能是一个常见的挑战。朋友们可能会建议说&#xff0c;创建索引不就能解决问题了吗&#xff1f;然而&#xff0c;当数据量达到相当规模时&#xff0c;简单的索引可能不足以应对所有情况。这时&#xff0c;可能会有…...

WPF 实现冒泡排序可视化

WPF 实现冒泡排序可视化 实现冒泡排序代码就不过多讲解&#xff0c;主要是实现动画效果思路&#xff0c;本demo使用MVVM模式编写&#xff0c;读者可自行参考部分核心代码&#xff0c;即可实现如视频所示效果。 对于新手了解算法相关知识应该有些许帮助&#xff0c;至于其它类型…...

Claude 3.5 新功能 支持对 100 页的PDF 图像、图表和图形进行可视化分析

Claude 3.5 Sonnet发布PDF图像预览新功能&#xff0c;允许用户分析长度不超过100页的PDF中的视觉内容。 此功能使用户能够轻松上传文档并提取信息&#xff0c;特别适用于包含图表、图形和其他视觉元素的研究论文和技术文档。 视觉PDF分析&#xff1a;用户现在可以从包含各种视觉…...

正式开源:从 Greenplum 到 Cloudberry 迁移工具 cbcopy 发布

Cloudberry Database 作为 Greenplum 衍生版本和首选开源替代&#xff0c;由 Greenplum 原始团队成员创建&#xff0c;与 Greenplum 保持原生兼容&#xff0c;并能实现无缝迁移&#xff0c;且具备更新的 PostgreSQL 内核和更丰富的功能。GitHub: https://github.com/cloudberry…...

Python如何读写文件?

1. 文件读取 &#xff08;1&#xff09;使用open()函数打开文件 基本语法是file_object open(file_name, mode)&#xff0c;其中file_name是要打开的文件的名称&#xff08;包括路径&#xff0c;如果文件不在当前目录下&#xff09;&#xff0c;mode是打开文件的模式。例如&a…...

100种算法【Python版】第38篇——Boyer-Moore算法

本文目录 1 算法说明2 算法示例3 python代码1 算法说明 Boyer-Moore算法由Robert S. Boyer和J. Strother Moore于1977年提出,旨在提高字符串匹配的效率。该算法在寻找固定模式的过程中,利用模式本身的信息,优化搜索过程,特别适合长文本中的模式查找。 算法原理 Boyer-Moo…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

BLEU评分:机器翻译质量评估的黄金标准

BLEU评分&#xff1a;机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域&#xff0c;衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标&#xff0c;自2002年由IBM的Kishore Papineni等人提出以来&#xff0c;…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...

CSS3相关知识点

CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...

【Ftrace 专栏】Ftrace 参考博文

ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...