Java IO流

2023-11-18

目录

一、认识Java的流

 二、使用字节流读写文本文件 

三、使用字符流读写文本文件

四、读写二进制文件

五、序列化和反序列化 

 六、总结


一、认识Java的流


(1)读文件是指把文件中的数据读取到内存中。
 
(2)写文件是把内存中的数据写到文件中。
 
(3)Java程序通过流来读写文件。
 
(4)流是指一连串流程的字符,是以先进先出的方式发送和接收数据的通道。
 
(5)流分为输入流和输出流,输入/输出流是相对于计算机内存来说的,如果数据输入到内存,则为输入流,如果从内存中输出则为输出流。

(6)Java的输出流主要有OutputStream类和Writer类作为基类,输入流主要由InputStream类和Reader类作为基类。
 
(7)在java.io包中,封装了许多输入/输出流的API,在程序中,这些输入/输出流类的对象称为流对象。
 
(8)可以通过流对象将内存中的数据以流的方式写入文件,也可以通过流对象将文件中的数据以流的方式读取到内存。
 
(9)构造流对象时往往会和数据源(如文件)联系起来。数据源分为源数据源和目标数据源。输入流关联的是源数据源;输出流关联的是目标数据源。
 
(10)输入/输出流又分为字节流和字符流两种形式
        字节流是8位通用字节流,其基本单位是字节。字节流的基类是InputStream类和OutputStream类,它们是抽象类。
        字符流是16位Unicode字符流,基本单位是Unicode字符。字符流最适合用来处理字符串和文本,因为它们支持国际上大多数的字符集和语言。字符流的基类是Reader类和Writer类,它们是抽象类。
(11)一个被访问的流基本特征都是通过实现InputStream类、OutputStream类、Reader类和Writer类这4个抽象类的方法建立的。
 
1) InputStream类 常用方法如下:
        InputStream类的常用子类有 FileInputStream ,用于从文件中读取数据。
2) OutputStream类 常用方法如下:
        OutputStream类的常用子类有 FileOutputStream ,用于向文件写数据。
3) Reader类 常用方法如下:
        Reader类的常用子类有 BufferedReader ,接受Reader对象作为参数,并对其添加字符缓冲器。

4) Write类 常用方法如下:
        Write类的常用子类有 BufferedWrite ,用于将数据缓冲到字符输出流。
(12)在操作上字节流和字符流还有一个区别,字符流在操作时使用了缓冲区(内部存储器),而字节流在操作时直接操作文件,不会使用缓冲区。
 
(13)流中的方法在出现错误时都会抛出IOException异常。

 
二、使用字节流读写文本文件 


1、使用字节流类FileInputStream读文本文件
        FileInputStream称为文件输入流,它是字节输入流InputStream抽象类的一个子类,它的作用是将文件中的数据输入到内部存储器(简称内存)中,可以利用它来读取文本文件中的数据,具体实现步骤如下:

(1)导入相关的类

        import java.io.IOException;

        import java.io.InputStream;

        import java.io.FileInputStream;

(2)构造一个文件输入流对象

        InputStream fileObject = new FileInputStream("text.txt");//此时的文件输入流对象fileObject就和源数据源(text.txt)关联起来。

(3)利用文件输入流类的方法读取文本文件中的数据

        fileObject.available();//可读取的字节

        fileObject.read();//读取文件的数据

(4)关闭文件输入流对象

        fileObject.close();

2、使用字节流类FileOutputStream写文本文件
        FileOutputStream称为文件输出流,它是字节输出流OutputStream抽象类的子类,它的作用是把内存中的数据输出到文件中,可以利用它把内存中的数据写入到文本文件中,具体实现步骤如下:

(1)导入相关的类

        import java.io.IOException;

        import java.io.OutputStream;

        import java.io.FileOutputStream;

(2)构造一个文件输出流对象

        OutputStream fos = new FileOutnputStream("text.txt");//此时的文件输出流对象fos就和目标数据源(text.txt)关联起来。

(3)利用文件输出流类的方法把数据写入到文本文件中。

        String str = "好好学习Java";

        byte[] words = str.getBytes();

        fos.write(words,0,words.length);//利用write方法将数据写入到文件中去

(4)关闭文件输入流对象

        fos.close();

package cn.bdqn.demo06;
 
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
 
public class OutputStreamWriterDemo01 {
 
    public static void main(String[] args) {
        
        OutputStream os=null;
        OutputStreamWriter osw =null;
        try {
            os = new FileOutputStream("F:/c.txt",true);
            osw = new OutputStreamWriter(os,"UTF-8");
            osw.write("abcdefg");
            //刷新流的缓冲
            osw.flush();
            System.out.println("文件写入完毕");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }        
    }
}

三、使用字符流读写文本文件


1、使用字符流类BufferedReader和FileReader读文本文件
        BufferedReader和FileReader两个类都是Reader抽象类的子类,它们可以通过字符流的方式读取文件,并使用缓冲区,提高了读文本文件的效率。读取文本文件的具体步骤如下:

(1)导入相关的类

        import java.io.FileReader;

        import java.io.BufferedReader;

        import java.io.IOException;

(2)构造一个BufferedReader对象

        FileReader fr = new FileReader("mytest.txt");

        BufferedReader br = new BufferedReader(fr);

(3)利用BufferedReader类的方法读取文本文件中的数据

        br.readLine();//读取一行数据,返回字符串

(4)关闭相关的流对象

        br.close();//后开的流先关

        fr.close();//先开的流后关

2、使用字符流类BufferedWrite和FileWrite写文本文件
        BufferedWrite和FileWrite都是字符输出流Write抽象类的子类,它们可以通过字符流的方式并通过缓冲区把数据写入文本文件,提高了写文本文件的效率。把数据写入文本文件的具体操作步骤如下:

(1)导入相关的类

        import java.io.FileWriter;

        import java.io.BufferedWriter;

        import java.io.IOException;

(2)构造一个BufferedWriter对象

        FileWriter fw = new FileWriter("mytest.txt");

        BufferedWriter bw = new BufferedWriter(fw);

(3)利用BufferedWriter类的方法读取文本文件中的数据

        br.write("hello");//读取一行数据,返回字符串

(4)相关流对象的清空和关闭

        bw.flush();

        bw.close();//后开的流先关

        fw.close();//先开的流后关

package cn.bdqn.demo07;
 
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
 
public class BufferedWriterDemo01 {
 
    public static void main(String[] args) {
        
        Writer writer = null;
        BufferedWriter bw = null;
        try {
            writer = new FileWriter("F:/d.txt");
            bw = new BufferedWriter(writer);
            bw.write("abcd");
            bw.write("qwert");
            //插入一个换行符
            bw.newLine();
            bw.write("asdfg");
            bw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            try {
                bw.close();
                writer.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }        
    }
}

四、读写二进制文件


读写二进制文件常用的类有DataInputStream和DataOutputStream。

1、 使用字节流读二进制文件
        利用DataInputStream类读二进制文件,其实与利用FileInputStream类读文本文件及其相似,也要用到FileInputStream类关联二进制文件。具体操作步骤如下:

(1)导入相关的类

        import java.io.FileInputStream;

        import java.io.DataInputStream;

        import java.io.IOException;

(2)构造一个数据输入流对象

        FileInputStream fis = new FileInputStream("HelloWorld.class");

        DataInputStream dis = new DataInputStream(fis);

(3)利用数据输入流类的方法读取二进制文件中的数据

        dis.readInt();//读取出来的是整数

        dis.readByte();//读取出来的数据是Byte

(4)关闭数据输入流

        dis.close();//后开的流先关

        fis.close();//先开的流后关

2、 使用字节流写二进制文件
利用DataOutputStream类写二进制文件,其实与利用FileOutputStream类写文本文件及其相似,也要用到FileOutputStream类关联二进制文件。具体操作步骤如下:

(1)导入相关的类

        import java.io.FileOutputStream;

        import java.io.DataOutputStream;

        import java.io.IOException;

(2)构造一个数据输出流对象

        FileOutputStream fos = new FileOutputStream("temp.class");

        DataOutputStream dos = new DataOutputStream(fos);

(3)利用数据输出流类的方法把数据写入二进制文件

        dos.write(1); //把数据写入二进制文件

(4)关闭数据输入流

        dos.close();//后开的流先关

        fos.close();//先开的流后关

package cn.bdqn.demo07;
 
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
 
public class DataInputStreamAndDataOutputStreamDemo01 {
 
    public static void main(String[] args) {
        
        InputStream is = null;
        DataInputStream dis =null;
        OutputStream os = null;
        DataOutputStream dos =null;
        try {
            is = new FileInputStream("F:/guoqing.jpg");
            dis = new DataInputStream(is);
            
            os = new FileOutputStream("F:/qizi.jpg");
            dos  = new DataOutputStream(os);
            
            int num;
            while((num=dis.read())!=-1){
                dos.write(num);
            }
        
            System.out.println("ͼƬش׆Ϊҏ");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

五、序列化和反序列化 


1、认识序列化
(1)序列化是将对象的状态存储到特定存储介质中的过程,也就是将对象状态转换为可保持或可传输格式的过程。

(2)在序列化过程中,会将对象的公有成员、私有成员包括类名,转换为字节流,然后再把字节流写入数据,存储到存储介质中,这里说的存储介质通常指的是文件。

(3)使用序列话的意义在于将Java对象序列化后,可以将其转换为字节序列,这些字节序列可以被保存在磁盘上,也可以借助网络进行传输,同时序列化后的对象保存的是二进制状态,这样实现了平台无关性。即可以将在Windows操作系统中实现序列化的一个对象,传输到UNIX操作系统的机器上,再通过反序列化后得到相同对象,而无需担心数据因平台问题显示异常。

2、 序列化保存对象信息
(1)序列化介质允许将实现了序列化的Java对象转换为字节序列,这个过程需要借助于I/O流来实现。

(2)Java中只有实现了java.io.Serializable接口类的对象才能被序列化。

(3)Serializable表示可串行的、可序列化的,所以,对象序列化在某些文献上也称为串行化。

(4)JDK类库中有些类,如String类、包装类和Date类等都实现了Serializable接口。

(5)对象序列化的主要步骤如下所示:

        1)创建一个对象输出流(ObjectOutputStream),它可以包装一个其他类型的输出流,如文件输出流FileOutputStream。

        2)通过对象输出流的writeObject()方法写对象,也就是输出可序列化对象。

3、 反序列化获取对象信息
(1)反序列化,顾名思义就是与序列化相反,序列化是将对象的状态信息保存到存储介质中,反序列化则是从特定存储介质中读取数据并重新构建成对象的过程。

(2)通过反序列化,可以将存储在文件上的对象信息读取出来,然后重新构建为对象。这样不需要将文件上的信息一一读取、分析再组织为对象。

(3)反序列化的主要步骤如下所示:

        1)创建一个对象输入流(ObjectInputStream),它可以包装一个其他类型的输入流,如文件输入流FileInputStream。

        2)通过对象输入流的readObject()方法读取对象,该方法返回一个Object类型的对象,如果程序知道该Java对象的类型,则可以将该对象强制转换成其真实的类型。

(4)如果向文件中使用序列化机制写入多个对象,那么反序列化恢复对象时,必须按照写入的顺序读取。

(5)如果一个可序列化的类,有多个父类(包括直接父类或间接父类),则这些父类要么是可序列化的,要么有无参的构造器;否则会抛出异常。

(6)他通常,对象中的所有属性都会被序列化,但是对于一些比较敏感的信息,比如用户密码,一旦序列化后,人们完全可以通过读取文件或拦截网络传输数据的方式获得这些信息。因此,从安全考虑,某些属性应该限制被序列化,解决的办法是使用transient来修饰。

4、 对象引用的序列化
(1)如果一个类的成员包含其他类的对象,那么序列化这个类的对象时,也要保证该类中的引用类型的对象也是可以序列化的。即当需要序列化某个特定对象时,它的各个成员对象也必须是可序列化的。

(2)序列化的算法规则如下:

        1)所有保存到磁盘中的对象都有一个序列号。

        2)当程序视图序列化一个对象时,将会检查是否已经被序列化,只有序列化后的对象才能被转换成字节序列输出。

        3)如果对象已经被序列化,则程序直接输出一个序列化编号,而不再重新序列化。

 六、总结


1、InputStream类(抽象类)
1.1、FileInputStream类(InputStream类子类)
                FileInputStream(File file) 
                FileInputStream(String name) 


2、OutputStream类(抽象类)
2.1、FileOutputStream类(OutputStream类子类)
                FileOutputStream(File file) 
                FileOutputStream(File file, boolean append) 
                FileOutputStream(String name) 
                FileOutputStream(String name, boolean append) 
3、Reader类(抽象类)
3.1、InputStreamReader类(Reader类子类)
                InputStreamReader(InputStream in) 
                InputStreamReader(InputStream in, String charsetName) 
3.2、FileReader类(InputStreamReader类子类)
                FileReader(File file)
                FileReader(String fileName)
3.3、BufferedReader类(Reader类子类)
                BufferedReader(Reader in) 
4、Writer类(抽象类)
4.1、OutputStreamWriter类(Writer类子类)
                OutputStreamWriter(OutputStream out) 
                OutputStreamWriter(OutputStream out, String charsetName)
4.2、FileWriter类(OutputStreamWriter类子类)
                FileWriter(File file) 
                FileWriter(File file, boolean append) 
                FileWriter(String fileName) 
                FileWriter(String fileName, boolean append) 
4.3、BufferedWriter类(Writer类子类)
                BufferedWriter(Writer out) 
5、DataInputStream类(FilterInputStream类的子类)
6、DataOutputStream类(FilterOutputStream类的子类)
7、ObjectInputStream类(InputStream类子类)
        ObjectInputStream(InputStream in) 
8、ObjectOutputStream类(OutputStream类子类)
        ObjectOutputStream(OutputStream)    
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java IO流 的相关文章

  • string.split("(?!^)") 解释

    我正在尝试将字符串的字符拆分为字符串数组 我找到了解决方案here https stackoverflow com questions 5235401 split string into array of character strings
  • 相当于 java PBKDF2WithHmacSHA1 的 Python

    我的任务是构建一个 API 的使用者 该 API 需要带有 UNIX 时间种子值的加密令牌 我看到的示例是使用我不熟悉的 Java 实现的 在阅读文档和其他堆栈文章后一直无法找到解决方案 使用javax crypto SecretKey j
  • 使用起始字符串和结束字符串从长字符串中提取子字符串?

    我有这个长字符串 它是一个长的连续字符串 Home address H NO 12 SECTOR 12 GAUTAM BUDH NAGAR NOIDA 121212 UTTAR PRADESH INDIA 911112121212 Last
  • Java:等于和==

    让我们看看我们有 2 个对用户定义类实例的引用 即 Java 中的 a 和 b 会不会有一种情况 a b 但 a equals b 返回 false 当然 实施 equals 完全取决于班级 所以我可以写 class Foo public
  • JSF-2 应用程序中的服务器端计时器

    在我正在开发的 JSF 2 应用程序中 当用户执行操作时 我需要启动服务器端计时器 这个计时器必须与应用程序本身相关 因此它必须在用户会话关闭时继续存在 为了解决这个问题 我想使用 java util Timer 类在应用程序范围的 bea
  • 我从 String placeName = placeText.getText().toString(); 收到空指针异常

    您好 想从编辑文本中获取地名并在地图上标记 这是我的代码 其中出现空指针异常 请帮助我应该做什么以及哪里出错了 因为我从对话框中的编辑文本字段获取地名 View layout View inflate this R layout alert
  • 如何对 jar 文件资源使用 File.separator?

    我正在尝试读取位于 jar 文件中的属性文件 我想使用 File separator 因为应用程序将在多个平台上运行 我正在构建路径如下 jarFilePath jar file jarFile getAbsolutePath jarPro
  • 使用 SSL 和代理设置的 Rest 客户端获取连接超时

    我正在使用带有忽略 ssl 的 Rest 客户端 它工作正常 但在将来我尝试使用客户端证书进行的生产中将无法工作 我有 ca 证书和客户端证书 我用它创建了一个客户端 但我收到错误 Exception in thread main com
  • 在 Java 中生成 LaTeX 输出 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有用于从 Java 生成 LaTeX 输出的 Java 库 渲染乳胶 JLatex数学 https
  • 对象映射器 - YAMLFactory - 由于缺少 _createContentReference 方法而出现异常

    我正在使用最新的 2 13 0 版本的 jackson 当我尝试解析 YAML 文件时 出现此异常 java lang NoSuchMethodError com fasterxml jackson core io ContentRefer
  • 无法删除临时文件夹(有时)

    当我启动应用程序时 我创建一个临时文件夹 public static File createTempDir String name throws IOException File tempDir File createTempFile na
  • SwingUtilities.invokeLater

    我的问题与SwingUtilities invokeLater 我应该什么时候使用它 每次需要更新 GUI 组件时都必须使用吗 它到底有什么作用 是否有替代方案 因为它听起来不直观并且添加了看似不必要的代码 Do I have to use
  • @Transactional 注解属于哪里?

    如果您将 Transactional in the DAO类和 或其方法 或者注释使用 DAO 对象调用的服务类是否更好 或者注释两个 层 是否有意义 我认为事务属于服务层 它是了解工作单元和用例的人 如果您将多个 DAO 注入到需要在单个
  • java charAt() 和startsWith() 哪个更快? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我的问题是 如果我想检查特定索引中字符串的一个字符 仅检查一个字符 哪种方法非常有效charAt or startsWith 我的意思是 据我所
  • Java 9:AES-GCM 性能

    我进行了一个简单的测试来测量AES GCM https en wikipedia org wiki Galois Counter Mode表现在Java 9 通过在循环中加密字节缓冲区 结果有些令人困惑 本机 硬件 加速似乎有效 但并非总是
  • 可空日期列合并问题

    我在 Geronimo 应用程序服务器上使用 JPA 和下面的 openjpa 实现 我也在使用MySQL数据库 我在更新具有可为空 Date 属性的对象时遇到问题 当我尝试合并 Date 属性设置为 null 的实体时 不会生成 sql
  • Zookeeper 未启动,nohup 错误

    我已经下载了zookeeper 3 4 5 tar gz 解压后我将conf zoo cfg写为 tickTime 2000 dataDir var zookeeper clientPort 2181 现在我尝试通过 bin zkServe
  • java - 简单计算在多线程中比在单线程中花费更长的时间

    我试图了解如何利用多线程 我写了一个简单的程序来增加i 比方说 使用两种方式 400 000 次 单线程方式 0 到 400 000 和多线程方式 在我的例子中 4 次 0 到 100 000 线程数等于Runtime getRuntime
  • 在edittext android中插入imageview

    我想将 imageview 放在 edittext 中 可能吗 我检查了 evernote 应用程序 它能够将照片放在编辑文本部分 我想让我的应用程序完全相同 我如何才能将从图库中选择的图像视图放入编辑文本中 我首先尝试将 imagevie
  • ImageIO.read(...) - 非常慢,有更好的方法吗?

    我正在加载大量将在我的应用程序中使用的图标 我计划在服务器启动时从 jar 中加载所有这些 然而 由于数百张图像加起来刚刚超过 9MB 执行此任务仍然需要 30 秒多的时间 我现在正在一个单独的线程中执行此操作 但这让我想知道我是否在代码中

随机推荐

  • 对useReducer的理解

    useReducer是React提供的一个高级Hook 它不像useEffect useState useRef等必须hook一样 没有它我们也可以正常完成需求的开发 但useReducer可以使我们的代码具有更好的可读性 可维护性 可预测
  • Android通用流行框架大全,零基础入门学习android

    Picasso transformations 一个为Picasso提供多种图片变换的库 Glide transformations 一个为Glide提供多种图片变换的库 Android gpuimage 基于OpenGL的Android过
  • Jenkins持续集成项目实践 —— 基于Python Selenium自动化测试(二)

    上一篇讲了如何搭建jenkins 这篇主要讲 怎么将自动化代码与jenkins衔接起来 jenkins上运行的两种方式 第一种 在jenkins上面运行本地代码 操作如下 新建项目 项目名称根据自己项目情况填写并选择自由模式 进行配置根据如
  • LaTeX中插入matlab代码(可添加中文注释)的几种方法

    最近在用LaTeX写文件时 需要插入matlab代码 但是matlab代码编写时没有注意到注释为中文所带来的不便 导致在编写LaTeX文件时总是报错 经查阅网上有关这方面的资料和自己不断地尝试之后 总结其中的方法如下 使用matlab的mc
  • 【满分】【华为OD机试真题2023 JS】字母组合

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 字母组合 知识点回溯 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 每个数字对应多个字母 对应关系如下 0 a b c 1 d e f 2 g h i 3 j
  • Android MVP 详解(上)

    作者 李旺成 时间 2016年4月3日 Android MVP 详解 下 已经发布 欢迎大家提建议 MVP 在 Android 上的使用其实已经有挺长一段时间了 长到似乎有点 过时 了 目前风头正劲的是MVVM 那为什么现在还要讲 MVP
  • tf.nn.atrous_conv2d如何实现空洞卷积?

    转载自 https blog csdn net mao xiao feng article details 78003730 介绍 关于空洞卷积的理论可以查看以下链接 这里我们不详细讲理论 1 Long J Shelhamer E Darr
  • 业务实战中如何利用MySQL函数来解决

    随着我们业务越来越复杂的情况下 完全基于java后台来解决首先是很麻烦 而且性能带来降低 代码的可读性下降 这个时候就需要一些MySQL的函数来解决了 这篇文章对于常见的MySQL函数不予介绍 concat函数 使用方法 CONCAT st
  • Flink设置Source数据源使用kafka获取数据

    流处理说明 有边界的流bounded stream 批数据 无边界的流unbounded stream 真正的流数据 Source 基于集合 package com pzb source import org apache flink ap
  • I Hate It

    很多学校流行一种比较的习惯 老师们很喜欢询问 从某某到某某当中 分数最高的是多少 这让很多学生很反感 不管你喜不喜欢 现在需要你做的是 就是按照老师的要求 写一个程序 模拟老师的询问 当然 老师有时候需要更新某位同学的成绩 Input 本题
  • volatile和synchronized的区别

    共性 volatile与synchronized都用于保证多线程中数据的安全 区别 1 volatile修饰的变量 jvm每次都从主存 主内存 中读取 而不会从寄存器 工作内存 中读取 而synchronized则是锁住当前变量 同一时刻只
  • 第一次 openwrt源码下载编译

    openwrt 学习记录 第一次 openwrt源码下载编译 MT7620开发板 安装虚拟机VMware 安装Ubnutu 先进入root账户 topeet ubuntu su 输入密码 1 搭建编译环境 参考 https blog csd
  • maven的使用

    目录 一 maven基本参数 二 maven基础结构 三 mvn的打包和运行 一 maven基本参数 groupId 是指项目里面的标识 一般写法是com mycom myapp 其中mycom是指你公司的域名 例如com google m
  • YOLOv5+PaddleOCR手写签名识别

    YOLOv5 PaddleOCR手写签名识别 介绍 参加了一个中国移动的比赛 比赛的数据集是一个工单 上面有多个人的签名还有手写的时间 因为主办方不允许数据公开 所以在这一系列博客中 我主要讲一下实现的思路 在YOLO演示的时候我会用其他的
  • 查看linux服务器内存信息

    查看服务器内存信息 dmidecode grep P A5 Memory s Device grep Size root localhost home dmidecode grep P A5 Memory s Device grep Siz
  • 【leetcode刷题】--- 21.合并两个有序链表(C++递归)

    21 合并两个有序链表 原题链接 https leetcode cn com problems merge two sorted lists 题目 将两个升序链表合并为一个新的 升序 链表并返回 新链表是通过拼接给定的两个链表的所有节点组成
  • 关于ApplicationContext的getBean()方法发现

    假定 Son类实现father接口 在Son类定义声明式事务后 通过ApplicationContext接口的getBean Class arg0 方法获取注入好的bean会报异常 方法参数Son class Son已声明bean org
  • 18. 线性代数 - 线性变换

    文章目录 线性空间 线性变换 线性变换的几何意义 特征值与特征向量 NumPy的矩阵操作 Hi 你好 我是茶桁 经历了几节线性代数课程之后 终于咱们到了最后一节课了 本节课的内容说多不多 说少也不少 我们先是要理解一下线性空间和线性变换 并
  • uml之Robustness Diagram

    Robustness Diagram 从需求分析到架构设计 转载自 http www dotblogs com tw jed archive 2010 11 21 robustness diagram aspx 什么是Robustness
  • Java IO流

    目录 一 认识Java的流 二 使用字节流读写文本文件 三 使用字符流读写文本文件 四 读写二进制文件 五 序列化和反序列化 六 总结 一 认识Java的流 1 读文件是指把文件中的数据读取到内存中 2 写文件是把内存中的数据写到文件中 3