当前位置: 首页 > news >正文

IO流部分串讲

一、IO流的概念简析:

java将输入与输出比喻为"流",英文:Stream. 就像生活中的"电流","水流"一样,它是以同一个方向顺序移动的过程.只不过这里流动的是字节(2进制数据).所以在IO中有输入流和输出流之分,我们理解他们是连接程序与另一端的"管道",用于获取或发送数据到另一端.

Java I/O 这里的I和O指的是输入与输出

输入:Input 用来读取数据的

输出:Output 用来写出数据的

二、IO流常用类的分类:

2.1.分类方式1:按照读取数据到电脑内存和将电脑内存输出到内存之外,分为输入流和输出流

输入流: FileInputStream、 BufferedInputStream、 ObjectInputStream、InputStreamReader、 BufferedReader

输出流: FileOutputStream、BufferedoutputStream、 ObjectOutputStream、OutputStreamWriter、PrintWriter

2.2.分类方式2: 按照直接操作数据及间接操作数据的方式分为节点流和处理流或者低级流和高级流。 注: 处理流不能单独使用,需要封装一个节点流。

节点流/低级流: FileInputStream、FileOutputStream。

处理流/高级流: BufferedInputStream和BufferedoutputStream、 ObjectInputStream和ObjectOutputStream、InputStreamReader和OutputStreamWriter、 BufferedReader和PrintWriter

2.3.分类方式3: 按是否可以操作字符,分为字节流和字符流。

字节流: FileInputStream和FileOutputStream、 BufferedInputStream和BufferedoutputStream、 ObjectInputStream和ObjectOutputStream。

字符流: InputStreamReader和OutputStreamWriter、 BufferedReader和PrintWriter

三、API用法演示:

3.1.FileInputStream和FileOutputStream演示:


import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;/*** 注:因为FileInputStream和 FileOutputStream直接操作的是文件* 不能封装其他字节流,所以无法用FileInputStream和 FileOutputStream* 操作idea控制台数据*/
public class FIS_FOSTestDemo {public static void main(String[] args) throws Exception {//fisWriteTestMethod();fisReadTestMethod();}//true:表示追加写入private static void fisWriteTestMethod() throws Exception {//1.创建文件字节输出流对象,用于操作"剑来.txt"FileOutputStream fos=new FileOutputStream("剑来.txt",true);//2.将一段文字转为字节数组, 然后用fos的write()方法写出到txt文件byte[] bytes=("故事主人翁,现文圣关门弟子。出生在三十六小洞天之一的"+"骊珠洞天。父母皆姓陈,陈平安5岁时,\n有人让他父亲知道了小镇的"+"秘密,就打碎了陈平安的本命瓷").getBytes();fos.write(bytes,0,bytes.length);bytes=("父母因受反噬而双双离世,其父被人(马婆婆的儿子,马苦玄的父亲)"+"害死,\n其母病重而死。陈平安本命瓷被打碎后,宛如黑暗中的萤火,"+"小镇的机缘纷纷向他涌来,但却留不住\n").getBytes();fos.write(bytes,0,bytes.length);//3.关闭文件字节输出流对象fos.close();System.out.println("写出文字到txt文件完毕!!!");}private static void fisReadTestMethod() throws IOException {//long time1=System.currentTimeMillis();//1.创建文件字节输入流对象,用于操作"剑来.txt"FileInputStream fis=new FileInputStream("xz.txt");//2.用fis的read()方法将输入流的数据读到一个字节数组中int c=0;//因为要读取txt文件中的汉字所以需要字节数组存储,//再将字节数组中的数据转化为String字符串//(如果只是读取英文文字就不需要字节数组了)byte[] dataBuffer=new byte[1024];//因为要读取txt文件中的汉字所以需要字节数组存储,//再将字节数组中的数据转化为String字符串//(如果只是读取英文文字就不需要字节数组了)while( (c=fis.read(dataBuffer))  != -1){System.out.print( new String(dataBuffer, 0 ,c));}//3.关闭文件字节输入流对象//(如果只是读取英文文字就需要像下边的写法就可以了)/*FileInputStream fis=new FileInputStream("english.txt");int c=0;while( (c=fis.read())  != -1){System.out.print( (char)c);}*/fis.close();//long time2=System.currentTimeMillis();//System.out.println(time2-time1);}
}

3.2.BufferedInputStream和BufferedOutputStream演示:


import java.io.*;/*** 测试缓冲字节输入流,和缓冲字节输出流* 因为它们俩可以封装节点流,所以可以用来操作idea控制台数据*/
public class BOS_BOSTestDemo2 {public static void main(String[] args) throws Exception {//fisWriteTestMethod1();//fisWriteTestMethod2();//fisReadTestMethod1();//fisReadTestMethod1();fisReadTestMethod2();}/**1.测试将String字符串数据用缓冲字节输出流写出到txt文件*/private static void fisWriteTestMethod1() throws Exception {//true:表示追加写入//1.创建文件字节输出流对象,并将其封装在缓冲字节输出流中,用于操作"剑来.txt"FileOutputStream fos=new FileOutputStream("剑来.txt",true);BufferedOutputStream bos=new BufferedOutputStream(fos);//2.将一段文字转为字节数组, 然后用bos的write()方法写出到txt文件byte[] bytes=("故事主人翁,现文圣关门弟子。出生在三十六小洞天之一的骊珠洞天。父母皆姓陈," +"陈平安5岁时,\n有人让他父亲知道了小镇的秘密,就打碎了陈平安的本命瓷").getBytes();bos.write(bytes,0,bytes.length);bytes=("父母因受反噬而双双离世,其父被人(马婆婆的儿子,马苦玄的父亲)害死,\n其母病重而死。" +"陈平安本命瓷被打碎后,宛如黑暗中的萤火,小镇的机缘纷纷向他涌来,但却留不住\n").getBytes();bos.write(bytes,0,bytes.length);//注意:缓冲字节输出流中也有一个字节缓冲区,会先将bytes字节数组中的数据//暂存到缓冲字节输入流中的字节缓冲区, 填满缓冲区后再写出到txt文件中//(所以用BufferedOutputStream缓冲字节输入流比单纯用FileOutputStream的效率高// 类似于先将数据暂存到一个卡车中,然后拉走// <FileOutputStream相当于一次只拉一点点儿,不是一次拉一车>),//(如果用time2-tim1 再换一个更大的txt文件,就会发现BufferedOutputStream比FileOutputStream效率更高)//3.关闭缓冲字节输出流对象bos.close();System.out.println("写出文字到txt文件完毕!!!");}/**2.测试将String字符串数据用缓冲字节输出流写出到idea控制台*/private static void fisWriteTestMethod2() throws Exception {//true:表示追加写入//1.创建文件字节输出流对象,并将其封装在缓冲字节输出流中,用于操作"剑来.txt"BufferedOutputStream bos=new BufferedOutputStream(System.out);//2.将一段文字转为字节数组, 然后用bos的write()方法写出到txt文件byte[] bytes=("故事主人翁,现文圣关门弟子。出生在三十六小洞天之一的骊珠洞天。父母皆姓陈," +"陈平安5岁时,\n有人让他父亲知道了小镇的秘密,就打碎了陈平安的本命瓷").getBytes();bos.write(bytes,0,bytes.length);bytes=("父母因受反噬而双双离世,其父被人(马婆婆的儿子,马苦玄的父亲)害死,\n其母病重而死。" +"陈平安本命瓷被打碎后,宛如黑暗中的萤火,小镇的机缘纷纷向他涌来,但却留不住\n").getBytes();bos.write(bytes,0,bytes.length);//注意:缓冲字节输出流中也有一个字节缓冲区,会先将bytes字节数组中的数据//暂存到缓冲字节输入流中的字节缓冲区, 填满缓冲区后再写出到txt文件中//(所以用BufferedOutputStream缓冲字节输入流比单纯用FileOutputStream的效率高// 类似于先将数据暂存到一个卡车中,然后拉走// <FileOutputStream相当于一次只拉一点点儿,不是一次拉一车>),//(如果用time2-tim1 再换一个更大的txt文件,就会发现BufferedOutputStream比FileOutputStream效率更高)//3.关闭缓冲字节输出流对象bos.close();System.out.println("写出文字到txt文件完毕!!!");}/** 3.测试从txt文件中,读取String字符串数据并打印*/private static void fisReadTestMethod1() throws IOException {//long time1=System.currentTimeMillis();//1.创建文件字节输入流对象,然后将其封装在缓冲字节输入流对象中,用于操作"剑来.txt"FileInputStream fis=new FileInputStream("剑来.txt");BufferedInputStream bis=new BufferedInputStream(fis);//2.用bis的read()方法将输入流的数据读到一个字节数组中int c=0;//因为要读取txt文件中的汉字所以需要字节数组存储,//再将字节数组中的数据转化为String字符串//(如果只是读取英文文字就不需要字节数组了)//注意:缓冲字节输入流中也有一个字节缓冲区,会先将文件中的数据//读取到缓冲字节输入流中的字节缓冲区, 填满缓冲区后再挪到dataBuffer数组//(所以用BufferedInputStream缓冲字节输入流比单纯用FileInputStream的效率高// 类似于先将数据暂存到一个卡车中,然后拉走// <FileInputStream相当于一次只拉一点点儿,不是一次拉一车>),//(如果用time2-tim1 再换一个更大的txt文件,就会发现BufferedInputStream比FileInputStream效率更高)//外边的dataBuffer此时只起到为了积攒汉字字符串的作用(两个字节组成一个汉字)//如果txt文件全是英文,则就不需要dataBuffer数组byte[] dataBuffer=new byte[1024];while( (c=bis.read(dataBuffer))  != -1){System.out.print( new String(dataBuffer, 0 ,c));}bis.close();//long time2=System.currentTimeMillis();//System.out.println(time2-time1);}/**4.测试用缓冲字节输入流从idea控制台读取文字并打印* (从控制台输入一个 就立即用缓冲字节输入流读取这个信息并打印,* 因为没有关闭System.in控制台输入流所以可以无限输入并读取)* 因为bis.close()方法内不会关闭System.in控制台输入流,所以可以无限输入并读取*/private static void fisReadTestMethod2() throws IOException {//long time1=System.currentTimeMillis();//1.创建文件字节输入流对象,然后将其封装在缓冲字节输入流对象中,用于操作"剑来.txt"BufferedInputStream bis=new BufferedInputStream(System.in);//2.用bis的read()方法将输入流的数据读到一个字节数组中int c=0;byte[] dataBuffer=new byte[1024];while( (c=bis.read(dataBuffer))  != -1){System.out.print( new String(dataBuffer, 0 ,c));}bis.close();//long time2=System.currentTimeMillis();//System.out.println(time2-time1);}
}

3.3.BufferedReader和PrintWriter按行操作的字符流演示:


import java.io.*;/**测试BufferedReader的按行读取的方法readLine(), 和PrintWriter按行写的方法println()*/
public class BR_PW_TestDemo1 {public static void main(String[] args) throws Exception {writeLineTest();readLineTest();}/**1.缓冲字符输出流PrintWriter:  测试将电脑内存数据写出到电脑硬盘txt文件*/private static void writeLineTest() throws FileNotFoundException {/*FileOutputStream fos=new FileOutputStream("仙剑.txt");OutputStreamWriter osw=new OutputStreamWriter(fos);PrintWriter pw=new PrintWriter(osw);*/// A.PrintWriter创建对象时, 也可以调用具有一个参数且类型为Writer的构造方法来传入一个字符转换流// 注: 字符转换流创建时需要传入一个字节流对象//PrintWriter pw=new PrintWriter(new FileOutputStream("仙剑.txt"));// B.PrintWriter创建对象时, 也可以调用具有一个参数且类型为OutputStream的构造方法来传入一个字节输出流PrintWriter pw=new PrintWriter("仙剑.txt");// C.PrintWriter创建对象时, 可以调用具有一个String参数的构造方法可以直接指定文件名pw.println("仙剑1");pw.println("仙剑2");pw.println("仙剑3");System.out.println("向仙剑.txt文件写出数据完毕!!!!!!!!!!");pw.close();}/**2.缓冲字符输入流BufferedReader:  测试读取硬盘txt文件的数据到电脑内存*/private static void readLineTest() throws Exception {FileInputStream fis=new FileInputStream("剑来.txt");InputStreamReader isr=new InputStreamReader(fis);BufferedReader br=new BufferedReader(isr);// readLine(): 可以一次读一行文字String c="";while( (c=br.readLine())   !=  null){System.out.println(c);}br.close();}
}

3.4.BufferedReader和PrintWriter操作控制台的案例演示:


import java.io.*;/**测试BufferedReader的按行读取idea控制台数据的方法readLine(),和PrintWriter按行向idea控制台写数据的方法println()*/
public class BR_PW_TestDemo2 {public static void main(String[] args) throws Exception {//运行提示:要测试哪个方法就放开此方法(注释掉另一个方法)writeLineTest();//readLineTest();}/**1.缓冲字符输出流PrintWriter:* 测试将电脑内存数据用println()按行写出到idea控制台* System.out:代表向idea控制台输出数据的字节输出流*/private static void writeLineTest() throws FileNotFoundException {PrintStream out=System.out;//代表向idea控制台输出数据的输出流PrintWriter pw=new PrintWriter(out);//创建PrintWriter对象时可以调用具有一个参数且类型为//OutputStream的构造方法来传入一个字节输出流pw.println("仙剑1");pw.println("仙剑2");pw.println("仙剑3");pw.close();out.close();//关闭System.out控制台输出流(不会pw.close()方法中关闭System.out流)//不关闭的话本方法会一直运行(不会结束<System.out输出流一直占用cpu>)}//本方法的运行效果就是: 将三行文字输出到idea控制台/**2.缓冲字符输入流BufferedReader:* 测试读取idea控制台数据到电脑内存* System.in:代表从idea控制台读取数据的字节输入流*/private static void readLineTest() throws Exception {InputStreamReader isr=new InputStreamReader(System.in);BufferedReader br=new BufferedReader(isr);// readLine(): 可以一次读一行文字String c="";while( (c=br.readLine())   !=  null){System.out.println(c);}br.close();}//本方法的运行效果如下://你好 //用户输入//你好 //本行打印//程序读取上一行的数据并在本行打印//hello //用户输入//hello //本行打印//程序读取上一行的数据并在本行打印//离离原上草 //用户输入//离离原上草 //本行打印//程序读取上一行的数据并在本行打印
}

四、练习案例:

4.1.FileInputStream 和FileOutputStream 实现文件复制:

public static void main(String[] args)throws  Exception{//1.创建文件字节输入流对象,用于读取"剑来.txt"//创建文件字节输出流对象,用于将读取的数据写出到生成//的一个复制出来的"剑来_bak.txt"FileInputStream fis=new FileInputStream("剑来.txt");FileOutputStream fos=new FileOutputStream("剑来_bak.txt",true);//2.用文件字节输入流fis的read()方法将输入流的数据读到一个字节数组中//然后立即用文件字节输出流fos的write()方法将字节数组中的数据写出到bak文件int c=0;while( (c=fis.read())  != -1){fos.write(c);fos.flush();//刷新缓冲区,将缓冲区中的数据强制写出到bak文件}//3.关闭文件字节输入流对象和文件字节输出流对象fos.close();fis.close();
}

注: 因为FileInputStream 和FileOutputStream 必须直接封装一个String文件路径或者封装一个File对象, 所以不能操作idea控制台数据。

4.2.BufferedOutputStream和BufferedOutputStream实现文件复制及读取控制台数据并向控制台输出数据:

A.文件复制:

/**1.测试用缓冲字节输入流和缓冲字节输出流复制文件*/
private static void bos_bosCopyTestMethod1() throws Exception{//1.创建文件字节输入流对象,然后将其封装在缓冲字节输入流对象中,用于读取"剑来.txt"//创建文件字节输出流对象,并将其封装在缓冲字节输出流中,用于将读取的数据写出到生成//的一个复制出来的"剑来_bak.txt"FileInputStream fis=new FileInputStream("剑来.txt");BufferedInputStream bis=new BufferedInputStream(fis);FileOutputStream fos=new FileOutputStream("剑来_bak.txt",true);BufferedOutputStream bos=new BufferedOutputStream(fos);//2.用缓冲字节输入流bis的read()方法将输入流的数据读到一个字节数组中int c=0;while( (c=bis.read())  != -1){bos.write(c);bos.flush();//刷新缓冲区,将缓冲区中的数据强制写出到bak文件}//注意:缓冲字节输出流中也有一个字节缓冲区,会先将bytes字节数组中的数据//暂存到缓冲字节输入流中的字节缓冲区, 填满缓冲区后再写出到txt文件中//(所以用BufferedOutputStream缓冲字节输入流比单纯用FileOutputStream的效率高// 类似于先将数据暂存到一个卡车中,然后拉走// <FileOutputStream相当于一次只拉一点点儿,不是一次拉一车>),//(如果用time2-tim1 再换一个更大的txt文件,就会发现BufferedOutputStream比FileOutputStream效率更高)bos.close();bis.close();
}

B.读取控制台数据并将读取的数据输出:

/**2.测试用缓冲字节输入流读取idea控制台数据和缓冲字节输出流将读取的数据再写出到idea控制台*/
private static void bos_bosCmdOpeTestMethod2() throws Exception{//1.创建文件字节输入流对象,然后将其封装在缓冲字节输入流对象中,用于读取"剑来.txt"//创建文件字节输出流对象,并将其封装在缓冲字节输出流中,用于将读取的数据写出到生成//的一个复制出来的"剑来_bak.txt"BufferedInputStream bis=new BufferedInputStream(System.in);BufferedOutputStream bos=new BufferedOutputStream(System.out);//2.用缓冲字节输入流bis的read()方法将输入流的数据读到一个字节数组中int c=0;while( (c=bis.read())  != -1){bos.write(c);bos.flush();//刷新缓冲区,将缓冲区中的数据强制写出到bak文件}//注意:缓冲字节输出流中也有一个字节缓冲区,会先将bytes字节数组中的数据//暂存到缓冲字节输入流中的字节缓冲区, 填满缓冲区后再写出到txt文件中//(所以用BufferedOutputStream缓冲字节输入流比单纯用FileOutputStream的效率高// 类似于先将数据暂存到一个卡车中,然后拉走// <FileOutputStream相当于一次只拉一点点儿,不是一次拉一车>),//(如果用time2-tim1 再换一个更大的txt文件,就会发现BufferedOutputStream比FileOutputStream效率更高)bos.close();bis.close();
}

测试:

public static void main(String[] args) throws Exception {bos_bosCopyTestMethod1();bos_bosCmdOpeTestMethod2();
}

4.3.BufferedReader和PrintWriter按行进行文件复制及读取控制台数据并打印到控制台。

A.按行进行文件复制

/**1.一个BufferedReader和PrintWriter按行复制的案例*/
private static void BR_PWCopy_TestMethod1()throws Exception {//1.构建: 缓冲字符输入流和缓冲字符输出流对象FileInputStream fis=new FileInputStream("剑来.txt");InputStreamReader isr=new InputStreamReader(fis);BufferedReader br=new BufferedReader(isr);PrintWriter pw=new PrintWriter("剑来_bak.txt");//注:PrintWriter创建对象时, 可以调用具有一个String参数的构造方法可以直接指定文件名//2.用缓冲字符输入流的readLine()方法读取一行文字,//然后立即用缓冲字符输出流的println()方法写出本行文字到bak文件(实现复制),直到读完为止String strLine="";while( (strLine=br.readLine())   !=  null){pw.println(strLine);pw.flush();}//3.关闭缓冲字符输入流和缓冲字符输出流对象br.close();pw.close();
}

B.读取控制台数据并打印到控制台

/**2.测试用缓冲字符输入流的readLine()按行读取idea控制台数据* 并用缓冲字符输出流将读取的数据再写出到idea控制台*/
private static void BR_ReadCMD_PW_Print_TestMethod2()throws Exception{//1.构建: 缓冲字符输入流(操作idea控制台的数据)和//缓冲字符输出流对象(将数据写出到idea控制台)InputStreamReader isr=new InputStreamReader(System.in);BufferedReader br=new BufferedReader(isr);//System.in字节输入流: 用于读取idea控制台的数据//System.out字节输出流: 用于写出数据到idea控制台OutputStreamWriter osw=new OutputStreamWriter(System.out);PrintWriter pw=new PrintWriter(osw);//2.用缓冲字符输入流的readLine()方法读取一行文字,//然后立即用缓冲字符输出流的println()方法写出本行文字到控制台,直到读完为止String strLine="";while( (strLine=br.readLine())   !=  null){pw.println(strLine);pw.flush();}//3.关闭缓冲字符输入流和缓冲字符输出流对象br.close();pw.close();
}

测试:

public static void main(String[] args) throws Exception {BR_PWCopy_TestMethod1();BR_ReadCMD_PW_Print_TestMethod2();
}

相关文章:

IO流部分串讲

一、IO流的概念简析&#xff1a; java将输入与输出比喻为"流"&#xff0c;英文:Stream. 就像生活中的"电流","水流"一样,它是以同一个方向顺序移动的过程.只不过这里流动的是字节(2进制数据).所以在IO中有输入流和输出流之分,我们理解他们是连接…...

Excel——宏教程(2)

Excel——宏教程(2) 一)、处理单元格 1、直接赋值与引用 将变量、常量值直接赋给单元格、或将单元格的值直接赋给变量、常量&#xff0c;这是在excel中最简单的单元格赋值及引用方法。 如下例将工作表"Sheet1"A1单元格的值赋给Integer变量I&#xff0c;并将I1的值…...

unity 中 RectTransform 的常用几个属性

RectTransform rectTransform this.GetComponent<RectTransform>(); rectTransform this.transform as RectTransform; Vector3 vector1 rectTransform.position; //自身轴心点相对于锚点的位置&#xff08;编译器显示的pos&#xff09; …...

项目-摄像

树莓派摄像头使用方法 Camera教程 https://www.raspi.cc/index.php?cread&id53&page1 nanopc-t4 ​https://www.raspi.cc/index.php?cread&id53&page1 摄像头型号 Raspberry Pi Camera Rev 1.3 检测故障 dmesg | grep -i mipi piNanoPC-T4:~$ dmesg | …...

摄像机ISP和DSP的区别?

影像处理器是现代数字相机、手机等电子设备中极其重要的一部分&#xff0c;它能够对传感器采集的图像进行多种操作&#xff0c;从而得到更高质量的图像。常见的两种影像处理芯片有ISP&#xff08;Image Signal Processor&#xff09;和DSP&#xff08;Digital Signal Processor…...

Ubuntu24安装配置NDK

1、下载NDK 下载压缩包&#xff0c;下载地址如下&#xff0c;建议下载LTS支持版本。 https://developer.android.google.cn/ndk/downloads?hlcs 2、解压缩 将NDK解压到指定文件夹。如&#xff1a;/opt 或者先解压&#xff0c;再移动到指定目录下。 3、配置环境变量 找到…...

【Next】中间件

概述 Next.js 的 中间件 (Middleware) 是一种在请求完成之前运行的函数&#xff0c;用于对入站请求进行处理和操作。它可以在路由匹配前执行逻辑&#xff0c;用于身份验证、请求重写、重定向、设置响应头等任务。 使用场景 身份验证&#xff1a;在用户访问页面前检查登录状态…...

Vulnhub靶场案例渗透[11]- Momentum2

文章目录 一、靶场搭建1. 靶场描述2. 下载靶机环境3. 靶场搭建 二、渗透靶场1. 确定靶机IP2. 探测靶场开放端口及对应服务3. 扫描网络目录结构4. 代码审计5. 反弹shell6. 提权 一、靶场搭建 1. 靶场描述 - Difficulty : medium - Keywords : curl, bash, code reviewThis wor…...

STM32设计防丢防摔智能行李箱-分享

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着科技的不断发展&#xff0c;嵌入式系统、物联网技术、智能设备…...

Vue Mixin混入机制

在 Vue.js 中&#xff0c;Mixin&#xff08;混入&#xff09;是一种可复用代码的机制&#xff0c;用于在多个组件之间共享逻辑。通过混入&#xff0c;可以将通用功能提取到一个独立的文件中&#xff0c;然后在组件中引入并使用&#xff0c;而无需重复代码。 基本概念 Mixin 是…...

数据库类型建表

接着上次的数据库笔记&#xff1a; 初始数据库 &#xff08;是博主自己写的&#xff09; 1.数据库类型 1.1数值类型 数据类型大小说明对应JAVA类型BIT[(M)]M指定位数&#xff0c;默认值为1二进制数&#xff0c;M的范围从1—64&#xff0c;存储数值范围从0—2^M-1常用Bool…...

iOS 18 导航栏插入动画会导致背景短暂变白的解决

问题现象 在最新的 iOS 18 系统中,如果我们执行导航栏的插入动画,可能会造成导航栏背景短暂地变为白色: 如上图所示:我们分别向主视图和 Sheet 弹出视图的导航栏插入了消息,并应用了动画效果。可以看到,前者的导航栏背景会在消息插入那一霎那“变白”,而后者则没有任何…...

深度学习之人脸检测

在目标检测领域可以划分为了人脸检测与通用目标检测&#xff0c;往往人脸这方面会有专门的算法&#xff08;包括人脸检测、人脸识别、人脸其他属性的识别等等&#xff09;&#xff0c;并且和通用目标检测&#xff08;识别&#xff09;会有一定的差别&#xff0c;着主要来源于人…...

解决前后端发版本时候,手动清除浏览器缓存

在.html页面中添加标签 后端配置nginx,让index.html不缓存 location /index.html { add_header Cache-Control “no-cache, no-store”; }在vite.config.ts中添加 rollupOpyions: { output: { // 输出编译后的文件名称&#xff1a;【文件名称.时间戳】、【文件名称.版本号.…...

mysql8.4+mysql router读写分离

以下为容器环境内搭建 准备工作: 拉取镜像: 镜像版本mysql8.4container-registry.oracle.com/mysql/community-router8.4 下载mysql_shell mysql-shell-9.0.1-linux-glibc2.17-x86-64bit.tar.gz 下载地址: https://downloads.mysql.com/archives/shell/ 参考 这里对这篇文章…...

鸿蒙NEXT开发-用户通知服务的封装和文件下载通知

注意&#xff1a;博主有个鸿蒙专栏&#xff0c;里面从上到下有关于鸿蒙next的教学文档&#xff0c;大家感兴趣可以学习下 如果大家觉得博主文章写的好的话&#xff0c;可以点下关注&#xff0c;博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...

RHCE——系统的延迟任务及定时任务

延迟任务的发起 在系统中我们可以使用 at 命令来发起延迟任务 at 命令执行是调用的是 atd 服务&#xff0c;即使系统最小化安装 atd 也会被安装到系统中 at 任务信息存放在系统中 /var/spool/at 目录中 at 任务的日志文件被存放到 /var/log/cron 中 at 任务执行时如果遇…...

ForEach刷新UI机制

官网地址&#xff1a;ForEach 在ArkUI中&#xff0c;提供了ForEach循环语句&#xff0c;用来初始化一个列表数据&#xff0c;我们知道&#xff0c;当ForEach中的数组发生变化时&#xff0c;会引起UI的刷新&#xff0c;但是究竟如何变化&#xff0c;会引起UI怎样的刷新&#xf…...

机器学习(贝叶斯算法,决策树)

朴素贝叶斯分类 贝叶斯分类理论 假设现有两个数据集&#xff0c;分为两类 我们现在用p1(x,y)表示数据点(x,y)属于类别1(图中红色圆点表示的类别)的概率&#xff0c;用p2(x,y)表示数据点(x,y)属于类别2(图中蓝色三角形表示的类别)的概率&#xff0c;那么对于一个新数据点(x,y)…...

实验十三 生态安全评价

1 背景及目的 生态安全是生态系统完整性和健康性的整体反映&#xff0c;完整健康的生态系统具有调节气候净化污染、涵养水源、保持水土、防风固沙、减轻灾害、保护生物多样性等功能。维护生态安全对于人类生产、生活、健康及可持续发展至关重要。随着城市化进程的不断推进&…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...