• io流以及一些多线程的定义


      标准输入输出流

     标准输入流

    数据源是标准输入设备(键盘鼠标、触摸屏)输入设备。在java中用System.in 得到一个InputStream字节输入流

    标准输入流以字节流流入内存,如果在控制台中输入字符,字符以默认编码(win简体:gbk)编码成字节进入标准输入流。

     标准输出流(PrintStream)

    数据目的地是标准输出设备(显示器)输出设备。在java中用System.out得到一个PrintStream 输出流(字节打印流)。提供了更强大的

    print

    println

    打印方法用于打印各种数据类型。

     序列化

    内存中的对象永久保存到硬盘的过程称为对象序列化也叫做持久化。

    硬盘持久化的内存恢复的内存的过程称为对象反序列化。

    Serializable

    类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化,抛出异常

    Serializable接口没有方法或字段,仅用于标识可序列化的语义

    public class Student implements Serializable{

    }

     序列化对象

    ObjectOutputStream 继承于OutputStream,专门用于把对象序列化到本地。提供

    writeXXX

    writeObject() 用于写入一个对象

    public static void main(String[] args) throws IOException {

    Student stu = new Student("001", "大狗", 20, Gender.);

    /**

     * 方案1:stu所有的属性,通过特定的字符串(-),把各个属性值连接起来

     *  001-大狗-20-

     */

    File file = new File("d:\javatest\l.txt");

    FileOutputStream out = new FileOutputStream(file);

    ObjectOutputStream oos = new ObjectOutputStream(out);

    oos.writeObject(stu);

    oos.close();

    out.close();

    }

     序列化对象

    ObjectInputStream 继承于InputStream ,专门用于把本地持久化内容反序列化到内存,提供了

    readXXX

    readObject() 用于读取一个序列化内容并返回一个对象。

    public static void main(String[] args) throws IOException, ClassNotFoundException {

    File file = new File("d:\javatest\l.txt");

    FileInputStream in = new FileInputStream(file);

    ObjectInputStream ois = new ObjectInputStream(in);

    Student student = (Student) ois.readObject();

    System.out.println(student.getId());

    System.out.println(student.getName());

    System.out.println(student.getAge());

    System.out.println(student.getGender());

    ois.close();

    in.close();

    }

     序列化版本

    序列化完成后,后期升级程序中的类(Student),此时再反序列化时会出现异常

    异常原因:序列化流的serialVersionUID和升级后类的版本不匹配。

    解决方案:Student类加序列化版本号有两种方式

    default serial version ID 生成默认的serial version ID 一般值都是1L

    generated serial version ID 根据当前类的属性、方法生成一个唯一ID

    DataInputStream/DataOutputStream

    DataOutputStream 继承OutputStream,专门用于把基本java数据类型写入输出流提供writeXXX 写入基本java数据类型

    DataInputStream 继承InputStream允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。

    DataInputStream/DataOutputStream 特别适合读取/写入在网络传输过程中的数据流。

    public static void main(String[] args) throws IOException {

    File file = new File("d:\javatest\n.txt");

    FileOutputStream out= new FileOutputStream(file);

    DataOutputStream dos = new DataOutputStream(out);

    dos.writeInt(10);

    dos.writeUTF("hello中国");

    dos.close();

    out.close();

    System.out.println("写入完成");

    }

    读取基本java数据类型

    public static void main(String[] args) throws IOException {

    File file = new File("d:\javatest\n.txt");

    FileInputStream in = new FileInputStream(file);

    DataInputStream dis = new DataInputStream(in);

    int a = dis.readInt();

    String str = dis.readUTF();

    System.out.println(a);

    System.out.println(str);

    }

    什么顺序写入基本java数据类型,就以什么顺序读取基本java数据类型。

    2多线程

     程序和进程

    程序就是一堆静态的代码,存储在硬盘上。程序如果不运行,本质就是一个文件。

    程序一次运行产生进程进程一直向前运行,直到进程结束。

     

  • 相关阅读:
    matlab 高阶(一) —— assignin与evalin
    OpenCV 图像白平衡算法(相机自动白平衡)
    matlab 警告(warning)、错误(error)、异常(exception)与断言(assert)
    matlab 警告(warning)、错误(error)、异常(exception)与断言(assert)
    OpenCV 图像清晰度评价(相机自动对焦)
    Matlab Tricks(二十五) —— 二维图像的 shuffle
    Matlab Tricks(二十五) —— 二维图像的 shuffle
    toolbox、library 的组织
    toolbox、library 的组织
    WinEdt && LaTex(三)—— 宏包
  • 原文地址:https://www.cnblogs.com/gflb/p/10828366.html
Copyright © 2020-2023  润新知