第29次(IO流)
学习主题:IO流
学习目标:
1 掌握序列化和反序列化
2 掌握装饰器模式
对应视频:
http://www.itbaizhan.cn/course/id/85.html
对应文档:
无
对应作业
1. 对象流
(1) 为什么需要序列化?
答:当两个进程远程通信时,彼此发送的各种类型的数据都会以二进制的形势在网络上传送,需要进行将java对象转换为字节数列,才能进行网上传送。反之,需要把字节数列恢复为java对象才能正常读取。
(2) 对象的序列化有哪些条件?
答:1:类要实现Serializable接口
2:serialize和deserialize程序要保证package一致
3:serialVersionUID要一致
2. 序列化和反列序列化
(1) 简述序列化与反序列化的内容?
答:把java对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为java对象的过程称为对象的反序列化。
(2) 对象序列化的注意事项有哪些?
答:只有实现了Serializable接口的类的对象才能被序列化。
Serializable接口是一个空接口,只起到标记作用。
Static属性不参与序列化
对象中的某些属性如果不想序列化,不能使用static,而是使用transient修饰。
3. 文件夹的复制
(1) 文件夹的复制会使用到哪些流?
答:FileInputStream;FileOutputStream;
缓冲流:BufferedInputStream/BufferedOutputStream
(2) 简述文件夹复制的过程?
答:找到数据源-->初始化两个对象(文件夹)-->读取被复制文件夹-->创建写入新对象(文件夹)-->传入数据-->刷新缓冲,抛出异常,关闭流-->创建完成
4. 字节数组流
(1) 字节数组流的作用?
答:将内存中的某个“字节数组对象”作为数据源,提高空间利用率,压缩内容,在网络传输时,能有效压缩传输数据的大小从而提高效率。
5. 设计模式_装饰器模式
(1) 什么是装饰设计模式?举例描述
答:例如在手机上通过加装组件实现原有手机功能的扩展。
(2) 装饰模式的实现细节及优缺点?
答:在一个原有的方法上加上功能更强的方法并实现。
优点:1:轻松地扩展原有的功能,又防止了类的爆炸式增长。
2:可以通过使用不同的具体装饰类以及装饰类的排列组合创造出更多不同行为的组合。
缺点:1:使用装饰模式会产生比使用继承关系更多的对象,会使纠察错误变得困难。
第30次(IO流总结和线程初步)
学习主题:IO流总结和线程初步
学习目标:
1 掌握IO流的使用
2 掌握IOUtils和 FileUtils工具类的使用
3 掌握线程初步知识
对应视频:
http://www.itbaizhan.cn/course/id/85.html
对应作业
6. IO体系总结
(1) 画出IO体系结构图
答:
(2) 请你例举出IO流中的处理流和节点流?
答:
节点流:(1):字符流:FileReader;FileWriter;CharArrayReader;CharArrayWriter
StringReader;StringWriter;PipedReader;PipedWriter
(2):字节流:FileInputStream;FileOutputStream;ByteArrayInputStream
ByteArrayOutputStream;PipedInputStream;PipedOutStream
处理流:(1):字符流:BufferedReader;BufferedWriter;FilterReader;
FilterWriter;InputStreamReader;OutputStreamWriter;LineNumberReader; PusbackReader;PrintWriter
(2):字节流:BufferedInputStream;BufferedOutputStream;FilterInputStream
FliterOutputStream;ObjectInputStream;ObjectOutputStream;
DataInputStream;DataOutputStream;LineNumberInputStream;
PushbackInputStream`;PrintStream
7. Apache IOUtils的使用_Apache FileUtils的使用
(1) Commons IO的的作用是什么?
答:提供了IOUtils/FileUtils,可以非常方便的对文件和目录进行操作
(2) IOUtils和FileUtils中有哪些常用的方法?分别代表什么意思?
答:IOUtils常用方法:
Buffer:将传入的流进行包装,变成缓冲流。并可以通过参数指定缓冲大小。
closeQueitly:关闭流 。
contentEquals:比较两个流中的内容是否一致。
copy:将输入流中的内容拷贝到输出流中,并可以指定字符编码。
copyLarge:将输入流中的内容拷贝到输出流中,适合大于2G内容的拷贝。
linelterator:返回可以迭代每一行内容的迭代器。
read:将输入流中的部分内容读入到字节数组中。
readLine:读入输入流内容中的一行。
toBufferedInputStream,toBufferedReader:将输入转为带缓存的输入流。
toByteArray,toCharArray:将输入流的内容转为字节数组,字符数组。
toString:将输入流或数组中的内容转化为字符串。
write:向流里面写入内容。
writeLine:向流里面写入一行内容
FileUtils常用方法:
cleanDirectory:清空目录,但不删除目录。
contentEquals:比较两个文件的内容是否相同。
copyDirectory:将一个目录内容拷贝到另一个目录。可以通过FilesFilter过滤需要 拷贝的文件。
copyFile:每一个文件拷贝到一个新的地址。
copyFileToDirectory:将一个文件拷贝到某个目录下。
copyInputStreamToFile:将一个输入流中的内容拷贝到某个文件。
deleteDirectory:删除目录。
deleteQuiety:删除文件。
listFiles:列出指定目录下的所有文件。
openInputStream:打开指定文件的输入流。
readFileToString:将文件内容作为字符串返回
readLines:将文件内容按行返回到一个字符串数组中
size:返回文件或目录的大小。
write:将字符串内容直接写到文件中
writeByteArrayToFile:将字节数组内容写到文件中
writeLines:将容器中的元素的toString方法返回的内容依次写入文件中。
writeStringToFile:将字符串内容写到文件中。
8. 多线程基本概念_程序_进程_线程
(1) 什么是程序、进程和线程?
答:程序:一个静态的概念,一般对应于操作系统中的一个可执行文件。
进程:一个执行中的程序。
线程:进程中的任务线
(2) 进程与线程之间区别?
答:进程是可以独立存在的。线程必须依托进程才能存在
一个进程中可以有多个并行的线程
进程是资源分配的单位,线程是调度和执行的单位。
系统会为每个进程分配不同的内存区域,但是不会为线程分配内存。
9. 通过继承Thread类实现多线程
(1) 简述通过继承Thread类实现多线程的步骤?
答:1:通过创建Thread的实例创建新的线程
2:通过调用Thread类的start()方法来启动一个线程
(2) 继承Thread类实现多线程的缺点是什么?
答:无法再继承其他类
10. 通过实现接口Runnable实现多线程
(1) 简述使用Runnable接口实现多线程的步骤?
答:1,:实现Runnable接口
2:创建线程对象,把实现了Runnable接口的对象作为参数传入
3:启动线程
(2) 简述代理设计模式?
答:为其他对象提供一种代理以控制对这个对象的访问。
在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
11. 线程状态
(1) 线程有哪几种状态?
答:新建状态,就绪状态,运行状态,阻塞状态,死亡状态
(2) 请你画出线程的生命周期图
答: