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

做哪些网站流量最大最有创意的logo设计

做哪些网站流量最大,最有创意的logo设计,湖州seo排名,先做网站还是app目录 一、同步IO和异步IO 二、五种网络IO模式 1、阻塞IO 2、非阻塞IO 3、IO多路复用 3.1、SELECT 3.2、POLL 3.3、EPOLL 一、同步IO和异步IO 场景1#xff1a; 小明去打开水#xff0c;而开水塔此时没有水#xff0c;小明在现场一直等待开水到来#xff0c;或者不断…目录 一、同步IO和异步IO 二、五种网络IO模式 1、阻塞IO 2、非阻塞IO 3、IO多路复用 3.1、SELECT 3.2、POLL 3.3、EPOLL 一、同步IO和异步IO 场景1 小明去打开水而开水塔此时没有水小明在现场一直等待开水到来或者不断的轮询查看是否有开水直到有开水取到水为止这是同步IO的一种案例 同步IO的特点 同步IO指的是用户进程触发I/O操作并等待或者轮询的去查看I/O操作是否就绪。 同步IO的执行者是IO操作的发起者。 同步IO需要发起者进行内核态到用户态的数据拷贝过程所以这里必须阻塞 场景2 小明去打开水而开水塔此时没有水开水塔的阿姨叫小明把水壶放到现场来水后会帮他打好水并打电话叫他来取这是异步IO的一种案例 异步IO的特点 异步IO是指用户进程触发I/O操作以后就立即返回继续开始做自己的事情而当I/O操作已经完成的时候会得到I/O完成的通知。 异步IO的执行者是内核线程内核线程将数据从内核态拷贝到用户态所以这里没有阻塞 二、五种网络IO模式 对于一次IO访问以read为例数据会先被拷贝到操作系统内核的缓冲区中然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说当一个read操作发生时会经历两个阶段1、等待数据准备 2、将数据从内核拷贝到进程中linux系统产生了下面五种网络模式的方案1、阻塞IOblocking IO2、非阻塞IOnonblocking IO3、IO多路复用IO multiplexing4、信号驱动IOsignal driven IO不常用 5、异步IO asynchronous IO1、阻塞IO 小明同学急用开水打开水时发现开水龙头没水他一直等待直到装满水然后离开。这一过程就可以看成是使用了阻塞IO模型因为如果水龙头没有水他也要等到有水并装满杯子才能离开去做别的事情。很显然这种IO模型是同步的。 在linux 中默认情况下所有的socket都是blocking IO, 一个典型的读操作流程 2、非阻塞IO 小明同学又一次急用开水打开水龙头后发现没有水因为还有其它急事他马上离开了过一会他又拿着杯子来看看……在中间离开的这些时间里小明同学离开了装水现场(回到用户进程空间)可以做他自己的事情。这就是非阻塞IO模型。但是它只有是检查无数据的时候是非阻塞的在数据到达的时候依然要等待复制数据到用户空间(等着水将水杯装满)因此它还是同步IO。 当用户线程发起一个read操作后并不需要等待而是马上就得到了一个结果。如果结果是一个error时它就知道数据还没有准备好于是它可以再次发送read操作。一旦内核中的数据准备好了并且又再次收到了用户线程的请求那么它马上就将数据拷贝到了用户线程然后返回。 所以事实上在非阻塞IO模型中用户线程需要不断地询问内核数据是否就绪也就说非阻塞IO不会交出CPU而会一直占用CPU。 典型的非阻塞IO模型一般如下 设置非阻塞常用方式 方式一: 创建socket 时指定 int s socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, IPPROTO_TCP);方式二: 在使用前通过如下方式设定 fcntl(sockfd, F_SETFL, fcntl(sockfd, F_GETFL, 0) | O_NONBLOCK); 3、IO多路复用 有一天学校里面优化了热水的供应增加了很多水龙头这个时候小明同学再去装水舍管阿姨告诉他这些水龙头都还没有水你可以去忙别的了等有水了告诉他。于是等啊等(select调用中)过了一会阿姨告诉他有水了。 这里有两种情况 情况1: 阿姨只告诉来水了但没有告诉小明是哪个水龙头来水了要自己一个一个去尝试。(select/poll 场景) 情况2: 舍管阿姨会告诉小明同学哪几个水龙头有水了小明同学不需要一个个打开看(epoll 场景)当用户进程调用了select那么整个进程就会被block而同时kernel会 “监视”所有select负责的socket当任何一个socket中的数据准备好了select就会返回。这个时候用户进程再调用read操作将数据从kernel拷贝到用户进程。 所以IO多路复用的特点是通过一种机制一个进程能同时等待多个文件描述符而这些文件描述符套接字描述符其中的任意一个进入就绪状态select()函数就可以返回。 这里需要使用两个system callselect 和 recvfrom而blocking IO只调用了一个system callrecvfrom。但是用select的优势在于它可以同时处理多个connection。 如果处理的连接数不是很高的话使用select/epoll的web server不一定比使用mutil-threading blocking IO的web server性能更好可能延迟还更大。select/epoll 的优势并不是对于单个连接能处理得更好而是在于能同时处理更多的连接。 3.1、SELECT 在一段指定的时间内监听用户感兴趣的文件描述符上可读、可写和异常等事件。 #include sys/select.h int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout); nfds 最大的文件描述符加1。 readfds 用于检查可读的。 writefds用于检查可写性。 exceptfds用于检查异常的数据。 timeout一个指向timeval结构的指针用于决定select等待I/o的最长时间。如果为空将一直等待。 timeval结构的定义 struct timeval{ long tv_sec; // seconds long tv_usec; // microseconds } 返回值 0 是已就绪的文件句柄的总数 0 超时, 0 表示出错错误: errno #include sys/select.h int FD_ZERO(fd_set *fdset); //一个 fd_set类型变量的所有位都设为 0 int FD_CLR(int fd, fd_set *fdset); //清除某个位时可以使用 int FD_SET(int fd, fd_set *fd_set); //设置变量的某个位置位 int FD_ISSET(int fd, fd_set *fdset); //测试某个位是否被置位 经典案例: 服务器端 server.c #include sys/types.h #include sys/socket.h #include stdio.h #include netinet/in.h #include sys/time.h #include sys/ioctl.h #include unistd.h #include stdlib.hint main() {int server_sockfd, client_sockfd;int server_len, client_len;struct sockaddr_in server_address;struct sockaddr_in client_address;int result;fd_set readfds, testfds;server_sockfd socket(AF_INET, SOCK_STREAM, 0);//建立服务器端socket server_address.sin_family AF_INET;server_address.sin_addr.s_addr htonl(INADDR_ANY);server_address.sin_port htons(9000);server_len sizeof(server_address);bind(server_sockfd, (struct sockaddr*)server_address, server_len);listen(server_sockfd, 5); //监听队列最多容纳5个 FD_ZERO(readfds);FD_SET(server_sockfd, readfds);//将服务器端socket加入到集合中while (1){char ch;int fd;int nread;testfds readfds;//将需要监视的描述符集copy到select查询队列中select会对其修改所以一定要分开使用变量 printf(server waiting\n);/*无限期阻塞并测试文件描述符变动 */result select(FD_SETSIZE, testfds, (fd_set*)0, (fd_set*)0, (struct timeval*)0); //FD_SETSIZE系统默认的最大文件描述符if (result 1){perror(server5);exit(1);}/*扫描所有的文件描述符*/for (fd 0; fd FD_SETSIZE; fd){/*找到相关文件描述符*/if (FD_ISSET(fd, testfds)){/*判断是否为服务器套接字是则表示为客户请求连接。*/if (fd server_sockfd){client_len sizeof(client_address);client_sockfd accept(server_sockfd,(struct sockaddr*)client_address, client_len);FD_SET(client_sockfd, readfds);//将客户端socket加入到集合中printf(adding client on fd %d\n, client_sockfd);}/*客户端socket中有数据请求时*/else{ioctl(fd, FIONREAD, nread);//取得数据量交给nread/*客户数据请求完毕关闭套接字从集合中清除相应描述符 */if (nread 0){close(fd);FD_CLR(fd, readfds); //去掉关闭的fdprintf(removing client on fd %d\n, fd);}/*处理客户数据请求*/else{read(fd, ch, 1);sleep(5);printf(serving client on fd %d\n, fd);ch;write(fd, ch, 1);}}}}}return 0; }服务器端 client.c #include sys/types.h #include sys/socket.h #include stdio.h #include netinet/in.h #include arpa/inet.h #include unistd.h #include stdlib.h #include sys/time.hint main() {int client_sockfd;int len;struct sockaddr_in address;//服务器端网络地址结构体 int result;char ch A;client_sockfd socket(AF_INET, SOCK_STREAM, 0);//建立客户端socket address.sin_family AF_INET;address.sin_addr.s_addr inet_addr(127.0.0.1);address.sin_port htons(9000);len sizeof(address);result connect(client_sockfd, (struct sockaddr*)address, len);if (result -1){perror(oops: client2);exit(1);}//第一次读写write(client_sockfd, ch, 1);read(client_sockfd, ch, 1);printf(the first time: char from server %c\n, ch);sleep(5);//第二次读写write(client_sockfd, ch, 1);read(client_sockfd, ch, 1);printf(the second time: char from server %c\n, ch);close(client_sockfd);return 0; }3.2、POLL 和select 一样如果没有事件发生则进入休眠状态如果在规定时间内有事件发生则返回成功规定时间过后仍然没有事件发生则返回失败。可见等待期间将进程休眠利用事件驱动来唤醒进程将更能提高CPU的效率。 poll 和select 区别 select 有文件句柄上线设置值为FD_SETSIZE 而poll 理论上没有限制!#include poll.hint poll(struct pollfd *fds, nfds_t nfds, int timeout);输入参数fds//可以传递多个结构体也就是说可以监测多个驱动设备所产生的事件只要有一个产生了请求事件就能立即返回struct pollfd {int fd; /*文件描述符 open打开的那个*/short events; /*请求的事件类型监视驱动文件的事件掩码*/ POLLIN | POLLOUTshort revents; /*驱动文件实际返回的事件*/}nfds: //监测驱动文件的个数timeout://超时时间单位是ms 事件类型events 可以为下列值POLLIN 有数据可读POLLRDNORM 有普通数据可读等效与POLLINPOLLPRI 有紧迫数据可读POLLOUT 写数据不会导致阻塞POLLER 指定的文件描述符发生错误POLLHUP 指定的文件描述符挂起事件POLLNVAL 无效的请求打不开指定的文件描述符 返回值有事件发生 返回revents域不为0的文件描述符个数超时return 0失败return -1 错误errno服务器端 server_poll.c #include string.h #include sys/types.h #include sys/socket.h #include stdio.h #include netinet/in.h #include sys/time.h #include sys/ioctl.h #include unistd.h #include stdlib.h #include poll.h#define MAX_FD 8192 struct pollfd fds[MAX_FD]; int cur_max_fd 0;int main() {int server_sockfd, client_sockfd;int server_len, client_len;struct sockaddr_in server_address;struct sockaddr_in client_address;int result;//fd_set readfds, testfds;server_sockfd socket(AF_INET, SOCK_STREAM, 0);//建立服务器端socketserver_address.sin_family AF_INET;server_address.sin_addr.s_addr htonl(INADDR_ANY);server_address.sin_port htons(9000);server_len sizeof(server_address);bind(server_sockfd, (struct sockaddr*)server_address, server_len);listen(server_sockfd, 5); //监听队列最多容纳5个//FD_ZERO(readfds);//FD_SET(server_sockfd, readfds);//将服务器端socket加入到集合中fds[server_sockfd].fd server_sockfd;fds[server_sockfd].events POLLIN;fds[server_sockfd].revents 0;if(cur_max_fd server_sockfd){cur_max_fd server_sockfd 1;}while (1){char ch;int i, fd;int nread;//testfds readfds;//将需要监视的描述符集copy到select查询队列中select会对其修改所以一定要分开使用变量printf(server waiting\n);/*无限期阻塞并测试文件描述符变动 */result poll(fds, cur_max_fd, 1000);//result select(FD_SETSIZE, testfds, (fd_set*)0, (fd_set*)0, (struct timeval*)0); //FD_SETSIZE系统默认的最大文件描述符if (result 0){perror(server5);exit(1);}/*扫描所有的文件描述符*/for (i 0; i cur_max_fd; i){/*找到相关文件描述符*/if (fds[i].revents){fd fds[i].fd;/*判断是否为服务器套接字是则表示为客户请求连接。*/if (fd server_sockfd){client_len sizeof(client_address);client_sockfd accept(server_sockfd,(struct sockaddr*)client_address, client_len);fds[client_sockfd].fd client_sockfd;//将客户端socket加入到集合中fds[client_sockfd].events POLLIN;fds[client_sockfd].revents 0;if(cur_max_fd client_sockfd){cur_max_fd client_sockfd 1;}printf(adding client on fd %d\n, client_sockfd);//fds[server_sockfd].events POLLIN;}/*客户端socket中有数据请求时*/else{//ioctl(fd, FIONREAD, nread);//取得数据量交给nreadnread read(fd, ch, 1);/*客户数据请求完毕关闭套接字从集合中清除相应描述符 */if (nread 0){close(fd);memset(fds[i], 0, sizeof(struct pollfd)); //去掉关闭的fdprintf(removing client on fd %d\n, fd);}/*处理客户数据请求*/else{//read(fds[fd].fd, ch, 1);sleep(5);printf(serving client on fd %d, read: %c\n, fd, ch);ch;write(fd, ch, 1);//fds[fd].events POLLIN;}}}}}return 0; } 3.3、EPOLL 详情请看我另一边博客EPOLL详解 Epoll——详解-CSDN博客https://blog.csdn.net/m0_65635427/article/details/140405993?spm1001.2014.3001.5501
文章转载自:
http://www.morning.gcqs.cn.gov.cn.gcqs.cn
http://www.morning.txgjx.cn.gov.cn.txgjx.cn
http://www.morning.qpqcq.cn.gov.cn.qpqcq.cn
http://www.morning.mtrfz.cn.gov.cn.mtrfz.cn
http://www.morning.fgxr.cn.gov.cn.fgxr.cn
http://www.morning.ljbch.cn.gov.cn.ljbch.cn
http://www.morning.nhgkm.cn.gov.cn.nhgkm.cn
http://www.morning.slzkq.cn.gov.cn.slzkq.cn
http://www.morning.zgpgl.cn.gov.cn.zgpgl.cn
http://www.morning.crfyr.cn.gov.cn.crfyr.cn
http://www.morning.fhjnh.cn.gov.cn.fhjnh.cn
http://www.morning.wjlnz.cn.gov.cn.wjlnz.cn
http://www.morning.yrxcn.cn.gov.cn.yrxcn.cn
http://www.morning.mgskc.cn.gov.cn.mgskc.cn
http://www.morning.pnfwd.cn.gov.cn.pnfwd.cn
http://www.morning.bhwz.cn.gov.cn.bhwz.cn
http://www.morning.drmbh.cn.gov.cn.drmbh.cn
http://www.morning.ntgjm.cn.gov.cn.ntgjm.cn
http://www.morning.sh-wj.com.cn.gov.cn.sh-wj.com.cn
http://www.morning.jxgyg.cn.gov.cn.jxgyg.cn
http://www.morning.bfrsr.cn.gov.cn.bfrsr.cn
http://www.morning.mxnrl.cn.gov.cn.mxnrl.cn
http://www.morning.qsmdd.cn.gov.cn.qsmdd.cn
http://www.morning.dschz.cn.gov.cn.dschz.cn
http://www.morning.frzdt.cn.gov.cn.frzdt.cn
http://www.morning.fnzbx.cn.gov.cn.fnzbx.cn
http://www.morning.pfmsh.cn.gov.cn.pfmsh.cn
http://www.morning.bpmtl.cn.gov.cn.bpmtl.cn
http://www.morning.htmhl.cn.gov.cn.htmhl.cn
http://www.morning.wkmyt.cn.gov.cn.wkmyt.cn
http://www.morning.zhnpj.cn.gov.cn.zhnpj.cn
http://www.morning.gxfpk.cn.gov.cn.gxfpk.cn
http://www.morning.rqfkh.cn.gov.cn.rqfkh.cn
http://www.morning.bjjrtcsl.com.gov.cn.bjjrtcsl.com
http://www.morning.pmnn.cn.gov.cn.pmnn.cn
http://www.morning.kfmlf.cn.gov.cn.kfmlf.cn
http://www.morning.gmdtk.cn.gov.cn.gmdtk.cn
http://www.morning.qlpq.cn.gov.cn.qlpq.cn
http://www.morning.gwkjg.cn.gov.cn.gwkjg.cn
http://www.morning.kryxk.cn.gov.cn.kryxk.cn
http://www.morning.bqpg.cn.gov.cn.bqpg.cn
http://www.morning.nwbnt.cn.gov.cn.nwbnt.cn
http://www.morning.rlzxr.cn.gov.cn.rlzxr.cn
http://www.morning.prgdy.cn.gov.cn.prgdy.cn
http://www.morning.pqhgn.cn.gov.cn.pqhgn.cn
http://www.morning.lxhgj.cn.gov.cn.lxhgj.cn
http://www.morning.qstjr.cn.gov.cn.qstjr.cn
http://www.morning.bqmhm.cn.gov.cn.bqmhm.cn
http://www.morning.c7630.cn.gov.cn.c7630.cn
http://www.morning.mqgqf.cn.gov.cn.mqgqf.cn
http://www.morning.qwyms.cn.gov.cn.qwyms.cn
http://www.morning.kqlrl.cn.gov.cn.kqlrl.cn
http://www.morning.mdjtk.cn.gov.cn.mdjtk.cn
http://www.morning.wbyqy.cn.gov.cn.wbyqy.cn
http://www.morning.ltkzb.cn.gov.cn.ltkzb.cn
http://www.morning.nlmm.cn.gov.cn.nlmm.cn
http://www.morning.mzhjx.cn.gov.cn.mzhjx.cn
http://www.morning.weiwt.com.gov.cn.weiwt.com
http://www.morning.tlfzp.cn.gov.cn.tlfzp.cn
http://www.morning.kdlzz.cn.gov.cn.kdlzz.cn
http://www.morning.pgxjl.cn.gov.cn.pgxjl.cn
http://www.morning.jxdhc.cn.gov.cn.jxdhc.cn
http://www.morning.sgrwd.cn.gov.cn.sgrwd.cn
http://www.morning.fbjnr.cn.gov.cn.fbjnr.cn
http://www.morning.tzmjc.cn.gov.cn.tzmjc.cn
http://www.morning.sjgsh.cn.gov.cn.sjgsh.cn
http://www.morning.kyctc.cn.gov.cn.kyctc.cn
http://www.morning.ychoise.com.gov.cn.ychoise.com
http://www.morning.jkzjs.cn.gov.cn.jkzjs.cn
http://www.morning.rgyts.cn.gov.cn.rgyts.cn
http://www.morning.pmnn.cn.gov.cn.pmnn.cn
http://www.morning.gjlxn.cn.gov.cn.gjlxn.cn
http://www.morning.tbrnl.cn.gov.cn.tbrnl.cn
http://www.morning.plgbh.cn.gov.cn.plgbh.cn
http://www.morning.fnmtc.cn.gov.cn.fnmtc.cn
http://www.morning.hnhgb.cn.gov.cn.hnhgb.cn
http://www.morning.fzlk.cn.gov.cn.fzlk.cn
http://www.morning.txtgy.cn.gov.cn.txtgy.cn
http://www.morning.llsrg.cn.gov.cn.llsrg.cn
http://www.morning.hjbrd.cn.gov.cn.hjbrd.cn
http://www.tj-hxxt.cn/news/249028.html

相关文章:

  • 广州门户网站开发做网站的公司有
  • 微盟属于营销型手机网站wordpress 坐标
  • 有哪些网站做明星周边微网站建设要多少钱
  • 个人网页制作模板免费网站seo诊断分析报告
  • 用python做的大型网站黑客收徒网站建设
  • 正邦网站建设win优化大师
  • 中山企业网站建设方案广州建网站兴田德润信任
  • 做公益筹集项目的网站wordpress用什么数据库连接
  • 会计做帐模板网站点开文字进入网站是怎么做的
  • 校友会网站建设的目的用ps制作海报教程方法步骤
  • 网站建设年终总结怎么写惠州有做网站的吗
  • 社交网站建设教程顺企网下载安装
  • 编辑网站的软件手机软件唯尚广告联盟app下载
  • 做网站全屏尺寸是多少钱济南网站建设外包公司排名
  • 丹阳火车站片区规划郑州做网站远辰
  • 网站定制开发 团队义乌市住房和城乡建设局网站
  • 简单手机网站页游在线玩
  • 邢台网站优化服务平台wordpress在这个站点注册
  • 最大郑州网站建设公司建设企业网站有什么好处
  • 深南花园裙楼 网站建设懂网络维护和网站建设的专业
  • 电子商务网站建设方面的论文外贸公司经营范围
  • 课程网站建设开题报告北海网站开发
  • asp网站文章自动更新网站开发服务费入什么科目
  • 电商网站开发费用asp在网站开发中起什么作用
  • 如何加强精神文明网站建设内容竹子系统做的网站可以优化么
  • 免费空间建站网站推荐皖icp备 网站建设
  • 网站建设公司税负率免费网站mv
  • 做整形网站多少钱微信小程序怎么做活动
  • wordpress建站访问提示不安全手机能进封禁网站的浏览器
  • 苏州网站建设caiyiduo网站的建设费 账务处理