
Linux 高并发服务器
Linux网络编程,I/O模式,事件驱动反应堆
郭柒
这个作者很懒,什么都没留下…
展开
-
shell 学习 if /while / for 语法格式
语法特点总结在大多数情况不需要 ;结尾shell脚本编程的空格非常重要,这和Linux的语法也有一定的关系。if 语句示例:if 判断目录、文件#/bin/bash#auto testfile#by authors guoqi 2020DIR=/tmp/20200714if [ ! -d $DIR ];then mkdir -p $DIR echo"this $DIR creat success!"else echo -e "\033原创 2020-08-14 11:27:37 · 347 阅读 · 0 评论 -
Linux 条件变量,互斥量详解
C++ 解决线程同步的问题主要通过 互斥锁 mutex 与 条件变量 condition_varible 来完成。Linux 封装的多线程库中封装了一系列的函数用于互斥和条件变量。互斥量:mutexLinux 主要函数:pthread_mutex_t ;本质上是一个结构体类型的变量。pthread_mutex_t mutex; mutex 只有两种取值 0 、 1;常用函数:#include<pthread.h>pthread_mutex_init(pthread_mutex_原创 2020-07-27 15:26:00 · 656 阅读 · 0 评论 -
GuoQi_HttpServe 设计问题笔记
too many open files原创 2020-07-22 11:17:09 · 632 阅读 · 0 评论 -
Linux Http服务器 epoll + threadpool 实现
Http服务器中包含了http协议、TCP/IP协议,同时该项目又包含了I/O复用技术、多进程多线程、线程池管理以及Linux gdb多线程多进程调试等一系列基本操作,所以通过该项目可以把以上的技术点一一掌握,博主也是本着这样的初心来进行本 HttpServe 的开发设计。首先,亮出 github地址:https://github.com/GUOQIFU/GuoQi_HttpServe 传送门首先,分为三大部分:1. Http 报文解析 2. epoll反应堆 3.线程池的设计1. Http 报文解析原创 2020-07-13 19:47:25 · 1855 阅读 · 0 评论 -
服务器开发之 Nginx 学习笔记
1.Nginx简介Nginx 是一个高性能的HTTP和反向代理服务器,特点是占内存少,并发能力强。Nginx转为性能优化而开发,性能是器最重要的考量,实现上非常注重效率,能经受住高负载的考验,有报告表明能支持的高达50000个并发连接数。百度,腾讯,网易,淘宝等都在使用Nginx.2.反向代理将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器的地址,隐藏了真实服务器的地址。3.负载均衡将原来原创 2020-06-30 19:13:47 · 720 阅读 · 1 评论 -
tiinyhttp思路解析
1.main 函数准备 socket创建,bind绑定,listen监听,accept等待接收过程。2.创建线程处理http请求报文3.字符串处理,http协议的格式,按照每个字段的含义提取相应的方法,URL等信息出来。4.判断请求,静态页面请求还是动态请求,判断是否执行CGI程序5.CGI程序,父子进程之间创建管道进行通信,最后又父进程将CGI程序的结果发送给客户端,至此,最复杂的一种请求情况结束。6.以下为完整流程图,字有点小,请放大细看。...原创 2020-06-24 15:59:00 · 631 阅读 · 0 评论 -
I/O 模式 + Reactor/Proactor笔记
1.同步、非同步 、阻塞、非阻塞 I/O 模式的操作理解同步、异步:主要针对的对象是进程与内核之间的交互过程。同步在进程触发I/O操作的时候,会主动以等待或者轮询的方式去查看内核中的I/O操作是否就绪。异步就是进程触发I/O操作之后就不管这个操作了,可以去干其他的事,反而内核完成这个I/O操作之后,内核会给异步进程一个I/O完成的通知。异步主要特点就是会得到一个通知。阻塞、非阻塞:主要针对的对象是进程访问数据的过程。当I/O操作就绪之后,阻塞方式下的读取或者写入函数会抑制等待数据缓冲区中的数据状态(有数原创 2020-06-07 19:57:16 · 2293 阅读 · 1 评论 -
Linux epoll两种触发模式——LT/ET
epoll 两种触发模式epoll有两种触发模式,分别为LT水平触发,ET边沿触发。 event.events = EPOLLIN | EPOLLET;//ET 边沿触发模式 event.events = EPOLLIN; //默认 LT触发模式 epoll的两种触发模式会在epoll_wait()函数处对读取缓冲区有不用的处理方式。1.LT水平触发(默认):当缓存区...原创 2020-04-16 20:33:35 · 4073 阅读 · 0 评论 -
Linux 高并发服务器—— epoll 实现
1.epoll 原理epoll 相对于select和poll来说,没有描述符限制,所以在高并发处理当中是真正意义上的高并发。select和poll采用的是轮询的方式监听事件以及文件描述符,为了避免因为访问量过大导致轮询机制的低效率,设定了1024的描述符监听上限。epoll采用的是客户端注册、事件监听分别独立的管理方式,分别用了一颗存储监听文件描述符的红黑树和一个存储相关读、写、异常等事件的链表...原创 2020-04-16 14:44:06 · 3610 阅读 · 0 评论 -
Linux 高并发服务器 select/poll实现
1.select实现相对于#include <sys/socket.h>#include<arpa/inet.h>#include<ctype.h>#include<unistd.h>#include<stdio.h>#include<sys/types.h>#include<strings.h>...原创 2020-04-08 19:49:40 · 2777 阅读 · 0 评论 -
Linux网络编程--错误处理函数
错误处理函数在网络编程中,一些函数的属于慢速调用,对其作异常处理的时候需要避免其在正常进程阻塞的过程中被异常处理,需要对其作一些相关的信号判断。1.int Accept(int fd,struct sockaddr *sock,socklen_t *sock_len)accept 是慢速调用处理函数,在错误管理中,在通信阻塞期间可能会存在异常断开,所以需要另外的处理。int Accept(...原创 2020-04-04 16:14:22 · 1409 阅读 · 0 评论 -
Linux 高并发服务器--fork/pthread实现
1.多进程并发服务器子进程来源于父进程,通俗的来讲,它是父进程的一个复制品。子进程完全复制了父进程的资源,包括进程上下文、内存信息、工作目录等信息。同时操作系统也会给子进程分配内存空间和调度资源。父进程和子进程的区分主要是靠fork()函数的返回值来进行。1.return 0 ;成功创建子进程,进入到子进程中相关操作2.return-1;创建子进程失败3.return (子进程...原创 2020-04-04 23:43:22 · 1762 阅读 · 0 评论