`
maosheng
  • 浏览: 560222 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java IO 架构

    博客分类:
  • Java
IO 
阅读更多
主要两类:
    磁盘I/O
    网络I/O

基于字节操作的I/O接口:InputStream和OutputStream
基于字符操作的I/O接口:Writer和Reader
基于磁盘操作的I/O接口:File
基于网络操作的I/O接口:Socket

















字符解码相关类结构:





字符编码相关类结构:






Java序列化就是将一个对象转化成一串二进制表示的字节数组,通过保存或转移这些字节数据来达到持久化的目的。

需要序列化,对象必须继承java.io.Serializable接口。


Socket通信示例:





Java NIO 相关类图:





基于NIO的Socket请求处理过程:





Java I/O 工作机制:

读取和写入文件I/O操作都通用操作系统提供的接口,因为磁盘设备是由操作系统管理的,应用程序要访问物理设备只能通过系统调用的方式来工作。读和写分别对应read()和write()两个系统调用。而只要是系统调用就可能存在内核空间地址和用户空间地址切换的文件,这是操作系统为了保护系统本身的运行安全,而将内核程序运行使用的内存空间和用户程序运行的内存空间进行隔离造成的。但是这样虽然保证了内核程序运行的安全性,但是也必然存在数据可能需要从内核空间向用户空间复制的问题。

操作系统为了加速I/O的访问,在内核空间使用缓存机制,也就是将从磁盘读取的文件按照一定的组织方式进行缓存,如果用户程序访问的是同一段磁盘地址的空间数据,那么操作系统将从内核缓存中直接取出返回给用户程序,这样可以减少I/O的响应时间。

标准访问文件的方式:

当应用程序调用read()接口时,操作系统检查在内核的高速缓存中有没有需要的数据,如果已经缓存了,那么就直接从缓存中返回,如果没有,则从磁盘中读取,然后缓存再操作系统的缓存中。

当应用程序调用write()接口时,将数据从用户地址空间复制到内核地址空间的缓存中。这事对用户程序来说写操作就已经完成,至于什么时候再写到磁盘中由操作系统决定,除非显式地调用了sync同步命令。

提升磁盘I/O性能的方法:
1)增加缓存,减少磁盘访问次数
2)设计合理的磁盘存储数据块,以及访问这些数据块的策略

提升网络I/O性能的方法:
1)减少网络交互
2)减少网络传输数据量的大小
3)尽量减少编码


Java序列化:

Java序列化就是将一个对象转化成一串二进制表示的字节数组,通过保存或转移这些字节数据来达到持久化的目的。需要持久化,对象必须继承java.io.Serializable接口。

反序列化则是相反的过程,将这个字节数据再重新构造成对象。

(1)当父类继承了Serializable接口时,所有子类都可以被序列化。
(2)子类实现了Serializable接口,父类没有,父类中的属性不能被序列化(不报错,数据会丢失),但是在子类中的属性仍能正确序列化。
(3)如果序列化的属性是对象,则这个对象也应该实现Serializable接口,否则会报错。
(4)在反序列化时,如果对象的属性有修改或删减,则修改的部分属性会丢失,但不会报错。
(5)在反序列化时,如果serialVersionUID被修改,则反序列化时会失败。









  • 大小: 74.5 KB
  • 大小: 66.1 KB
  • 大小: 61.8 KB
  • 大小: 57.1 KB
  • 大小: 51 KB
  • 大小: 58.6 KB
  • 大小: 187.6 KB
  • 大小: 142.8 KB
  • 大小: 434.6 KB
分享到:
评论

相关推荐

    java IO 框架图

    详细描述了包java.io中类之间的继承关系

    JAVA后端架构师.pdf

    "JAVA后端架构师" JAVA后端架构师是指具有深入理解操作系统、网络、并发等技术底层知识的高级技术专家。他们能够熟练应对常见的并发编程问题,掌握至少一个常见中间件的源码,能够运用设计模式、OOA/D进行软件设计...

    图书管理系统(java IO操作)

    本系统采用三层架构设计,分别是表现层、业务逻辑层和数据访问层,其中表层控制台与底层的Java IO操作紧密结合,为用户提供便捷的操作界面和高效的数据存储功能。 首先,我们来了解一下三层架构。这种架构模式将...

    java jdk io包类详解

    ### Java JDK IO包类详解 #### 概述 Java平台提供的`io`包为开发者提供了访问文件系统、对象序列化等功能的基本输入输出能力。它主要包括字节流、字符流及对象流(字节流的包装类)。此外,还提供了一些基本的文件...

    java技术架构.doc

    Java技术架构涵盖了广泛的领域,包括编程基础、核心API、高级特性、图形编程、网络编程、开发环境以及特定的软件工程师技能。以下是对这些知识点的详细解释: 1. **Java 开发环境**: - **JDK**:Java Development...

    JAVA IO 输入输出流

    Java IO 输入输出流是Java平台基础架构的重要组成部分,它提供了处理数据输入和输出的能力,使得程序可以与外部设备(如硬盘、网络、内存等)进行数据交换。在Java中,一切皆为对象,因此IO流操作也被设计为面向对象...

    Java NIO与IO性能对比分析.pdf

    Java NIO(New IO,也称为Non-blocking IO)和传统的Java IO是Java编程语言中用于处理I/O操作的两种主要技术。随着互联网用户数量的激增,企业对应用程序的并发处理能力提出了更高的要求。为了解决传统Java IO模型在...

    Java 的 IO 类库的基本架构

    ### Java的IO类库基本架构详解 #### 一、引言 Java的I/O类库是程序员处理输入输出操作的基础工具。随着数据量的不断增长和技术的发展,Java也在不断优化其I/O处理能力,比如引入NIO(New I/O)等技术。本文将详细...

    Scalable IO in Java

    ### 可扩展IO在Java中的应用 #### 概述 本次演讲由著名的Doug Lea进行,主题为“可扩展IO在Java中的应用”。Doug Lea是纽约州立大学奥斯威戈分校的一名教授,同时也是Java并发包(java.util.concurrent)的主要...

    Java高级架构资料.zip

    还有线程管理、异常处理、反射机制、IO/NIO模型等内容,这些都是Java性能优化和问题排查的基础。 3. **设计模式**:Java高级架构资料中很可能涵盖了常见的设计模式,如单例、工厂、观察者、装饰器、适配器、代理等...

    Java高级架构师九个阶段

    随着基础知识的积累,进入第二阶段时,开发者需要深入学习Java的核心API,比如集合框架、异常处理机制、IO流操作、反射机制等。这些是构建复杂应用不可或缺的部分,同时也是提升代码质量和可维护性的关键所在。 ###...

    java流IO思维导图

    java流IO超详细使用,包含:怎么理解流,输出输入流,6个重要的方法,架构体系,分类,java做压缩程序的代码等等。。。。

    java jsp IO包 教程 新手入门

    本文旨在为新手提供一个全面的Java I/O教程,帮助读者理解Java I/O的基本概念、架构以及如何使用这些API。 #### 二、Java I/O概述 Java中的I/O系统设计得非常灵活且强大,它将所有类型的输入/输出抽象成“流”的...

    JAVA架构师进阶之路核心知识整理.pdf

    在Java架构师进阶之路上,需要掌握的核心知识点涵盖了编程基础、集合框架、JVM原理、并发编程、框架原理、微服务架构、网络编程以及分布式系统等多个方面。以下是详细的知识点概述: ### 基础知识 Java基础是架构师...

    JAVA架构知识库整理.pdf

    Java架构知识库整理是针对Java开发者以及学习者的全面资源指南。该文档内容涉及了Java虚拟机(JVM)的深入探讨、Java内存模型、垃圾回收机制、Java的引用类型、Java集合框架、Java I/O以及类加载机制等多方面知识点...

    00、Java互联网架构资料】.zip

    【标题】"00、Java互联网架构资料"所指的是一部关于Java在互联网领域的应用和架构设计的资源集合。这个压缩包可能包含了多种类型的文件,如PDF文档、PPT演示文稿、源代码示例等,旨在帮助学习者或开发者深入了解Java...

    2021java互联网架构师学习路线.pdf

    《2021 Java互联网架构师学习路线》 Java互联网架构师的学习路径涵盖了多个核心领域,旨在帮助开发者掌握构建高并发、高可用分布式系统的理论基础和技术底层支撑。以下是根据标题和描述提炼出的关键知识点: 一、...

    高级Java架构师培训 148节视频课-资料齐全

    根据提供的文件信息,我们可以归纳出一系列与“高级Java架构师培训148节视频课-资料齐全”相关的关键知识点。这些知识点将围绕Java语言的核心概念、高级架构设计原则以及成为优秀Java架构师所需掌握的技术栈进行展开...

    Scalable IO in Java.zip

    Scalable IO in Java是java.util.concurrent包的作者,大师Doug Lea关于分析与构建可伸缩的高性能IO服务的一篇经典文章,在文章中Doug Lea通过各个角度,循序渐进的梳理了服务开发中的相关问题,以及在解决问题的...

Global site tag (gtag.js) - Google Analytics