io
ljt-tiger
不积跬步,无以至千里。知识认知体系搭建过程:场景 --》需求 --》解决方案 --》应用 --》原理
展开
-
为什么选择Netty作为NIO网络编程的首选框架
不选择原生NIO进行网络编程的原因NIO的类库和API繁琐,使用麻烦,开发者必须熟练掌握Selector、SeverSocketChannel、SocketChannel、ByteBuffer等需要具备额外的技能作为铺垫,例如熟悉多线程编程,这是由于NIO编程设计Reactor模式,你必须对多线程非常熟悉,才能编写出高质量的NIO程序。可靠性能力补齐,工作量和难度非常大。JDK NIO 的BUG使用NIO框架Netty开发的理由API使用简单,开发门槛低功能强大,预置多种编解码功能,支持原创 2021-05-04 10:52:52 · 210 阅读 · 0 评论 -
I/O多路复用技术
I/O多路复用技术在I/O编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。I/O多路复用技术通过把多个I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下可以同时处理多个客户端请求。与传统的多线程模型比,I/O多路复用技术的最大优势是系统开销小,系统不需要创建额外进程或者线程,也不需要维护这些进程或线程的运行。支持的I/O多路复用技术 select pseelct poll epoll原创 2021-05-03 19:02:53 · 262 阅读 · 0 评论 -
NIODemo
package com.tiger.io.nio;import java.io.IOException;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.nio.ByteBuffer;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.channels.ServerSo.原创 2021-05-03 00:59:14 · 373 阅读 · 0 评论 -
内存映射 - MappedBuffer
package com.tiger;import java.io.IOException;import java.io.RandomAccessFile;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;/** * 内存映射是一种读和写文件数据的方法,它可以比常规基于流或基于通信管道IO快得多, * 内存映射文件IO是通过使文件中的数据出现为内存数组的内容来完成,这似乎是将整个文件读到内存,但事实并.原创 2021-05-02 19:45:06 · 540 阅读 · 0 评论 -
直接缓冲区 - DirectByteBuffer - 拷贝文件
package com.tiger;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;/** * 直接缓冲区,为了加快IO速度,使用一种特殊的方式为其分配内存的缓冲区, * JDK文档描述:给定一个直接字节缓冲区,java虚拟机将尽.原创 2021-05-02 18:49:07 · 477 阅读 · 0 评论 -
只读缓冲区 - ReadOnlyBuffer
package com.tiger;import java.nio.ByteBuffer;/** * 只读缓冲区, * 通过调用现有缓冲区的asReadOnlyBuffer()方法将任意常规缓冲区转换为只读缓冲区, * 这个方法返回一个与原缓冲区完全相同的缓冲区,并与原缓冲区共享数据,只不过它是只读的, * 如果原缓冲区内容发生变化,那么只读缓冲区也会发生变化。 * 但position和limit可以不同,拷贝的时候是拷贝当前缓冲区所有特性 * * @description: * .原创 2021-05-02 14:08:12 · 415 阅读 · 0 评论 -
缓冲区分片 - BufferSlice
package com.tiger;import java.nio.ByteBuffer;/** * 缓冲区分片案例 * 在现有缓冲区对象中创建一个子缓冲区,即在现有缓冲区上切出一片作为一个新的缓冲区, * 但现有缓冲区与创建的子缓冲区在底层数组层面上是数据共享; * 也就是说,子缓冲区相当于是现有缓冲区的一个视图窗口 * * @description: * @author: tiger * @create: 2021-05-02 10:05 */public class By.原创 2021-05-02 11:47:43 · 587 阅读 · 0 评论 -
缓冲区 - ByteBuffer
package com.tiger;import java.nio.IntBuffer;/** * @description: * @author: tiger * @create: 2021-05-02 10:05 */public class ByteBufferDemo { public static void main(String[] args) { IntBuffer buffer = IntBuffer.allocate(8); ...原创 2021-05-02 11:18:55 · 146 阅读 · 0 评论