网络编程
文章平均质量分 61
「已注销」
2018.10.10努力加油,一切都会越来越好
展开
-
同步,异步,阻塞,非阻塞
BIO:同步并阻塞,可以通过线程池改善 NIO:同步非阻塞,多路复用轮询,适合连接数多且链接比较短 AIO:异步非阻塞,客户端的IO请求都是由OS 完成了再通知服务器启动线程处理,适合长连接(JDK7开始支持) 什么是阻塞和非阻塞,什么是同步和异步,同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发 IO 操作并等待或者轮询的去查看 IO 操作是否就绪,而异步是指用户进程触发 IO...原创 2018-11-09 09:16:25 · 139 阅读 · 0 评论 -
NIO的原理
NIO中的重要概念 通道、缓冲区、选择器 通道:类似于流,但是可以异步读写数据(流只能同步读写),通道是双向的,(流是单向的),通道的数据总是要先读到一个buffer 或者 从一个buffer写入,即通道与buffer进行数据交互。 通道类型: FileChannel:从文件中读写数据。 DatagramChannel:能通过UDP读写网络中的数据。 SocketChannel:能通过TC...原创 2018-11-09 09:27:35 · 231 阅读 · 0 评论 -
最通俗易懂的NIO原理解释
最通俗易懂的NIO原理解释 NIO最核心的三个组件 Channel 通道 Buffer 缓冲区 Selector 选择器 其中Channel对应以前的流,Buffer不是什么新东西,Selector是因为nio可以使用同步的非堵塞模式才加入的东西。 以前的流总是堵塞的,一个线程只要对它进行操作,其它操作就会被堵塞,也就相当于水管没有阀门,你伸手接水的时候,不管水到了没有,你就都只能耗在接水(流)上...原创 2018-11-09 10:17:51 · 1531 阅读 · 0 评论 -
epoll和select
先说下本文框架,先是问题引出,然后概括两个机制的区别和联系,最后介绍每个接口的用法 一、问题引出 联系区别 问题的引出,当需要读两个以上的I/O的时候,如果使用阻塞式的I/O,那么可能长时间的阻塞在一个描述符上面,另外的描述符虽然有数据但是不能读出来,这样实时性不能满足要求,大概的解决方案有以下几种: 1.使用多进程或者多线程,但是这种方法会造成程序的复杂,而且对与进程与线程的创建维护也需要很多的...转载 2018-11-09 10:51:00 · 167 阅读 · 0 评论 -
约瑟夫环问题
1、题目描述 已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 2、思想 假设有n个人,从1到n,放入一个ArrayList中,设置开始的编号k(设为0,为第一个人),加上需要报的数减1,即得到需要出列人的索引,要注意要出列的人是不是最后...原创 2019-03-10 09:01:17 · 160 阅读 · 0 评论