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

【MySQL】使用文件进行交互

目录

准备工作

1.从文本文件中读取数据(导入)

1.1.CSV 文件

1.2.设置导入导出的路径

1.3.导入文件

1.4.将数据写入文本文件(导出)

2.从文件中读取并执行SQL命令

2.1.通过mysql监视器执行编写在文件里面的SQL语句

2.2.通过命令提示符执行编写在文件里的SQL命令

 3.将SQL的执行结果保存到文件中

3.1通过重定向将SQL语句的执行结果输出到文本文件中

3.2. 使用tee命令将SQL语句的执行结果保存到文件中

4.备份和恢复数据库

4.1.备份和恢复的方法

4.2.使用mysqldump导出

4.3.恢复转储文件


准备工作

首先我们知道有下面这个数据库即可

 

然后我们重点关注db和db1这两个表即可 

1.从文本文件中读取数据(导入)

当把大量数据输入到表中时,如果打开 MySQL 监视器用键盘手动输入所有数据,就会耗费非常多的时间和精力。

在需要输入成千上万条数据的情况下,我们可以使用 CSV(Comma Separated Values,逗号分隔值)格式的文本文件进行输入,这种读取文件的方式称为导入(import)。

1.1.CSV 文件

正如逗号分隔值这个名字所表达的那样,在 CSV 文件中,数据是用逗号隔开的,文件内容仅包含文本。我们看一下CSV格式的文件

每条记录都通过换行符用单独的一行表示

1.2.设置导入导出的路径

我们先看一个东西

select @@global.secure_file_priv;

@@global是用于引用MySQL系统全局变量的关键字。

连接到这个MySQL服务器的所有客户端都会引用系统全局变量的值,secure_file_priv用于指定允许导入、导出文件的路径。

如果指定为空字符串"",那么任何路径都可以导人或导出文件。如果指定为NULL,则不能导人或导出文件。

我们去这个目录看看

可以看到什么都没有啊 


secure_file_priv 这个变量被用于限制导入和导出的数据目录,比如 LOAD DATA 和 SELECT ... INTO OUTFILE 语句,以及 LOAD_FILE() 函数。这些操作限制了哪些用户拥有文件操作权限。

secure_file_priv 有些设置选项:

  • 如果为空,不做目录限制,即任何目录均可以。
  • 如果指定了目录,MySQL 会限制只能从该目录导入、或导出到该目录。目录必须已存在,MySQL 不会自动创建该目录。
  • 如果设置为 NULL,MySQL 服务器禁止导入与导出功能。

该变量的默认值,是由编译时的 CMake 选项而定。

MySQL 服务器在启动时,会检查 secure_file_priv 变量值,如果值不安全会在错误日志中写一个 WARNING 级别的日志。以下情况属于不安全的设置:

  1. 值为空
  2. 值为--datadir目录或其子目录
  3. 所有用户均有权限访问的目录

1.3.导入文件

我们可以使用LOAD DATA INFILE命令从文件导人数据,具体语句如下所示。

LOAD DATA INFILE '文件名' INTO TABLE 表名选项的描述;

除了CSV格式的文件以外,不用逗号分隔的文本文件也能被读取。我们可以指定读取的数据的格式,比如指定数据之间的分隔符、换行符,以及从第几行开始读取等。

在这种情况下,“选项的描述”部分需要按照下面的格式编写。

  • 格式LOAD DATA INFILE命令中指定数据格式的选项
FIELDS TERMINATED BY 分隔符(默认是'\t': Tab)
LINES TERMINATED BY 换行符(默认是'\n':换行)
IGNORE 最开始跳过的行 LINES(默认是0)

LOAD DATA INFILE 是 MySQL 中用于从文本文件导入数据到数据库表的命令。通过指定不同的格式选项,可以灵活适配多种文件格式(如 CSV、TSV 或其他自定义分隔符的文本文件)。以下是三个关键格式选项的作用和用法说明:


  • 1. FIELDS TERMINATED BY(字段分隔符)

默认情况下,MySQL 使用制表符 \t 作为字段分隔符。若文件中的字段由其他字符分隔(如逗号 ,、竖线 | 或特殊符号),需显式指定。例如,对于 CSV 文件,通常设置为 FIELDS TERMINATED BY ','。若分隔符是特殊字符(如转义字符),需用引号包裹或转义,例如 FIELDS TERMINATED BY '\t' 表示制表符。此选项直接影响如何解析每行中的字段。


  • 2. LINES TERMINATED BY(行终止符)

默认行终止符为换行符 \n,适用于 Unix/Linux 系统生成的文件。若文件来自 Windows 系统(行终止符为 \r\n),需设置为 LINES TERMINATED BY '\r\n'。此选项用于标识文件中每行的结束位置,确保数据按行正确分割。若设置错误,可能导致整段文本被误认为单行数据。


  • 3. IGNORE n LINES(忽略起始行数)

默认值为 0,即从文件第一行开始读取。若文件开头包含标题行或注释行,可通过此选项跳过指定行数。例如,IGNORE 1 LINES 会跳过第一行(常用于 CSV 文件跳过表头)。需注意,n 必须是整数,且仅作用于文件起始位置,无法跳过中间或末尾的行。


  •  示例完整命令

假设有一个 CSV 文件 data.csv,内容如下:

id,name,age
1,Alice,30
2,Bob,25

若需导入到表 users 并跳过标题行,命令为:

LOAD DATA INFILE 'data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

此配置会以逗号分隔字段,按换行符分拆行,并忽略首行标题。

  • 一个小例子

接下来我们自己来使用一下

下面这个和表tb1的结构相同。这次,我们试着将这个文件命名为t.csv,并将其导入到结构与表tb1相同的表tb1K中。

t.csv

N551,佐佐木,37
N552,伊藤,41
N553,齐藤,31
N554,井上,43
N555,阿倍,31

  • 导入文件

CSV文件t.csv使用的分隔符是“,”,所以我们只要通过FIELDS  TERMINATED BY ',' 进
行指定即可。

另外,当指定保存CSV文件的文件夹路径时,即使在Windows的情况下也不要使用
“\”,而要使用“/”。(例如:C:\data\t.csv→C:/data/t.csv)

下面来实际操作一下吧。

load data infile '/var/lib/mysql-files/t.csv' into table tb1 fields terminated by ',';
  • LOAD DATA INFILE:MySQL 中用于从文本文件(如 CSV)导入数据到数据库表的命令。

  • '/var/lib/mysql-files/t.csv':指定要导入的 CSV 文件路径。

  • INTO TABLE tb1:将数据导入到名为 tb1 的表中。

  • FIELDS TERMINATED BY ',':声明 CSV 文件中字段的分隔符为逗号(,)。

即使数据库的重量不同,只要文件是CSV格式就可以执行导入。

1.4.将数据写入文本文件(导出)

与导入相反,我们可以将表中的数据提取到 CSV 文件等文本文件中(见图 14-3),这种把数据提取到文件中的操作称为导出(export)。

导出的文件可以在其他的数据库和系统中使用,也可以在紧急情况下作为备份使用。我们可以通过如下命令执行导出操作。

注意:将数据写入到文本文件

SELECT * INTO OUTFILE '文件名' 选项的描述 FROM 表格;

参数“选项的描述”用于指定导出的文本文件的格式。具体的描述方法与导入时完全相同。

 除了CSV格式的文件以外,不用逗号分隔的文本文件也能被读取。我们可以指定读取的数据的格式,比如指定数据之间的分隔符、换行符,以及从第几行开始读取等。

在这种情况下,“选项的描述”部分需要按照下面的格式编写。

  • 指定数据格式的选项
FIELDS TERMINATED BY 分隔符(默认是'\t': Tab)
LINES TERMINATED BY 换行符(默认是'\n':换行)
IGNORE 最开始跳过的行 LINES(默认是0)

接着我们就导出我们的tb1表

select * into outfile '/var/lib/mysql-files/out.csv' fields terminated by ',' from tb1;

 

执行上面这个命令后,mysql会在 下面这个文件夹中,创建 CSV 格式的文本文件 out.csv 用于导出表 th1 中的数据。

回刚刚那个目录看看

我们可以查看一下这个新增的文件

sudo vim /var/lib/mysql-files/out.csv

 

和我们的tb1完全对的上

2.从文件中读取并执行SQL命令

2.1.通过mysql监视器执行编写在文件里面的SQL语句

当执行复杂且冗长的 SQL语句时,如果每次都在 MySQL 监视器上编写就会很麻烦。在执行复杂的 SQL语句的情况下,我们可以将其创建为文本文件,然后执行保存的文件。

这种方法可以进一步提高工作效率,还可以显示创建成文本文件的 SOL语句,并将其复制、粘贴到MySOL 监视器上执行。

如果将 SOL语句保存为文本文件,就可以反复使用它,还可以轻松对其进行改善。

在记事本等文本编辑器中事先准备好 SOL语句,然后在 MySOL 监视器上执行 SOURCE 命令。
格式 执行包含 SQL 语句的文本文件

SOURCE 文本文件名

如果执行的 SOL语句中包含中文,就需要注意作为参数的文本文件的字符编码了。

使用SOURCE 命令执行 SQL语句的方式与在 MySQL 监视器上执行的方式相同。

下面来实际操作一下。

试着在下面这个文件夹中创建包含“use scott”“SELBCT * FROMtb;”和“SELECT *FROM tb1;”这3行语句的文本文件 test.sql,读取并执行该文本文件。

接着我们打开mysql,执行下面这个命令

source /home/zs_108/test.sql

source不是SQL命令,所以可以不加逗号 

将常用表的内容保存到文件中

使用MySQL监视器创建“需要多次创建的表”或者“复杂的表”效率会很低。在这种情况下,建议在文本中编写处理步骤,然后执行SOURCE命令来创建表。

创建好文本文件后,就可以根据需要反复地使用它,并且可以不断地对其进行改善。最重要的是,与直接执行不同,我们可以静下心来编写,由此也可以减少输入方面的错误。

例如,下面是是创建员工信息表tb1的SQL语句。

tb1_make.sql

DROP TABLE IF EXISTS tb1;
CREATE TABLE tb1 (empid VARCHAR(10),name VARCHAR(10),age INT);
INSERT INTO tb1 VALUES("A101","佐藤",40);
INSERT INTO tb1 VALUES("A102","高桥",28);
INSERT INTO tb1 VALUES("A103","中川",20);
INSERT INTO tb1 VALUES("A104","渡边",23);
INSERT INTO tb1 VALUES("A105","西泽",35);

我们打开mysql,执行下面这些命令

怎么样,是不是很好用?

2.2.通过命令提示符执行编写在文件里的SQL命令

之前执行SQL命令的时候会先启动MySQL监视器并在mysql>之后输入SQL语句执行。实
际上,我们也可以不启动MySQL监视器,直接通过命令提示符来执行SQL语句。

也就是说,即使不启动MySQL监视器,也可以执行包含SQL语句的文本文件。

这里我们试着使用SOURCE命令执行一下我们上一节创建的test.sql。

test.sql

use scott
SELECT * FROM tb;
SELECT * FROM tb1;


通过命令提示符执行SQL语句时需要使用如下命令。

  • 通过命令提示符执行SQL语句
mysql 数据库名 -u 用户名 -p密码 -e "MySQL监视器的命令"

添加-e选项,然后将后面的命令用""括起来。

注意要用"(双引号)将命令括起来,而不是用  '(单引号)。另外,请在-p密码、-e和"MySQL监视器的命令"之间加上半角空格。

如果不需要指定数据库名,则可以省略“数据库名”部分。因为在test.sql中有use scott的描述,所以可以省略“数据库名”。

当然,如果你觉得把密码写在中间太暴露了,我们也可以像下面这样子

mysql 数据库名 -u 用户名 -e "MySQL监视器的命令" -p

我们来实际操作一下。

mysql -u root -e "source /home/zs_108/test.sql" -p

即使不启动mysql监视器,也可以直接通过命令提示符直接执行文本文件中编写的SQL命令。

 3.将SQL的执行结果保存到文件中

在MySQL监视器上输入的命令会显示在屏幕上,执行结果也会显示在屏幕上。

用户可以通过 查看屏幕上显示的执行结果来获取信息,也可以将这些执行结果作为数据使用。

那么,如何将SQL的执行结果保存到文件中呢?

这里我们将介绍“在MySQL监视器上执行 tee命令”和“使用重定向将结果输出到标准输出”这两种方法。

3.1通过重定向将SQL语句的执行结果输出到文本文件中

我们可以在计算机上输入一些数据并让计算机输出处理结果。这时通常会使用键盘进行“输 入”,然后把结果“输出”到显示器上。

像键盘这种一开始就配备好的输入设备称为“标准输入”, 像显示器这种一开始就配备好的输出设备称为“标准输出”。

“标准输入”和“标准输出”可以更改。这个更改操作称为重定向 (redirect)。Windows 和 Linux等操作系统都具有这项功能。当进行重定向操作,也就是更改输入、输出目标时,需要使用 “>”等符号。

例如,下面这个就是一种重定向

 这样一来,echo的执行结果就写入了文本文件a.txt中。之所以会写人文本文件a.txt中, 是因为加上了>a.txt。 保存了输出结果的文件a.txt会保存在执行echo命令的当前路径中。

  • 通过mysql命令使用重定向

下面试着在MySQL中使用重定向功能。假设在启动MySQL监视器的时候执行了以下命令。

mysql -u root -p

试着使用重定向把提取结果输入到文件中。请按照下面的方式启动MySQL监视器。刚开始会 显示“Warning:Using a password...”的警告,大家不必在意。

mysql -u root > log.txt -p

如果按照这种方式启动MySQL监视器,SQL语句的执行结果将不会显示在屏幕上,而是会输 出到重定向指定的log.txt中。注意,不要因为没有显示任何结果而胡乱操作。

下面让我们静下心来慢慢操作。先指定要使用的数据库,然后使用SELECT命令显示表tb1的 内容,最后通过exit退出MySQL监视器。执行结果同样不会显示出来。

use scott
SELECT * FROM tb1;
exit

回到原来的命令提示符界面了吗?

屏幕上没有显示任何内容,确实有点不方便。

那么我们就来确认一下log.txt的内容。log.txt应该保存在执行命令的当前路径中。

使用记事本等文本编辑器打开log.txt,或者在命令提示符下输入type log. txt。

你会发现,以前显示在MySQL监视器上的内容变成了文本文件。



这样,“SELECT *FROM tb1;”的结果应该就能显示出来了。该文件只是一个文本文件, 因此可以在其他系统和应用软件中自由使用。

如果需要让结果显示在屏幕上,则可以结合上一节中介绍的方法使用。

从命令提示符上执行 SQL语句文本文件test.sql,然后使用重定向将结果直接写入文本文件log.txt中。

mysql -u root -e "SOURCE /home/zs_108/test.sql" > log.txt -p

test.sql的内容 

use scott
select * form tb;
select * from tb1;

  • 使用重定向输入SQL语句,并通过重定向将结果输出到文件

下面介绍使用重定向进行输入、输出的示例。
使用重定向输入文件时需要使用“<”。这样就可以使用重定向输入并执行文本文件的SQL语句(test.sql),然后再通过重定向将结果输出到文本文件(log2.txt)。

mysql -u root < /home/zs_108/test.sql > /home/zs_108/log2.txt -p

即使看不到过程也没有问题。但是,在使用这种方法的情况下,就算SQL语句报错,我们也只能通过查看输出的文本文件得知。


3.2. 使用tee命令将SQL语句的执行结果保存到文件中

在MySQL监视器上使用tee命令,可以与上一节的重定向一样将结果写入文件。

如果在MySQL监视器上按照如下方式执行tee命令,执行结果就会保存在指定的文件中

tee 输出文件的名称
  • 将执行结果保存到文件中

当把执行结果导出到文件log3.txt时,假设在MySQL监视器的状态下执行了如下操作。

这样就创建出一个空的文本文件log3.txt,以后输出结果不仅会显示在屏幕上,还会写入log3. txt中。另外,如果log3.txt会保存在执行命令的当前路径中。

执行tee命令后,我们执行下面这些命令

use scott
select * from tb;
select * from tb1;

我们发现这个执行结果会像往常一样正常显示出来,同时这些内容也会被写入log3.txt

  • 停止向文件中输出执行结果

这个很简单,我们可以使用notee命令停止 向文件中输出执行结果

notee

很好!!

4.备份和恢复数据库

4.1.备份和恢复的方法

我们可以将数据库的设置、表和列的定义、数据等数据库的所有信息作为文件导出。

  • 转储

对数据库的所有内容执行导出的操作称为转储(dump)。

如果使用转储文件,就可以在其他服务器上创建内容相同的数据库,也可以备份以应对紧急情况的发生。

我们可以在命令提示符上执行 mysqldump 命令来转储 MySQL 数据库

mysqldump命令会将数据库的配置和数据本身作为SOL语句写出来,也就是通过“CREATE TABLE……”创建表,然后写出“INSERT INTO ……”这样的 SOL语句。

通过转储导出的信息是由 SOL语句生成的文本。通过这些文本,我们可以读取数据库的所有信息,可以说“转储输出就是数据库本身”。从安全方面考虑,我们需要谨慎对待这些信息。

  • 恢复

把通过 mysqlāump 命令导出的数据还原到数据库中的操作称为恢复(restore )。

恢复意味着从头创建数据库,其实就是将包含 SOL语句集合的文本文件用 MySOL, 命令进行重定向。

4.2.使用mysqldump导出

试着使用 mysqlāump 命令对前面创建的数据库 db1的所有信息进行转储,并通过重定向将mysqldump 命令的执行结果写人文件中。

  • 转储数据库
mysqldump -u 用户名 -p密码 数据库名 > 输出文件的名称

下面来实际操作一下。

我们先看db1里面有什么东西,

将数据库 db1 的信息转储到名为 db1_out.txt的文件中

mysqldump -u root db1>db1_out.txt -p

我们可以看看这个文件里面有什么东西

 行的开头是“-_”的部分是注释,用“/*”和“*/”括起来的部分也是注释,注释不是命令而是单纯的“说明”。上面的执行结果中有命令“CREATE TABLE…”,它用于创建表。

4.3.恢复转储文件

接下来恢复转储文件。在命令提示符上使用重定向将文件还原到数据库。

  • 恢复转储文件格式

mysqldump -u 用户名 -p密码 数据库名 < 转储文件的名称

这次是在同一台计算机上对数据库进行复制,当然我们也可以将数据库恢复到其他的 MySOL环境。

当恢复数据库时,我们必须提前准备一个用于填充的数据库。如果没有数据库,就需要提前创建一个 。
下面来恢复转储文件。创建数据库 db2,然后将转储文件 db1_out.txt 恢复到该数据库中。

我们可以在命令行下输入这个命令即可创建数据库db2

mysql -u root -e "create database db2;" -p

接下来我们就将转储文件还原回来

mysql -u root db2 < db1_out.txt -p

这个时候我们回到mysql看看

 

我们看到,这个和db1完全一样。

相关文章:

【MySQL】使用文件进行交互

目录 准备工作 1.从文本文件中读取数据&#xff08;导入&#xff09; 1.1.CSV 文件 1.2.设置导入导出的路径 1.3.导入文件 1.4.将数据写入文本文件&#xff08;导出&#xff09; 2.从文件中读取并执行SQL命令 2.1.通过mysql监视器执行编写在文件里面的SQL语句 2.2.通过…...

Redis 学习笔记 5:分布式锁

Redis 学习笔记 5&#xff1a;分布式锁 在前文中学习了如何基于 Redis 创建一个简单的分布式锁。虽然在大多数情况下这个锁已经可以满足需要&#xff0c;但其依然存在以下缺陷&#xff1a; 事实上一般而言&#xff0c;我们可以直接使用 Redisson 提供的分布式锁而非自己创建。…...

【硬核数学】2. AI如何“学习”?微积分揭秘模型优化的奥秘《从零构建机器学习、深度学习到LLM的数学认知》

在上一篇中&#xff0c;我们探索了线性代数如何帮助AI表示数据&#xff08;向量、矩阵&#xff09;和变换数据&#xff08;矩阵乘法&#xff09;。但AI的魅力远不止于此&#xff0c;它最核心的能力是“学习”——从数据中自动调整自身&#xff0c;以做出越来越准确的预测或决策…...

[Java][Leetcode middle] 151. 反转字符串中的单词

思路挺简单的 自己想的&#xff0c;步骤挺复杂的 先统计处开头和结尾的空格数跳过开头这些空格&#xff0c;将单词放到数组中统计最后一个可能漏过的单词&#xff08;例如&#xff1a;“hello word”&#xff0c;没有空格退出&#xff09;倒序输出 public String reverseWor…...

力扣每日一题5-18

class Solution { public int colorTheGrid(int m, int n) { // 每一列可能的状态总数 每个单元有3可能 int totalState 1; for (int i 0; i < m; i) totalState * 3; // pre[k] 代表前一轮dp 状态为k 的方案总数 int [] pre new int [totalState]; // 初始化合法填色 的…...

leetcode 74. Search a 2D Matrix

题目描述 要求时间复杂度必须是log(m*n)。那么对每一行分别执行二分查找就不符合要求&#xff0c;这种做法的时间复杂度是m*log(n)。 方法一&#xff0c;对每一行分别执行二分查找&#xff1a; class Solution { public:bool searchMatrix(vector<vector<int>>&a…...

养生指南:重塑健康生活的实用方案

一、饮食&#xff1a;均衡膳食&#xff0c;滋养身心 三餐以 “轻盐、轻油、轻糖” 为准则。早餐搭配全麦三明治、无糖酸奶和一小把蓝莓&#xff0c;补充优质碳水与抗氧化物质&#xff1b;午餐选用糙米饭、白灼虾及蒜蓉西蓝花&#xff0c;保证蛋白质与膳食纤维摄入&#xff1b;…...

IPTABLES四表五链祥解

在Linux中&#xff0c;iptables 是一个强大的防火墙工具&#xff0c;用于管理和过滤网络流量。iptables 使用四个不同的表&#xff0c;每个表都包含多个链&#xff0c;来控制流量的处理。 一、iptables四个表 表名功能说明filter默认表&#xff0c;负责对进出数据包的过滤操作…...

嵌入式学习--江协51单片机day8

这个本来应该周末写的&#xff0c;可是一直想偷懒&#xff0c;只能是拖到周一了&#xff0c;今天把51结个尾&#xff0c;明天开始学32了。 学习内容LCD1602&#xff0c;直流电机&#xff0c;AD/DA&#xff0c;红外遥控 LCD1602 内部的框架结构 屏幕小于数据显示区&#xff…...

内网穿透与内网映射是什么?

在互联网技术快速迭代的当下&#xff0c;网络通信架构日益复杂&#xff0c;内网穿透与内网映射作为实现公网访问内网资源的核心技术&#xff0c;在企业办公、个人开发、智能家居等领域发挥着关键作用。尽管两者都致力于打通公网与内网的连接通道&#xff0c;但它们在底层原理、…...

51单片机点亮一个LED介绍

LED介绍 LED就是发光二极管&#xff0c;一般来说如果是直插式的&#xff0c;那就是长正短负&#xff0c;如果是贴片式的&#xff0c;那就带彩色标记是阴极&#xff0c;如果是三角形的&#xff0c;水平箭头指的就是阴极&#xff0c;通常一般的工作电压在3mA~20mA&#xff0c;当…...

WebRTC技术EasyRTC嵌入式音视频通信SDK助力智能电视搭建沉浸式实时音视频交互

一、方案概述​ EasyRTC是一款基于WebRTC技术的开源实时音视频通信解决方案&#xff0c;具备低延迟、高画质、跨平台等优势。将EasyRTC功能应用于智能电视&#xff0c;能够为用户带来全新的交互体验&#xff0c;满足智能电视在家庭娱乐、远程教育、远程办公、远程医疗等多种场…...

uniapp 小程序 CSS 实现多行文本展开收起 组件

效果 组件 <template><!-- 最外层弹性盒子 --><div class"box" :style"boxStyle"><!-- 文本区域&#xff0c;动态类名控制展开/收起状态 --><div ref"textRef" :class"[text-cont, btnFlag ? text-unfold : t…...

嵌入式51单片机:C51

sbit TISCON^1的意思是定义TI为SCON的次低位&#xff08;最低位标记为0&#xff0c;其次为1&#xff0c;再次为2&#xff09;...

【回眸】香橙派zero2 嵌入式数据库SQLite

前言 SQLite介绍 安装SQLite3 SQLite 使用 创建数据库 创建一张表格 插入数据 查看数据库的记录 删除一条记录 更改一条记录 删除一张表 增加一列&#xff08;性别&#xff09; SQLite编程操作 前言 还有2个项目没更新完...披星戴月更新中... SQLite介绍 基于嵌入…...

vue3个生命周期解析,及setup

合理使用各生命周期&#xff0c;切勿乱用&#xff0c;不是所有东西都需要&#xff0c;合理使用可以提高效率和性能。 Vue 3 生命周期钩子详解 Vue 3的生命周期钩子分为以下几个阶段&#xff1a; onBeforeMount 调用时机&#xff1a;在组件挂载到DOM之前调用。使用场景&#xf…...

MySQL死锁:面试通关“三部曲”心法

想象一下&#xff0c;你的MySQL数据库里有两张桌子&#xff08;数据表&#xff09;&#xff0c;比如一张“产品库存表”&#xff0c;一张“订单表”。现在来了两个顾客&#xff08;并发事务&#xff09;&#xff0c;都想同时操作这两张桌子上的东西&#xff1a; 顾客A 先锁住了…...

Spring Boot 与 RabbitMQ 的深度集成实践(四)

实战案例 业务场景描述 在电商系统中&#xff0c;用户下单是一个核心业务操作。当用户成功下单后&#xff0c;系统需要执行一系列后续任务&#xff0c;如发送邮件通知用户订单已成功提交&#xff0c;更新库存信息以确保商品库存的准确性&#xff0c;以及记录订单相关的日志信…...

ES6详解

一、变量声明 let 与 const 块级作用域&#xff1a;替代 var 的函数作用域 const 声明常量&#xff08;不可重新赋值&#xff0c;但对象属性可修改&#xff09; if (true) {let x 10const PI 3.14 } console.log(x) // 报错 二、箭头函数 简写语法与 this 绑定 // 传统函数…...

C语言—字符函数和字符串函数

1.字符分类函数 字符控制函数&#xff1a;int iscntrl ( int c ); 控制字符通常不是可打印字符&#xff0c;该函数是用来判断参数是否为控制字符&#xff0c;需要的头文件为<ctype.h>标准ASCII码中&#xff0c;不可打印字符主要包括以下两类&#xff1a; 控制字符&…...

【LeetCode】大厂面试算法真题回忆(93)--优雅数组

题目描述 如果一个数组中出现次数最多的元素出现大于等于k次,被称为k-优雅数组,k也可以被称为优雅阈值。 例如,数组[1, 2, 3, 1, 2, 3, 1],它是一个3-优雅数组,因为元素1出现次数大于等于3次。数组[1, 2, 3, 1, 2]就不是一个3-优雅数组,因为其中出现次数最多的元素是1和…...

【MySQL成神之路】MySQL常用语法总结

目录 MySQL 语法总结 数据库操作 表操作 数据操作 查询语句 索引操作 约束 事务控制 视图操作 存储过程和函数 触发器 用户和权限管理 数据库操作 创建数据库&#xff1a; CREATE DATABASE database_name; 选择数据库&#xff1a; USE database_name; 删除数…...

机器学习第十六讲:K-means → 自动把超市顾客分成不同消费群体

机器学习第十六讲&#xff1a;K-means → 自动把超市顾客分成不同消费群体 资料取自《零基础学机器学习》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章&#xff1a;DeepSeek R1本地与线上满血版部署&#xff1a;超详细手把手指南 K-me…...

多商户1.8.1版本前端问题优化集合指南

1、逛逛社区上传一张图时&#xff0c;进入详情页面显示不出来 修改路径&#xff1a;pages ---> discover ---> components ---> discoverDetails.vue 解读&#xff1a;这里是因为图片高度没有定义&#xff0c;图片没显示出来。修改如下&#xff1a; <!--逛逛类型为…...

基于正点原子阿波罗F429开发板的LWIP应用(1)——网络ping通

说在开头 正点原子F429开发板主芯片采用的是STM32F429IGT6&#xff0c;网络PHY芯片采用的是LAN8720A(V1)和YT8512C(V2)&#xff0c;采用的是RMII连接&#xff0c;PHY_ADDR为0&#xff1b;在代码中将会对不同的芯片做出适配。 CubeMX版本&#xff1a;6.6.1&#xff1b; F4芯片组…...

第 1 章:数字 I/O 与串口通信(GPIO UART)

本章目标: 掌握 GPIO 的硬件原理、寄存器配置与典型驱动框架 深入理解 UART/USART 的帧格式、波特率配置、中断与 DMA 驱动 通过实战案例,将 GPIO 与 UART 结合,实现 AT 命令式外设控制 章节结构 GPIO 概述与硬件原理 GPIO 驱动实现:寄存器、中断与去抖 UART/USART 原理与帧…...

MCU 温度采样理论(-ADC Temperature sensor)

温度传感器可以使用ADC来测量芯片温度。   为了准确测量运行时的芯片温度,请使用在生产过程中运行的参考测量值,此参考值与其他校准数据一起存放在SFlash中。 一、温度测量流程 1、ADC校准:关于偏移和增益调整的实例,见9.3。 2、检查CREFH和VREL:参见8.2。 3、设置参考…...

stm32week16

stm32学习 十一.中断 4.使用中断 EXTI的配置步骤&#xff1a; 使能GPIO时钟设置GPIO输入模式使能AFIO/SYSCFG时钟设置EXTI和IO对应关系设置EXTI屏蔽&#xff0c;上/下沿设置NVIC设计中断服务函数 HAL库的使用&#xff1a; 使能GPIO时钟&#xff1a;__HAL_RCC_GPIOx_CLK_EN…...

隨筆 20250519 基于MAUI Blazor整合SQLite数据库与Star打印机的详细步骤

以下是基于MAUI Blazor整合SQLite数据库与Star打印机的详细步骤&#xff0c;包含必要的NuGet包引入及核心代码实现&#xff1a; 零、目錄結構 ​​ 一、整合SQLite数据库​​ ​​1. 安装NuGet包​​ # SQLite核心库 Install-Package sqlite-net-pcl # SQLite平台适配库&am…...

电子电路原理第十六章(负反馈)

1927年8月,年轻的工程师哈罗德布莱克(Harold Black)从纽约斯塔顿岛坐渡轮去上班。为了打发时间,他粗略写下了关于一个新想法的几个方程式。后来又经过反复修改, 布莱克提交了这个创意的专利申请。起初这个全新的创意被认为像“永动机”一样愚蠢可笑,专利申请也遭到拒绝。但…...

推客小程序系统开发:全栈式技术解决方案与行业赋能实践​

​ 在数字化营销深度渗透各行业的当下&#xff0c;传统推广模式已难以满足企业精细化运营与高效获客的需求。专业的推客小程序系统凭借其强大的裂变传播能力与灵活的推广机制&#xff0c;成为企业构建私域流量池、提升推广效能的核心工具。我们基于多年技术沉淀与行业洞察&…...

【prometheus+Grafana篇】基于Prometheus+Grafana实现Oracle数据库的监控与可视化

&#x1f4ab;《博主主页》&#xff1a; &#x1f50e; CSDN主页 &#x1f50e; IF Club社区主页 &#x1f525;《擅长领域》&#xff1a;擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(MongoDB)有了…...

【Android构建系统】Soong构建系统,通过.bp + .go定制编译

背景介绍 本篇是一篇实操内容&#xff0c;是对【Android构建系统】如何在Camera Hal的Android.bp中选择性引用某个模块的优化与改进。本篇内容主要想通过一个具体例子介绍Soong构建系统较复杂的定制化方法和步骤&#xff0c;以便在今后的工作学习中更好的使用Soong构建系统。 …...

Qt开发:QUdpSocket的详解

文章目录 一、QUdpSocket 简介二、常用函数的介绍和使用三、接收端完整示例四、发送端完整示例 一、QUdpSocket 简介 在 Qt 中&#xff0c;UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09;是通过 QUdpSocket 类实现的。UDP 是一种无连接的、轻量…...

【android bluetooth 协议分析 01】【HCI 层介绍 9】【ReadLocalSupportedCommands命令介绍】

1. HCI_Read_Local_Supported_Commands 命令介绍 1. 命令介绍&#xff08;Description&#xff09; HCI_Read_Local_Supported_Commands 是 HCI 层中非常重要的查询命令。它允许 Host&#xff08;如 Android 系统中的 Bluetooth stack&#xff09;获取 Controller&#xff08;…...

Model 速通系列(一)nanoGPT

这个是新开的一个系列用来手把手复现一些模型工程&#xff0c;之所以开这个系列是因为有人留言说看到一个工程不知道从哪里读起&#xff0c;出于对自身能力的提升与兴趣&#xff0c;故新开了这个系列。由于主要动机是顺一遍代码并提供注释。 该系列第一篇博客是 nanoGPT &…...

星际争霸小程序:用Java实现策略模式的星际大战

在游戏开发的世界里&#xff0c;策略模式是一种非常实用的设计模式&#xff0c;它允许我们在运行时动态地选择算法或行为。今天&#xff0c;我将带你走进一场星际争霸的奇幻之旅&#xff0c;用Java实现一个简单的星际争霸小程序&#xff0c;通过策略模式来模拟不同种族单位的战…...

网络Tips20-007

网络威胁会导致非授权访问、信息泄露、数据被破坏等网络安全事件发生&#xff0c; 其常见的网络威胁包括窃听、拒绝服务、病毒、木马、( 数据完整性破坏 )等&#xff0c; 常见的网络安全防范措施包括访问控制、审计、身份认证、数字签名、( 数据加密 )、 包过滤和检测等。 AE…...

2.微服务-配置

引入springcloud的pom配置 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.12</version><relativePath/></parent> <dependencyManagemen…...

python实现pdf转图片(针对每一页)

from pdf2image import convert_from_path import ospdf_file rC:\Users\\Desktop\拆分\产权证.pdf poppler_path rC:\poppler-24.08.0\Library\bin # 这里改成你自己的路径output_dir rC:\Users\\Desktop\拆分\output_images os.makedirs(output_dir, exist_okTrue)image…...

Python编程从入门到实践 PDF 高清版

各位程序员朋友们&#xff0c;还在为找不到合适的Python学习资料而烦恼吗&#xff1f;还在为晦涩难懂的编程书籍而头疼吗&#xff1f;今天&#xff0c;就给大家带来一份重磅福利——237完整版PDF&#xff0c; 我用网盘分享了「Python编程&#xff1a;从入门到实践__超清版.pdf…...

CVE-2015-3934 Fiyo CMS SQL注入

CVE-2015-3934 Fiyo CMS SQL注入 页面抓登录数据包 构造延时注入语句在user处’%2B(select(0)from(select(sleep(5)))v)%2B’ 存在延时注入&#xff0c;使用脚本即可...

【Pandas】pandas DataFrame mode

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...

(思维题、贪心)洛谷 P11232 CSPS2024 超速检测 题解

这一题在 2024 将我击败&#xff0c;但我怎么现在才补题解 …… 题意 原题 思路 对于每一辆车&#xff0c;我们可以算出&#xff0c;其在距离左端点哪段位置会超速 [ l , r ] [l,r] [l,r]&#xff0c;那么这辆车会被 l l l 右侧最近的测速仪到 r r r 左侧最近的测速仪检…...

C#:多线程

一.线程常用概念 线程&#xff08;Thread&#xff09;&#xff1a;操作系统执行程序的最小单位 进程&#xff08;Process&#xff09;&#xff1a;程序在内存中的运行实例 并发&#xff08;Concurrency&#xff09;&#xff1a;多个任务交替执行&#xff08;单核CPU&#xff0…...

虚拟币制度钱包开发:功能设计与成本全解析

虚拟币制度钱包开发&#xff1a;功能设计与成本全解析 ——从基础架构到合规风控的完整解决方案 一、开发成本&#xff1a;分层定价与关键影响因素 根据2024-2025年行业数据显示&#xff0c;虚拟币钱包App开发成本跨度较大&#xff0c;主要受功能复杂度、技术架构与合规要求三…...

TransmittableThreadLocal实现上下文传递-笔记

1.TransmittableThreadLocal简介 com.alibaba.ttl.TransmittableThreadLocal&#xff08;简称 TTL&#xff09;是阿里巴巴开源的一个工具类&#xff0c;旨在解决 ThreadLocal 在线程池中无法传递上下文变量 的问题。它是对 InheritableThreadLocal 的增强&#xff0c;尤其适用…...

应对WEEE 2025:猎板PCB的区块链追溯与高温基材创新

在全球电子产业加速向循环经济转型的背景下&#xff0c;欧盟《绿色新政》与《WEEE指令》对PCB行业提出更高要求。作为行业先行者&#xff0c;猎板PCB&#xff08;Hunter PCB&#xff09;以生物降解基材为核心&#xff0c;结合全球合规体系与产业链协同创新&#xff0c;构建从材…...

大陆资产在香港发行RWA的合规路径与核心限制

大陆资产在香港发行RWA的合规路径与核心限制 ——从“双重合规原则”到资产准入边界的全景解读 一、法律框架&#xff1a;双重合规原则的刚性约束 根据香港金管局Ensemble沙盒项目要求&#xff0c;大陆资产在香港发行RWA需遵循“双重合规原则”&#xff0c;即底层资产需同时符…...

爬虫攻防战:从入门到放弃的完整对抗史与实战解决方案

爬虫攻防战:从入门到放弃的完整对抗史与实战解决方案 这张有趣的图片生动描绘了爬虫开发者与反爬工程师之间的"军备竞赛"。作为技术博主,我将基于这张图的各个阶段,深入分析爬虫技术的演进与对应的反制措施,提供一套完整的反爬解决方案,包括技术原理、实施方法…...