当前位置: 首页 > news >正文

jinsom wordpressseo关键词排名教程

jinsom wordpress,seo关键词排名教程,什么值得买网站模版,厂房出租做推广什么网站好一.四种模型 阻塞式IO#xff0c;非阻塞式IO#xff0c;信号驱动IO#xff0c;IO多路复用 二.阻塞式IO 特点#xff1a;最简单#xff0c;最常用#xff0c;效率低 阻塞I/O 模式是最普遍使用的I/O 模式 系统默认状态#xff0c;套接字建立后所处于的模式就是阻塞I/O 模式… 一.四种模型 阻塞式IO非阻塞式IO信号驱动IOIO多路复用 二.阻塞式IO 特点最简单最常用效率低 阻塞I/O 模式是最普遍使用的I/O 模式   系统默认状态套接字建立后所处于的模式就是阻塞I/O 模式。   目前学习的读写函数中会发生阻塞相关函数如下  ·      read、recv、recvfrom          读阻塞--》需要读缓冲区中有数据可读读阻塞才会解除  ·      write, send           写阻塞--》阻塞就是写入数据时遇到缓冲区满了的情况需要等待缓冲区有空间后才能继续写入, 所以写阻塞发生的情况比较少.  ·      accept    connect 需要注意的是使用UDP时UDP没有发送缓存区 ,则sendto没有阻塞  1UDP通信无连接且无发送缓冲区(不怕粘包)即sendto在UDP中没有发送缓冲区。  2UDP不用等待确认没有实际的发送缓冲区所以UDP协议中不存在缓冲区满的情况在UDP套接字上进行写操作永远不会阻塞。 UDP与TCP缓存区  UDP是一种无连接的传输协议它不保证数据的可靠性和顺序性, 所以不需要考虑连接和缓存而是将数据尽快发送出去不关心数据是否到达目标主机或者是否按照发送顺序到达. 但是UDP有接受缓存区, 因为数据发送过快, 如果接收缓存区内数据已满, 则继续发送数据, 可能会出现丢包。 TCP是一种面向连接的传输协议有发送缓存区和接收缓存区 如果发送频率过快 且内容小于发送缓存区的大小  可能会导致多个数据的粘包。如果发送的数据大于发送缓存区的剩余大小send将会阻塞,  在阻塞期间send函数会自动拆分数据包发送直到所有数据都被发送完毕或者发送缓冲区的空间不足以继续发送为止, 这就是拆包。 UDP不会造成粘包和拆包,  TCP不会造成丢包 UDP_数据报:  本质是独立的包, 有边界; TCP_流,:本质是字节流形式, 一帧一帧发送,且每一帧没有边界,一帧丢失会重新补发; 三.阻塞式IO 特点可以处理多路IO需要轮询大量浪费CPU资源 当一个应用程序使用了非阻塞模式的套接字则它需要使用一个循环来不停的测试是否一个文件描述符有数据可读。应用程序不停的测试会占用大量的cpu资源 ,所以说一般不适用 将recv设置为非阻塞时, recv在接收缓存区内, 未拿到客户端发送来的数据, 那么recv就会报错 , 所以会一直打印 recv is err: 资源不可用 fcntl设置文件描述符的属性 声明: int fcntl (int fd, int cmd, ...arg); 头文件: #includefcntl.h      #includeunistd.h 功能设置文件描述符的属性 参数fd文件描述符          cmd: 操作功能选项 (可以定义个变量,通过vi -t F_GETFL 来找寻功能赋值 )           F_GETFL:获取文件描述符的原有的状态信息            //不需要第三个参数返回值为获取到的属性           F_SETFL:设置文件描述符的状态信息 - 需要填充第三个参数           //需要填充第三个参数  O_RDONLY, O_RDWR ,O_WRONLY ,O_CREAT                   O_NONBLOCK 非阻塞   O_APPEND追加                   O_ASYNC 异步        O_SYNC  同步            F_SETOWN:    可以用于实现异步通知机制。         //当文件描述符上发生特定事件时例如输入数据到达内核会向拥有该  文件描述符 的进程发送 SIGIO 信号异步以便进程能够及时处理这些事件。         arg:文件描述符的属性      --------------------同上参数 返回值: 特殊选择:根据功能选择返回 (int 类型)             其他:  成功   失败: -1; 改变步骤 1.获取该文件描述符0 (标准输入) 的原属性  标准输入原本具有阻塞的功能   int flag  fcntl(0, F_GETFL); //获取文件描述符原有信息后保存在flag变量内 2.修改对应的位nonblock(非阻塞) int flag | O_NONBLOCK;  3. 将修改好的属性写回去 (0 标准输入 -- 阻塞  改为  非阻塞) fcntl (0, F_SETFL, flag); //文件描述符   设置状态  添加的新属性 #include unistd.h #include stdio.h #include fcntl.hint main(int argc, char const *argv[]) {char buf[64] {0};while (1){int flag fcntl(0, F_GETFL); flag | O_NONBLOCK;fcntl(0, F_SETFL, flag);fgets(buf, sizeof(buf), stdin);sleep(1);printf(buf: %s\n,buf);}return 0; }四.信号驱动IO 特点异步通知模式需要底层驱动支持 异步通知异步通知是一种非阻塞的通知机制发送方发送通知后不需要等待接收方的响应或确认。通知发送后发送方可以继续执行其他操作而无需等待接收方处理通知。 1. 通过信号方式当内核检测到设备数据后会主动给应用发送信号SIGIO。 2. 应用程序收到信号后做异步处理即可。 3. 应用程序需要把自己的进程号告诉内核并打开异步通知机制。 步骤 1.设置将文件描述符和进程号提交给内核驱动一旦fd有事件响应, 则内核驱动会给进程号发送一个SIGIO的信号      fcntl(fd,F_SETOWN,getpid()); 2.设置异步通知     int flags;     flags  fcntl(fd, F_GETFL); //获取原属性     flags | O_ASYNC;       //给flags设置异步   O_ASUNC 通知     fcntl(fd, F_SETFL, flags);  //修改的属性设置进去,此时fd属于异步 3.signal捕捉SIGIO信号 --- SIGIO:内核通知会进程有新的IO信号可用一旦内核给进程发送sigio信号则执行handler     signal(SIGIO,handler); #include stdio.h #include signal.h #include fcntl.h #include sys/types.h #include unistd.hint fd; void handler(int set) {char buf[128] {0};int len read(fd, buf, sizeof(buf));buf[len] \0;printf(%s\n, buf); } int main(int argc, char const *argv[]) {fd open(/dev/input/mouse0, O_RDONLY);if (fd 0){perror(open err);return -1;}fcntl(fd, F_SETOWN, getpid());int flags fcntl(fd, F_GETFL);flags | O_ASYNC;fcntl(fd, F_SETFL, flags);signal(SIGIO, handler);char buf[128] {0};while (1){fgets(buf, sizeof(buf), stdin);printf(%s, buf);}return 0; }signal信号处理相关函数 头文件 #include signal.h         typedef void (*sighandler_t)(int);         sighandler_t   signal(int signum, sighandler_t handler) 功能信号处理函数(注册信号) 参数 int signum要处理的信号(要修改的信号)            sighandler_t handler: 函数指针 void(*handler)(int) (修改的功能)            handler------void handler(int num) 自定义的信号处理函数指针 返回值 成功设置之前的信号处理方式 失败   SIG_ERR 五.IO多路复用 帮助TCP实现并发服务器 特点 进程中若需要同时处理多路输入输出 ,在使用单进程和单线程的情况下, 可使用IO多路复用处理多个请求;IO多路复用不需要创建新的进程和线程, 有效减少了系统的资源开销。 就比如服务员给50个顾客点餐分两步        顾客思考要吃什么等待客户端数据发送        顾客想好了开始点餐接收客户端数据 要提高效率有几种方法   安排50个服务员   (类似于多进程/多线程实现服务器连接多个客户端,太占用资源)哪个顾客想好了吃啥, 那个顾客来柜台点菜 (类似IO多路复用机制实现并发服务器) 实现IO多路复用的方式  select   poll   epoll 六.Linux四种IO模型对比 linux下的四种IO模型假设 假设妈妈有一个孩子孩子在房间里睡觉妈妈需要及时获知孩子是否醒了如何做   阻塞式IO:    进到房间陪孩子一起睡觉孩子醒了吵醒妈妈,不累,但是不能干别的了   非阻塞式IO: 时不时进房间看一下简单空闲时间还能干点别的但是很累   信号驱动IO:  妈妈在客厅干活小孩醒了他会自己走出房门告诉妈妈互不耽误 假设妈妈有三个孩子 分别在不同房间睡觉 需要及时检测每个房间信息 如何做    阻塞式IO  阻塞处理多条路 得不到该目的    非阻塞IO  一直轮询 大量占用CPU;    多线程多进程 或IO多路复用 可以做到
http://www.zqtcl.cn/news/800500/

相关文章:

  • 沈阳软件公司 网站制作wordpress未验证邮箱用户
  • 做动画上传网站赚钱么杭州市网站建设公司
  • 网站建设注意细节问题微信二维码
  • 凡科做的网站提示证书错误网络营销渠道可分为哪几种
  • 南京手机网站制作公司免费设计房屋效果图软件有哪些
  • 定制类网站怎么样做网页设计
  • 企业门户网站建设优势网站登录模版
  • 六盘水建设网站徐州建站平台
  • 昆明有多少做网站的公司公司软文代写
  • 东莞模板网站做一个电子商务网站在哪里做
  • 给别人网站做跳转株洲专业网站排名优化
  • 国外网站空间租用费用网站前端设计图
  • 宜州做网站点点网 xml转wordpress
  • 太原建站方法erp系统好上手吗
  • 网站建设如何实现检索功能河南城乡建设网站
  • 江苏做电缆桥架的公司网站购物网站答辩ppt怎么做
  • 惠州网站建设系统公司公司网站建设公司
  • 做酒类直供网站行吗石家庄桥西网站制作公司
  • 电子商务门户网站的研究与实现漳州做网站多少钱
  • 咖啡网站源码呼和浩特网站建设价位
  • 邯郸哪儿能做网站广州冼村房价多少钱
  • 网站建设开发成本设计素材库
  • wordpress获取站点链接wordpress 滑动验证
  • 怎么把网站上的通栏手机公司网站建设
  • 微山县建设局官方网站wordpress 内容换行
  • 网站选择空间ps个人主页设计
  • 河北网站seo外包网站嵌入百度地图
  • 公司怎么开网站WordPress有哪些工具
  • 一流专业建设网站原平新闻头条最新消息
  • 网站开发文档模板 开源北京保障房建设项目网站