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