
文件I/O
文章平均质量分 78
IO操作
想养一只萨摩耶~
请在合适的地方掉头并重新规划路线
展开
-
Selector选择器
java中的nio,用非阻塞的IO方式。可以用一个线程,处理多个客户端连接,就会使用到Selector选择器Selector能够检测多个注册的通道上是否有事件发生(注意:多个Channle以事件的方式可以注册到同一个Selector),如果有事件发生获取事件然后针对每个事件进行相应的处理,这样就可以用一个单线程管理多个通道,也就是管理多个连接和请求。只有在连接有多个读写事件发生时,才会进行读写,就大大减少了系统的开销,并且不会为每个连接都创建一个线程,不用去维护多个线程。原创 2023-01-29 16:00:20 · 649 阅读 · 0 评论 -
excel导出图片---HSSFWorkbook--SXSSFWorkbook
目录1 概述2HSSFWorkbook2.1 导出要点3SXSSFWorkbook1 概述平时在工作中,excel导出图片经常会用到,但奈何HSSFWorkbook导出数据数量有限制问题,所以企业里大多都用SXSSFWorkbook格式,很少用HSSFWorkbook。所以今天以这两种格式分别记录下,图片的导出过程。2HSSFWorkbook @Test public void excelImageTestHSSFWorkbook1(){ ...原创 2022-02-27 16:33:29 · 3303 阅读 · 10 评论 -
Java-NIO-Selector
1 概述Selector一般称之为选择器,也可以翻译为多路复用器。它是Java-NIO中核心组件中的一个,用于检查一个或多个NIO Channel(通道)的状态是否处于可读、可写。如此可实现单线程管理多个channels,也就是可以管理多个网络连接。使用Selector的好处在于:使用更少的线程来就可以处理通道了,相比使用多个线程,避免了线程上下文切换带来的开销2 可选择通道(SelectableChannel)1)不是所有的Channel都能够被Selector复用的。像F...原创 2022-02-19 13:35:46 · 1481 阅读 · 0 评论 -
BIO传任意文件
1 目标:实现客户端上传任意类型的文件数据给服务端保存起来客户端代码:public class Client { public static void main(String[] args) { try ( FileInputStream is = new FileInputStream("D:\\serverfile\\png\\d4126b621ac9baab9cf15eec657a661c.jpg"); ){ //读取与服务端.原创 2021-10-26 19:13:11 · 132 阅读 · 0 评论 -
JAVA中BIO
1 BIO基本介绍 BIO是就是传统的io编程,其相关的类和接口在Java.io BIO:同步阻塞,服务器实现模式为一个线程一个连接,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器)2 BIO工作机制3 同步阻塞案例服务端代码:public class Server { /** * 客户端发送消息,服务端接收消息 *...原创 2021-10-24 16:33:13 · 471 阅读 · 0 评论 -
伪异步I/O编程
1 概述 之前讲过客户端的并发访问量增加时,服务端将呈现1:1的线程开销,访问量越大,系统将发生线程栈溢出,线程创建失败,最终进程宕机或者僵死,从而不能对外提供服务。所以我们采用一个位异步I/O的通信框架,采用线程池和任务队列实现,当客户端接入时,将客户端的Socket封装成一个Task(改任务实现Java.lang.Runnable线程任务接口)交给后端的线程池进行处理,JDK的线程池维护一个消息队列和N个活跃的线程,对消息队列中Socket任务进行处理,由于线程池可以设置消息队列的...原创 2021-10-24 22:02:20 · 150 阅读 · 0 评论 -
Java NIO-Buffer
1 概述Java NIO中的Buffer用于和NIO通道进行交互。数据是从通道进入缓冲区,从缓冲区写入通道中的。缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成了NIO Buffer对象。在NIO中所有的数据都是用缓冲区处理的。2 Buffer使用Buffer一般步骤:第一步:写入数据到Buffer第二步:调用flip()第三步:从Buffer中读取数据第四步:调用clear()或者compact方法注意:读取数据时,需要调用flip()方法将原创 2022-02-16 21:03:23 · 1034 阅读 · 0 评论 -
java NIO-Channel
1 概述之前听朋友说,他们公司有一个业务场景对于IO的操作要求较高,项目组长让他用NIO来完成这个需求,他一听一脸茫然的问组长:啥是NIO啊?项目组长听后对他挥挥手说:“起开起开,我来”。朋友后来和我分享这个事情,对于都是菜鸡的我们来说,我也不知道啥叫NIO。于是虎年伊始,我决定来学学这个NIO。以免有一天我的项目组长对我说,你起开起开,我来。Java NIO是Java1.4之后引入的一个全新的API,它可以替代标准的IO操作,NIO既支持面向缓冲区的操作,同时也是基...原创 2022-02-13 15:20:23 · 881 阅读 · 0 评论