当前位置: 首页 > 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;完整健康的生态系统具有调节气候净化污染、涵养水源、保持水土、防风固沙、减轻灾害、保护生物多样性等功能。维护生态安全对于人类生产、生活、健康及可持续发展至关重要。随着城市化进程的不断推进&…...

二级等保要求及设备有哪些?

《网络安全法》规定我国信息系统实际等级保护制度&#xff0c;不同等保等级要求不同&#xff1a; 二级等保&#xff08;指导保护级&#xff09;&#xff1a;等级保护对象受到破坏后&#xff0c;会对公民、法人和其他组织的合法权益产生严重损害&#xff0c;或者对社会秩序和公…...

无人机的动力系统节能——CKESC电调小课堂12

1.优化电机和螺旋桨配置 精准匹配&#xff1a;根据无人机的设计用途和负载要求&#xff0c;精确选择电机和螺旋桨。确保电机的功率、扭矩等参数与螺旋桨的尺寸、螺距等完美匹配。例如&#xff0c;对于轻型航拍无人机&#xff0c;选用功率合适的小尺寸电机搭配高效的小螺旋桨&a…...

人机打怪小游戏(非常人机)

按q攻击 按箭头进行控制 玩家是 怪是* 攻击是^ ​ ​ #include<bits/stdc.h> #include<Windows.h> #include<conio.h> #define fr(i,a,b) for(int ia;i<b;i) #define rd(a,b) rand()%(b-a1)a using namespace std; int x16,y21,dx[4]{-1,0,1,0},dy[4]{0,…...

SpringBoot 集成 Sharding-JDBC(一):数据分片

在深入探讨 Sharding-JDBC 之前&#xff0c;建议读者先了解数据库分库分表的基本概念和应用场景。如果您还没有阅读过相关的内容&#xff0c;可以先阅读我们之前的文章&#xff1a; 关系型数据库海量数据存储策略-CSDN博客 这篇文章将帮助您更好地理解分库分表的基本原理和实现…...

django-ninja 实现cors跨域请求

要在Django-Ninja项目中实现跨域&#xff08;CORS&#xff09;&#xff0c;你可以使用django-cors-headers库&#xff0c;这是一个专门用于处理跨域资源共享&#xff08;CORS&#xff09;问题的Django应用程序。以下是具体的步骤和配置&#xff1a; 安装依赖&#xff1a; 使用p…...

【论文阅读】InstructPix2Pix: Learning to Follow Image Editing Instructions

摘要&#xff1a; 提出了一种方法&#xff0c;用于教导生成模型根据人类编写的指令进行图像编辑&#xff1a;给定一张输入图像和一条书面指令&#xff0c;模型按照指令对图像进行编辑。 由于为此任务获取大规模训练数据非常困难&#xff0c;我们提出了一种生成配对数据集的方…...

常用在汽车PKE无钥匙进入系统的高度集成SOC芯片:CSM2433

CSM2433是一款集成2.4GHz频段发射器、125KHz接收器和8位RISC&#xff08;精简指令集&#xff09;MCU的SOC芯片&#xff0c;用在汽车PKE无钥匙进入系统里。 什么是汽车PKE无钥匙进入系统&#xff1f; 无钥匙进入系统具有无钥匙进入并且启动的功能&#xff0c;英文名称是PKE&…...

【第四课】rust声明式宏理解与实战

目录 前言 理解宏 实战宏 前言 上一课在介绍vector时&#xff0c;我们再一次提到了rust中的宏&#xff0c;在初始化vector时使用了vec!宏&#xff0c;当时补了一句有机会会好好说明一下rust中的宏&#xff0c;并且写一个hashmap宏来初始化hashmap。想了想一直介绍基本语法还…...

渗透测试--Linux下的文件传输方法

渗透测试过程中&#xff0c;我们经常会需要文件传输&#xff0c;本文主要探讨Linux主机上我们对文件传输的方法。 编码方式 Linux 检查MD5 md5sum id_rsa Linux Base64 编码/解码 编码 cat id_rsa |base64 -w 0;echo 解码 echo -n LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVE…...

浅议Flink中的通讯工具: Akka

在Flink中&#xff0c;各个组件之间需要频繁交换数据和控制信息。Flink选择了基于Actor模型的Akka框架作为通信基础。 Akka是什么 Actor模型 Actor模型是用于单个进程中并发的场景。 在Actor模型中&#xff1a; ActorSystem负责管理actor生命周期 将每个实体视为独立的 Ac…...

宜宾建设招标网站/网站建设多少钱

酷壳博主、亚马逊高级研发经理陈皓&#xff0c;作了《高并发互联网应用性能优化实践》&#xff0c;演讲中提出一个新的观点——节省资源&#xff0c;少用资源&#xff0c;你的程序可能会跑得更快。还解析扩展的三个方向和程序性能等精彩观点。 扩展性总结出三点&#xff1a; X轴…...

好的外贸平台/福州seo建站

任何一门语言中&#xff0c;相信this的指向问题都是一个重点&#xff0c;js也不例外。js中的作用域分为全局作用域和局部作用域&#xff0c;在全局作用域中&#xff0c;this指向的是他的全局对象window&#xff0c;如下在全局中打印this&#xff1a;console.log(this);输出&…...

网络推广排名/关键词优化技巧

组建团队 人员培养 知识分享...

服务周到的做网站/每日英语新闻

各种排序方法代码学习了各种排序方法后&#xff0c;为加强记忆&#xff0c;在此重新复习一遍。1----直接插入排序直接插入排序为稳定的排序方法&#xff0c;原理是将一个记录插入到已经排序号的有序表中&#xff0c;从而得到一个新的&#xff0c;记录数增1的有序表。算法&#…...

如何仿制手机版网站/seo外链怎么做能看到效果

多重循环-成绩统计 题目&#xff1a;多重循环 统计每个班级的总成绩和平均分以及三个班总的成绩和平均分[学生的成绩从键盘输入]&#xff0c;每个班有5名同学 /**多重循环*统计三个班的平均分和所有班级的平均分[学生的成绩从键盘输入]*统计三个班几个人数&#xff0c;每个班…...

怎么做一个动态网站吗/seo查询 站长之家

Linux中的网络配置一、什么是IP ADDRESS二、子网掩码三、ip通信判定四、临时管理网卡1.相关命令2.实验&#xff1a;临时管理网卡五、永久管理网卡1.nm-connection-editor图形方式管理网络2.nmtui文本模式下图形配置网络3.nmcli命令设定网络4.通过管理网络配置文件设定网络六、网…...