Webserver
文章平均质量分 95
红茶川
联系方式648082567@qq.com
展开
-
C++ TinyWebServer项目总结(14. 多线程编程)
进程:进程是操作系统进行资源分配和调度的基本单位,是程序的一次执行过程。它是系统进行资源分配和调度的一个独立单位。每个进程都有自己的地址空间、内存、数据栈以及其他用于跟踪执行的辅助数据。线程:线程是进程中的实际运行单位,是进程中的一个单一顺序控制流,也被称为轻量级进程(LWP)。一个进程可以包含多个线程,所有线程共享进程的资源,如内存和文件描述符。线程是程序中完成一个独立任务的完整执行序列,即一个可调度的实体。根据运行环境和调度者的身份,线程可分为内核线程和用户线程。原创 2024-08-28 22:53:53 · 839 阅读 · 0 评论 -
C++ TinyWebServer项目总结(13. 多进程编程)
本章讨论Linux多进程编程的以下内容:复制进程映像的fork系统调用和替换进程映像的exec系列系统调用。僵尸进程以及如何避免僵尸进程。进程间通信(Inter Process Communication,IPC)最简单的方式:管道。三种System V进程间通信方式:信号量、消息队列、共享内存。它们是由AT&T System V2版本的UNIX引入的,所以统称为System V IPC。在进程间传递文件描述符的通用方法:通过UNIX本地域socket传递特殊的辅助数据。(关于辅助数据原创 2024-08-28 19:32:42 · 1154 阅读 · 0 评论 -
C++ TinyWebServer项目总结(12. 高性能I/O框架库Libevent)
I/O框架库以库函数的形式,封装了较为底层的系统调用,给应用程序提供了一组更便于使用的接口。各种I/O框架库的实现基本原理相似,要么以Reactor模式实现,要么以Proactor模式实现,要么同时以这两种模式实现。例如,基于Reactor模式的I/O框架库包含以下组件:句柄(Handle)、事件多路分发器(EventDemultiplexer)、事件处理器(EventHandler)、具体的事件处理器(ConcreteEventHandler)、Reactor。原创 2024-08-27 20:39:31 · 953 阅读 · 1 评论 -
C++ TinyWebServer项目总结(11. 定时器)
网络程序需要处理定时事件,如定期检测一个客户连接的活动状态。服务器程序通常管理着众多定时事件,有效地组织这些定时事件,使其在预期的时间被触发且不影响服务器的主要逻辑,对于服务器的性能有至关重要的影响。为此,我们要将每个定时事件分别封装成定时器,并使用某种容器类数据结构,如链表、排序链表、时间轮,将所有定时器串联起来,以实现对定时事件的统一管理。本章主要讨论两种高效的管理定时器的容器:时间轮和时间堆。原创 2024-08-27 14:23:04 · 766 阅读 · 0 评论 -
C++ TinyWebServer项目总结(10. 信号)
信号是由用户、系统、进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。Linux信号可由以下条件产生:对于前台进程,用户可通过输入特殊终端字符来给它发送信号,如输入Ctrl+C通常会给进程发送一个中断信号。系统异常。如浮点异常或非法内存段访问。系统状态变化。如alarm定时器到期将引起SIGALRM信号。运行kill命令或调用kill函数。服务器程序必须处理(或至少忽略)一些常见信号,以免异常终止。原创 2024-08-24 18:31:51 · 1046 阅读 · 0 评论 -
C++ TinyWebServer项目总结(9. I/O 复用)
I/O 复用使得程序能够同时监听多个文件描述符,从而提高程序的性能。I/O 复用本身是阻塞的。Linux 下实现 I/O 复用的系统调用主要有selectpoll和epoll。原创 2024-08-23 21:10:48 · 1123 阅读 · 0 评论 -
C++ TinyWebServer项目总结(7. Linux服务器程序规范)
UID:标识用户身份,决定用户本身的所有权限。EUID:用于实际判断用户的权限,可能与 UID 不同。GID:标识用户所属的组,决定用户组的权限。EGID:用于实际判断用户的组权限,可能与 GID 不同。在权限管理中,UID 和 GID 决定了用户和组的基本身份和权限,而 EUID 和 EGID 决定了用户在特定情境下(如执行带有setuid或setgid标志的程序时)所拥有的实际权限。这些标识符是 UNIX 权限模型的重要组成部分,用于确保系统资源的安全访问和管理。原创 2024-08-20 16:47:45 · 1063 阅读 · 0 评论 -
C++ TinyWebServer项目总结(8. 高性能服务器程序框架)
一书中,把这一章节作为全书的核心,同时作为后续章节的总览。这也意味着我们在经历了前置知识的学习后,正式进入了 Web 服务器项目的核心部分!TCP 三次握手、四次挥手,流量控制、拥塞控制等。socket 的创建、绑定、监听、连接等。文件描述符、管道、readvwritev函数等。进程 PID,用户 UID,组 GID,会话 ID 等。原创 2024-08-21 17:22:30 · 1177 阅读 · 0 评论 -
C++ TinyWebServer项目总结(6. 高级 I/O 函数)
char a[3];是一个存储字符的数组。char* a[3];是一个存储字符指针的数组,通常用于存储字符串的指针。原创 2024-08-19 22:55:45 · 1007 阅读 · 0 评论 -
C++ TinyWebServer项目总结(5. Linux网络编程基础API)
还是给我的语雀文档打个广告:我的文章都是先在语雀里记录的,然后再同步发送到CSDN上,有些格式问题实在是懒得改了,可能会导致大家看的不舒服,建议有需要的大家可以看看我的原文:语雀。原创 2024-08-16 20:31:03 · 986 阅读 · 0 评论 -
C++ TinyWebServer项目总结(4. 访问一个网页的全过程)
整个访问过程中的交互细节是什么?浏览器首先检查本地缓存是否已经存储了这个 URL 对应的 IP 地址。如果没有缓存或缓存过期,浏览器将发起一个 DNS(域名系统)查询,以将域名()转换为服务器的 IP 地址。这通常涉及向本地 DNS 服务器或更高级别的 DNS 服务器查询。(本地域名服务器、根域名服务器、顶级域名服务器、权限域名服务器),查询方式主要是递归和迭代相结合的方式。客户端浏览器收到解析结果后,会将其域名以及对应的IP地址缓存到DNS缓存和hosts文件中。原创 2024-08-16 13:24:17 · 826 阅读 · 0 评论 -
C++ TinyWebServer项目总结(3. TCP协议)
TCP协议介绍。原创 2024-08-16 13:12:10 · 1359 阅读 · 0 评论 -
C++ TinyWebServer项目总结(2. IP协议)
IP协议介绍原创 2024-08-16 13:08:22 · 838 阅读 · 0 评论 -
C++ TinyWebServer项目总结(1. 配置安装)
项目TinyWebserver个人学习总结。原创 2024-08-16 12:58:50 · 593 阅读 · 0 评论