
网络编程
文章平均质量分 82
水墨之白
悟已往之不谏,知来者之可追!
展开
-
同步与异步、阻塞非阻塞
一、 同步与异步: 强调用户线程和内核的交互方式 同步:用户线程发起IO操作需要等待或者轮询内核是否完成IO操作 异步:用户线程发起IO操作后无需等待,可以执行其它操作 同步和异步关注的是消息通信机制,由调用者主动等待这个调用的结果,异步是当一个异步过程调用发出后,调用者不会立刻得到结果。而是在调用发出后,被调用者通过状态、通知来通知调用者,或通过回调函数处理这个调用 阻塞和非阻塞关注的是...原创 2019-08-30 19:38:42 · 341 阅读 · 0 评论 -
理解BIO
一、 同步与异步: 用户线程和内核的交互方式 同步:用户线程发起IO操作需要等待或者轮询内核是否完成IO操作 异步:用户线程发起IO操作后无需等待,可以执行其它操作 二、 阻塞与非阻塞: 用户线程调用内核IO操作时的状态 阻塞:用户线程调用内核IO后被挂起 非阻塞:用户线程调用IO后直接返回状态,回调函数通知 一个例子(引自知乎): 1.老张把水壶放到火上,立等水开。(同步阻塞) 2.老张把水壶放...原创 2019-02-23 11:22:15 · 296 阅读 · 0 评论 -
理解NIO
一、NIO与BIO比较 同步非阻塞IO 与BIO比较: 1.在BIO中,每次建立一次连接,就会创建一个线程处理该连接,虽然可以使用线程池来管理, 但是每次建立TCP连接,销毁,消耗资源和性能,对应的线程也是如此。 2.与BIO相比,IO操作读写数据时,如果当前没有数据读写,线程会一直阻塞,直到有数据读写,不能做别的事情 对于第一点,NIO中采取channel来读写数据,提升性能 对于第二点,NIO...原创 2019-03-01 20:09:25 · 248 阅读 · 0 评论 -
NIO组件Buffer,Channel和Selector
流是用来读写数据的。所有 I/O 都被视为单个的字节的移动,通过一个称为 Stream 的对象一次移动一个字节。流 I/O 用于与外部世界接触。它也在内部使用,用于将对象转换为字节,然后再转换回对象。 流与与 NIO 最重要的区别是数据打包和传输的方式,原来的 I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。 流与块的比较 面向流 的 I/O 系统一次一个字节地处理数据,我们很容易将...原创 2019-12-02 19:11:46 · 288 阅读 · 0 评论 -
Netty线程模型
前面两篇文章讲述了BIO,NIO相关代码,本文在此基础上进行总结 一、单线程模型 单线程模型下,所有的IO操作都由同一个Reactor线程来完成。 特点: 一个线程负责连接,多线程则为每一个接入开启一个线程 一个请求一个应答 请求之后应答之前客户端会一直等待(阻塞) 二、多线程模型 专门由一个Reactor线程-Acceptor线程用于监听服务端,接收客户端连接请求 网络I/...原创 2019-09-01 14:13:31 · 164 阅读 · 0 评论 -
TCP协议详解
TCP(传输控制协议)详解链接:https://zhuanlan.zhihu.com/p/33354887原创 2018-03-11 15:48:14 · 236 阅读 · 0 评论