![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java-nio
主要讲解Java中nio模块的只要知识点
该码就码
这个作者很懒,什么都没留下…
展开
-
javaNIO实战9----> java NIO的Pipe管道实战
1、Pipe管道通常使用在对条线程之间共享数据的场景,模型如下图所示: 2、实战案例 @Test public void nioPipe() throws IOException, InterruptedException { //1、构建一个管道 Pipe pipe = Pipe.open(); //2、获取管道的SinkChannel,用于数据录入。 Pipe....原创 2020-10-25 20:41:28 · 444 阅读 · 0 评论 -
javaNIO实战8----> java NIO的非阻塞式IO网络编程UDP协议实战
1、前面说的SocketChannel、ServerSocketChannel都是针对TCP协议而来的实现,那么今天我们就实战一下UDP协议的NIO非阻塞式网络编程,在NIO中UDP的通道实现类是DatagramChannel。2、实战案例 1、客户端的实现: @Test public void nioNonBlockingClientUDP() throws IOException { //1、开启一个DatagramChannel 的客户端通道...原创 2020-10-25 19:58:17 · 194 阅读 · 0 评论 -
javaNIO实战7----> java NIO的非阻塞式(Non Blocking IO)网络编程
1、NIO 非阻塞式网络编程 前面我们讲解了使用多线程来解决IO线程的柱塞问题,那么今天我们来介绍一个java NIO中的非阻塞式的实现,那么它是怎么实现的呢?其中一个核心的组件就是Selector(选择器 也可以叫IO多路复用器),具体的模型如下 2、IO多路复用器Selector 2.1、在java NIO中使用类Selector来描述多路选择器,它的方法列表如下: 2.2、SelectionKey介绍 ...原创 2020-10-25 19:26:18 · 312 阅读 · 0 评论 -
javaNIO实战6----> java NIO的阻塞式网络编程
1、在没有NIO的套件的时候,我们都是使用Socket来进行网络编程 案例如下: 1.1、服务端实现: public static void main(String[] args) { ServerSocket serverSocket = null; try { //1、构建一个SocketServer 监听端口8080,这就表示一个进程,当前线程就是main线程,也可以叫IO线程。 ...原创 2020-10-25 18:34:14 · 194 阅读 · 0 评论 -
javaNIO实战5----> java NIO的字符集Charset实战
1、NIO中的Charset类表示字符集,可以使用它来完成数据的编码与解码: 编码:字符串---->字节数组 解码:字节数组----->字符串2、我们通过案例来演示Charset的使用: @Test public void test12() throws IOException { 获取GBK的字符集实例 Charset charset = Charset.forName("GBK"); ...原创 2020-10-23 21:36:25 · 593 阅读 · 0 评论 -
javaNIO实战4----> java NIO的通道Channel实战
1、IO发展三部曲 在计算机的发展历史中,IO的发展一共经历了三个时期,分别如下: 第一阶段:CPU直接负责IO请求的处理,将文件数据从磁盘读取到内存中,然后再响应应用的IO请求,严重影响CPU的性能模型图如下: 第二阶段:DMA(Direct Memory Access)直接存储器 负责IO请求,不过DMA也会向CPU去获取授权信息,如果在频繁进行IO操作的话,也会严重影响CPU的性能。模型图如下: 第三阶段:使用Channel来替换DMA...原创 2020-10-22 23:54:27 · 423 阅读 · 1 评论 -
javaNIO实战3----> java NIO的非直接缓冲区与直接缓冲区
1、NIO的非直接缓冲区与直接缓冲区 重要的一点:NIO的直接缓冲区与废纸接缓冲区值针对于ByteBuffer这种缓冲区,其他的实现类没有直接缓冲区的说法。 非直接字节缓冲区:通过allocate()方法进行分配,将缓冲区建立在JVM的堆内存中。 直接字节缓冲区:通过ByteBuffer.allocateDirect()方法进行分配,会将缓冲区建立在OS的物理内存中,可以提高效率。 2、非直接缓冲区之所以效率不行是因为,内核空间与用户空间的c...原创 2020-10-21 22:41:24 · 173 阅读 · 0 评论 -
javaNIO实战2----> java NIO的缓冲区Buffer实战
1、Buffer缓冲区详细介绍 在java NIO套件中,Buffer的作用主要就是用来存取数据的,Buffer是一个抽象类,其类图主要如下: 每一个Buffer实现对应着这种Buffer只能存储此种数据,例如BytreBuffer就只能存储字节数据,这些缓冲区都是用其实现类的静态方法allocate()来进行分配,案例如下: 其中1024表示分配的缓冲区的容量,一旦分配就不能修改容量。 ByteBuffer allocate = ByteBuf...原创 2020-10-21 22:17:10 · 195 阅读 · 0 评论 -
javaNIO实战1----> java NIO的基本基本理论
1、什么是NIO ? java NIO 也叫New IO 也可以叫Non Blocking IO ,是从java 1.4 版本开始引入的一个全新的IO API。NIO与原来的IO有同样的目的与作用,但是使用的方式完全不同,NIO支持面向缓冲区(Buffer)且基于通道(Channel)的IO操作,NIO以更高效的方式进行文件的读写操作。2、java中IO与NIO的区别 2.1、传统IO的思维导图: ...原创 2020-10-20 23:38:10 · 171 阅读 · 0 评论