0809(027天 IO周考+IO模块大作业停车收费系统)
每日一狗(旺名)
大标题
1. IO周考
1、BIO、NIO和AIO之间的区别
BIO:数据的写入必须阻塞在一个线程内等待其完成(等水烧开)
BIO:一个线程不断的轮询每一个输入输出的状态改变,如果有状态发生了改变,则进行下一步的操作(时不时回来看一看水烧开没)
AIO:无锡一个线程轮询所有的IO操作的状态改变,在相应的状态改变后,系统会通知对应的线程来处理。(等水烧开了,水壶会通知我来处理)
2、深浅克隆的区别
- 深克隆:会生成一个完全独立于源对象的对象,互不向干涉
- 浅克隆:只会克隆一层数据,对于引用数据类型只会将其引用进行拷贝,两个对象公用通过一组引用数据类型
3、什么是序列化,如何实现Java序列化
- 通过某种方法将一个对象的存储区域转换成二进制流方便存储
- 实现
- 实现Serializable接口
- 可以对无法序列化的数据进行标记让其不参与序列化
ransient
- 可以对无法序列化的数据进行标记让其不参与序列化
- 实现Externalizable
- 需要实现一个序列化方法,一个反序列化方法以达到自定义序列化方法的目的
- 实现Serializable接口
4、编码实现一个任意文件夹的拷贝
package com.yang1;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
public class 文件拷贝 {
private static String sourcePath = "D:\\桌面\\20220808";
private static String targetPath = "D:\\桌面\\copy";
public static void main(String[] args) {
copyDir(new File(sourcePath));
}
public static void copyDir(File file) {
File targetFile = new File(file.getAbsolutePath().replace(sourcePath, targetPath));
if (file.exists()) {
if (file.isDirectory()) {
if (!targetFile.exists()) {
targetFile.mkdirs();
}
File[] fs = file.listFiles();
if (fs != null && fs.length > 0) {
for (File tmpF : fs)