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
- System.out.print(arr[i]+",");
- }
- }
- public void sort() {
- for(int i=1;i
- for(int k=0;k
- if(arr[k].big(arr[k+1])) {
- CharNum tmp=arr[k];
- arr[k]=arr[k+1];
- arr[k+1]=tmp;
- }
- }
- }
- }
-
-
-
-
- public void add(char ch) {
- int exists=indexOf(ch);
- if(exists>=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
- res[i]=arr[i];
- this.arr=res;
-
- }
- private int indexOf(char ch) {
- int pos=-1;
- for(int i=0;i
- CharNum cn=arr[i];
- if(cn.getCh()==ch) {
- pos=i;
- break;
- }
- }
- return pos;
- }
-
- }
-
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;
- }
-
- }
-
相关阅读:
SAP FICO银行账户余额查询表开发说明书(包括开发源代码、测试样例及FS)
因特网中的电子邮件系统(SMTP)
【JUC】ThreadPoolExecutor构造函数及拒绝策略
【初识 Docker | 基础篇】 Docker 镜像
通过S2B2C供应链电商平台网站解决方案,实现大宗商品万亿产业数字化转型
uniapp开发的微信小程序如何上传至微信小程序平台-完整简单步骤
SentinelResource注解详解
git提交错了?别慌,直接删除提交记录
线搜索方法
[SpringBoot系列]SpringBoot如何整合SSMP
-
原文地址:https://blog.csdn.net/zjh0101/article/details/126256256