读书笔记-NIO的工作方式】的更多相关文章

读书笔记-NIO的工作方式 1.BIO是阻塞IO,一旦阻塞线程将失去对CPU的使用权,当前的网络IO有一些解决办法:1)一个客户端对应一个处理线程:2)采用线程池.但也会出问题. 2.NIO的关键类Channel和Selector,Selector相当于调度系统,他可以轮询每个Channel的状态,Channel要比Socket更加具体:Buffer类比Stream更加具体: NIO引入Selector.Channel.Buffer就是想把信息具体化,让程序员有机会控制他们. 3.Buffer是…
1.BIO带来的挑战 BIO即阻塞IO,不管是磁盘IO,还是网络IO,数据在写入OutputStream或者从InputStream读取时都有可能发生阻塞,一旦有阻塞,当前线程将会被挂起,即线程进入非可执行状态,在这个状态下,CPU不会给线程分配时间片,线程将会失去CPU的使用权,即线程暂停运行,这在当前的大规模访问量和有性能要求的情况下是不能被接受的.虽然当前的网络I/O有一些解决办法,如一个客户端一个处理线程,出现阻塞时只是一个线程阻塞而不会影响其他线程工作,还有为了减少系统线程的开销  ,…
NIO 的工作方式 BIO 带来的挑战 BIO : BIO 通信模型,通常由一个独立的 Acceptor 线程负责监听客户端的连接,接受到请求之后,为每个客户端创建一个新的线程进行链路处理,处理完成之后,线程销毁.是典型的 请求-应答通信模型. BIO 即阻塞 IO,不管是磁盘IO 还是 网络 IO,数据在写入 OutputStream 或者从 InputStream 读取时都有可能会阻塞,一旦有阻塞,线程将会失去 CPU 的使用权,这在当前的大规模访问量和有性能要求的情况下是不能被接受的. 虽…
BIO带来的挑战 BIO 就是我们常说的阻塞I/O , 不论磁盘I/O 还是网络/O ,数据在写入OutputStream 或者从 InutStream 读取数据时都有可能会阻塞,一旦有了阻塞,线程就会失去CPU 的使用权,这在大规模访问量和有性能要求的情况下是不能被接受的,虽然网络I/O 有一些解决办法(比如一个客户端对应一个线程,线程池等),但是在一些使用场景下任然是无法解决的,比如需要大量HTTP 长连接的情况,像淘宝的Web旺旺,服务端就需要保持几百万甚至更多的HTTP 连接,但又并不是…
public void selector() throws IOException { ByteBuffer buffer = ByteBuffer.allocate(1024); Selector selector = Selector.open(); ServerSocketChannel ssc = ServerSocketChannel.open(); ssc.configureBlocking(false);//设置为非阻塞模式 ssc.socket().bind(new InetSo…
1.1 你必须知道的知识 (其中包括1.1.1 DIV + CSS的叫法解释:1.1.2 DIV + CSS 名字的误区:以及1.1.3 W3C简介.由于只是背景知识,跳过该章.) 1.2 你必须掌握的基础 1.2.1 CSS如何控制 使用 xHTML+CSS 布尿页面,其中有个很重要的特点就是结构与表现相分离,结极指 xHTML 页面代码,表现就是 CSS 代码了,如果把一个网页看成穿着衣服癿人癿话,人就是 xHTML,是结构,而衣服呢就是 CSS,是表现,现在出现的问题是,如何让 CSS 去…
1.Buffer的工作方式 前面<java NIO的工作方式>介绍了Selector检测到通信信道I/O有数据传输时,通过select()方法取得SocketChannel,将数据读取或写入Buffer缓冲区,下面讨论Buffer如何接受和写出数据.通过查看JDK源码可知道,Buffer的构造函数 Buffer(int mark, int pos, int lim, int cap) { // package-private if (cap < 0) throw new IllegalA…
第1章 深入Web请求过程 1 1.1 B/S网络架构概述 2 基于统一的应用层协议HTTP来交互数据. 1.2 如何发起一个请求 4 HTTP连接本质是建立Socket连接.请求实现方式:工具包如HttpClient.curl+URL.浏览器输入URL回车. 1.3 HTTP协议解析 6 Headers查看步骤:F12->Network->F5->URL->Headers. 1.3.1 查看HTTP信息的工具 8 Firefox--Firebug.F12 1.3.2 浏览器缓存机…
第2章 TCP-IP的工作方式 TCP/IP协议系统 为了实现TCP的功能,TCP/IP的创建者使用了模块化的设计.TCP/IP协议系统被分为不同的组件,每个组件分别负责通信过程的一个步骤.这种模块化的好处在于让厂商方便地根据特定硬件和操作系统对协议软件进行修改.这样厂商在使用光纤网络时就不必重新构建一个全新的TCP/IP,只要修改其中的某一层就好. TCP/IP模型 graph TD 应用层-->传输层 传输层-->网际层 网际层-->网络访问层 网络访问层:提供了与物理网络连接的接口…
第9章 四大组件的工作过程 9.1 四大组件的运行状态 (1)四大组件中只有BroadcastReceiver既可以在AndroidManifest文件中注册,也可以在代码中注册,其他三个组件都必须在AndroidManifest文件中注册:ContentProvider的调用不需要借助Intent,其他三个组件都需要借助Intent.(2)Activity是一种展示型组件,用于向用户展示界面,可由显式或者隐式Intent来启动.(3)Service是一种计算型组件,用于在后台执行计算任务.尽管…