每天几道Java面试题:IO流(第五天)

2023-09-21 21:31:34


友情提醒

背面试题很枯燥,加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。

第五幕 、

第一场)街边

【衣衫褴褛老者,保洁阿姨,面试者老王】

衣衫褴褛老者:“可怜身上诺基亚,心忧Java Offer少”

老王:这位老人家有故事,“老人家,1.Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

衣衫褴褛老者:字节流,字符流两种类型流。字节流继承于InputStream、OutputStream,字符流继承于Reader、Writer。其它与IO操作相关的类都是派生至上述4个抽象类。如字节相关的:FileInputStream、FileOutputStream类;字符相关的:BufferedReader、BufferedWriter类
在这里插入图片描述
衣衫褴褛者:什么老人家,我今年才30,公司裁员,我又买了烂尾房才沦落到这个地步啊。

老王:竟然是前辈,赶紧请教一下:大哥,2.什么是序列化,如何实现序列化?请解释Serializable接口的作用。

衣衫褴褛者:你是把我当npc了嘛,一个问题接着一个问题。
①我们的对象不只是存储在内存中,序列化技术将java对象变成字节流的形式传出去转换成一串由二进制字节组成的数组,然后将这二进制数据保存在磁盘或传输网络。通过反序列化从一个字节流中恢复成一个java对象,达到对象持久化的目的。。
②jre本身就提供了这种支持,被传输的对象必须实现serializable接口该接口是一个标记接口,其中没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,这样javac编译时就会进行特殊处理,这样才可以被OutputStream的writeObject方法操作,这就是序列化。

老王:你懂的这么多,竟然也被裁了。那么3.java里面的io跟nio有什么区别

衣衫褴褛者:比不上年轻人啊
①Java NIO和IO之间第一个最大的区别是,IO是面向流的,NIO是面向缓冲区的,IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。
②Java IO的各种流是阻塞的。而Java NIO的是非阻塞模式 。阻塞式IO,每个连接必须要开一个线程来处理,不能使用线程池来处理,并且没处理完线程不能退出,在连接数不多的情况下,传统IO编写容易方便使用连接数较多将会出现资源不足的情况。 非阻塞式IO,可以利用线程池来处理。因为非阻塞IO处理连接是异步的。当某个连接发送请求到服务器,服务器把这个连接请求当作一个请求"事件",并把这个"事件"分配给相应的函数处理。我们可以把这个处理函数放到线程中去执行,执行完就把线程归还。这样一个线程就可以异步的处理多个 事件。
③选择器上,Java IO无选择器,而NIO有选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入,或者选择已准备写入的通道。这种选择机制,使得一个单独的线程很容易来管理多个通道。

老王:真复杂啊,看不懂,先背着吧。

衣衫褴褛者:“没关系呦,少年郎啊,年少不得之物终将困其一生,暮年浮光之景,又终会因一物一事而解终生之惑。将之瞬息点醒。”

更多推荐

人工智能AI 全栈体系(五)

第一章神经网络是如何实现的为什么使用ReLu函数?五、梯度消失问题1.什么是梯度消失问题?前面我们介绍的BP算法中,是这样更新权重值的:δ∗h=oh(1−oh)∑∗k∈后续(h)δ∗kw∗kh\delta*h=o_h(1-o_h)\sum*{k\in后续(h)}\delta*kw*{kh}δ∗h=oh​(1−oh​)∑

百度SEO优化不稳定的原因分析(提升网站排名的稳定性)

百度SEO优化不稳定介绍蘑菇号-www.mooogu.cnSEO不稳定是指网站在搜索引擎中的排名不稳定,随着时间的推移会发生变化。这种情况可能会出现在网站页面结构、内容质量、外链质量等方面存在缺陷或不合理之处。因此,优化SEO非常重要,可以提高网站的稳定性和排名。掌上帮教-www.zsbjiao.cn百度SEO不稳定因

Unity制作射击游戏案例01

整理逻辑思路://【业务逻辑】这个脚本用来1.控制物体移动旋转(WASD)、2.发射子弹(空格键)//【程序逻辑2】首先检测用户没有按下空格键2.如果按下呢执行发射子弹函数3.克隆子弹4.让克隆的子弹往前跑搭建场景为子弹模板添加刚体,并且限制旋转编写脚本:usingSystem.Collections;usingSys

MySQL 高级语句 Part1(进阶查询语句+MySQL数据库函数+连接查询)

高级语句第一部分一、MySQL进阶查询语句1.1select----显示表格中一个或数个字段的所有数据记录1.2distinct----不显示重复的数据记录1.3where----有条件查询1.4andor----且或1.5in----显示已知的值的数据记录1.6between----显示两个值范围内的数据记录1.7通

网络安全(黑客)自学

前言:作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。谈起黑客,可能各位都会想到:盗号,其实不尽然;黑客是一群喜爱研究技术的群体,在黑客圈中,一般分为三大圈:娱乐圈技术圈职业圈。娱乐圈:主要是初中生和高中生较多,玩网恋,人气,空间,建站收徒玩赚钱,技术高的也是有的,只是很少见。技术圈:这个圈

英伟达 nvidia 官方code llama在线使用

新一代编程语言模型CodeLlama面世:重新定义编程的未来随着人工智能和机器学习技术的迅速发展,我们现在迎来了一款革命性的大型编程语言模型——CodeLlama。该模型是基于Llama2研发的,为开放模型中的佼佼者,其性能达到了行业领先水平。模型特点与亮点CodeLlama系列提供多种型号,以满足不同应用的需求。包括

C#流Stream与IO详解(4)——如何更快的读写文件

【前言】在我们追求更快读写速度时,通常都是为了读写二进制文件,而不是文本文件,所以这里只说FileStream、BinaryReader、BinaryWriter的使用。从前文的源码解读中能看到使用BinaryReader和BinaryWriter进行IO读写时本质还是调用了FileStream的接口,所以我们这里只说

从追问AI到人机融合再到人机环境系统智能

人工智能与人类的多元价值对齐是一个复杂而重要的问题。虽然人工智能系统具有强大的计算和学习能力,但它们缺乏人类的情感、道德判断和伦理意识。然而,以下几个方面可以帮助实现人工智能与人类的多元价值对齐:(1)制定明确的伦理框架和规范,对人工智能系统的设计、开发和应用进行指导。这些框架和规范应考虑到人权、公平性、责任、隐私保护

中兴R5300 G4服务器iSAC管理员zteroot密码遗失的重置方法及IPV6地址启用设置

本文讲解中兴R5300G4服务器BMC带外iSAC管理员zteroot密码遗失,无法登录时如何对其进行密码重置,以及iSAC启用IPV6地址的方法。一、重置中兴R5300G4服务器iSAC管理员zteroot密码1、通过SSH登录到iSAC,默认用户名:sysadmin,密码:superuser,如有修改,请输入修改后

金属热处理 术语

声明本文是学习GB-T7232-2023金属热处理术语.而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们1范围本文件界定了金属热处理基础、热处理工艺、组织与性能和热处理装备的主要术语及其定义。本文件适用于金属热处理相关技术标准及技术文件。2规范性引用文件本文件没有规范性引用文件。3基础术语3.1总称

Java之stream流的详细解析一

2.Stream流2.1体验Stream流【理解】案例需求按照下面的要求完成集合的创建和遍历创建一个集合,存储多个字符串元素把集合中所有以"张"开头的元素存储到一个新的集合把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集合原始方式示例代码publicclassMyStream1{publicst

热文推荐