05JavaIO编程
文章
01 Java 标准IO
Java 标准IO Java 标准IO 1 概览 IO定义 虚拟内存 IO的分类 装饰者模式 2 字节操作 InputStream OutputStream 3 字符操作 编码与解码 String 的编码方式 字节字符流转换Reader 与 Writer 实现逐行输出文本文件的内容 Reader Writer 参考文献 1 概览 本篇文章的范围应该是涵盖java.io包中的所有类。 IO定义 该理解方式非常有价值。为什么IO的同步和异步如此重要?因为IO操作是整个调用链路上的性能瓶颈。普通的A函数调用B函数,为什么不采用异步操作呢,因为函数都是计算任务,都在内存完成。所以所有的操作都可以分为两种:计算操作(非IO操作,内存中即可完成)和IO操作(从其他设备中读取、写入数据)。计算操作是使用CPU的,IO操作过程中CPU线程是挂起的,等待中。函数、调用可以分为两种,正常调用和IO调用。 缓冲区以及如何处理缓冲区是所有I / O的基础。 术语“输入/输出”仅意味着将数据移入和移出缓冲区。 只要时刻牢记这一点即可。 通常,进程通过请求操作...
02 Java NIO
参考文献 java nio一篇博客 java nio并发编程网 NIO1 NIO概述新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的,弥补了原来的 I/O 的不足,提供了高速的、面向块的 I/O。 IO Stream 和 NIO Block。NIO将最耗时的IO活动(即填充和清空缓冲区)移回操作系统,从而极大地提高了速度。 阻塞 I/O(blocking I/O)是旧的输入/输出(old input/output,OIO)。被称为普通 I/O(plain I/O) 标准IO与NIO的区别一:流与块I/O 与 NIO 最重要的区别是数据打包和传输的方式,I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。 面向流的I / O系统一次处理一个或多个字节的数据。 输入流产生一个字节的数据,而输出流消耗一个字节的数据。为流数据创建过滤器非常容易。 将几个过滤器链接在一起也是相对简单的,这样每个过滤器都能发挥自己的作用,相当于一个单一的复杂处...
03 Java IO文件
File IO 0 File对象 File RandomAccessFile NIO:Files 1 列出:list BIO 2 复制:copy BIO NIO common-util 3 删除:delete NIO apache commons-io 4 创建create BIO:createNewFile BIO:FileOutputStream NIO 5 写入:wrirte&append BIO:BufferedWriter BIO:PrintWriter BIO:FileOutputStream BIO:DataOutputStream NIO:FileChannel NIO:Files静态方法 6 读取:read BIO:BufferedReader按行读 BIO:FileInputStream 读取字节 NIO:Files按行读 NIO:读取所有字节 commons-io 7 Properties 补充:静态内部类与懒汉式单例模式 8 Resource File 在spring中可以这样 10 读写utf8数据 11 ...
04 Java IO对象
对象操作基本操作序列化序列化就是将一个对象转换成字节序列,方便存储和传输。 序列化:ObjectOutputStream.writeObject() 反序列化:ObjectInputStream.readObject() 不会对静态变量进行序列化,因为序列化只是保存对象的状态,静态变量属于类的状态。 Serializable序列化的类需要实现 Serializable 接口,它只是一个标准,没有任何方法需要实现,但是如果不去实现它的话而进行序列化,会抛出异常。 123456789101112131415161718192021222324252627282930public static void main(String[] args) throws IOException, ClassNotFoundException { A a1 = new A(123, "abc"); String objectFile = "file/a1"; ObjectOutputStream objectOutputStrea...
05 Java IO网络
网络操作 https://blog.csdn.net/forezp/article/details/88414741 1 网络编程基础Java 中的网络支持: InetAddress:用于表示网络上的硬件资源,即 IP 地址; URL:统一资源定位符; Sockets:使用 TCP 协议实现网络通信; Datagram:使用 UDP 协议实现网络通信。 InetAddress没有公有的构造函数,只能通过静态方法来创建实例。 12InetAddress.getByName(String host);InetAddress.getByAddress(byte[] address); URL可以直接从 URL 中读取字节流数据。 1234567891011121314151617181920public static void main(String[] args) throws IOException { URL url = new URL("http://www.baidu.com"); /* 字节流 */ InputStre...
附录1:分布式计算
分布式计算的问答第一章 概论 分布计算的定义与挑战 分布计算系统的互连 分布式操作系统 计算机网络与中间件 分布式计算模式 什么是分布式系统? 分布式计算系统是由多个相互连接的计算机组成的一个整体,这些计算机在一组系统软件(分布式操作系统或中间件)环境下,合作执行一个共同的或不同的任务,最少依赖于集中的控制过程、数据和硬件。 ①包含多个通用资源部件(物理的或逻辑的),可以动态基础上被指定给予各个特定的任务; ②这些资源部件在物理上是分布的,并经过一个通信网相互作用; ③有一个高级操作系统,对各个分布的资源进行统一和整体的控制; ④系统对用户是透明的; ⑤所有的资源都必须高度自治地工作而又相互配合,系统内不存在层次控制。 分布式系统有哪些特点? 一组由网络互联的、自治的计算机和资源 资源为用户所共享 可以集中控制,也可以分布控制 计算机可以同构,也可以异构 分散的地理位置 分布式故障点 没有全局时钟 大多数情况下没有共享内存 分布式系统的特性? 开放性:通信标准与协议、通过接口、互操作性、可移植性、灵活组合 可扩展性:...
附录2:流的选择
如何选择流对象1)确定是数据源和数据目的(输入还是输出) 源:输入流 InputStream Reader 目的:输出流 OutputStream Writer 2)明确操作的数据对象是否是纯文本是:字符流Reader,Writer 否:字节流InputStream,OutputStream 3)明确具体的设备。是硬盘文件:File++: 读取:FileInputStream,, FileReader, 写入:FileOutputStream,FileWriter 是内存用数组 byte[]:ByteArrayInputStream, ByteArrayOutputStream 是char[]:CharArrayReader, CharArrayWriter 是String:StringBufferInputStream(已过时,因为其只能用于String的每个字符都是8位的字符串),StringReader, StringWriter 是网络用Socket流 是键盘:用System.in(是一个InputStream对象)读取,用System.out(是一个OutoutS...
附录3:IO、网络编程与web开发的关系
最近接触到的通信框架有点多,需要从头多学习一点 IO方式以下是IO方式。包括网络IO、文件IO等各种IO场景,不只是网络通信。说的是内存数据加载的方式,专注于一端。对应java中的java.io和java.nio两个包。 Java BIO 阻塞IO Java NIO-Netty 非阻塞IO Java AIO 异步IO 网络编程以下是网络通信框架。提供了客户端和服务端必须一一对应。无应用层协议,是传输层的封装。包括两端,每一端都通过IO模型加载和写入数据。 socket 是传统的端到端通信模型,最基本的网络通信框架。对端也必须是socket协议的服务端。其底层基于不同的JavaIO方式。 sofabolt 是alibaba的网络通信框架。对端也必须是sofabolt协议的服务端。 Netty 是开源的网络通信框架。 web开发以下三个是Http服务实现。技能够提供http协议的服务端,也能实现http协议的客户端。是有协议的。 JDK&Jetty&Netty,提供了不同的socket通信方式,可以自己实现http服务的客户端和服务端 apache Serv...












