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

javaIO流之文件流

目录

  • 简介
  • 一、File的构造方法
  • 二、File的常用方法
    • 1、获取功能的方法
    • 2、绝对路径和相对路径
    • 3、判断功能的方法
    • 4、创建、删除功能的方法
    • 5、目录的遍历
    • 6、递归遍历
  • 三、RandomAccessFile
    • 1、主要方法
  • 四、Apache FileUtils 类
    • 1、复制文件或目录:
    • 2、删除文件或目录:
    • 3、移动文件或目录:
    • 4、查询文件或目录的信息:
  • 五、Hutool FileUtil 类
    • 1、copyFile:复制文件。该方法可以将指定的源文件复制到指定的目标文件中。
    • 2、move:移动文件或目录。该方法可以将指定的源文件或目录移动到指定的目标文件或目录中。
    • 3、del:删除文件或目录。该方法可以删除指定的文件或目录,如果指定的文件或目录不存在,则会抛出异常。
    • 4、rename:重命名文件或目录。该方法可以将指定的文件或目录重命名为指定的新名称。
    • 5、readLines:从文件中读取每一行数据。

简介

在 IO 操作中,文件的操作相对来说是比较复杂的,但也是使用频率最高的部分,我们几乎所有的项目中几乎都躺着一个叫做 FileUtil 或者 FileUtils 的工具类。

java.io.File 类是专门对文件进行操作的类,注意只能对文件本身进行操作,不能对文件内容进行操作,想要操作内容,必须借助输入输出流。

File 类是文件和目录的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

怎么理解上面两句话?其实很简单!

第一句是说 File 跟流无关,File 类不能对文件进行读和写,也就是输入和输出!

第二句是说 File 可以表示D:\文件目录1与D:\文件目录1\文件.txt,前者是文件夹(Directory,或者叫目录)后者是文件(file),File 类就是用来操作它俩的。

一、File的构造方法

在 Java 中,一切皆是对象,File 类也不例外,不论是哪个对象都应该从该对象的构造说起,所以我们来分析分析File类的构造方法。

比较常用的构造方法有三个:

  • File(String pathname) :通过给定的路径来创建新的 File 实例。

  • File(String parent, String child) :从父路径(字符串)和子路径创建新的 File 实例。

  • File(File parent, String child) :从父路径(File)和子路径名字符串创建新的 File 实例。

看文字描述不够生动、不够形象、不得劲?没事,通过举例马上就生动形象了,代码如下:

// 文件路径名
String path = "/Users/username/123.txt";
File file1 = new File(path);
// 文件路径名
String path2 = "/Users/username/1/2.txt";
File file2 = new File(path2); -------------相当于/Users/username/1/2.txt
// 通过父路径和子路径字符串
String parent = "/Users/username/aaa";
String child = "bbb.txt";
File file3 = new File(parent, child); --------相当于/Users/username/aaa/bbb.txt
// 通过父级File对象和子路径字符串
File parentDir = new File("/Users/username/aaa");
String child = "bbb.txt";
File file4 = new File(parentDir, child); --------相当于/Users/username/aaa/bbb.txt

注意,macOS 路径使用正斜杠(/)作为路径分隔符,而 Windows 路径使用反斜杠(\)作为路径分隔符。所以在遇到路径分隔符的时候,不要直接去写/或者\。

Java 中提供了一个跨平台的方法来获取路径分隔符,即使用 File.separator,这个属性会根据操作系统自动返回正确的路径分隔符。

File 类的注意点:

  • 一个 File 对象代表硬盘中实际存在的一个文件或者目录。
  • File 类的构造方法不会检验这个文件或目录是否真实存在。
    因此无论该路径下是否存在文件或者目录,都不影响 File 对象的创建。

二、File的常用方法

File 的常用方法主要分为获取功能、获取绝对路径和相对路径、判断功能、创建删除功能的方法。

1、获取功能的方法

  • getAbsolutePath() :返回此 File 的绝对路径。

  • getPath() :结果和 getAbsolutePath 一致。

  • getName() :返回文件名或目录名。

  • length() :返回文件长度,以字节为单位。

测试代码如下【注意测试以你自己的电脑文件夹为准】:

File f = new File("/Users/username/aaa/bbb.java");
System.out.println("文件绝对路径:"+f.getAbsolutePath());
System.out.println("文件构造路径:"+f.getPath());
System.out.println("文件名称:"+f.getName());
System.out.println("文件长度:"+f.length()+"字节");File f2 = new File("/Users/username/aaa");
System.out.println("目录绝对路径:"+f2.getAbsolutePath());
System.out.println("目录构造路径:"+f2.getPath());
System.out.println("目录名称:"+f2.getName());
System.out.println("目录长度:"+f2.length());

注意:length() 表示文件的长度,File 对象表示目录的时候,返回值并无意义。

2、绝对路径和相对路径

绝对路径是从文件系统的根目录开始的完整路径,它描述了一个文件或目录在文件系统中的确切位置。在 Windows 系统中,绝对路径通常以盘符(如 C:)开始,例如 “C:\Program Files\Java\jdk1.8.0_291\bin\java.exe”。在 macOS 和 Linux 系统中,绝对路径通常以斜杠(/)开始,例如 “/usr/local/bin/python3”。

相对路径是相对于当前工作目录的路径,它描述了一个文件或目录与当前工作目录之间的位置关系。在 Java 中,相对路径通常是相对于当前 Java 程序所在的目录,例如 “config/config.properties”。如果当前工作目录是 “/Users/username/project”,那么相对路径 “config/config.properties” 就表示 “/Users/username/project/config/config.properties”。

注意:

  • 在 Windows 操作系统中,文件系统默认是不区分大小写的,即在文件系统中,文件名和路径的大小写可以混合使用。例如,“C:\Users\username\Documents\example.txt” 和 “C:\Users\Username\Documents\Example.txt” 表示的是同一个文件。但是,Windows 操作系统提供了一个区分大小写的选项,可以在格式化磁盘时选择启用,这样文件系统就会区分大小写。
  • 在 macOS 和 Linux 等 Unix 系统中,文件系统默认是区分大小写的。例如,在 macOS 系统中,“/Users/username/Documents/example.txt” 和 “/Users/username/Documents/Example.txt” 表示的是两个不同的文件。
// 绝对路径示例
File absoluteFile = new File("/Users/username/example/test.txt");
System.out.println("绝对路径:" + absoluteFile.getAbsolutePath());// 相对路径示例
File relativeFile = new File("example/test.txt");
System.out.println("相对路径:" + relativeFile.getPath());

3、判断功能的方法

  • exists() :判断文件或目录是否存在。

  • isDirectory() :判断是否为目录。

  • isFile() :判断是否为文件。

方法演示,代码如下:

File file = new File("/Users/username/example");// 判断文件或目录是否存在
if (file.exists()) {System.out.println("文件或目录存在");
} else {System.out.println("文件或目录不存在");
}// 判断是否是目录
if (file.isDirectory()) {System.out.println("是目录");
} else {System.out.println("不是目录");
}// 判断是否是文件
if (file.isFile()) {System.out.println("是文件");
} else {System.out.println("不是文件");
}

4、创建、删除功能的方法

  • createNewFile() :文件不存在,创建一个新的空文件并返回true,文件存在,不创建文件并返回false。
  • delete() :删除文件或目录。如果是目录,只有目录为空才能删除。
  • mkdir() :只能创建一级目录,如果父目录不存在,则创建失败。返回 true 表示创建成功,返回 false 表示创建失败。
  • mkdirs() :可以创建多级目录,如果父目录不存在,则会一并创建。返回 true 表示创建成功,返回 false 表示创建失败或目录已经存在。

开发中一般用mkdirs();
方法测试,代码如下:

// 创建文件
File file = new File("/Users/username/example/test.txt");
if (file.createNewFile()) {System.out.println("创建文件成功:" + file.getAbsolutePath());
} else {System.out.println("创建文件失败:" + file.getAbsolutePath());
}// 删除文件
if (file.delete()) {System.out.println("删除文件成功:" + file.getAbsolutePath());
} else {System.out.println("删除文件失败:" + file.getAbsolutePath());
}// 创建多级目录
File directory = new File("/Users/username/example/subdir1/subdir2");
if (directory.mkdirs()) {System.out.println("创建目录成功:" + directory.getAbsolutePath());
} else {System.out.println("创建目录失败:" + directory.getAbsolutePath());
}

5、目录的遍历

String[] list() :返回一个 String 数组,表示该 File 目录中的所有子文件或目录。
File[] listFiles() :返回一个 File 数组,表示该 File 目录中的所有的子文件或目录。

File directory = new File("/Users/itwanger/Documents/Github/paicoding");// 列出目录下的文件名
String[] files = directory.list();
System.out.println("目录下的文件名:");
for (String file : files) {System.out.println(file);
}// 列出目录下的文件和子目录
File[] filesAndDirs = directory.listFiles();
System.out.println("目录下的文件和子目录:");
for (File fileOrDir : filesAndDirs) {if (fileOrDir.isFile()) {System.out.println("文件:" + fileOrDir.getName());} else if (fileOrDir.isDirectory()) {System.out.println("目录:" + fileOrDir.getName());}
}

listFiles在获取指定目录下的文件或者子目录时必须满足下面两个条件:

  • 指定的目录必须存在
  • 指定的必须是目录。否则容易引发 NullPointerException 异常

6、递归遍历

不说啥了,直接上代码:

public static void main(String[] args) {File directory = new File("/Users/itwanger/Documents/Github/paicoding");// 递归遍历目录下的文件和子目录traverseDirectory(directory);
}public static void traverseDirectory(File directory) {// 列出目录下的所有文件和子目录File[] filesAndDirs = directory.listFiles();// 遍历每个文件和子目录for (File fileOrDir : filesAndDirs) {if (fileOrDir.isFile()) {// 如果是文件,输出文件名System.out.println("文件:" + fileOrDir.getName());} else if (fileOrDir.isDirectory()) {// 如果是目录,递归遍历子目录System.out.println("目录:" + fileOrDir.getName());traverseDirectory(fileOrDir);}}
}

三、RandomAccessFile

RandomAccessFile 是 Java 中一个非常特殊的类,它既可以用来读取文件,也可以用来写入文件。与其他 IO 类(如 FileInputStream 和 FileOutputStream)不同,RandomAccessFile 允许您跳转到文件的任何位置,从那里开始读取或写入。这使得它特别适用于需要在文件中随机访问数据的场景,如数据库系统。

下面是一个使用 RandomAccessFile 的示例,包括写入和读取文件:

import java.io.IOException;
import java.io.RandomAccessFile;public class RandomAccessFileDemo {public static void main(String[] args) {String filePath = "logs/javabetter/itwanger.txt";try {// 使用 RandomAccessFile 写入文件writeToFile(filePath, "Hello, 沉默王二!");// 使用 RandomAccessFile 读取文件String content = readFromFile(filePath);System.out.println("文件内容: " + content);} catch (IOException e) {e.printStackTrace();}}private static void writeToFile(String filePath, String content) throws IOException {try (RandomAccessFile randomAccessFile = new RandomAccessFile(filePath, "rw")) {// 将文件指针移动到文件末尾(在此处追加内容)randomAccessFile.seek(randomAccessFile.length());// 写入内容randomAccessFile.writeUTF(content);}}private static String readFromFile(String filePath) throws IOException {StringBuilder content = new StringBuilder();try (RandomAccessFile randomAccessFile = new RandomAccessFile(filePath, "r")) {// 将文件指针移动到文件开始处(从头开始读取)randomAccessFile.seek(0);content.append(randomAccessFile.readUTF());}return content.toString();}
}

为了避免中文乱码问题,我们使用 RandomAccessFile 的 writeUTF 和 readUTF 方法,它们将使用 UTF-8 编码处理字符串。大家可以运行一下这段代码,体验一下。
在这里插入图片描述
接下来,会详细介绍一下 RandomAccessFile 的构造方法和常用的方法。
构造方法
RandomAccessFile 主要有两个构造方法:

  • RandomAccessFile(File file, String mode):使用给定的文件对象和访问模式创建一个新的 RandomAccessFile 实例。
  • RandomAccessFile(String name, String mode):使用给定的文件名和访问模式创建一个新的 RandomAccessFile 实例。

访问模式 mode 的值可以是:

  • “r”:以只读模式打开文件。调用结果对象的任何 write 方法都将导致 IOException。
  • “rw”:以读写模式打开文件。如果文件不存在,它将被创建。
  • “rws”:以读写模式打开文件,并要求对内容或元数据的每个更新都被立即写入到底层存储设备。这种模式是同步的,可以确保在系统崩溃时不会丢失数据。
  • “rwd”:与“rws”类似,以读写模式打开文件,但仅要求对文件内容的更新被立即写入。元数据可能会被延迟写入。

1、主要方法

  • long getFilePointer():返回文件指针的当前位置。
  • long length():返回此文件的长度。
  • int read():从该文件中读取一个字节数据。
  • int read(byte[] b):从该文件中读取字节数据并将其存储到指定的字节数组中。
  • int read(byte[] b, int off, int len):从该文件中读取字节数据并将其存储到指定的字节数组中,从偏移量 off 开始,最多读取 len 个字节。
  • String readLine():从该文件中读取一行文本。
  • readUTF():从文件读取 UTF-8 编码的字符串。此方法首先读取两个字节的长度信息,然后根据这个长度读取字符串的 UTF-8 字节。最后,这些字节被转换为 Java 字符串。这意味着当你使用 readUTF 方法读取字符串时,需要确保文件中的字符串是使用 writeUTF 方法写入的,这样它们之间的长度信息和编码方式才能保持一致。
  • void seek(long pos):将文件指针设置到文件中的 pos 位置。
  • void write(byte[] b):将指定的字节数组的所有字节写入该文件。
  • void write(byte[] b, int off, int len):将指定字节数组的部分字节写入该文件,从偏移量 off 开始,写入 len 个字节。
  • void write(int b):将指定的字节写入该文件。
  • writeUTF(String str):将一个字符串以 UTF-8 编码写入文件。此方法首先写入两个字节的长度信息,表示字符串的 - - - UTF-8 字节长度,然后写入 UTF-8 字节本身。因此,当你使用 writeUTF 写入字符串时,实际写入的字节数会比字符串的 UTF-8 字节长度多两个字节。这两个字节用于在读取字符串时确定正确的字符串长度。

再来看一个示例,结合前面的讲解,就会彻底掌握 RandomAccessFile。

File file = new File("logs/javabetter/itwanger.txt");try (RandomAccessFile raf = new RandomAccessFile(file, "rw")) {// 写入文件raf.writeUTF("Hello!");// 将文件指针移动到文件开头raf.seek(0);// 读取文件内容String content = raf.readUTF();System.out.println("内容: " + content);} catch (IOException e) {e.printStackTrace();
}

在这个示例中,我们首先创建了一个名为 itwanger.txt 的文件对象。然后我们使用 RandomAccessFile 以读写模式打开这个文件。

接下来,我们使用 writeUTF 方法将字符串"Hello, 沉默王二!“写入文件。然后,我们使用 seek 方法将文件指针移动到文件开头,并使用 readUTF 方法读取文件内容。输出应该是"Hello!”。

最后,我们使用try-with-resources语句确保 RandomAccessFile 在操作完成后被正确关闭。

四、Apache FileUtils 类

FileUtils 类是 Apache Commons IO 库中的一个类,提供了一些更为方便的方法来操作文件或目录。

1、复制文件或目录:

File srcFile = new File("path/to/src/file");
File destFile = new File("path/to/dest/file");
// 复制文件
FileUtils.copyFile(srcFile, destFile);
// 复制目录
FileUtils.copyDirectory(srcFile, destFile);

2、删除文件或目录:

File file = new File("path/to/file");
// 删除文件或目录
FileUtils.delete(file);

需要注意的是,如果要删除一个非空目录,需要先删除目录中的所有文件和子目录。

3、移动文件或目录:

File srcFile = new File("path/to/src/file");
File destFile = new File("path/to/dest/file");
// 移动文件或目录
FileUtils.moveFile(srcFile, destFile);

4、查询文件或目录的信息:

File file = new File("path/to/file");
// 获取文件或目录的修改时间
Date modifyTime = FileUtils.lastModified(file);
// 获取文件或目录的大小
long size = FileUtils.sizeOf(file);
// 获取文件或目录的扩展名
String extension = FileUtils.getExtension(file.getName());

五、Hutool FileUtil 类

FileUtil 类是 Hutool 工具包中的文件操作工具类,提供了一系列简单易用的文件操作方法,可以帮助 Java 开发者快速完成文件相关的操作任务。

FileUtil 类包含以下几类操作工具:

  • 文件操作:包括文件目录的新建、删除、复制、移动、改名等
  • 文件判断:判断文件或目录是否非空,是否为目录,是否为文件等等。
  • 绝对路径:针对 ClassPath 中的文件转换为绝对路径文件。
  • 文件名:主文件名,扩展名的获取
  • 读操作:包括 getReader、readXXX 操作
  • 写操作:包括 getWriter、writeXXX 操作
    下面是 FileUtil 类中一些常用的方法:

1、copyFile:复制文件。该方法可以将指定的源文件复制到指定的目标文件中。

File dest = FileUtil.file("FileUtilDemo2.java");

2、move:移动文件或目录。该方法可以将指定的源文件或目录移动到指定的目标文件或目录中。

FileUtil.move(file, dest, true);

3、del:删除文件或目录。该方法可以删除指定的文件或目录,如果指定的文件或目录不存在,则会抛出异常。

FileUtil.del(file);

4、rename:重命名文件或目录。该方法可以将指定的文件或目录重命名为指定的新名称。

FileUtil.rename(file, "FileUtilDemo3.java", true);

5、readLines:从文件中读取每一行数据。

FileUtil.readLines(file, "UTF-8").forEach(System.out::println);

相关文章链接:
javaIO之各种流的分类与实际应用
javaIO流之文件流
javaIO流之字节流
javaIO流之字符流
javaIO流之缓冲流
javaIO流之转换流
javaIO流之序列流

赠人玫瑰,手有余香,如果觉得有用,点个赞吧~~~~~

相关文章:

javaIO流之文件流

目录 简介一、File的构造方法二、File的常用方法1、获取功能的方法2、绝对路径和相对路径3、判断功能的方法4、创建、删除功能的方法5、目录的遍历6、递归遍历 三、RandomAccessFile1、主要方法 四、Apache FileUtils 类1、复制文件或目录:2、删除文件或目录&#x…...

DMA-STM32

DMA-STM32 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源 12个独立可配置的通道:DMA1 (7个通道),DMA2 (5个通道) 每个通道都支持软件触发和特定的硬件触发 STM32…...

代码随想录算法训练营第二十七天|39. 组合总和、40.组合总和II、131.分割回文串

目录 39. 组合总和 40.组合总和II 131.分割回文串 39. 组合总和 本题是 集合里元素可以用无数次,那么和组合问题的差别 其实仅在于 startIndex上的控制 题目链接/文章讲解:代码随想录 视频讲解:带你学透回溯算法-组合总和(对应…...

泛型(Generic) <? extends T>,<? super T>

通配符边界引入背景 使用泛型的过程中,经常出现一种很别扭的情况。我们有 Fruit 类,和它的派生类 Apple 类。 class Fruit {}class Apple extends Fruit {}然后有一个最简单的容器:Plate 类。盘子里可以放一个泛型的 “东西”. class Plat…...

数云融合|数字化转型中的利器:揭秘云技术的重要角色

数字化转型不仅是一个流行语,而是一项真正能够改变你的业务流程并提高客户参与度的重要战略。要实现数字化转型,必须重新构建业务流程,同时利用AI、物联网、AR、ML、大数据分析等先进技术不断提升客户参与度。这就需要利用云技术提供的强大计…...

Linux篇2

Linux 0. 终端提示信息1. 文件目录结构1.1 文件目录 2. 文本编辑器VI/VIM2.1 VIM编辑器2.1 一般模式2.2 编辑模式2.3 命令模式 3. 网络配置3.1 VMware提供的三种网络连接模式3.2 静态配置网络IP地址3.3 配置主机名3.3.1 修改主机名3.3.2 配置主机名-IP地址映射关系:…...

《微服务实战》 第九章 Gitlab使用

前言 微服务项目,常常需要多人协作完成工作,本章教程是介绍Gitlab使用,使多人协作告别低端的手动拷贝,也告别传统的SVN。 1、下载安装git https://git-scm.com/download/win 1.1、安装好以后,cmd中输入git 2、生成ssh-key ssh-keygen -t rsa -C “zhangsan@163.com”…...

KMP匹配算法

目录 一、暴力匹配法动画演示代码实现 二、KMP算法的概念三、KMP算法的应用题目代码实现 一、暴力匹配法 动画演示 时间复杂度为&#xff1a; O ( m ∗ n ) O(m * n) O(m∗n) 代码实现 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std;int…...

ClickHouse笔记: Ubuntu/Centos下的安装, 配置和用户管理

ClickHouse ClickHouse 属于 OLAP 数据库 OLTP 与 OLAP OLTP (On-Line Transaction Processing 联机事务处理), 注重事务处理, 数据记录的性能和安全性OLAP (On-Line Analytical Processing 联机分析处理), 注重数据分析, 重点在查询的性能 一般使用 OLTP 数据库做业务数据…...

网络编程——UDP编程

UDP编程 UDP编程步骤通信流程serverclient 函数接口socketbindrecvfromsendto 举例UDP客户端UDP服务器 UDP编程步骤 在C语言中进行UDP编程的一般步骤如下&#xff1a; &#xff08;1&#xff09;包含头文件&#xff1a; 在代码中包含必要的头文件&#xff0c;以便使用UDP编程所…...

linux内核篇-进程及其调度

介绍一个程序从源文件到进程执行的过程 1、编译链接&#xff08;源文件到二进制文件&#xff09; Linux 下面二进制的程序也要有严格的格式&#xff0c;称为ELF&#xff08;Executeable and Linkable Format&#xff0c;可执行与可链接格式&#xff09; &#xff0c;这个格式可…...

C#开发的OpenRA游戏之基地工程车执行部署命令

C#开发的OpenRA游戏之基地工程车执行部署命令 前面已经分析接收到网络命令后,可以拿到多个命令对象, 通过命令对象进行遍历,最终会在比较部署命令的类里相同,从而执行部署命令。 可见,网络游戏里的对象操作,都是通过网络发送给服务器,再从服务器返回消息来执行对象的动…...

米哈游的春招实习面经,问的很基础

米哈游的春招实习面经&#xff0c;主要考察了java操作系统mysql网络&#xff0c;这四个方面。 面试流程&#xff0c;共1小时&#xff0c;1min自我介绍&#xff0c;20min写题&#xff0c;剩下问题基础知识。 Java String&#xff0c;StringBuilder&#xff0c; StringBuffer区…...

pro如何添加定时任务

Pro v2.4版本开始后台可以开关控制定时任务&#xff0c;那如何添加新的定时任务呢&#xff1f; 第一步&#xff1a;设置定时任务名称及标识&#xff1b; 文件app\controller\admin\v1\system\SystemTimer中task_name()方法 /**定时任务名称及标识 * return mixed */ public fu…...

bgp路由策略

* - valid 有效的, > - best 最佳的 上图中&#xff0c;有*和>&#xff0c;是有效最佳的。而没有*和没有>&#xff0c;是无效的&#xff0c;下一跳不可达 1--64511是公有AS 64512-65534为私有AS //属于哪个大的联盟 AS200 //连着一个子类AS 65002 //和子…...

chatGPT4.0编写性能测试报告

性能测试报告 测试概述 本次性能测试的目的是评估系统在高负载条件下的性能表现&#xff0c;以确保系统能够满足预期的性能需求。测试过程中&#xff0c;我们关注以下性能指标&#xff1a;响应时间、吞吐量、资源利用率&#xff08;CPU、内存、磁盘、网络&#xff09;以及错误…...

jpa多线程事务

百度都百度不到jpa多线程的事务回滚&#xff0c;废话少说&#xff0c;就是干&#xff0c; 实现思路&#xff08;可看可不看&#xff0c;本人也不喜欢罗里吧嗦的&#xff0c;想直接看干货就跳过这里&#xff0c;直接执行代码&#xff09;&#xff1a; jpa本身是不支持多线程事务…...

加密解密软件VMProtect教程(四):准备项目之SDK功能

VMProtect 是保护应用程序代码免遭分析和破解的可靠工具&#xff0c;但只有在正确构建应用程序内保护机制并且没有可能破坏整个保护的典型错误的情况下才能最有效地使用。 SDK 功能可以集成到受保护应用程序的源代码中&#xff0c;以设置受保护区域的边界&#xff0c;以检测调…...

夏令营教育小程序开发功能和优势有哪些?

随着人们生活水平的提高&#xff0c;对于孩子的教育问题也是越来越重视&#xff0c;无论是教育方式还是教育内容上都追求新颖、多样化。在暑假期间&#xff0c;很多家长也希望孩子能够在这个长假期之间参加一些活动&#xff0c;培养孩子兴趣的同时也丰富假期内容&#xff0c;让…...

Cocos CreatorXR 1.2.0 今日发布,正式支持 WebXR ,并开启 MR 之路

去年九月&#xff0c;Cocos CreatorXR v1.0.1 版本支持了 VR 内容创作&#xff0c;成为率先支持 XR 的国产引擎&#xff0c;今年三月&#xff0c;Cocos CreatorXR v1.1.0 版本实现了对 AR 内容开发的支持。在完成基本功能的建设后&#xff0c;更多开发者开始尝试使用 Cocos Cre…...

U盘挂载Linux

在 只能使用 Telnet 的情况下&#xff0c;如果希望通过 U盘 传输文件到 Linux 系统&#xff0c;可以按照以下步骤操作&#xff1a; &#x1f4cc; 前提条件 U盘已插入 Linux 主机的 USB 接口。Linux 主机支持自动挂载 U盘&#xff08;大多数现代发行版默认支持&#xff09;。T…...

NLP学习路线图(二十一): 词向量可视化与分析

在自然语言处理&#xff08;NLP&#xff09;的世界里&#xff0c;词向量&#xff08;Word Embeddings&#xff09;犹如一场静默的革命。它将原本离散、难以捉摸的词语&#xff0c;转化为稠密、富含语义的连续向量&#xff0c;为机器理解语言铺平了道路。然而&#xff0c;这些向…...

c++ algorithm

cheatsheet&#xff1a;https://hackingcpp.com transform 元素变换 https://blog.csdn.net/qq_44961737/article/details/146011174 #include <iostream> #include <vector> #include <algorithm>int main() {std::vector<int> a {1, 2, 3, 4, 5};…...

C++ Vector算法精讲与底层探秘:从经典例题到性能优化全解析

前引&#xff1a;在C标准模板库&#xff08;STL&#xff09;中&#xff0c;vector作为动态数组的实现&#xff0c;既是算法题解的基石&#xff0c;也是性能优化的关键战场。其连续内存布局、动态扩容机制和丰富的成员函数&#xff0c;使其在面试高频题&#xff08;如LeetCode、…...

谷歌地图手机版(Google maps)v11.152.0100安卓版 - 前端工具导航

谷歌地图(Google maps)是由谷歌官方推出的一款手机地图应用。软件功能强大&#xff0c;支持本地搜索查找世界各地的地址、地点和商家&#xff1b;支持在街景视图中查看世界各地的360度全景图&#xff1b;支持查找乘坐火车、公交车和地铁的路线&#xff0c;或者查找步行路线等 …...

【Spring底层分析】Spring AOP基本使用+万字底层源码阅读分析

一、AOP基本使用 三步&#xff1a; 将业务逻辑组件和切面类都加入到容器中&#xff0c;告诉Spring哪个是切面类&#xff08;Aspect&#xff09;在切面类上的每一个通知方法上标注通知注解&#xff0c;告诉Spring何时&#xff08;Before、After、Around……&#xff09;何地运…...

git clone报错:SSL certificate problem: unable to get local issuer certificate

上述报错的完整信息是&#xff1a; Cloning into test... fatal: unable to access https://github.com/xxxx/xxxx.git/: SSL certificate problem: unable to get local issuer certificate 该报错表示 Git 在使用 HTTPS 协议克隆仓库时&#xff0c;无法验证 GitHub 的 SSL …...

实现一个免费可用的文生图的MCP Server

概述 文生图模型为使用 Cloudflare Worker AI 部署 Flux 模型&#xff0c;是参照视频https://www.bilibili.com/video/BV1UbkcYcE24/?spm_id_from333.337.search-card.all.click&vd_source9ca2da6b1848bc903db417c336f9cb6b的复现Cursor MCP Server实现是参照文章https:/…...

Elasticsearch集群管理的相关工具介绍

Elasticsearch 集群管理涉及节点监控、配置管理、故障排查、性能优化等多个环节,依赖一系列官方工具和社区方案实现高效运维。以下从 官方工具链、生态集成工具、社区辅助工具 三个维度介绍核心工具及其应用场景: 一、官方核心工具链 1. Elasticsearch 内置功能 _cluster 接…...

C# XAML 基础:构建现代 Windows 应用程序的 UI 语言

在现代 Windows 应用程序开发中&#xff0c;XAML (eXtensible Application Markup Language) 扮演着至关重要的角色。作为一种基于 XML 的声明性语言&#xff0c;XAML 为 WPF (Windows Presentation Foundation)、UWP (Universal Windows Platform) 和 Xamarin.Forms 应用程序提…...