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

JavaEE--文件操作和IO

目录

一、认识文件

二、 树型结构组织和目录

三、文件路径

1. 绝对路径

2. 相对路径

四、文件类型

五、文件操作

1. 构造方法

2. 方法

六、文件内容的读写——数据流

1. InputStream概述

2. FileInputStream概述

2.1 构造方法

2.2 示例

3. OutputStream概述

3.1 方法

3.2 示例

 4. Reader 和 Writer

七、练习


一、认识文件

文件是数据的集合,以特定格式存储在计算机或其他设备上。文件可以包含文本、图像、音频、视频等各种类型的信息。

  • 狭义上的文件:保存在硬盘上的文件
  • 广义上的文件:操作系统进行资源管理的一种机制(软件/硬件资源抽象成“文件”)

硬盘:

用来存储数据,可以存储数据的还有CPU寄存器和内存。

(注:MySQL存储数据的时候,也是保存到硬盘上的)

硬盘、内存和CPU寄存器的区别
存储空间访问速度读写速度成本持久化存储
硬盘很大(几TB)便宜可持久
内存小(16GB/32GB/...)不可持久
CPU寄存器非常小(<1KB)非常快非常快不单卖不可持久

二、 树型结构组织和目录

同时,随着文件越来越多,对文件的系统管理也被提上了日程,如何进行文件的组织呢,⼀种合乎自然的想法出现了,就是按照层级结构进行组织⸺也就是我们数据结构中学习过的树形结构。这样, ⼀种专门用来存放管理信息的特殊文件诞生了,也就是我们平时所谓文件夹(folder)或者目录
(directory)的概念。
文件夹也是文件(目录文件)。

三、文件路径

文件路径是指文件在计算机系统中存储的具体位置。在Windows和Mac OS系统中,文件路径通常由文件夹(目录)的层级结构表示,通过一系列文件夹名称和分隔符组成,以便于定位和访问文件。

绝对路径和相对路径是用于描述文件或文件夹在文件系统中位置的两种不同方式。

1. 绝对路径

绝对路径是从文件系统的根目录开始,沿着路径一直到文件或文件夹的准确位置的完整路径。

在Windows系统中,文件路径通常以盘符(如C:\)开始,然后依次列出每个文件夹的名称,使用反斜杠(\)或斜杠(/)作为分隔符,例如:C:\Users\Username\Documents\File.txt。

注:写代码时,建议“/”,“\”需要用转义字符。

2. 相对路径

相对路径是相对于当前工作目录(当前位置)的路径。它描述文件或文件夹相对于当前位置的位置关系。

相对路径不以根目录开始,而是相对于当前位置的文件路径。

例如,假设当前工作目录是C:\Users\Username,在该位置下的Documents文件夹中的文件File.txt的相对路径可以表示为Documents\File.txt。

相对路径的优点是更简洁、易于移植,并且可以根据当前位置灵活地定位文件。

例:

String path = "./test_4_10";

基准路径是谁?

  1. 1.在IDEA中直接运行:基准路径就是项目的目录(D:\code\java\bite_class_code)
  2. 打一个jar包,单独运行jar包:当前在哪个目录下执行运行命令,基准目录就是哪个目录
  3. 打成一个war包,放到tomcat中去执行:基准路径就是tomcat的bin目录

四、文件类型

即使是普通文件,根据其保存数据的不同,夜京城被分为不同的类型,我们一般简单的划分为文本文件(如图片、音频、视频、可执行程序……)和二进制文件(如txt纯文本文件、.java……),分别指代保存杯被字符集编码的文本和按照标准格式保存的非被字符集编码过的文件。

所有的文件都是二进制的,但是有一些事特殊的,二进制数据的编码方式刚好能构成字符。

区分方法:用记事本打开,出现乱码的是二进制文件,不是乱码的是文本文件。

五、文件操作

Java中通过 java.io.File 类来对一个文件(包括目录)进行抽象的描述。注意,有File对象,并不代表真实存在该文件。

1. 构造方法

方法签名
说明
File(File parent, String child)
根据父目录 + 孩子文件路径,创建⼀个新的 File 实例
File(String pathname)
根据文件路径创建⼀个新的 File 实例,路径可以是绝对路径或者相对路径
File(String parent, String child)
根据父目录 + 孩子文件路径,创建⼀个新的 File 实例,父目录用路径表示

2. 方法

修饰符及返回值类型
方法签名
说明
String
getParent()
返回 File 对象的父目录文件路径
String
getName()
返回 FIle 对象的纯文件名称
String
getPath()
返回 File 对象的文件路径
String
getAbsolutePath()
返回 File 对象的绝对路径
String
getCanonicalPath()
返回 File 对象的修饰过的绝对路径
boolean
exists()
判断 File 对象描述的文件是否真实存在
boolean
isDirectory()
判断 File 对象代表的文件是否是⼀个目录
boolean
isFile()
判断 File 对象代表的文件是否是⼀个普通文件
boolean
createNewFile()
根据 File 对象,自动创建⼀个空文件,成功创建后返回 true
boolean
delete()
根据 File 对象,删除该文件,成功删除后返回 true
void
deleteOnExit()
根据 File 对象,标注文件将被删除,删除动作会到 JVM 运行结束时才会进行
String[]
list()
返回 File 对象代表的目录下的所有文件名
File[]
listFiles()
返回 File 对象代表的目录下的所有文件,以 File 对象表示
boolean
mkdir()
创建 File 对象代表的目录
boolean
mkdirs()
创建 File 对象代表的目录,如果必要,会创建中间目录
boolean
renameTo(File dest)
进行文件改名,也可以视为我们平时的剪切、粘贴操作
boolean
canRead()
判断用户是否对文件有可读权限
boolean
canWrite()判断用户是否对文件有可写权限

示例:

import java.io.File;
import java.io.IOException;public class FileOperationandIO {public static void main(String[] args) throws IOException {File file = new File("./text.txt");System.out.println(file.getParent());System.out.println(file.getName());System.out.println(file.getPath());System.out.println(file.getAbsolutePath());System.out.println(file.getCanonicalPath()); //绝对路径的简化版本file.createNewFile();System.out.println(file.exists());System.out.println(file.isFile());System.out.println(file.isDirectory());}
}

运行结果:

.
text.txt
.\text.txt
D:\code\java\bite_class_code\.\text.txt
D:\code\java\bite_class_code\text.txt
true
true
false

并且在源路径下创建了一个新文件“text.txt”:

 

import java.io.File;
import java.io.IOException;public class FileOperationandIO {public static void main(String[] args) throws IOException, InterruptedException {File file = new File("./test.txt");Boolean result = file.delete();System.out.println(result);}
}

运行结果:

且目录中的“text.txt”消失。

import java.io.File;
import java.io.IOException;public class FileOperationandIO {public static void main(String[] args) throws IOException, InterruptedException {File file = new File("./text.txt");file.deleteOnExit();Thread.sleep(10000);}
}

运行结果:

过10秒钟之后,进程结束时,文件被删除。 

deleteOnExit 应用场景:

office 系列产品会在编辑文芳过程中产生一个隐藏的临时文件,用来保存正在编辑的内容。

如果 office 正常关闭了,此时这个临时文件会自动删除; =>deleteOnExit 

如果 office 异常关闭了,这个临时文件仍然存在,下次启东时就可以恢复上次编辑的内容。

(类似于这样的功能,服务器端也会涉及到)

import java.io.File;
import java.io.IOException;public class FileOperationandIO {public static void main(String[] args) {File file = new File("./test");Boolean result = file.mkdir();System.out.println(result);}
}

运行结果:

 并且在源目录下创建了一个“test”文件夹:

import java.io.File;
import java.io.IOException;public class FileOperationandIO {public static void main(String[] args) {File file = new File("./test/111/222");Boolean result = file.mkdirs();System.out.println(result);}
}

运行结果:

 

并且创建了多级目录:

import java.io.File;public class FileOperationandIO {public static void main(String[] args) {File file = new File("./test.txt");File newfile = new File("./test2.txt");System.out.println(file.renameTo(newfile));}
}

运行结果:

 

且文件“test.txt”更名成“test2.txt”:

注:此方法也可以用于移动文件。

六、文件内容的读写——数据流

  • 字节流:读写文件,以字节为单位(针对二进制文件)

        如:InputStream(输入),OutputStream(输出)

  • 字符流:读写文件,以字符为单位(针对文本文件)

        如:Reader(输入),Writer (输出)

1. InputStream概述

InputStream(输入流)是Java中用于从输入源读取数据的抽象类。InputStream类是所有输入流类的超类,它定义了一系列读取字节的方法,可以从不同的数据源(文件、网络、内存等)读取数据。

InputStream类的常见子类包括:

  1. FileInputStream:从文件中读取数据的输入流。

  2. BufferedInputStream:带缓冲功能的输入流,可以提高数据读取的效率。

  3. DataInputStream:用于读取基本数据类型(如int、float、double等)的输入流。

  4. ObjectInputStream:用于读取Java对象的输入流,主要用于对象的序列化和反序列化。

通过使用InputStream及其子类,可以方便地处理不同输入源的数据读取操作,同时提供了丰富的方法来满足不同数据读取需求。在使用InputStream时,需要注意及时关闭流以释放资源,可以通过try-with-resources语句或手动关闭流来实现。

方法:

修饰符及返回值类型方法签名说明
intread()
读取⼀个字节的数据,返回 -1 代表已经完全读完了
intread(byte[] b)
最多读取 b.length 字节的数据到 b中,返回实际读到的数量;-1 代表以及读完了
intread(byte[] b, int off, int len)
最多读取 len - off 字节的数据到 b中,放在从 off 开始,返回实际读到的数量;-1 代表以及读完了
voidclose()
关闭字节流

2. FileInputStream概述

2.1 构造方法
签名说明
FileInputStream(File file)

利用File构造文件输入流

FileInputStream(String name)

利用文件路径构造文件输入流

2.2 示例
import java.io.*;public class FileOperationandIO {public static void main(String[] args) throws IOException {InputStream inputStream = null;try {inputStream = new FileInputStream("./text.txt");// 相当于C语言中的fopen} finally {inputStream.close(); // 关闭文件}}
}

读文件操作。

但是这样写有点丑,并且有忘记“close”的风险。

所以我们一般用 "try with resource" 方法:

try (InputStream inputStream = new FileInputStream("./text.txt")) {}// 出了try自动关闭文件

我们在text.txt中写入“你好”字符:

import java.io.*;public class FileOperationandIO {public static void main(String[] args) throws IOException {try (InputStream inputStream = new FileInputStream("./text.txt")) {//读文件操作while (true) {// 一次读一个字节int data = inputStream.read();if (data == -1) {// 文件读完break;}System.out.printf("0x%x\n", data); //打印utf-8的十六进制编码}}}
}

运行结果:

 

前三行是“你”的十六进制utf-8编码,后三行是“好”的utf-8编码。

import java.io.*;public class FileOperationandIO {public static void main(String[] args) throws IOException {try (InputStream inputStream = new FileInputStream("./text.txt")) {while (true) {// 一次读多个字节byte[] data = new byte[3];// 读操作,就会尽可能的把字节数组给填满// 填不满的话能填几个就是几个// 此处的n就表示实际读了几个字节int n = inputStream.read(data);System.out.println("n = " + n);if (n == -1) {break;}for (int i = 0; i < n; i++) {System.out.printf("0x%x\n", data[i]);}System.out.println("==================");}}}
}

运行结果:

3. OutputStream概述

3.1 方法
修饰符及返回值类型
方法签名
说明
void
write(int b)
写入要给字节的数据
void
write(byte[] b)
将 b 这个字符数组中的数据全部写入 os 中
int
write(byte[] b, int off, int len)
将 b 这个字符数组中从 off 开始的
数据写入 os 中,⼀共写 len 个
void
close()
关闭字节流
void
flush()
重要:我们知道 I/O 的速度是很慢的,所以,大多的 OutputStream 为了减少设备操作的次数,在写数据的时候都会将数据先暂时写入内 存的⼀个指定区域里,直到该区域满了或者其他指定条件时才真正将数据写入设备中,这个区域⼀般称为缓冲区。但造成⼀个结果,就是我们写的数据,很可能会遗留⼀部分在缓冲区中。需要在最后或者合适的位置,调用 flush(刷新)操作,将数据刷到设备中。

说明:

  1. 默认情况下会创建不存在的文件
  2. 打开文件的时候会默认清除上次的文件内容,否则要添加append参数
3.2 示例
import java.io.*;public class FileOperationandIO {public static void main(String[] args) throws IOException {try (OutputStream outputStream = new FileOutputStream("./output.txt", true)) {// 97在ascii码中对应'a'outputStream.write(97);outputStream.write(98);outputStream.write(99);} catch (IOException e) {// 此处需要处理两个异常,但因为针对两个异常的处理方法是一样的,所以直接合并了throw new RuntimeException(e);}}
}

运行结果:

代码运行结束之后,创建了一个新文件“output”文件,并写入了“abc”三个字符。

import java.io.*;public class FileOperationandIO {public static void main(String[] args) throws IOException {try (OutputStream outputStream = new FileOutputStream("./output.txt", true)) {// 一次写入多个字符byte[] bytes = {100, 101, 102};outputStream.write(bytes);} catch (IOException e) {// 此处需要处理两个异常,但因为针对两个异常的处理方法是一样的,所以直接合并了throw new RuntimeException(e);}}
}

运行结果:

在文件中追加了“def”三个字符:

 4. Reader 和 Writer

用法和InputStream/OutputStream很像,而Reader/Writer是处理字符流的抽象类,用于读写字符数据。在处理文本文件等字符数据时,通常使用Reader/Writer。

import java.io.*;public class FileOperationandIO {public static void main(String[] args) throws IOException {try (Reader reader = new FileReader("./text.txt")) {while (true) {int c = reader.read();if (c == -1) {break;}System.out.println((char)c);}} catch (IOException e) {throw new RuntimeException(e);}}
}

运行结果:

 

import java.io.*;public class FileOperationandIO {public static void main(String[] args) throws IOException {try (Writer writer = new FileWriter("./text.txt")) {writer.write("Hello World!");}}
}

运行结果:

七、练习

扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问用户是否要删除该文件。
import java.io.File;
import java.util.Scanner;public class Exercise_deleteFile {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入要扫描的根目录:");String rootDirpath = scanner.next();File rootDir = new File(rootDirpath);if (!rootDir.isDirectory()) {System.out.println("输入的不是目录!");return;}System.out.println("请输入要删除的关键字:");String keyword = scanner.next();scanDir(rootDir, keyword);}private static void scanDir(File rootDir, String keyword) {// 1.列出当前目录中包含的所有文件File[] files = rootDir.listFiles();if (files == null) {return;}for (File file: files) {// 2.遍历filesif (file.isFile()) {// 3.如果是文件,则判断是否含有关键字dealFile(file, keyword);} else {// 4.如果是目录,则递归调用该方法scanDir(file, keyword);}}}private static void dealFile(File file, String keyword) {if (file.getName().contains(keyword)) {System.out.println("发现文件:" + file.getAbsolutePath() + "\n是否删除(y/n)");Scanner scanner = new Scanner(System.in);String result = scanner.next();if (result.equals("y")) {file.delete();System.out.println("文件已删除!");}}}
}

运行结果:

 

且文件已经删除。

 进行普通文件的复制。

import java.io.*;
import java.util.Scanner;public class Exercise_copyFile {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入源文件路径:");String srcRoot = scanner.next();System.out.println("请输入目标文件路径:");String destRoot = scanner.next();File srcFile = new File(srcRoot);if (!srcFile.isFile()) {System.out.println("源文件不存在!");return;}File destFile = new File(destRoot);//目标文件不一定存在,但是其根目录必须要求存在if (!destFile.getParentFile().isDirectory()) {System.out.println("目标文件的根目录不存在!");return;}// 复制文件try (InputStream inputStream = new FileInputStream(srcFile);OutputStream outputStream = new FileOutputStream(destFile)) {while (true) {byte[] bytes = new byte[1024];int data = inputStream.read();if (data == -1) {break;}// 此处的write不应该写整个bytes数组// bytes数组不一定能被填满,要按照data这个长度来写入outputStream.write(bytes, 0, data);}} catch (IOException e) {throw new RuntimeException(e);}}
}

运行结果:

 

text.txt文件:

text1.txt文件:

扫描指定目录,并找到名称或者内容中包含指定字符的所有普通文件(不包含目录)。 

import java.io.*;
import java.util.Scanner;// 扫描指定目录, 并找到名称或者内容中包含制定字符的所有普通文件
public class Exercise_seekFile {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入要扫描的目录:");String rootPath = scanner.next();File rootFile = new File(rootPath);if (!rootFile.isDirectory()) {System.out.println("输入的不是目录!");return;}System.out.println("请输入要搜索的关键词:");String keyword = scanner.next();scanDir(rootFile, keyword);}private static void scanDir(File rootFile, String keyword) {File[] files = rootFile.listFiles();if (files == null) {return;}for (File file: files) {if (file.isFile()) {seekFile(file, keyword);} else {scanDir(file, keyword);}}}private static void seekFile(File file, String keyword) {if (file.getName().contains(keyword)) {System.out.println("找到名称中含Keyword的文件:" + file.getAbsolutePath());return;}StringBuilder stringBuilder = new StringBuilder();try (Reader reader = new FileReader(file)) {while (true) {char[] chars = new char[1024];int data = reader.read(chars);if (data == -1) {break;}stringBuilder.append(chars, 0, data);}} catch (IOException e) {throw new RuntimeException(e);}if (stringBuilder.indexOf(keyword) >= 0) {System.out.println("找到内容中包含keyword的文件:" + file.getAbsolutePath());}}
}

运行结果:

 


                                               创作不易,麻烦给个三连呗

相关文章:

JavaEE--文件操作和IO

目录 一、认识文件 二、 树型结构组织和目录 三、文件路径 1. 绝对路径 2. 相对路径 四、文件类型 五、文件操作 1. 构造方法 2. 方法 六、文件内容的读写——数据流 1. InputStream概述 2. FileInputStream概述 2.1 构造方法 2.2 示例 3. OutputStream概述 3.…...

k8s的节点是否能直接 curl Service 名称

在 Kubernetes 中&#xff0c;节点&#xff08;Node&#xff09;默认情况下不能直接通过 Service 的 DNS 名称&#xff08;如 my-svc.default.svc.cluster.local&#xff09;访问 Service。以下是详细分析和解决方案&#xff1a; 1. 默认情况下节点无法解析 Service 的 DNS 名…...

Mask-aware Pixel-Shuffle Down-Sampling (MPD) 下采样

来源 简介&#xff1a;这个代码实现了一个带有掩码感知的像素重排下采样模块&#xff0c;主要用于图像处理任务&#xff08;如图像修复或分割&#xff09;。 论文题目&#xff1a;HINT: High-quality INpainting Transformer with Mask-Aware Encoding and Enhanced Attentio…...

本贴会成为记录贴

这几天有些心力交瘁了 一方面带着对互联网下行的伤心&#xff0c;一方面是对未来的担忧 一转眼好像就是20 21那个 可以在宿舍肆意玩手机 大学生活 可是我不小了 是个26岁的人了 时间很快 快的就好像和自己开了一个玩笑 我以为可以找到一个自己足够喜欢的 可爱的人 可是我没有 …...

redis数据结构-04 (HINCRBY、HDEL、HKEYS、HVALS)

哈希操作&#xff1a;HINCRBY、HDEL、HKEYS、HVALS Redis 中的哈希功能极其丰富&#xff0c;让您能够以类似于编程语言中对象的方式存储和检索数据。本课将深入探讨具体的哈希操作&#xff0c;这些操作为操作以下结构中的数据提供了强大的工具&#xff1a; HINCRBY 、 HDEL 、…...

python 写一个工作 简单 番茄钟

1、图 2、需求 番茄钟&#xff08;Pomodoro Technique&#xff09;是一种时间管理方法&#xff0c;由弗朗西斯科西里洛&#xff08;Francesco Cirillo&#xff09;在 20 世纪 80 年代创立。“Pomodoro”在意大利语中意为“番茄”&#xff0c;这个名字来源于西里洛最初使用的一个…...

复现MAET的环境问题(自用)

我的配置是3090&#xff0c;CUDA Version: 12.4 配置环境时总有冲突&#xff0c;解决好的环境如下 如果你的配置也是CUDA12.4&#xff0c;可以把下面的配置信息保存成 environment.yml 文件 然后执行下面的代码创建环境即可 conda env export > environment.yml name:…...

PDF2zh插件在zotero中安装并使用

1、首先根据PDF2zh说明文档&#xff0c;安装PDF2zh https://github.com/guaguastandup/zotero-pdf2zh/tree/v2.4.0 我没有使用conda&#xff0c;直接使用pip安装pdf2zh &#xff08;Python版本要求3.10 < version <3.12&#xff09; pip install pdf2zh1.9.6 flask pypd…...

第二十三节:图像金字塔- 图像金字塔应用 (图像融合)

一、引言:视觉信息的层次化表达 在数字图像处理领域,图像金字塔(Image Pyramid)作为一种多尺度表示方法,自20世纪80年代提出以来,始终在计算机视觉领域扮演着关键角色。这种将图像分解为不同分辨率层次的结构化表示方法,完美地模拟了人类视觉系统对场景的多尺度感知特性…...

一种混沌驱动的后门攻击检测指标

摘要 人工智能&#xff08;AI&#xff09;模型在各个领域的进步和应用已经改变了我们与技术互动的方式。然而&#xff0c;必须认识到&#xff0c;虽然人工智能模型带来了显著的进步&#xff0c;但它们也存在固有的挑战&#xff0c;例如容易受到对抗性攻击。目前的工作提出了一…...

LeetCode 高频题实战:如何优雅地序列化和反序列化字符串数组?

文章目录 摘要描述题解答案题解代码分析编码方法解码方法 示例测试及结果时间复杂度空间复杂度总结 摘要 在分布式系统中&#xff0c;数据的序列化与反序列化是常见的需求&#xff0c;尤其是在网络传输、数据存储等场景中。LeetCode 第 271 题“字符串的编码与解码”要求我们设…...

leetcode 15. 三数之和

题目描述 代码&#xff1a; class Solution { public:vector<vector<int>> threeSum(vector<int>& nums) {sort(nums.begin(),nums.end());int len nums.size();int left 0;int right 0;vector<vector<int>> res;for(int i 0;i <len…...

HTML难点小记:一些简单标签的使用逻辑和实用化

HTML难点小记&#xff1a;一些简单标签的使用逻辑和实用化 jarringslee 文章目录 HTML难点小记&#xff1a;一些简单标签的使用逻辑和实用化简单只是你的表象标签不是随便用的<div> 滥用 vs 语义化标签的本质嵌套规则的隐藏逻辑SEO 与可访问性的隐形关联 暗藏玄机的表单…...

Linux : 31个普通信号含义

Linux &#xff1a; 31个普通信号 信号含义特殊的两个信号 信号含义 信号编号信号名信号含义1SIGHUP如果终端接口检测到一个连接断开&#xff0c;则会将此信号发送给与该终端相关的控制进程&#xff0c;该信号的默认处理动作是终止进程。2SIGINT当用户按组合键&#xff08;一般…...

软件测试都有什么???

文章目录 一、白盒测试&#xff08;结构测试&#xff09;二、黑盒测试&#xff08;功能测试&#xff09;三、灰盒测试四、其他测试类型五、覆盖准则对比六、应用场景 软件测试主要根据测试目标、技术手段和覆盖准则进行分类。分为白盒测试、黑盒测试、灰盒测试及其他补充类型 一…...

LangGraph框架中针对MCP协议的变更-20250510

MCP&#xff08;Model Context Protocol&#xff09;的出现为AI Agent与外部工具及数据源的集成提供了标准化接口&#xff0c;而LangGraph作为基于LangChain的智能体开发框架&#xff0c;在MCP协议的影响下也进行了适配性调整&#xff0c;主要体现在工具调用、异步交互和多步推…...

YashanDB(崖山数据库)V23.4 LTS 正式发布

2024年回顾 2024年11月我们受邀去深圳参与了2024国产数据库创新生态大会。在大会上崖山官方发布了23.3。这个也是和Oracle一样采用的事编年体命名。 那次大会官方希望我们这些在一直从事在一线的KOL帮助产品提一些改进建议。对于这样的想法&#xff0c;我们都是非常乐于合作…...

二、transformers基础组件之Tokenizer

在使用神经网络处理自然语言处理任务时&#xff0c;我们首先需要对数据进行预处理&#xff0c;将数据从字符串转换为神经网络可以接受的格式&#xff0c;一般会分为如下几步: - Step1 分词:使用分词器对文本数据进行分词(字、字词);- Step2 构建词典:根据数据集分词的结果,构建…...

git 报错:错误:RPC 失败。curl 28 Failed to connect to github.com port 443 after 75000

错误&#xff1a;RPC 失败。curl 28 Failed to connect to github.com port 443 after 75000 ms: Couldnt connect to server致命错误&#xff1a;在引用列表之后应该有一个 flush 包 方法一&#xff1a; 直接换一个域名&#xff1a;把 git clone https://github.com/zx59530…...

软考 系统架构设计师系列知识点之杂项集萃(56)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之杂项集萃&#xff08;55&#xff09; 第91题 商业智能关注如何从业务数据中提取有用的信息&#xff0c;然后采用这些信息指导企业的业务开展。商业智能系统主要包括数据预处理、建立&#xff08;&#xff09;、数据分…...

数据库的脱敏策略

数据库的脱敏策略&#xff1a;就是屏蔽敏感的数据 脱敏策略三要求&#xff1a; &#xff08;1&#xff09;表对象 &#xff08;2&#xff09;生效条件&#xff08;脱敏列、脱敏函数&#xff09; &#xff08;3&#xff09;二元组 常见的脱敏策略规则&#xff1a; 替换、重排、…...

Lora原理及实现浅析

Lora 什么是Lora Lora的原始论文为《LoRA: Low-Rank Adaptation of Large Language Models》&#xff0c;翻译为中文为“大语言模型的低秩自适应”。最初是为了解决大型语言模在进行任务特定微调时消耗大量资源的问题&#xff1b;随后也用在了Diffusion等领域&#xff0c;用于…...

力扣热题100之合并两个有序链表

题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 代码 方法一&#xff1a;新建一个链表 这里就先随便新建一个节点作为一个链表的头节点&#xff0c;然后每次遍历都将小的那个节点放入这个链表&#xff0c;遍历完一…...

Linux511SSH连接 禁止root登录 服务任务解决方案 scp Vmware三种模式回顾

创造一个临时文件 引用 scp -p 3712 atthistime.txt code11.1.1.100:/at ssh connect to host 11.1.1.100 port 22:No route to host lost connection 对方虚拟机是[rootlocalhost caozx26]# ll -d /at drwxr-xr-x. 2 root root 6 5月 11 11:10 /at sshd_config文件修改了port为…...

python实现用户登录

使用python实现用户登录&#xff0c;输入用户名和密码&#xff0c;进行验证&#xff0c;正确登录成功&#xff0c;错误登录失败&#xff0c;允许用户输入三次。 代码&#xff1a; 下面展示一些 内联代码片。 for i in range(3):username input(请输入用户名&#xff1a;)pas…...

信息系统项目管理师-软考高级(软考高项)​​​​​​​​​​​2025最新(十五)

个人笔记整理---仅供参考 第十五章项目风险管理 15.1管理基础 15.2项目风险管理过程 15.3规划风险管理 15.4识别风险 15.5实施定性风险分析 15.6实施定量风险分析 15.7规划风险应对 15.8实施风险应对 15.9监督风险...

力扣-二叉树-101 对称二叉树

思路 分解问题为&#xff0c;该节点的左孩子的左子树和右孩子的右子树是不是同一棵树 && 该节点的左孩子的右字数和右孩子的左子树是不是同一课树 && 该节点的左右孩子的值相不相同 代码 class Solution {public boolean isSymmetric(TreeNode root) {// 层…...

07.three官方示例+编辑器+AI快速学习webgl_buffergeometry_attributes_integer

本实例主要讲解内容 这个Three.js示例展示了WebGL 2环境下的整数属性渲染技术。通过创建大量随机分布的三角形&#xff0c;并为每个三角形分配不同的整数索引&#xff0c;实现了基于索引动态选择纹理的效果。 核心技术包括&#xff1a; WebGL 2环境下的整数属性支持顶点着色…...

Python Day 22 学习

学习讲义Day14安排的内容&#xff1a;SHAP图的绘制 SHAP模型的基本概念 参考学习的帖子&#xff1a;SHAP 可视化解释机器学习模型简介_shap图-CSDN博客 以下为学习该篇帖子的理解记录&#xff1a; Q. 什么是SHAP模型&#xff1f;它与机器学习模型的区别在哪儿&#xff1f; …...

OrangePi Zero 3学习笔记(Android篇)6 - hid-ft260

目录 1. 将hid-ft260.c拷贝到Android目录内 2. 修改hid-ids.h 3. 修改hid-quirks.c 4. 修改Kconfig 5. 修改Makefile 6. 配置内核 7. 编译内核 8. 增加权限 9. 验证 在Android中添加驱动模块ko文件&#xff0c;以hid-ft260为例。 1. 将hid-ft260.c拷贝到Android目录内…...

部署Superset BI(五)连接oracle数据库失败

折腾完了hana和sqlserver数据库的连接&#xff0c;开始折腾oracle数据库连接 1.requirements-local.txt配置 尝试在requirements-local.txt中设置&#xff0c;结果容器弄瘫痪了&#xff0c;拉不起来了&#xff0c;只要又去掉修改 rootNocobase:/usr/superset/superset/docker# …...

快速搭建一个vue前端工程

一、环境准备 1、安装node.js 下载地址&#xff1a;Node.js 推荐版本如下&#xff1a; 2、检查node.js版本 node -v npm -v 二、安装Vue脚手架 Vue脚手架是Vue官方提供的标准化开发工具。vue官网&#xff1a;https://cn.vuejs.org/ 全局安装vue/cli &#xff08;仅第一次…...

蓝桥杯14届 数三角

问题描述 小明在二维坐标系中放置了 n 个点&#xff0c;他想在其中选出一个包含三个点的子集&#xff0c;这三个点能组成三角形。然而这样的方案太多了&#xff0c;他决定只选择那些可以组成等腰三角形的方案。请帮他计算出一共有多少种选法可以组成等腰三角形&#xff1f; 输…...

在Python中计算函数耗时并超时自动退出

更多内容请见: python3案例和总结-专栏介绍和目录 文章目录 方法1:使用装饰器结合信号模块(仅Unix-like系统)方法2:使用多线程(跨平台解决方案)方法3:使用concurrent.futures(Python 3.2+)方法4:使用 multiprocessing + Process(跨平台)​方法5:使用 time 手动计…...

jna总结1

java使用JNA调用dll的方法_(jnacalldllapi) native.loadlibrary(path-CSDN博客 JNA(Java Native Access)&#xff1a;建立在JNI之上的Java开源框架&#xff0c;SUN主导开发&#xff0c;用来调用C、C代码&#xff0c;尤其是底层库文件&#xff08;windows中叫dll文件&#xff0c…...

[Java][Leetcode simple]26. 删除有序数组中的重复项

思路 第一个元素不动从第二个元素开始&#xff1a;只要跟上一个元素不一样就放入数组中 public int removeDuplicates(int[] nums) {int cnt1;for(int i 1; i < nums.length; i) {if(nums[i] ! nums[i-1]) {nums[cnt] nums[i];}}return cnt;}...

BUUCTF——Ezpop

BUUCTF——Ezpop 进入靶场 给了php代码 <?php //flag is in flag.php //WTF IS THIS? //Learn From https://ctf.ieki.xyz/library/php.html#%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E9%AD%94%E6%9C%AF%E6%96%B9%E6%B3%95 //And Crack It! class Modifier {protected $v…...

springboot3+vue3融合项目实战-大事件文章管理系统-更新用户密码

大致分为这三步 首先在usercontroller中增加updatePwd方法 PatchMapping ("/updatePwd")public Result updatePwd(RequestBody Map<String,String> params){//1.校验参数String oldPwd params.get("old_pwd");String newPwd params.get("n…...

用浏览器打开pdf,如何使用划词翻译?

1. 浏览器 | 扩展 | 获取 Microsoft Edge 扩展 2. 搜索 “沙拉查词” 点击“获取” 3. 扩展这里选择 管理扩展 勾选 “允许访问文件url” 注&#xff1a;这里一定要勾选&#xff0c;否则沙拉查词无法访问.pdf 文件&#xff01;&#xff01;&#xff01;会出现下图错误 4. 右击…...

大模型项目:普通蓝牙音响接入DeepSeek,解锁语音交互新玩法

本文附带视频讲解 【代码宇宙019】技术方案&#xff1a;蓝牙音响接入DeepSeek&#xff0c;解锁语音交互新玩法_哔哩哔哩_bilibili 目录 效果演示 核心逻辑 技术实现 大模型对话&#xff08;技术&#xff1a; LangChain4j 接入 DeepSeek&#xff09; 语音识别&#xff08;…...

split和join的区别‌

split和join是Python中用于处理字符串的两种方法&#xff0c;它们的主要区别在于功能和使用场景。‌ split()方法 ‌split()方法用于将字符串按照指定的分隔符分割成多个子串&#xff0c;并返回这些子串组成的列表‌。如果不指定分隔符&#xff0c;则默认分割所有的空白字符&am…...

Qt坐标系 + 信号和槽 + connect函数(8)

文章目录 Qt坐标系信号和槽connect函数connect函数的介绍connect函数具体的使用方式一个简单的例子 两个问题咋知道的QPushButton有一个clicked信号官方文档找不到相关线索怎么办 简介&#xff1a;上篇文章&#xff1a;Qt 通过控件按钮实现hello world 命名规范&#xff08;7&…...

Maven 公司内部私服中央仓库搭建 局域网仓库 资源共享 依赖包构建共享

介绍 公司内部私服搭建通常是为了更好地管理公司内部的依赖包和构建过程&#xff0c;避免直接使用外部 Maven 中央仓库。通过搭建私服&#xff0c;团队能够控制依赖的版本、提高构建速度并增强安全性。公司开发的一些公共工具库更换的提供给内部使用。 私服是一种特殊的远程仓…...

蓝桥杯14届国赛 合并数列

问题描述 小明发现有很多方案可以把一个很大的正整数拆成若干正整数的和。他采取了其中两种方案&#xff0c;分别将他们列为两个数组 {a1,a2,...,an} 和 {b1,b2,...,bm}。两个数组的和相同。 定义一次合并操作可以将某数组内相邻的两个数合并为一个新数&#xff0c;新数的值是…...

人工智能100问☞第20问:神经网络的基本原理是什么?

目录 一、通俗解释 二、专业解析 三、权威参考 神经网络通过模拟人脑神经元连接结构,借助多层神经元的前向传播(输入到输出逐层计算)与反向传播(误差逆向调整参数)机制,利用激活函数(如ReLU、Sigmoid)引入非线性特征,通过权重迭代优化实现从数据中自主学习,最终完…...

AMD FPGA书籍推荐-初学者、一线工程师适用

!](https://i-blog.csdnimg.cn/direct/b78c8f0d015240e28aaad985f0f6eca9.jpg...

CSS 盒子模型与元素定位

CSS 盒子模型与元素定位 一、元素类型与转换 1. 基本元素类型 块级元素 (block) 特点&#xff1a;独占一行&#xff0c;可设置宽高&#xff0c;默认宽度100%示例&#xff1a;<div>, <p>, <h1>-<h6>, <ul>, <li> 行内元素 (inline) 特…...

Java常用类-比较器

目录 一、为什么需要比较器&#xff1f;二、核心差异速记表三、Comparable&#xff1a;对象自带的 “默认规则”1. 核心作用2. 源码定义3. 实战&#xff1a;给Student类加默认规则4. 源码验证&#xff08;以Integer为例&#xff09; 四、Comparator&#xff1a;临时的 “外部规…...

【Linux系列】bash_profile 与 zshrc 的编辑与加载

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

【大模型】解决最新的Dify1.3.1版本 无法基于Ollama成功添加模型

本地搭建参考链接&#xff0c;但是版本不是最新的1.3.1 DeepSeek Dify &#xff1a;零成本搭建企业级本地私有化知识库保姆级教程 windows环境下部署。 查看模型添加&#xff0c;提示成功&#xff0c;但实际模型接口返回值为空&#xff0c;即看不到已添加的模型。 解决方法…...