【Java八股文总结】之IO流

news2025/7/12 7:33:18

文章目录

    • Java IO流
      • 一、IO基础知识
        • 1、字节流
        • 2、字符流
        • 3、字节缓冲流
        • 4、打印流
        • 5、随机访问流
        • 6、字节流和字符流的区别?
      • 二、IO设计模式
        • 1、装饰器模式
        • 2、适配器模式
          • Q:适配器模式和装饰器模式的区别?
        • 3、工厂模式
        • 4、观察者模式
      • 三、IO模型详解(★★★★★)
        • 1、什么是IO?
        • 2、常见的IO模型?
        • 3、Java中常见的3种IO模型
      • 三、序列化和反序列化
        • 1、什么是序列化?反序列化?
        • 2、如果不想进行序列化怎么办?
        • 3、使用到序列化和反序列化的场景?
        • 4、序列化协议对应TCP/IP 4层协议的哪一层?
        • 5、常见的序列化协议
        • 6、常见的序列化方式有?

Java IO流

一、IO基础知识

在这里插入图片描述
在这里插入图片描述

1、字节流

在这里插入图片描述
在这里插入图片描述

2、字符流

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、字节缓冲流

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、打印流

在这里插入图片描述

5、随机访问流

在这里插入图片描述

6、字节流和字符流的区别?

①读写的时候 字节流是按字节读写,字符流按字符读写
字节流适合所有类型文件的数据传输,因为计算机字节(Byte)是电脑中表示信息含义的最小单位。字符流只能够处理纯文本数据,其他类型数据不行,但是字符流处理文本要比字节流处理文本要方便。
③在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。
④只是读写文件,和文件内容无关时,一般选择字节流。

二、IO设计模式

1、装饰器模式

在这里插入图片描述

2、适配器模式

在这里插入图片描述

Q:适配器模式和装饰器模式的区别?

在这里插入图片描述

3、工厂模式

在这里插入图片描述

4、观察者模式

在这里插入图片描述
在这里插入图片描述

三、IO模型详解(★★★★★)

在这里插入图片描述
同步和异步描述的是针对当前执行线程、或进程而言,发起IO调用后,当前线程或进程是否挂起等待操作系统的IO执行完成。
我们说一个IO执行是 同步执行 的,意思是 程序发起IO调用,当前线程或进程需要等待操作系统完成IO工作并告知进程已经完成,线程或进程才能继续往下执行其他既定指令
如果说一个IO执行是 异步执行 的,意思是 该动作是由当前线程或进程请求发起,且当前线程或进程不必等待操作系统IO的执行完毕,可直接继续往下执行其他既定指令。操作系统完成IO后,当前线程或进程会得到操作系统的通知

1、什么是IO?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、常见的IO模型?

UNIX系统下,IO模型一共有5种:同步阻塞I/O、同步非阻塞I/O、I/O多路复用、信号驱动I/O和异步I/O。

3、Java中常见的3种IO模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、序列化和反序列化

1、什么是序列化?反序列化?

在这里插入图片描述

2、如果不想进行序列化怎么办?

在这里插入图片描述

3、使用到序列化和反序列化的场景?

在这里插入图片描述

4、序列化协议对应TCP/IP 4层协议的哪一层?

应用层。

5、常见的序列化协议

如Kryo、Protobuf、ProtoStuff、hessian等
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、常见的序列化方式有?

Java序列化方式有很多,常见的有3种:
在这里插入图片描述

  • Java 对象序列化: Java原生序列化方法即通过Java原生流(InputStream和OutputStream之间的转化)的方式进行转化,一般是对象输出流 ObjectOutputStream和对象输入流ObjectInputStream。
  • JSON序列化: 这个可能是我们最常用的序列化方式,JSON序列化的选择很多,一般会使用jackson包,通过ObjectMapper类来进行一些操作,比如将对象转化为byte数组或者将json串转化为对象。
  • ProtoBuff序列化: ProtocolBuffer是一种轻便高效的结构化数据存储格式,ProtoBuff序列化对象可以很大程度上将其压缩,可以大大减少数据传输大小,提高系统性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/17928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

柯桥留学日语培训机构有吗日本人平时都喝什么酒?

日本葡萄酒侍酒大师高野丰先生,带来一瓶在北海道发现的陈年白兰地。 那是2014年的事,高野先生去北海道十胜地区的一家葡萄酒厂考察,在一个多年未开启的葡萄酒储存库的角落里,发现了一只陈旧的酒桶,他很好奇地问酒厂的…

Javaweb filter过滤器 跟 listener监听器

Filter 权限控制:登录才能进数据库等 统一编码:统一各种编码 Filter快速入门 放行前,我们对request里的数据进行处理 处理完,然后放行,携带到对应的资源里去 放行后,对response的数据进行处理 //将re…

C/C++问题:一个指针的大小是多少?怎么理解指针变量的存在

目录 举例 一、 int a; int (*(*v)[])(); 二、 int func(); int (*func)(); 三、 const; int const a; const int a; int const*r; int *const r; 四、一个指针的大小是多少?(补充) 举例 一、 int a; 可以看到上面声明了一个变…

【MySQL基础】SQL语言的概述、组成及特点

目录 一、SQL的概述 二、SQL语言的组成 三、SQL语言的特点 语法特点: 💟 创作不易,不妨点赞💚评论❤️收藏💙一下 一、SQL的概述 SQL全称: Structured Query Language,是结构化查询语言&am…

数据结构先序序列创建二叉树

2022.11.19连发两回。 先序序列创建二叉树任务描述相关知识编程要求测试说明C/C代码任务描述 本关任务:利用先序遍历创建二叉树,并给出相应二叉树的中序遍历结果。 相关知识 为了完成本关任务,你需要掌握:1.二叉树的前序遍历&a…

win11系统下,迅雷启动后闪退的问题

win11系统,迅雷最新版本。 之前用迅雷一直好好的,某天要下东西突然发现点击就闪退,进程管理器里一点痕迹都没有。 启动就闪退,没有一点点痕迹。 因为之前是win10系统,一直用的好好的,考虑是不是win11系统…

创建自己数据集全套流程

目录 1、准备自己具有的数据集 2、标注数据----json格式 3、标注数据转为分割图----voc格式 4、增广数据集 5、分训练集以及验证集 1、准备自己具有的数据集 注意:数据集必须是统一的后缀格式,jpg或者png 2、标注数据----json格式 采用labelme标注…

前后端分离项目(vue+springboot)集成pageoffice实现在线编辑office文件

前后端分离项目下使用PageOffice原理图 集成步骤 前端 vue 项目 在您Vue项目的根目录下index.html中引用后端项目根目录下pageoffice.js文件。例如&#xff1a; <script type"text/javascript" src"http://localhost:8081/samples-springboot-back/pageof…

gom传奇引擎无限蜂功能插件安装图文教程

无限蜂功能插件安装教程 1. 百度搜索无限蜂官网,下载功能插件程序&#xff0c;请下载最新版&#xff01;2. 下载无限蜂功能插件&#xff0c;到桌面&#xff0c;并进行解压&#xff0c;如下图所示。 3. 打开无限蜂功能插件控制台(?.?.?)&#xff0c;进行账号注册。 4. 注册成…

InnoDB之Undo log格式

1. 前言 InnoDB有两大日志模块&#xff0c;分别是redo log和undo log。为了避免磁盘随机写&#xff0c;InnoDB设计了redo log&#xff0c;数据写入时只写缓冲页和redo log&#xff0c;脏页由后台线程异步刷盘&#xff0c;哪怕系统崩溃也能根据redo log恢复数据。但是我们漏了一…

STC51单片机32——液晶1602显示

//用LCD循环右移显示字符 //开发板上的跳帽连接Vcc #include<reg51.h> //包含单片机寄存器的头文件 #include<intrins.h> //包含_nop_()函数定义的头文件 sbit EP2^7; //使能信号位&#xff0c;将E位定义为P2.7引脚 sbit RSP2^6; //寄存器选择位&#…

Js逆向教程-09常见的加密方式

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; Js逆向教程-09常见的加密方式 常见的加密方式 一、js逆向流程 抓包调试扣去js改写本地运行 二、常见的加密方式 2.1取盐校验 不可…

【考研复试】计算机相关专业面试英语自我介绍范文(一)

文章目录前言&#xff1a;1.第一段&#xff1a;打招呼寒暄2.第二段&#xff1a;自我介绍3.第三段&#xff1a;为什么要读研4.第四段&#xff1a;个人优势5.第五段&#xff1a;立flag前言&#xff1a; 英语面试第一件事情就是让考生做自我介绍&#xff0c;考官可以借此机会了解…

图片编辑软件怎样加文字内容?图片添加文字方法大分享

大家平时在分享自己拍摄的照片时&#xff0c;有些时候会不会觉得照片有点单调&#xff0c;想在上面添加一些文字来装饰图片呢&#xff1f;又或者是在日常生活中&#xff0c;不小心拍到朋友的搞怪表情&#xff0c;这时候要是加上一些有趣的文字&#xff0c;就可以免费获得一个表…

Design A Twitter

title: Notes of System Design No.04 —Design a Twitter description: ’ Design a Twitter ’ date: 2022-05-14 09:50:32 tags: 系统设计 categories: 系统设计 00.What is Twitter 注&#xff1a;TimeLine 就是按照时间顺序显示的信息流 01. Functional Requirements 1…

特征工程(六)—(1)利用PCA进行特征转换

(1)鸢尾花数据集的手动处理 PCA利用了协方差矩阵的特征值分解 过程如下&#xff1a; (1)创建数据集的协方差矩阵 (2)计算协方差矩阵的特征值 (3)保留前K个特征值(按照特征值降序排列) (4)要保留的特征向量转换新的数据点 1、加载鸢尾花数据集 import matplotlib as mpl # 解…

js实现瀑布流

我们浏览网站的时候尤其是图片网站&#xff0c;我们会发现大大小小的图片&#xff0c;紧密的排列在一起&#xff0c;就像瀑布一样看着非常舒服&#xff0c;虽然css可以通过cloums来指定&#xff0c; 像我们这次的图片项目用的就是css实现的&#xff0c;最后布局是用grid布局写的…

【Spring(一)】如何获取对象(Bean)

目录 一、前言 二、Spring的下载 三、快速入门 四、IOC&#xff08;控制反转&#xff09; 五、创建XML配置文件 六、获取Bean   1. 按类型来获取Bean   2. 按id来获取Bean   3. 按idclass来获取Bean   4. 默认的一种特殊方式获取Bean   5. 有关id的一些说明 相关文章 Serv…

cpu设计和实现(流水线上的第一条指令)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 读书的时候&#xff0c;《计算机组成原理》也看了&#xff0c;《计算机体系结构》也学了&#xff0c;老师也给我们讲了各种各样的流水线知识&#…

Spring框架笔记

Spring51. 什么是Spring框架1.1 spring的特点2. IOC2.1 什么是IOC2.2. 基于xml的IOC2.2.1 创建对象2.2.2 给创建的对象赋值2.2.2.1 使用setter方法注入2.2.2.2 使用构造方法注入2.3 基于注解IOC2.3.1 创建对象的注解2.3.2 依赖注入的注解2.3.3 添加包扫描2.3.3.1 添加包扫描多种…