
Netty
文章平均质量分 87
qq_37119960
不积跬步,无以至千里;不积小流,无以成江海。
展开
-
五 NIO vs BIO
1. stream vs channelstream 不会自动缓冲数据,channel 会利用系统提供的发送缓冲区、接收缓冲区(更为底层)stream 仅支持阻塞 API,channel 同时支持阻塞、非阻塞 API,网络 channel 可配合 selector 实现多路复用二者均为全双工,即读写可以同时进行2. IO 模型同步阻塞、同步非阻塞、同步多路复用、异步阻塞(没有此情况)、异步非阻塞同步:线程自己去获取结果(一个线程)异步:线程自己不去获取结果,而是由其它线程送结果(至少两个原创 2021-08-03 15:43:11 · 447 阅读 · 3 评论 -
四 NIO-网络编程
1. 非阻塞 vs 阻塞阻塞阻塞模式下,相关方法都会导致线程暂停ServerSocketChannel.accept 会在没有连接建立时让线程暂停SocketChannel.read 会在没有数据可读时让线程暂停阻塞的表现其实就是线程暂停了,暂停期间不会占用 cpu,但线程相当于闲置单线程下,阻塞方法之间相互影响,几乎不能正常工作,需要多线程支持但多线程下,有新的问题,体现在以下方面32 位 jvm 一个线程 320k,64 位 jvm 一个线程 1024k,如果连接数过多,必然导翻译 2021-08-02 23:40:10 · 151 阅读 · 0 评论 -
三 NIO-文件编程
3.1 FileChannel⚠️ FileChannel 工作模式FileChannel 只能工作在阻塞模式下获取不能直接打开 FileChannel,必须通过 FileInputStream、FileOutputStream 或者 RandomAccessFile 来获取 FileChannel,它们都有 getChannel 方法通过 FileInputStream 获取的 channel 只能读通过 FileOutputStream 获取的 channel 只能写通过 Rando原创 2021-07-15 15:23:30 · 222 阅读 · 0 评论 -
二 NIO-ByteBuffer
1.使用案例有一普通文本文件 data.txt,内容为1234567890abcd使用 FileChannel 来读取文件内容@Slf4jpublic class ChannelDemo1 { public static void main(String[] args) { try (RandomAccessFile file = new RandomAccessFile("helloword/data.txt", "rw")) { FileCha原创 2021-07-15 11:11:02 · 361 阅读 · 0 评论 -
一 NIO 基础-三大组件(Channel、Buffer、Selector)
三大组件1.1 Channel & Bufferchannel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层。常见的 Channel 有FileChannelDatagramChannelSocketChannelServerSocketChannelbuffer 则用来缓冲读写原创 2021-07-15 10:21:17 · 237 阅读 · 0 评论