
Linux
文章平均质量分 66
Sakura_Lu2
这个作者很懒,什么都没留下…
展开
-
Linux学习笔记1
要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。第 2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。其中,第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。原创 2023-06-04 22:44:42 · 57 阅读 · 0 评论 -
基于C++的Linux高性能服务器6
看起来相当的恐怖,采用了模板和大量的c++新特性,returnType为返回值类型,task是一个指向bind绑定的函数对象的返回值类型的指针,packaged_task用于封装bind的绑定对象,并能将其返回值传递给future对象,供后面res的get_future()调用。这次新增了很多东西,首先是Buffer类,用来处理接收或者要发送的信息,不再像以前一样收到一次发一次,而是把收到或者要发送的消息汇总起来,等到输入结束的时候在一起发送,其实用起来跟之前也什么区别,但是封装之后使用更方便一点。原创 2023-05-31 23:12:39 · 168 阅读 · 1 评论 -
基于C++的Linux高性能服务器5
然后传参loop,new一个Server对象,在Server的构造函数内new一个Acceptor对象,也就是上文提到的专门用来处理连接的对象,Acceptor构造函数创建一个Socket对象,该对象用于创建socket,并初始化一个Channel对象,Channel对象是用于对不同的文件描述符做不同处理的对象,通过绑定Eventloop对象(也就是Epoll对象)和一个文件描述符来做不同的处理。通过poll函数获取到活动的Channel对象,并调用之前绑定的回调函数进行事务处理。原创 2023-05-31 23:10:38 · 270 阅读 · 1 评论 -
基于C++的Linux高性能服务器4
经过一段时间的学习我们可以知道如果要服务器同时为多个客户端服务,最直接的方式就是为每一条连接创建线程\进程,处理完事件就可以销毁该线程,但不停创建和销毁会带来大量的性能开销,解决办法就是IO多路复用,该技术可以通过系统函数来监听我们关心的连接,在之前的博客中也提到过,selcet、poll、epoll都是Linux提供的现成的IO多路复用系统,区别就是select和poll都是基于轮询,同样会造成效率问题。将数据从内核空间拷贝到用户空间,这个拷贝过程同样是异步的,内核自动完成的,和前面的同步操作不一样,原创 2023-05-31 22:50:00 · 289 阅读 · 1 评论 -
基于C++的Linux高性能服务器3
该函数通过epoll_wait等待io事件发生,如果发生比如客户端连接或者读事件时则唤醒该函数,并返回事件数量,上文说到epoll里data结构里可以储存一个void*指针,如果要使用的话需要转换,说实话auto确实省事很多,可以不用过多纠结类型问题,但不能产生太大依赖。这次新增了一个Channel类,该类与一个文件描述符相关,不同的Channel负责不同的文件描述符,可以对不同的服务或者不同的事件类型做出不同的处理。使用的话,也是用智能指针来管理,然后设置监听读事件,当然也可以设置监听其他事件。原创 2023-05-31 22:47:17 · 203 阅读 · 1 评论 -
基于C++的Linux高性能服务器2
IO多路复用的基本思想是事件驱动,服务器同时保持多个客户端IO连接,当这个IO上有可读或可写事件发生时,表示这个IO对应的客户端在请求服务器的某项服务,此时服务器响应该服务。已知智能指针会自动销毁自己,如果在这里使用智能指针,那么服务器和客户端会进入一种奇怪的状态,表现为客户端能向服务器写信息,但是服务器接收不到,同理如果在创建该指针的if里最后delete指针,也会导致连接异常,可能该指针有一些特殊的用途,这里也无法解答,所以只能先放着。epoll_wait:等待其管理的连接上的 IO 事件。原创 2023-05-31 22:28:08 · 272 阅读 · 0 评论 -
基于C++的Linux高性能服务器1
在Linux系统中一切皆文件,统一用文件描述符来代表一个文件,而socket也不例外,也是用文件来表示的,windows下也有相似的概念,叫句柄,通过句柄也可以操作对应的文件或者进程。谈到网络编程肯定离不开套接字(socket),套接字是网络中不同主机的应用进程之间进行双向通信的端口,通俗点来讲就是两个房子之间的门,通过这个门可以进出(收发消息),进行通信。开个新坑,基于C++的Linux高性能服务器,跟着教程来的,有些地方能用模板或者啥优化之类的也会试着用一用。原创 2023-05-31 22:28:52 · 205 阅读 · 1 评论