随笔分类 -  web服务器

摘要:ANSI C标准中有几个标准预定义宏(也是常用的): LINE:在源代码中插入当前源代码行号; FILE:在源文件中插入当前源文件名; DATE:在源文件中插入当前的编译日期 TIME:在源文件中插入当前编译时间; STDC:当要求程序严格遵循ANSI C标准时该标识被赋值为1; __cpluspl 阅读全文
posted @ 2024-04-07 17:31 guanyubo 阅读(193) 评论(0) 推荐(0) 编辑
摘要:对于select和poll来说,所有文件描述符都是在用户态被加入其文件描述符集合的,每次调用都需要将整个集合拷贝到内核态;epoll则将整个文件描述符集合维护在内核态,每次添加文件描述符的时候都需要执行一个系统调用。系统调用的开销是很大的,而且在有很多短期活跃连接的情况下,由于这些大量的系统调用开销 阅读全文
posted @ 2024-04-01 20:58 guanyubo 阅读(9) 评论(0) 推荐(0) 编辑
摘要:目录概述常用函数示例示例代码使用场景说明 概述 io_uring 是 Linux 内核中实现的一个高效异步 I/O 框架,其实现原理基于事件驱动和用户空间与内核空间之间的高效数据交换。以下是 io_uring 实现原理的简要概述: 数据结构: io_uring 主要由两个环形缓冲区(rings)构成 阅读全文
posted @ 2024-03-29 19:08 guanyubo 阅读(376) 评论(0) 推荐(0) 编辑
摘要:目录HTTP工作原理 HTTP工作原理 浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址: 当用户在浏览器地址栏输入一个URL(如www.example.com)并按下回车时,浏览器首先需要知道这个域名对应的IP地址是什么。 浏览器会检查其本地缓存(如hosts文件或之前的DNS查询缓存 阅读全文
posted @ 2024-03-28 21:18 guanyubo 阅读(48) 评论(0) 推荐(0) 编辑
摘要:目录在服务器安装nginx修改配置文件后重载nginx编辑文件添加转发重载nginx 方法:nginx根据访问域名代理转发 在服务器安装nginx sudo yum install -y nginx 修改配置文件后重载nginx vim /etc/nginx/nginx.conf 编辑文件添加转发 阅读全文
posted @ 2024-03-22 17:26 guanyubo 阅读(95) 评论(0) 推荐(0) 编辑
摘要:目录文件系统的IO操作一、阻塞I/O(BIO)二、非阻塞I/O(NIO)三、信号驱动I/O四、异步IO五、I/O多路复用 文件系统的IO操作 在Linux中,以及大多数现代操作系统中,文件系统的IO操作通常是通过缓存IO来完成的。这种设计主要是为了提高IO性能,减少直接对磁盘的访问次数,并通过页缓存 阅读全文
posted @ 2024-03-05 10:08 guanyubo 阅读(45) 评论(0) 推荐(0) 编辑
摘要:目录selectpollepollepoll中的阻塞和非阻塞行为的设定时机epoll可读和可写是什么意思用户程序和内核程序的视角优质文章 select select() 是 Unix/Linux 系统中的一个系统调用,用于监视多个文件描述符的状态变化,从而得知哪些文件描述符是可读、可写或有异常待处理 阅读全文
posted @ 2024-03-04 21:21 guanyubo 阅读(32) 评论(0) 推荐(0) 编辑
摘要:目录数据库连接池SqlConnPool 类SqlConnRAII 类 数据库连接池 数据库连接池(Database Connection Pool)是一种用于管理和共享数据库连接的技术,旨在解决应用程序在高并发场景下频繁创建和销毁数据库连接所带来的性能问题和资源浪费。当应用程序启动或初始化时,数据库 阅读全文
posted @ 2024-03-04 10:22 guanyubo 阅读(215) 评论(2) 推荐(0) 编辑
摘要:目录类结构概述主要特性总结 Log 类是一个用于日志记录的C++类,其设计具有以下特点和功能: 类结构概述 类成员变量: path_: 日志文件存储路径。 suffix_: 日志文件后缀名。 MAX_LINES_: 每个日志文件允许的最大行数。 lineCount_: 当前日志文件已写的行数。 to 阅读全文
posted @ 2024-03-03 20:37 guanyubo 阅读(145) 评论(0) 推荐(0) 编辑
摘要:目录简介头文件和命名空间类型别名TimerNode 结构体HeapTimer 类使用方式注意事项 简介 定义了一个基于最小堆(Min Heap)的定时器类HeapTimer,用于管理一组定时任务。每个定时任务都包含一个ID、一个超时时间戳和一个回调函数。当达到定时任务的超时时间时,相应的回调函数会被 阅读全文
posted @ 2024-03-02 10:42 guanyubo 阅读(259) 评论(0) 推荐(0) 编辑
摘要:目录缓冲区的自动增长的实现原理分散读示例 缓冲区的自动增长的实现原理 web服务器之缓冲区的自动增长的实现原理 socket通信中的分散读和集中写 分散读示例 在Linux下,readv系统调用可以实现分散读(scattered read),即从一个文件描述符中读取数据到多个缓冲区中。下面是一个使用 阅读全文
posted @ 2024-02-29 17:22 guanyubo 阅读(114) 评论(0) 推荐(0) 编辑
摘要:目录Reactor和Proactor的区别介绍一下多线程的Reactor高并发模型介绍一下I/O处理单元和逻辑单元介绍一下基于epoll的边缘触发ET模式介绍一下EPOLLONESHOT Reactor和Proactor的区别 Reactor和Proactor都是处理并发编程中的I/O多路复用问题的 阅读全文
posted @ 2024-02-29 15:27 guanyubo 阅读(34) 评论(0) 推荐(0) 编辑
摘要:目录HTTP请求报文结构简单的状态机示例状态转移过程 HTTP请求报文结构 要使用正则和状态机来解析HTTP请求报文,首先需要理解HTTP请求报文的基本结构。一个典型的HTTP请求报文如下: GET /index.html HTTP/1.1 Host: www.example.com User-Ag 阅读全文
posted @ 2024-02-26 14:43 guanyubo 阅读(448) 评论(0) 推荐(0) 编辑
摘要:Reactor模型是一种常见的高并发设计模式,特别是在网络编程中。在Reactor模型中,一个或多个输入同时传递给一个或多个服务处理程序。服务处理程序对输入进行处理,然后将结果传递给相应的输出处理程序。 关于socket可写的几种表述 在Reactor模式中,Socket可写通常指的是Socket的 阅读全文
posted @ 2024-02-26 14:33 guanyubo 阅读(725) 评论(0) 推荐(0) 编辑
摘要:利用IO复用技术Epoll与线程池实现多线程的Reactor高并发模型 利用正则与状态机解析HTTP请求报文,实现处理静态资源的请求 利用标准库容器封装char,实现自动增长的缓冲区 基于小根堆实现的定时器,关闭超时的非活动连接 利用单例模式与阻塞队列实现异步的日志系统,记录服务器运行状态 利用RA 阅读全文
posted @ 2024-02-26 14:27 guanyubo 阅读(33) 评论(0) 推荐(0) 编辑
摘要:目录Reactor模型Proactor模型总结实际应用优缺点示例 Reactor 模型和 Proactor 模型都是用于处理异步 I/O 操作的并发模型,它们在设计和实现上有一些区别。 Reactor模型 Reactor 模型(反应器模型)是一种基于事件驱动的并发模型,主要用于处理网络通信等 I/O 阅读全文
posted @ 2024-01-26 22:13 guanyubo 阅读(431) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示