java中的IO -- softwbc 发布于:2017年11月30日 浏览量:579  |

java的IO操作类在包java.io下,大概有80个左右的类,主要包括:
基于字节操作的IO接口:InputStream和OutputStream
基于字符操作的IO接口:Writer和Reader
基于磁盘操作的IO接口:File
基于网络操作的IO接口:Socket (java.net包下)


应用程序访问文件的方式:
标准方式(通过用户空间,复制内核空间,再到物理磁盘);直接IO方式;同步访问文件方式;异步访问文件方式;内存映射方式;

NIO


同步与异步:指的是任务序列之间;同步指一个任务的完成需要依赖另一个任务,只有等待这个任务完成后本任务才进行下一步操作。这是应用层面上的,同步、异步对应用的可靠性影响非常大。
阻塞与非阻塞:主要是从CPU的消耗上来说的;阻塞就是CPU停下了等待一个慢的操作完成以后,CPU才接着干其他的事。非阻塞会导致系统线程切换的增加。
各种方式需要评估衡量。
TCP三次握手和四次握手

TCP状态转换:
《深入分析Java Web技术内幕》P37
1、closed:超时或连接关闭时进入此状态
2、listen:server端等待连接时的状态。称为应用程序被动打开(等待客户端来连接)。
3、syn-sent:客户端发起连接,发送syn给服务器端。如果服务器端不能连接则,直接进入closed状态。
4、syn-rcvd:与3对应,服务器端接收客户端的syn请求,服务器由listen状态进入syn-rcvd状态。同时服务器回应一个ack,发送一个syn给客户端;另一种情况是,客户端在发起syn的同时,接收到服务器的syn请求,客户端会由syn-sent到syn-rcvd;
5、established:客户端和服务器完成三次握手后进入状态,说明已经开始传输数据了。
6、fin-wait-1:主动关闭的一方。由5进入此状态,具体是发送fin给对方
7、fin-wait-2:主动关闭的一方,接收到对方fin ack,进入此状态。由此不能再接收对方数据,但是还能向对方发送数据
8、close-wait:接收到fin后,被动关闭的一方进入此状态
9、last-ack:被动关闭的一方,发起关闭请求,在接到ack后进入closed状态
10、closing:两边同时发起关闭请求时,会由fin-wait-1进入此状态
11、time-wait:
fin-wait-2转到time-wait:双方不同时发起fin的情况下,主动关闭的一方在完成自身发起的关闭请求后,接收到被动关闭一方的fin后进入的状态
closing转到time-wait:双方同时发起关闭,都做了发起fin请求,同时接收到了fin并做了ack的情况下进入time-wait
fin-wait-1转到time-wait:同时收到fin(对方发起)和ack(本身发起的fin的回应),它与closing转到time-wait的区别在于本身发起的fin回应的ack先于对方的fin请求到达,而closing转到time-wait是fin先到达

关于我们 |  广告服务 |  联系我们 |  网站声明

Copyright © 2015 - 2016 DISPACE.NET |  使用帮助 |  关于我们 |  投诉建议

京ICP备13033209号-2