JavaSE
文章平均质量分 65
IllTamer
一只梦想成为Java架构师的小程序员
展开
-
[ Java | NIO详解 | 5/5 ] NIO vs BIO ? AIO
Stream vs Channel stream 不会自动缓冲数据,channel 会利用系统提供的发送缓冲区、接收缓冲区(更为底层) stream 仅支持阻塞 APl,channel 同时支持阻塞、非阻塞 API,网络 channel 可配合 selector 实现多路复用 二者均为全双工,即读写可以同时进行 IO 模型 五种 IO 模型 阻塞 IO 等待数据期间 ( read ) 用户线程停止,复制数据期间用户线程被阻塞。在等待操作 ( read / accep原创 2021-11-16 08:00:00 · 526 阅读 · 0 评论 -
[ Java | NIO详解 | 4/5 ] 网络编程
通用Client public static void main(String[] args) throws IOException { SocketChannel channel = SocketChannel.open(new InetSocketAddress(25565)); // 注:Buffer大小最好为有效数据大小 -> 防止服务端解码异常 channel.write(ByteBuffer.wrap("传输的信息".ge...原创 2021-11-15 08:00:00 · 374 阅读 · 0 评论 -
[ Java | NIO详解 | 3/5 ] 文件编程
FileChannel FileChannel 只能工作在阻塞模式下 - 文件处于本地,无需等待 获取 FileChannel 无法直接打开,仅能通过 getChannel() 间接获取 通过 FileInputStream 获取的 Channel 只能读 通过 FileOutputStream 获取的 Channel 只能写 通过 RandomAccessFile 获取的 Channel 能否读写取决于构造时设置的读写模式 写入 正确的姿势如下(事实上 FileC原创 2021-11-14 08:00:00 · 225 阅读 · 0 评论 -
[ Java | NIO详解 | 2/5 ] ByteBuffer全解析
重要属性 Capacity - 容量 - 初始为最大值 Position - 写入位置 - 初始为0 Limit - 读写限制 - 初始为最大值 分配内存 ByteBuffer#allocate(int) 分配 Java 堆内存,读写效率较低,受 GC 影响。 ByteBuffer#allocateDirect(int) 直接内存,读写效率高(少一次拷贝),不受 GC 影响,分配的效率低,可能造成内存泄漏。 写模式 更新 Position c原创 2021-11-13 08:00:00 · 261 阅读 · 0 评论 -
[ Java | NIO详解 | 1/5 ] 三大组件 - Channel、Buffer、Selector
NIO - New IO | Non-blocking IO,非阻塞 IO Channel & Buffer channel 是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel。channel 比 stream 更为底层。 常见的 Channel FileChannel - 文件通道 DatagramChannel - UDP 通道 SocketChannel - TCP 通道 ...原创 2021-11-12 21:00:04 · 545 阅读 · 0 评论