9.IO
文章平均质量分 87
郑学炜
这个作者很懒,什么都没留下…
展开
-
1.JAVA中的IO流
Java中IO流,输入输出流概述与总结 字符流与字节流的区别 我们可以知道字节流与字符流之间主要的区别体现在以下几个方面:· 字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。· 字节流默认不使用缓冲区;字符流使用缓冲区。· 字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;...原创 2018-04-08 11:21:50 · 548 阅读 · 0 评论 -
6.Reactor设计模式
reactor设计模式reactor设计模式,是一种基于事件驱动的设计模式。 这个模式的结构图如下: 图中的handle对应的是操作系统提供的句柄,例如I/O句柄,Event_Handler类持有这些句柄,(其实就是事件,可以看成是Type)Handles:表示操作系统管理的资源,我们可以理解为fdSynchronous Event Demultiplexer:同步事件分离器,阻塞等待Handle...原创 2018-04-28 20:41:32 · 635 阅读 · 0 评论 -
2.NIO入门之channel、buffer、selector
在开始之前关于本教程新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的。NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的、面向块的 I/O。通过定义包含数据的类,以及通过以块的形式处理这些数据,NIO 不用使用本机代码就可以利用低级优化,这是原来的 I/O 包所无法做到的。在本教程中,我们将讨论 NIO 库的几乎所有方面,从高级的概念性内容到底层的编程细节。除...原创 2018-04-28 20:08:58 · 239 阅读 · 0 评论 -
8.IO-BIO,NIO,AIO
IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝请求,如...原创 2018-04-27 16:28:13 · 252 阅读 · 0 评论 -
5.IO多路复用
一、什么是IO?我们都知道unix世界里,一切皆文件,而文件是什么呢?文件就是一串二进制流,不管socket,还是FIFO、管道、终端,对我们来说,一切都是文件,一切都是流。在信息交换的过程中,我们都是对这些流进行数据的收发操作,简称为I/O操作(input and output),往流中读出数据,系统调用read,写入数据,系统调用write。二、文件描述符那么计算机中这么多流,我们是如何知道要...原创 2018-04-27 12:00:04 · 618 阅读 · 0 评论 -
3.JAVA NIO浅析
Java NIO浅析NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。那么NIO的本质是什么样的呢?它是怎样与事件模型结合来解放线程、提高系统吞吐的呢?本文会从传统的阻塞I/O和线程池模型面临的问题讲起,然后对比几种常见I...原创 2018-04-21 22:01:47 · 336 阅读 · 0 评论 -
7.Reactor和Proactor的区别
系统I/O 可分为阻塞型, 非阻塞同步型、阻塞异步型以及非阻塞异步型。阻塞型I/O意味着控制权只到调用操作结束了才会回到调用者手里。同步非阻塞是会立即返回控制权给调用者的。调用者不需要等等,它从调用的函数获取两种结果:要么此次调用成功进行了;要么系统返回错误标识告诉调用者当前资源不可用,你再等等或者再试度看吧。比如read()操作, 如果当前socket无数据可读,则立即返回EWOULBLOCK/...原创 2018-04-08 21:14:04 · 403 阅读 · 0 评论 -
4.IO - 同步,异步,阻塞,非阻塞
IO - 同步,异步,阻塞,非阻塞 实际上同步与异步是针对应用程序与内核的交互而言的。同步过程中进程触发IO操作并等待(也就是我们说的阻塞)或者轮询的去查看IO操作(也就是我们说的非阻塞)是否完成。 异步过程中进程触发IO操作以后,直接返回,做自己的事情,IO交给内核来处理,完成后内核通知进程IO完成。同步和异步针对应用程序来,关注的是程序中间的协作关系;阻塞与非阻塞更关注的是单个进程的执...原创 2018-04-08 20:04:52 · 254 阅读 · 0 评论 -
9.JAVA的堆外内存(基于NIO的ByteBuffer类实现)
堆内内存:堆内内存 = 新生代+老年代+持久代 1. 堆内存完全由JVM负责分配和释放,如果程序没有缺陷代码导致内存泄露,那么就不会遇到java.lang.OutOfMemoryError这个错误。使用堆外内存,就是为了能直接分配和释放内存,提高效率。JDK5.0之后,代码中能直接操作本地内存的方式有2种:1.使用未公开的Unsafe。2.NIO包下ByteBuffer。java.nio.D...原创 2018-04-08 19:18:39 · 3116 阅读 · 1 评论 -
10.基于NIO的Netty框架入门
Netty入门简介前言Netty是一个高性能、异步事件驱动的NIO框架,提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的...原创 2018-04-29 12:56:20 · 242 阅读 · 0 评论