发表时间:2022-03-25来源:网络
http://www.itbaizhan.cn/course/id/85.html
对应作业
(1) 为什么需要序列化?
序列化以后的对象可以保存到磁盘上,也可以在网络上传输,使不同的计算机可以共享对象,(序列化的字节序列是与平台无关的)
(2) 对象的序列化的条件
只有实现了Serializable接口的类的对象才可以被序列化,Serializable接口中没有任何的方法,实现该接口的类不需要实现额外的方法。
(1) 简述序列化与反序列化的内容
1) 序列化能保存的元素
a) 只能保存对象的非静态成员变量b) 不能保存任何成员方法和静态的成员变量c) 不保存 transient 成员变量d) 如果一个对象的成员变量是一个对象,这个对象的成员变量也会保存e) 串行化保存的只是变量的值,对于变量的任何修饰符,都不能保存2) 使用对象流把一个对象写到文件时不仅保证该对象是序列化的,而且该对象的成员对象也必须是可序列化的。
3) 如果一个可序列化的对象包含对某个不可序列化的对象的引用,那么整个序列化操作将会失败,并且会抛出一个NotSerializableException。我们可以将这个引用标记为transient,那么对象仍然可以序列化。
(2) 对象序列化的注意事项
1) 同一个对象多次序列化的处理
a) 所有保存到磁盘中的对象都有一个序列化编号b) 序列化一个对象中,首先检查该对象是否已经序列化过c) 如果没有,进行序列化d) 如果已经序列化,将不再重新序列化,而是输出编号即可2) 如果不希望某些属性(敏感)序列化,或不希望出现递归序列
a) 为属性添加 transient 关键字(完成排除在序列化之外)b) 自定义序列化(不仅可以决定哪些属性不参与序列化,还可以定义属性具体如何序列化)3) 序列化版本不兼容
a) 修改了实例属性后,会影响版本号,从而导致反序列化不成功b) 解 决 方 案 : 为 Java 对 象 指 定 序 列 化 版 本 号 serialVersionUID(1) 文件夹的复制会使用到的流
BufferedInputStreamBufferedOutputStreamFileInputStreamFileOutputStream(2) 简述文件夹复制的过程
1、 复制一个文件2、 指定目录下的所有文件3、 指定目录下的所有文件及子目录下的所有文件4. 字节数组流(1) 字节数组流的作用
提供计算机之间的交互,交互方式就是字节数组流
(1) 装饰设计模式是一种用于代替继承的技术,无须通过继承增加子类就能扩展对象的新功能,使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。
职责:动态的为一个对象增加新的功能。




(2)列举出IO流中的处理流和节点流
节点流:FileInputStream、ByteArrayInputStream、FileOutputStream、ByteArrayOutStream、FileReader、FileWriter、
处理流:BufferInputStream、BufferOutputStream、BufferReader、BufferWriter、InputStreamReader、OutputStreamWriter、ObjectInputStream、ObjectOutputStream、DataInputStream、DataOutputStream、printStream、PrintWriter
(1) Commons IO的作用
Commons IO是一个开源的工具包,封装了IO操作的相关类,使用Commons IO可以很方便的读写文件。
(2) IOUtils和FileUtils中有哪些常用的方法?分别代表什么意思?
IOUtils的常用方法:
String IOUtils.toString(InputStream input)传入输入流对象返回字符串
FileUtils的常用方法:
(1)String FileUtils.readFileToString(File file,String encoding)读文件(2)String FileUtils.writeFileToFile(File file,String data,String encoding)写文件 (3)FileUtils.copyFile(File srcFile,File destFile)复制文件(4)FileUtils.copyURLToFile(URL source,File destination)复制url对象到指定文件(1) 程序:program,是一个指令的的集合
进程:process。(正在执行的程序)是一个静态的概念,进程是程序一次静态执行过程,占用特定的地址空间。每个进程都是独立的,有3部分组成CPU,data,code
线程:是进程中一个“单一的连续控制流程”/执行路径,又被称为轻量级进程
(2) 进程与线程之间区别
1、 一个进程可以拥有多个并行的线程2、 一个进程中的线程可以共享相同的内存单元/内存地址空间,可以访问相同的变量和对象,而且他们从一堆中分配对象,,,通信,数据交换,同步操作3、 由于线程间的通信是在同一地址空间上进行的,所以不需要额外的通信机制,这就使得通信更简便而且信息传递的速度也更快。(1) 简述通过继承Thread类实现多线程的步骤
1、 继承Thread类2、 重写run()方法3、 通过start()方法启动线程package cn.sxt.thread; public class MyThread2 extends Thread{ @Override public void run() { //线程体 for(int i=0;i(2) 继承Thread类实现多线程的缺点
Java中的类是单继承的,一旦继承了Thread类,就不允许再去继承其他的类
(1) 简述使用Runnable接口实现多线程的步骤
1、 编写类实现Runnable接口2、 实现run()方法3、 通过Thread类的start()方法启动线程public class MyRunnable implements Runnable{//具备了多线程操作的能力 @Override public void run() { for(int i=0;i(2) 简述代理设计模式
Thread 代理角色
MyRunnable真实角色
代理角色与真实角色实现共同的接口Runable接口
举个例子:
public interface Marry { //结婚的方法 void Marry(); } public class MarryCompany implements Marry{ //婚庆公司给准备结婚的人准备婚礼。。。。 private Marry m; public MarryCompany(Marry m) { this.m=m; } public void after(){ System.out.println("收拾东西........"); } public void before(){ System.out.println("婚礼前的准备工作......."); } @Override public void Marry() { this.before(); m.Marry();//调用真实角色的结婚的方法 this.after(); } } public class You implements Marry{// 真是角色 @Override public void Marry() { System.out.println("你与XXX结婚了"); } } public class TestMarry { public static void main(String[] args) { //创建真是角色对象 Marry y = new You(); //创建代理角色 Marry myc = new MarryCompany(y); myc.Marry(); } }
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14