1、BIO、NIO和AIO之间的区别
BIO即同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。
NIO即同步非阻塞,一个线程不断的轮询买个输入输出的状态改变,如果有状态发生了改变,则进行下一步的操作。
AIO即异步非阻塞I/O模型,无需一个线程去轮询所有的IO操作的状态改变,在相应的状态改变后,系统会通知对应的线程来处理。
2、深浅克隆的区别
1,浅克隆中,当对象被复制时只复制它本身和其中包含的值类型的成员变量,而引用类型的
成员对象并没有复制。
2,深克隆中,除了对象本身被复制外,对象所包含的所有成员变量也将复制
3、什么是序列化,如何实现Java序列化
Java序列化就是将一个对象转化为一个二进制表示的字节数组,通过保存或则转移这些二进制数组达到持久化的目的。
要实现序列化,需要实现java.io.Serializable接口
4、编码实现一个任意文件夹的拷贝
5.统计一个文件calcCharNum.txt中各个字符出现次数:A(8),B(16),C(10)...,a(12),b(10),c(3)....,括号内代表字符出现次数,要求按照出现次数从小到达排序输出。如果是回车符则按照空格符处理。
面向对象写法
App类
package com.zjh1;
import java.io.FileReader;
import java.io.Reader;
public class App {
public static void main(String[] args)throws Exception {
ArrayList list=new ArrayList();
try(Reader r=new FileReader("data/calcCharNum.txt")){
int kk=-1;
while(true){
kk=r.read();
if(kk==-1)
break;
if(kk=='r'||kk=='n'||kk=='t')
kk=' ';
list.add((char)kk);
}
list.sort();
list.show();
}
}
}
ArrayList类
package com.zjh1;
public class ArrayList {
private CharNum[] arr;
private int count;
public ArrayList() {
this(10);
}
public ArrayList(int length) {
arr = new CharNum[length];
}
public void show() {
for(int i=0;i=0) {
arr[exists].addNum();
}else {
arr[count++]=new CharNum(ch);
if(count>=arr.length)
resize();
}
}
private void resize() {
CharNum[] res=new CharNum[arr.length*3/2];
for(int i=0;i
CharNum类
package com.zjh1;
public class CharNum {
private char ch;
private int num;
public CharNum(char ch) {
this.ch=ch;
this.num=1;
}
@Override
public String toString() {
return ch+"("+num+")";
}
public char getCh() {
return ch;
}
public void addNum() {
this.num++;
}
public boolean big(CharNum charNum) {
boolean res=false;
if(this.num>charNum.num)
res=true;
else if(this.num==charNum.num) {
res=this.ch>charNum.ch;
}
return res;
}
}



