JAVA IO
灵动的艺术
知其然亦知其所以然!
展开
-
聊聊网络IO模型
聊聊NIO什么是IO?Linux网络I/O模型简介用户空间和内核空间文件描述符缓存IO网络I/O模型同步阻塞I/O同步非阻塞I/OI/O多路复用信号驱动I/O模型异步I/OI/O多路复用BIO socket编程BIOClientBIOServerBIOServerHandlerNIO socket编程缓冲区:BufferChannel多路复用器SelectorNIOClientHandleMultiplexerTimerServerReactor单线程Reactor模型多线程Reactor模型主从React原创 2020-07-28 21:12:05 · 390 阅读 · 0 评论 -
JAVA IO概述
JAVA IO概述IO(输入和输出)流字节/符流区别:字节流案例字符流案例IO流IO(输入和输出)Linux是一个将设备抽象为文件的操作系统,在Linux中所有的外部设备都可以用读取文件的方法读取,这样编程人员就可以以操作文件的方法操作任何设备。Java中使用IO(输入输出)进行读写 设备例如 硬盘文件、内存、键盘等等,根据数据的走向可分为输入流和输出流,这个走向是以内存为基准的,即往内存中...原创 2018-11-02 16:50:30 · 994 阅读 · 0 评论 -
JAVA NIO
JAVA NIONIO缓冲区(Buffer)Buffer的用法capacity,position和limitcapacitypositionlimitBuffer的类型通道(Channel)Channel的实现选择器(Selector)SelectorSelector的创建向Selector注册通道SelectionKeyinterest集合ready集合Channel + SelectorSel...原创 2018-11-02 23:12:22 · 838 阅读 · 0 评论 -
JAVA NIO Selector构建简单服务器
JAVA NIO Selector构建简单服务器ServerSocketChannel + SelectorSocketChannelUnitTest结果ServerSocketChannel + SelectorNIOServer.javapublic class NIOServer implements Runnable{ private int clientNum = 0;...原创 2018-11-02 23:19:40 · 998 阅读 · 0 评论 -
IO设计模式:Reactor和Proactor对比
原文传送门IO设计模式:Reactor和Proactor对比Reactor和Proactor反应器ReactorReactor模式结构Proactor模式Proactor模式结构业务流程及时序图对比两者的区别主动和被动实现优点缺点适用场景Reactor和Proactor平时接触的开源产品如Redis、ACE,事件模型都使用的Reactor模式;而同样做事件处理的Proactor,由于操作系统...转载 2018-11-05 10:58:01 · 923 阅读 · 0 评论 -
基于Java NIO2实现的异步非阻塞消息通信框架
原文传送门基于Java NIO2实现的异步非阻塞消息通信框架前奏AIO应用开发Future方式Callback方式Reader/Writer方式实现线程池和GroupPendingException 和 AsynchronousChannelByteBuffer参考文献前奏因为NIO并不容易掌握,所以这注定会是一篇长文,而且即便篇幅很大,亦难以把很多细节解释清楚,只能侧重于从整体上进行把握,...转载 2018-11-05 12:42:19 · 2831 阅读 · 0 评论 -
JAVA IO : BIO NIO AIO
JAVA IO : BIO NIO AIO同步异步、阻塞非阻塞概念同步与异步阻塞与非阻塞IO VS NIO VS AIO面向流与面向缓冲阻塞与非阻塞IOBIO、NIO、AIO的JAVA实现BIO、NIO、AIO适用场景分析同步异步、阻塞非阻塞概念同步和异步是针对应用程序和内核的交互而言的,主要看是主动轮训内核还是等待内核通知。 阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来...原创 2018-11-05 14:19:55 · 1628 阅读 · 0 评论 -
不建议使用sun.misc.BASE64Encoder
最近在项目中用到sun.misc.BASE64Encoder包的BASE64Encoder对字符串进行编码,但是将编码后的字符串输出后发现字符串中存在换行符\r\ngoogle 原来“回车换行符(\r\n)”是在Windows才有,而Linux只有换行(\n),Mac只有回车(\r)。建议使用import org.apache.commons.codec.binary.Base64;进行替换...原创 2019-07-16 19:36:29 · 4629 阅读 · 1 评论