Java基础 -- I/O
2022/6/16 1:20:09
本文主要是介绍Java基础 -- I/O,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java基础 -- I/O
1. I/O流
流的分类
-
按流向分类:输入流,输出流
- 输入流:InputStream,Reader
- 输出流:OutputStream,Writer
-
按操作单位分类:字符流,字节流
-
按角色分类:节点流,处理流(装饰器模式)
*Q:音频、图片等信息存储单位均为字节,为什么还要引入字符流?
A: 涉及到字符的传送,若只有字节流,需要通过JVM转换,这个过程耗时;不知道编码类型,容易乱码
(字节:8位;字符:16位)
2. 序列化
-
什么是序列化,为什么要进行序列化?
- 对象存储在磁盘上,要求是转换为字节序列
- 对象通过网络传输,要转换成字节序列
- 怎么实现序列化?
对象想要序列化,类必须序列化,所以要求该类:
- 实现Serializable接口
- 实现Externalizable接口
-
不想序列化怎么办?
- transient修饰变量
- static修饰不会被序列化,因为不属于对象,属于类
3. 常见I/O模型
常见的I/O模型共有三种:
- BIO:Block IO,同步阻塞式IO
客户端有连接请求时,服务器就要启动一个线程处理
BIO适用于连接数目标小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中。
- NIO:java non-blocking IO,New IO,同步非阻塞IO
NIO的数据是面向缓冲区Buffer的,必须从Buffer中读取或者写入
服务器端用一个线程处理多个连接,客户端发送的连接请求会注册到多路复用器上,多路复用器轮询到连接有IO请求就进行处理。
- AIO:Asynchronous IO / NIO2,异步非阻塞IO
4. 参考资料
https://zhuanlan.zhihu.com/p/98094713
https://www.cnblogs.com/9dragon/p/10901448.html
https://zhuanlan.zhihu.com/p/90153833
https://blog.csdn.net/qq_19782019/article/details/80422143
https://zhuanlan.zhihu.com/p/23488863
https://blog.csdn.net/luzhensmart/article/details/82230076
这篇关于Java基础 -- I/O的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-04TiDB 资源管控的对撞测试以及最佳实践架构
- 2024-07-03万字长文聊聊Web3的组成架构
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现