十三、JavaSE-IO体系
BIO、NIO、AIO有什么区别?
同步阻塞I/O(BIO):
同步阻塞I/O,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制来改善。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务端资源要求比较高,并发局限与应用中,在jdk1.4以前时唯一的io,程序直观简单易理解。
同步非阻塞I/O(NIO):
同步非阻塞I/O,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有IO请求时才启动一个线程进行处理。NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,jdk1.4开始支持。
异步非阻塞I/O(AIO):
异步非阻塞I/O,服务器实现模式为一个有效请求一个线程,客户端的IO请求都是由操作系统先完成了再通知服务器用其他启动线程进行处理。AIO方式适用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,jdk1.7开始支持。
Files的常用方法都有哪些?
Files.exists() 检测⽂件路径是否存在
Files.createFile()创建⽂件
Files.createDirectory()创建⽂件夹
Files.delete() 删除⽂件或者⽬录
Files.copy() 复制⽂件
Files.move() 移动⽂件
Files.size()查看⽂件个数
Files.read() 读取⽂件
Files.write()写⼊⽂件
既然有了字节流,为什么还要有字符流?
字符流是由 Java 虚拟机将字节转换得到的,问题就出在这个过程还算是⾮常耗时,并且,如果我们不知道编码类型就很容
易出现乱码问题。所以, I/O 流就⼲脆提供了⼀个直接操作字符的接⼝,⽅便我们平时对字符进⾏流操作。如果⾳频⽂件、
图⽚等媒体⽂件⽤字节流⽐较好,如果涉及到字符的话使⽤字符流⽐较好。
什么是Java序列化?什么情况下需要序列化?
序列化:将Java对象转换成字节流的过程。
反序列化:将字节流转换成Java对象的过程。
当Java对象需要在网络上传输或者持久化存储到文件中时,就需要对Java对象进行序列化处理。
序列化的实现:类实现Serializable接口,这个接口没有需要实现的方法。实现Serializable接口是为了告诉jvm这个类的对象可以被序列化。
Java序列化中如果有些字段不想进行序列化,怎么办?
对于不想进行序列化的变量,使用transient关键字修饰。
transient关键字的作用是:阻止实例中那些用此关键字修饰的变量序列化;当对象反序列化时,被transient修饰的变量值不会被持久化和恢复。transient只能修饰变量,不能修饰类和方法。
获取键盘输入常用的两种方法
方法1:通过Scanner
Scanner input = new Scanner(System.in);
String s = input.nextLine();
方法2:通过BufferedReader
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String s = input.readLine();
十三、JavaSE-IO体系相关推荐
- JavaSE IO流 Vol.2 节点流 - 输入流 入门
JavaSE IO流 Vol.2 节点流 - 输入流 入门 1. 前言 2. 节点流 - 输入流 结构体系 3. 节点流 - 输入流 ● InputStream · FileInputStream ● ...
- c++ 类数组_输入输出流IO体系及常用类关系结构(精要收藏)
1.IO体系 Java IO 体系看起来类很多,感觉很复杂,但其实是 IO 涉及的因素太多了.在设计 IO 相关的类时,编写者也不是从同一个方面考虑的,所以会给人一种很乱的感觉,并且还有设计模式的使用 ...
- linux read函数_浅谈Linux内核IO体系之磁盘IO
前言 Linux I/O体系是Linux内核的重要组成部分,主要包含网络IO.磁盘IO等.基本所有的技术栈都需要与IO打交道,分布式存储系统更是如此.本文主要简单分析一下磁盘IO,看看一个IO请求从发 ...
- Linux IO体系、零拷贝和虚拟内存关系的重新思考
目录 1. 关系梳理 2. 我们先看虚拟内存到底解决什么问题? 3. Linux IO体系重点解决什么问题? 4. 零拷贝重点解决什么问题? 4.1 为什么会谈零拷贝? 4.2 传统IO方式有什么问题 ...
- java+io体系结构图_Java IO 体系结构
Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点: 1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是 ...
- JavaSE——IO流
字符集/编码表 概念: 字符集其实就是我们之前说的编码表. 编码表的作用: 计算机在存储数据的时候会用到他. 比如:计算机要存储小写的a,会到ASCII码表中,查询到小写的a对应的数字是9 ...
- IT职场人生系列之二十三:知识体系(专家与杂家)
这是IT职场人生系列的第二十三篇.(序言,专栏目录) 专家与杂家 专家与杂家之争由来已久. 挺专家者说:只有专一,才能学透学精:那些泛泛之辈,只能学到些皮毛,终究不能有所成就. 挺杂家者说:只有广泛, ...
- .net中的IO体系介绍
.net中对于IO流的支持分为两个层次:基于字节和基于字符两种方式. 基于字节的方式: 基于字节的方式适用于任何场合,因为任何文件的数据都是基于字节的方式有序存放的.基于字节的方式适用于操作二进制文件 ...
- Java IO 体系(三):Reader与Writer
正文 本篇讲述的是Java IO中的Reader类和Writer类.跟之前讲述的InputStream和OutputStream一样为IO流中的抽象父类之一,不过Reader和Writer的操作对象不 ...
- Java IO 体系(二): inputstream与outputstream
Java中文件数据流操作有2个大类:OutputStream/InputStream接口 和 FileWriter/FileReader类 1. OutputStream接口:所有字节输出流的超类 包 ...
最新文章
- 深度学习运行python文件,出现跨路径搜索其他module,怎么解决?
- 社团发现算法-BGLL算法(附代码实现)
- 全球首个AI女主播上岗了!太惊艳了!
- 创新实训个人记录:metric k-center
- 对集合变量定义赋值_SpringBoot配置加载原理(自定义加载配置)
- 7-2 页面置换算法--LRU (50 分)
- 璀璨智行:V2X车路协同智慧交通
- 市值突破3000亿,Fortinet发布2021Q2财报
- “王炸”来了?苹果下一代Mac Pro将搭载两颗M1 Ultra芯片
- 一款强大的cisco模拟配置、拓扑制作工具
- 漫画:什么是 “模因” ?
- 每天一记 10.03.26
- mysql 可视化界面操作指令
- python 部署模型,关于python:机器学习模型python在线服务部署的两种实例
- sap apo 生产排程软件的架构和设计分析
- ANSYS静力学分析的主要操作步骤
- android开发 节省流量,流量节省程序模式 | Android 开源项目 | Android Open Source Project...
- 2018公众号电商标准版功能解读
- 笔记本连接html后分成两个屏,一台电脑两个显示器是如何来实现 一台电脑两个显示器连接方法...
- 公众号“机器修行”开篇·致读者
热门文章
- 打印端口用计算机名,打印机端口名改不了怎么解决 如何解决打印机端口名改不了问题...
- 牛客网wannafly挑战赛13-D(贪心)
- 一元域名真假?一元域名注册有哪些风险?
- 2019第四届新媒体千人峰会广州站将于6月正式开幕!
- 【Small Problem In Work】windows10ppt打印不留白边和加边框
- C#异常处理try catch
- 6. 50万行取10万行
- PowerPC PPC460-S MMU(六 Shadow TLB)
- 深入了解服务注册与发现
- QoE是什么?QoE对视频流供应商的重要性