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;
- }
-
- }
-
相关阅读:
GEE中核函数在不同缩放级别下的区别
MCAL系列介绍04-GPT
Android ThreadLocal
全网最牛,Pytest自动化测试框架-Fixture测试夹具详解(撸码实例)
兼容cc1101/cmt2300-DP4301 SUB-1G 无线收发芯片
DVWA(一)
HTML&CSS3
ATC‘22顶会论文RunD:高密高并发的轻量级 Serverless 安全容器运行时
中国香港学生IB高分是如何做到的?
H2数据库端口占用
-
原文地址:https://blog.csdn.net/zjh0101/article/details/126256256
-
最新文章
-
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU