当前位置: 首页 > 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…...

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

如何更改默认 Crontab 编辑器 ?

在 Linux 领域中&#xff0c;crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用&#xff0c;用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益&#xff0c;允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道

文/法律实务观察组 在债务重组领域&#xff0c;专业机构的核心价值不仅在于减轻债务数字&#xff0c;更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明&#xff0c;合法债务优化需同步实现三重平衡&#xff1a; 法律刚性&#xff08;债…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...