5月7号广州尚学堂部分笔记

标准输入流和标准输出流

标准输入流:源数据源是标准输入设备(键盘、鼠标、触摸屏、画板)等输入设备;以前外设比较少,基本就是键盘鼠标。通过标准输入设备输入到内存中的数据流

标准输出流:数据目的地是标准输出设备(一般来说是显示器,电脑啊手机啊手表啊,只要能显示东西的)等输出设备。简单来说,就是经过验算之后,把东西显示出来

System:

不能实例化,不能实例化等于方法都是静态方法,同时没有提供构造方法。不能new。在system类提供的设施中,有标准输入、标准输出流,对外部定义的属性和环境变量的访问,加载文件和库的方法,还有快速复制数组的一部分实用方法。

标准输入流:in

在java中用system.in得到一个字节输入流inputstream字节输入流。

从键盘输入一个字符的例子:

      InputStream in = System.in;

      int c = in.read();

      System.out.println((char)c);

从键盘输入一句话的例子:

  InputStream in = System.in;

  byte[] buf = new byte[1024];

  int len;

  len = in.read(buf);

  String ste = new String (buf,0,len);

  System.out.println(str);

  System.out.println();

标准输出流:out

在java中使用system.out得到一个printstream字节输出流(字节打印流)。提供了更强大的

print

println

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

Serializable:

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

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

序列化对象:

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

writeXXX

writeObject() 用于写入一个对象

反序列化对象:

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

readXXX

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

序列化版本:

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

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

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

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

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

开发过程中,如果想忽略某些字段不让其序列化时,可以使用transient修饰。

DataInputStream/DataOutputStream:

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

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

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

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

      多线程的概念:

程序和进程:

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

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

之前是单任务操作系统:一段时间只能运行一个程序或者任务,CPU利用率非常低

然后引进进程的概念:把程序中一次运行产生的进程(内存空间、资源、程序的执行堆栈)

进程作为操作系统分配资源的基本单位。

多任务操作系统:一台电脑就一个CPU,多个任务轮流使用CPU,从宏观上看,一段时间多个任务正在运行,从微观看,一个时间点只有一个任务在运行,就你用一下,马上转到下一个,然后马上再转下下一个,再下下下一个,很快的

CPU时间片:

多个进程通过CPU时间篇轮转实现多任务(进程)、把这种现象叫做并发操作

并行:多个CPU运行各自的进程

线程的引入是解决实时性问题

多线程实现:

Thread 类位于java.lang中,表示进程中的执行线程。实现多线程有两种方式

[1] 继承Thread

main线程和t1线程抢占CPU 执行。多线程在提高CPU利用率的同时,增加程序的复杂度。

[2]实现Runnable接口

你可能感兴趣的:(5月7号广州尚学堂部分笔记)