Java高级之File类、节点流、缓冲流、转换流、标准I/O流、打印流、数据流
第13章 IO流
文章目录
- 一、File类的使用
- 1.1、如何创建File类的实例
- 1.2、常用方法
- 1.2.1、File类的获取功能
- 1.2.2、File类的重命名功能
- 1.2.3、File类的判断功能
- 1.2.4、File类的创建功能
- 1.2.5、File类的删除功能
- 二、IO流原理及流的分类
- 2.1、Java IO原理
- 2.2、流的分类/体系结构
- 三、节点流(或文件流)
- 3.1、读入数据 FileReader
- 3.2、写出数据 FileWriter
- 3.3、使用FileReader 和 FileWriter 实现文本文件的复制
- 3.4、FileInputStream
- 3.5、使用FileInputStream和FileOutputStream实现对图片的复制操作
- 四、处理流之一---缓冲流
- 4.1、使用BufferedInputStream和BufferedOutputStream实现对图片的复制操作
- 4.2、实现文件的复制
- 五、处理流之二---转换流
- 5.1、InputStreamReader的使用
- 5.2、综合使用 InputStreamReader 和 OutputStreamWriter
- 5.3、多种字符集编码
- 六、标准输入、输出流
- 6.1、练习题
- 七、打印流
- 八、数据流
一、File类的使用
- File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)
- FiLe类声明在
java.io包下- File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用Io流来完成。
- 后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的“终点”
1.1、如何创建File类的实例
File(String filePath)
File(String parentPath, String childPath)
File(String parentFile, String childPath)
-
相对路径:相较于某个路径下,指明的路径。
-
绝对路径:包含盘符在内的文件或文件目录的路径
-
路径分隔符:
windows: \\
unix: /
说明:
IDEA中:如果开发使用JUnit中的单元测试方式测试,相对路径即为当前Module下。如果使用main()测试,相对路径即为当前的Project下。
Eclipse中:不管使用单元测试方法还是使用main()测试,相对路径即为当前的Project下。
1.2、常用方法
1.2.1、File类的获取功能
public String getAbsolutePath():获取绝对路径
public String getPath() :获取路径
public String getName() :获取名称
public String getParent():获取上层文件目录路径。若无,返回null
public long length() :获取文件长度(即:字节数)。不能获取目录的长度。
public long lastModified() :获取最后一次的修改时间,毫秒值
public String[] list() :获取指定目录下的所有文件或者文件目录的名称数组
public File[] listFiles() :获取指定目录下的所有文件或者文件目录的File数组
@Test
public void test2(){File file1 = new File("hello.txt");File file2 = new File("D:\\JAVA NOTES\\核心基础笔记\\Java高级编程\\hi.txt");System.out.println(file1.getAbsoluteFile());System.out.println(file1.getPath());System.out.println(file1.getName());System.out.println(file1.getParent());System.out.println(file1.length());System.out.println(new Date(file1.lastModified()));System.out.println("----------------------");System.out.println(file2.getAbsoluteFile());System.out.println(file2.getPath());System.out.println(file2.getName());System.out.println(file2.getParent());System.out.println(file2.length());System.out.println(file2.lastModified());
}@Test
public void test3(){File file = new File("F:\\ProjectsLocation\\IdeaProjects\\Indomitable\\src");String[] list = file.list();for (String s:list){System.out.println(s);}File[] listFiles = file.listFiles();for (File f:listFiles){System.out.println(f);}
}
1.2.2、File类的重命名功能
/*** public boolean renameTo(File dest):把文件重命名为指定的文件路径* 比如: file1.renameTo(file2)为例:* 要想保证返回true,需要file1在硬盘中是存在的,且file2不能在硬盘中存在。*/
@Test
public void test4(){File file1 = new File("hello.txt");File file2 = new File("he.txt");boolean rename = file1.renameTo(file2);System.out.println(rename);
}
1.2.3、File类的判断功能
public boolean isDirectory():判断是否是文件目录 public boolean isFile() :判断是否是文件 public boolean exists() :判断是否存在 public boolean canRead() :判断是否可读 public boolean canWrite() :判断是否可写 public boolean isHidden() :判断是否隐藏
@Test
public void test5(){File file1 = new File("F:\\ProjectsLocation\\IdeaProjects\\Indomitable\\src");System.out.println(file1.isDirectory());System.out.println(file1.isFile());System.out.println(file1.exists());System.out.println(file1.canRead());System.out.println(file1.canWrite());System.out.println(file1.isHidden());System.out.println("***************");File file2 = new File("hello.txt");System.out.println(file2.isDirectory());System.out.println(file2.isFile());System.out.println(file2.exists());System.out.println(file2.canRead());System.out.println(file2.canWrite());System.out.println(file2.isHidden());
}
1.2.4、File类的创建功能
public boolean createNewFile() :创建文件。若文件存在,则不创建,返回falsepublic boolean mkdir() :创建文件目录。如果此文件目录存在,就不创建了。
如果此文件目录的上层目录不存在,也不创建。public boolean mkdirs() :创建文件目录。如果上层文件目录不存在,一并创建
注意事项:如果你创建文件或者文件目录没有写盘符路径,那么,默认在项目
路径下。
@Test
public void test7(){//文件目录的创建File file1 = new File("D:\\Java\\1.尚硅谷全套JAVA教程--基础阶段(73.36GB)\\尚硅谷宋红康Java核心基础_好评如潮\\Java基础全套视频教程\\day25_泛型与File\\20230527");boolean mkdir = file1.mkdir();if (mkdir){System.out.println("创建成功1");}File file2 = new File("D:\\Java\\1.尚硅谷全套JAVA教程--基础阶段(73.36GB)\\尚硅谷宋红康Java核心基础_好评如潮\\Java基础全套视频教程\\day25_泛型与File\\20230528");boolean mkdirs = file2.mkdirs();//级联创建if (mkdirs){System.out.println("创建成功2");}
}
1.2.5、File类的删除功能
public boolean delete():删除文件或者文件夹
删除注意事项:
Java中的删除不走回收站。
要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录
二、IO流原理及流的分类
2.1、Java IO原理
- I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于 处理设备之间的数据传输。如读/写文件,网络通讯等。
- Java程序中,对于数据的输入/输出操作以“流(stream)” 的 方式进行。
- java.io包下提供了各种“流”类和接口,用以获取不同种类的 数据,并通过标准的方法输入或输出数据。

输入input:读取外部数据(磁 盘、光盘等存储设备的数据)到 程序(内存)中。
输出output:将程序(内存) 数据输出到磁盘、光盘等存储设备中。
2.2、流的分类/体系结构
- 按操作数据单位不同分为:字节流(8 bit),字符流(16 bit)
- 按数据流的流向不同分为:输入流,输出流
- 按流的角色的不同分为:节点流,处理流
流的分类理解示意图:
三、节点流(或文件流)
* 抽象基类 节点流(或文件流) 缓冲流(处理流的一种)
InputStream FileInputStream (read(byte[] buffer)) BufferedInputStream (read(byte[] buffer,0,len))* OutputStream FileOutPutStream (write(byte[] buffer,0,len)) BufferedOutputStream (write(byte[] buffer))* Reader FileReader (read(char[] cbuf)) BufferedReader (read(char[] cbuf))* Writer FileWriter (write(char[] cbuf,0,len)) BufferedWriter (write(char[] cbuf,0,len))

本章步骤:
1.实例化File类的对象,指明要操作的文件
2.提供具体的流
3.数据的读入
4.流的关闭操作
3.1、读入数据 FileReader
@Testpublic void test1(){FileReader fr = null;try {//1.实例化File类的对象,指明要操作的文件File file = new File("hello.txt ");//相较于当前Module//2.提供具体的流fr = new FileReader(file);//3.数据的读入//read():返回读入的一个字符。如果达到文件末尾,返回 -1//方式一
// int data = fr.read();
// while (data != -1){
// System.out.print((char)data);
// data = fr.read();
// }//方式二:语法上针对方式一的修改int data;while ((data = fr.read()) != -1){System.out.print((char)data);}}catch (Exception e){e.printStackTrace();}finally {//4.流的关闭操作try {//可能会有空指针异常if (fr != null){fr.close();}}catch (Exception e){e.printStackTrace();}}}
对 read()操作升级:使用read 的重载方法
@Testpublic void test2() throws IOException {FileReader fr = null;try {//1.File类的实例化File file = new File("hello.txt ");//相较于当前Module//2.FileReader流的实例化fr = new FileReader(file);//3.读入的操作char[] cbuf = new char[5];int len;while ((len = fr.read(cbuf)) != -1){
// //方式一
// for (int i=0;i<len; i++){
// System.out.print(cbuf[i]);
// }//方式二String s = new String(cbuf, 0, len);System.out.print(s);}} catch (Exception e) {e.printStackTrace();} finally {try {//4.资源的关闭if (fr != null){fr.close();}} catch (Exception e) {e.printStackTrace();}}}
3.2、写出数据 FileWriter
从内存中写出数据的到硬盘文件的操作
说明:
输出操作,对应的File可以不存在,并不会报异常
File对应的硬盘中的文件如果不存在,在输出的过程中,会自动创建此文件
File对应的硬盘中的文件如果存在:
① 如果流使用的构造器是 FileWriter(file, false) / FileWriter(file):对原有文件的覆盖
② 如果流使用的构造器是 FileWriter(file, true):不会对原有文件覆盖,而是在原有文件基础上追加内容
/*** 从内存中写出数据的到硬盘文件的操作* 说明:* 1.输出操作,对应的File可以不存在,并不会报异常* 2.File对应的硬盘中的文件如果不存在,在输出的过程中,会自动创建此文件* File对应的硬盘中的文件如果存在:* 如果流使用的构造器是 FileWriter(file, false) / FileWriter(file):对原有文件的覆盖* 如果流使用的构造器是 FileWriter(file, true):不会对原有文件覆盖,而是在原有文件基础上追加内容*/
@Test
public void testFileWriter() throws IOException {//1.提供File类的对象,指明写出搭配的文件File file = new File("hello1.txt");//2.提供FileWriter的对象,用于数据的写出FileWriter fw = new FileWriter(file, true);//3.写出的操作fw.write("I hava a little dream!\n");fw.write("You need to hava a dream!\n");//4.流资源的关闭fw.close();
}
3.3、使用FileReader 和 FileWriter 实现文本文件的复制
步骤:
1.创建File类的对象,指明读入和写出的文件
2.提供输入流和输出流的对象
3.数据的读入和写出操作
4.关闭流资源
@Test
public void testFileReaderFileWriter(){FileWriter fw = null;FileReader fr = null;try {//1.创建File类的对象,指明读入和写出的文件File srcFile = new File("hello.txt");File destFile = new File("hello2.txt");//2.提供输入流和输出流的对象fr = new FileReader(srcFile);fw = new FileWriter(destFile);//3.数据的读入和写出操作char[] cbuf = new char[5];int len;//记录每次读入到cbuf数组中的字符个数while ((len = fr.read(cbuf)) != -1){//每次写出 len个字符fw.write(cbuf, 0, len);}} catch (IOException e) {throw new RuntimeException(e);} finally {//4.关闭流资源try {if (fw != null) {fw.close();}} catch (IOException e) {e.printStackTrace();}try {if (fr != null){fr.close();}} catch (IOException e) {e.printStackTrace();}}
}
3.4、FileInputStream
总结:
- 1.对于文本文件(.txt, .java, .c, .cpp), 使用字符流处理
- 2.对于非文本文件(.jpg, .mp3, .mp4, .avi, .doc, .ppt, …),使用字节流处理
/*** 使用字节流 FileInputStream 处理文本文件,可能出现乱码*/
@Test
public void test1() throws IOException {FileInputStream fis = null;try {//1.造文件File file = new File("hello.txt");//2.造流fis = new FileInputStream(file);//3.读数据byte[] buffer = new byte[5];int len;//记录每次读取的字节的个数while ((len = fis.read(buffer)) != -1){String str = new String(buffer, 0, len);System.out.print(str);}} catch (IOException e) {e.printStackTrace();} finally {//4.关闭流try {if (fis != null){fis.close();}} catch (IOException e) {e.printStackTrace();}}
}
3.5、使用FileInputStream和FileOutputStream实现对图片的复制操作
/*** 使用FileInputStream和FileOutputStream实现对图片的复制操作*/
@Test
public void testFileInputOutputStream(){FileInputStream fis = null;FileOutputStream fos = null;try {//1.造文件File srcFile = new File("头像.jpg");File destFile = new File("头像2.jpg");//2.造流fis = new FileInputStream(srcFile);fos = new FileOutputStream(destFile);//3.复制byte[] buffer = new byte[5];int len;//记录每次读入的长度while ((len = fis.read(buffer)) != -1){fos.write(buffer, 0, len);}System.out.println("复制成功!");} catch (IOException e) {e.printStackTrace();} finally {//4.关闭流try {if (fis != null){fis.close();}} catch (IOException e) {e.printStackTrace();}try {if (fos != null){fos.close();}} catch (IOException e) {e.printStackTrace();}}
}
四、处理流之一—缓冲流
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
作用:提供流的读取、写入的速度
提高读写速度的原因:内部提供了一个缓冲区
4.1、使用BufferedInputStream和BufferedOutputStream实现对图片的复制操作
/*** 实现非文本文件的复制*/@Testpublic void BufferedStreamTest(){BufferedInputStream bis = null;BufferedOutputStream bos = null;try {//1.造文件File srcFile = new File("头像.jpg");File destFile = new File("头像3.jpg");//2.造流//2.1 造节点流FileInputStream fis = new FileInputStream(srcFile);FileOutputStream fos = new FileOutputStream(destFile);//2.2 造缓冲流bis = new BufferedInputStream(fis);bos = new BufferedOutputStream(fos);//3.复制的细节:读取、写入byte[] buffer = new byte[1024];int len;while ((len = bis.read(buffer)) != -1){bos.write(buffer, 0, len);}} catch (IOException e) {throw new RuntimeException(e);} finally {//4.关闭流:要求:先关闭外层的流,再关闭内层的流//说明:关闭外层流的同时,内层流也会自动的进行关闭。关于内层流的关闭,我们可哟自动省略。if (bis != null){try {bis.close();} catch (IOException e) {throw new RuntimeException(e);}}if (bos != null){try {bos.close();} catch (IOException e) {throw new RuntimeException(e);}}}// fis.close();
// fos.close();}
4.2、实现文件的复制
步骤:
1.造文件
2.造流2.1 造节点流2.2 造缓冲流
3.复制的细节:读取、写入
4.关闭流:要求:先关闭外层的流,再关闭内层的流说明:关闭外层流的同时,内层流也会自动的进行关闭。关于内层流的关闭,我们可哟自动省略。
/*** 实现文件复制的方法*/public void copyFileWithBuffered(String srcPath, String destPath){FileInputStream fis = null;FileOutputStream fos = null;BufferedInputStream bis = null;BufferedOutputStream bos = null;try {//1.造文件File srcFile = new File(srcPath);File destFile = new File(destPath);//2.造流//2.1 造节点流fis = new FileInputStream(srcFile);fos = new FileOutputStream(destFile);//2.2 造缓冲流bis = new BufferedInputStream(fis);bos = new BufferedOutputStream(fos);//3.复制的细节:读取、写入byte[] buffer = new byte[1024];int len;while ((len = bis.read(buffer)) != -1){bos.write(buffer, 0, len);//bos.flush();//刷新缓冲过去}} catch (IOException e) {throw new RuntimeException(e);} finally {//4.关闭流:要求:先关闭外层的流,再关闭内层的流//说明:关闭外层流的同时,内层流也会自动的进行关闭。关于内层流的关闭,我们可哟自动省略。if (bis != null){try {bis.close();} catch (IOException e) {throw new RuntimeException(e);}}if (bos != null){try {bos.close();} catch (IOException e) {throw new RuntimeException(e);}}}// fis.close();
// fos.close();}
五、处理流之二—转换流
1、转换流:属于字符流
InputStreamReader: 将一个字节的输入流转换为字符的输入流—>解码
OutputStreamReader: 将一个字符的输入流转换为字节的输出流—>编码
2、作用:提供字节流与字符流之间的转换
3、解码 :字节、字节数组 —> 字符数组、字符串
编码 :字符数组、字符串 —> 字节、字节数组

5.1、InputStreamReader的使用
/*** 此时处理异常的话,仍应该使用try-catch-finally* InputStreamReader的使用,实现字节的输入流到字符的输入流的转换*/@Testpublic void test1() throws IOException {FileInputStream fis = new FileInputStream("dbcp.txt");//参数2 指明了字符集,具体使用哪个字符集,取决于文件dbcp.txt保存时使用的字符集InputStreamReader isr = new InputStreamReader(fis, "utf-8");
// InputStreamReader isr = new InputStreamReader(fis);//使用系统默认的字符集:UTF-8char[] cbuf = new char[20];int len;while ((len = isr.read(cbuf)) != -1){String str = new String(cbuf, 0, len);System.out.print(str);}isr.close();}
5.2、综合使用 InputStreamReader 和 OutputStreamWriter
/*** 综合使用 InputStreamReader 和 OutputStreamWriter*/
@Test
public void test2() throws Exception{//1. 造文件、造流File file1 = new File("dbcp.txt");File file2 = new File("dbcp_gbk.txt");FileInputStream fis = new FileInputStream(file1);FileOutputStream fos = new FileOutputStream(file2);InputStreamReader isr = new InputStreamReader(fis, "utf-8");OutputStreamWriter osw = new OutputStreamWriter(fos, "gbk");//2.读入和写出的过程char[] cbuf = new char[20];int len;while ((len = isr.read(cbuf)) != -1){osw.write(cbuf, 0, len);}//3.关闭资源fis.close();fos.close();
}
5.3、多种字符集编码
编码表的由来
计算机只能识别二进制数据,早期由来是电信号。为了方便应用计算机,让它可以识 别各个国家的文字。就将各个国家的文字用数字来表示,并一一对应,形成一张表。 这就是编码表。
常见的编码表
ASCII:美国标准信息交换码。
- 用一个字节的7位可以表示。
ISO8859-1:拉丁码表。欧洲码表。
- 用一个字节的8位表示。
GB2312:中国的中文编码表。最多两个字节编码所有字符GBK:中国的中文编码表升级,融合了更多的中文文字符号。最多两个字节编码Unicode:国际标准码,融合了目前人类使用的所有字符。为每个字符分配唯一的字符码。所有的文字都用两个字节来表示。UTF-8:变长的编码方式,可用1-4个字节来表示一个字符。
六、标准输入、输出流

6.1、练习题
/*** 练习:* 从键盘输入字符串,要求将读取到的整行字符串转成大写输出。然后继续* 进行输入操作,直至当输入“e”或者“exit”时,退出程序。*/
public static void main(String[] args) {BufferedReader br = null;try {InputStreamReader isr = new InputStreamReader(System.in);br = new BufferedReader(isr);String data;while (true){System.out.println("请输入字符串: ");data = br.readLine();if ("e".equalsIgnoreCase(data)|| "exit".equalsIgnoreCase(data)){System.out.println("程序结束");break;}String upperCase = data.toUpperCase();System.out.println(upperCase);}} catch (IOException e) {throw new RuntimeException(e);} finally {if (br != null){try {br.close();} catch (IOException e) {throw new RuntimeException(e);}}}
}
七、打印流
八、数据流

相关文章:
Java高级之File类、节点流、缓冲流、转换流、标准I/O流、打印流、数据流
第13章 IO流 文章目录 一、File类的使用1.1、如何创建File类的实例1.2、常用方法1.2.1、File类的获取功能1.2.2、File类的重命名功能1.2.3、File类的判断功能1.2.4、File类的创建功能1.2.5、File类的删除功能 二、IO流原理及流的分类2.1、Java IO原理2.2、流的分类/体系结构 三…...
解决WSL2占用内存过多问题(Docker on WSL2: VmmemWSL)
解决WSL2占用内存过多问题(Docker on WSL2: VmmemWSL) 一、问题描述二、问题解决2.1 创建.wslconfig文件2.2 重启wsl2 一、问题描述 安装完WSL2后,又安装了Docker,使用了一段时间,发现电脑变卡,进一步查看…...
华为云云耀云服务器L实例评测|了解配置和管理L型云服务器
华为云云耀云服务器L实例配置和管理教程 华为云云耀云服务器L实例的介绍概述特点优势与弹性云服务器(ECS)的对比 注册和创建L型云服务器注册华为云账号创建L型云服务器实例配置实例参数配置其他参数尝试登录 远程登录 L实例查看公网ip通过本地shell远程连…...
【面试题】——Java基础篇(33题)
文章目录 1. 八大基本数据类型分类2. 重写和重载的区别3. int和integer区别4. Java的关键字5. 什么是自动装箱和拆箱?6. 什么是Java的多态性?7. 接口和抽象类的区别?8. Java中如何处理异常?9. Java中的final关键字有什么作用&…...
记一次 .NET 某电力系统 内存暴涨分析
一:背景 1. 讲故事 前些天有位朋友找到我,说他生产上的程序有内存暴涨情况,让我帮忙看下怎么回事,最简单粗暴的方法就是让朋友在内存暴涨的时候抓一个dump下来,看一看大概就知道咋回事了。 二:Windbg 分…...
1.SpringEL初始
SpringEL初始 文章目录 SpringEL初始什么是SpringELSpring BeansSpring EL以XML形式Spring EL以注解形式启用自动组件扫描 执行输出 什么是SpringEL Spring EL与OGNL和JSF EL相似,计算评估或在bean创建时执行。此外,所有的Spring表达式都可以通过XML或注…...
HTTP 状态码
状态码状态码英文名称中文描述100Continue继续。客户端应继续其请求101Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议200OK请求成功。一般用于GET与POST请求201Created已创建。成功…...
ddtrace 系列篇之 dd-trace-java 项目编译
dd-trace-java 是 Datadog 开源的 java APM 框架,本文主要讲解如何编译 dd-trace-java 项目。 环境准备 JDK 编译环境(三个都要:jdk8\jdk11\jdk17) Gradle 8 Maven 3.9 (需要 15G 以上的存储空间存放依赖) Git >2 (低于会出现一想不到的异常…...
华为aarch64架构的泰山服务器EulerOS 2.0 (SP8)系统离线安装saltstack3003.1实践
华为泰山服务器的CPU芯片架构为aarch64,所装系统为EulerOS 2.0 (SP8)aarch64系统,安装saltstack比较困难。本文讲解通过pip安装方式离线安装saltstack3003.1以进行集中化管理和维护。 一、系统环境 1、操作系统版本 [rootlocalhost ~]# cat /etc/os-r…...
C#中的方法
引言 在C#编程语言中,方法是一种封装了一系列可执行代码的重要构建块。通过方法,我们可以将代码逻辑进行模块化和复用,提高代码的可读性和可维护性。本文将深入探讨C#中的方法的定义、参数传递、返回值、重载、递归等方面的知识,…...
【Flowable】使用UEL整合Springboot从0到1(四)
前言 在前面我们介绍了Springboot简单使用了foleable以及flowableUI的安装和使用,在之前我们分配任务的处理人的时候都是通过Assignee去指定固定的人的。这在实际业务中是不合适的,我们希望在流程中动态的去解析每个节点的处理人,当前flowab…...
WebGL 计算点光源下的漫反射光颜色
目录 点光源光 逐顶点光照(插值) 示例程序(PointLightedCube.js) 代码详解 示例效果 逐顶点处理点光源光照效果时出现的不自然现象 更逼真:逐片元光照 示例程序(PointLightedCube_perFragment.js…...
Java精品项目源码第61期垃圾分类科普平台(代号V061)
Java精品项目源码第61期垃圾分类科普平台(代号V061) 大家好,小辰今天给大家介绍一个垃圾分类科普平台,演示视频公众号(小辰哥的Java)对号查询观看即可 文章目录 Java精品项目源码第61期垃圾分类科普平台(代号V061)难度指数&…...
【Unity3D】资源管理
1 前言 Unity 中资源管理方案主要有 Resources、TextAsset、ScriptableObject 、AssetDatabase、PlayerPrefs、Addressables、AssetBundle、SQLite,本文将介绍其中大部分方案。 2 Resources Resources 主要用于加载资源,被加载的资源需要放在 Resources…...
数据结构-----队列
目录 前言 队列 定义 队列的定义和操作方法 队列节点的定义 操作方式 顺序表实现队列(C/C代码) 链表实现队列(C/C代码) Python语言实现队列 前言 排队是我们日常生活中必不可少的一件事,去饭堂打饭的时候排队&a…...
postgresql教程
postgreSQL教程目录 postgreSQL 创建数据库的方式:postgreSQL删除数据库的方式:PostgreSQL 创建表格postgre删除表格:postgreSQL INSERT INTO 语句postgreSQL SELECT 语句:postgresql索引:什么情况下要避免使用索引? p…...
1万6千多最好的背单词SQLITE\ACCESS数据库
本来是实在不想再整英语类的数据了,因为实在是太多了,奈何今天弄到的这份数据库实在很精彩,因此还是希望能够有人喜欢。 搞一个“accept”字段的样例: 【explain】 vi. 承认;同意;承兑; vt. 接受;承认;承担;承兑; 【etyma】 ac…...
springboot aop Aspectj 切面
常用: Aspect、Component、Pointcut、Before、AfterReturning SpringBoot的AOP(aspect注解)的简单使用 - 知乎 springboot项目中引入Aspectj并使用_springboot引入aspectj_山鬼谣me的博客-CSDN博客...
Leetcode 2862. Maximum Element-Sum of a Complete Subset of Indices
Leetcode 2862. Maximum Element-Sum of a Complete Subset of Indices 1. 解题思路2. 代码实现 题目链接:2862. Maximum Element-Sum of a Complete Subset of Indices 1. 解题思路 这一题的核心在于想明白一点: 要使得子序列当中任意两个数之积均为…...
第一百四十七回 自定义组件一
文章目录 概念介绍实现方法示例代码 我们在上一章回中介绍了跟手指移动的小球相关的内容,本章回中将介绍 自定义组件.闲话休提,让我们一起Talk Flutter吧。 概念介绍 在项目中有些内容无法通过现有的组件来实现,因此需要自定义组件…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
