数据表的增删改查(上)

这一章的主角是数据表,但因为上篇文章还有一些数据库的知识没解决,因此先写了数据库。

选择数据库

在数据库创建后,不会将当前创建的数据库作为后续操作的默认数据库,如果需要在数据库中创建数据表并插入数据,需要先选择操作哪个数据库。在MySQL中,可以使用USE语句选择某个数据库为后续操作的默认数据库。USE语句的具体语法格式如下:

USE <数据库名称>;

上次创建了两个数据库,data和data01 ,随便选择一个进入:

mysql> USE data;
Database changed

只要有Database changed这个语句就表明你进入成功了。

如果想要查看当前选择的是哪个数据库,可以使用SELECT DATABASE();实现,具体SQL语句及执行结果如下:

mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| data       |
+------------+
1 row in set (0.00 sec)

从上述执行结果可以看出,当前选择的数据库名称为data,如若你进入了一个数据库,此时你又想进入其它的数据库,可以直接USE <数据库名称>;使用这个语句,会直接转换到你想要进的数据库具体SQL语句及执行结果如下:

mysql> USE data;
Database changed
mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| data       |
+------------+
1 row in set (0.00 sec)mysql> USE data01;
Database changed

可以看到已经进入data01数据库了。

修改数据库特征

数据库一旦被创建,其特征也就确定了。如果后续想修改数据库的特征,可以使用ALTER DATABASE语句实现。修改数据库特征的基本语法格式如下。

ALTER DATABASE | SCHEMA] [db_name] alter_option;

在上述格式中,ALTER DATABASE能够更改数据库的整体特征。db_name为可选项,是数据库名称,如果省略数据库名称,则该语句适用于当前所选择的数据库;如果当前没有选择数据库,则会发生错误。alter_option为要修改的特征,可修改的特征如下。

[DEFAULT] CHARACTER SET [=] charset_name

| [DEFAULT] COLLATE [=] collation_name

| [DEFAULT] ENCRYPTION [=] {'Y | 'N'}

| READ ONLY [=] {DEFAULT| 0 | 1}

在上述特征中,CHARACTER SET为数据库字符集;COLLATE为数据库校对集ENCRYPTION为数据库加密选项;READ ONIY为My5QL8022中引入的选项,用控制是古允许修改数据库及其中的对象,允许的值为DEFAULT、0(非只读)和1(只读)

接下来,根据上述语法格式,编写一个修改数据库字符集的SQL语句,将数据库data01的字符集修改为gbk,SQL语句及执行结果如下。

mysql> SHOW CREATE DATABASE data01;
+----------+----------------------------------------------------------------------------------------------------+
| Database | Create Database|
+----------+----------------------------------------------------------------------------------------------------+
| data01   | CREATE DATABASE `data01` /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

这个是没修改之前的,也就是默认的字符集, SHOW CREATE DATABASE 数据库;这个命令是显示创建数据库的语句的,一般向这种默认的是不需要要我们手动输入的。

修改过后的:

mysql> ALTER DATABASE data01 DEFAULT CHARACTER SET GBK;
Query OK, 1 row affected (0.01 sec)
mysql> SHOW CREATE DATABASE data01;
+----------+---------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                   |
+----------+---------------------------------------------------------------------------------------------------+
| data01   | CREATE DATABASE `data01` /*!40100 DEFAULT CHARACTER SET gbk */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+---------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

删除数据库

当数据库不再使用时应该将其删除,以确保数据库存储空间中存放的是有效数据。删除数据库是将已经创建的数据库从磁盘空间中清除,数据库清除后,数据库中的所有数据也将一同被删除。在MySQL中,删除数据库的基本语法格式如下。

DROP [DATABASE | SCHEMA] [IF EXISTS] db_name;

在上述语法格式中,DROP DATABASE或DROP SCHEMA表示删除数据库中的所有数据表并删除数据库,IF EXISTS可选项用于防止删除不存在的数据库时发生错误,db_name为要删除的数据库的名称。

接下来,根据上述语法格式,编写一个删除数据库的SQL语句,删除名称为data01的数据库,具体SQL语句及执行结果如下。

mysql> DROP DATABASE IF EXISTS data01;
Query OK, 0 rows affected (0.01 sec)

从上述代码中可以看到,提示删除语句执行成功。

为验证数据库是否真正删除成功,可以使用SHOW DATABASES语句查看数据库系统中当前存在的数据库,具体执行语句及结果如下

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| chapter04          |
| chapter05          |
| data               |
| information_schema |
| itcast             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
8 rows in set (0.00 sec)

从上述命令执行结果可以看出,数据库系统中不存在名称为data01的数据库,说明data01数据库已经被成功删除。

需要注意的是,执行DROP DATABASE命令后,MySQL不会给出任何提示确认信息而是直接删除数据库。数据库被删除后,数据库中的数据也一同被删除,因此要尽量避免删除数据库的操作,如确实有删除数据库的需求,也建议在删除数据库之前先将数据库进行备份。

从此刻开始我们就要进行数据表的内容了

数据类型

使用MySQL数据库存储数据时,不同类型数据的存储格式各不相同。MySQL数据库提供了多种数据类型,主要包括数值类型、日期和时间类型、字符串类型。本节将针对这些数据类型进行讲解。

提醒大家一下,数据类型里面的内容过一遍有个印象就可以了,不需要全部记住,里面的大多内容是不常用的,了解即可,用到了再回头看一下就行了。

数值类型

在数据库中,经常需要存储一些数值,例如员工的工资、工号、年龄等,它们适合用数值类型保存。数值类型包括整数类型、浮点数类型、定点数类型、BIT类型等,下面分别进行讲解。

1.整数类型

在MySQL数据库中,经常需要存储整数数值。根据整数的取值范围和存储方式的不同,MySQL将整数类型分为五种,分别是TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,具体如表所示

从表中可以看出,不同整数类型所占用的字节数和取值范围都是不同的 其中,占用字节数最小的是TINYINT,占用字节数最大的是B1GINT。不同整数类型的取值范围可以根据字节数计算出来,例如TINYINT类型的整数占用1字节,1字节是8位,那么TINYINT类型无符号数的最大值就是2的8次方减一(即255),TINYINT类型有符号数的最大值就是2的7次方-1(即127)。同理可以算出其他不同整数类型的取值范围。

需要注意的是,如果使用无符号数据类型,需要在数据类型的右边加上UNSIGNED关键字来修饰,例如INT UNSIGNED表示无符号INT类型。

在实际应用时,需要根据实际情况选择对应的数据类型,如果给字段所赋的值超出数据类型取值范围,会发生错误并提示Out of range。

2.浮点数类型

在MySQL数据库中,小数的表示分为浮点数和定点数两种类型。其中浮点数类型分为两种,分别是单精度浮点数类型(FLOAT)和双精度浮点数类型(DOUBLE)。MySQL中浮点数类型对应的字节及取值范围如表所示。

浮点值是近似值,不是作为精确值存储,表中列举的取值范围都是理论上的极限值。双精度浮点数的取值范围远大于单精度浮点数的取值范围,但同时也会耗费更多的存储空间,相对会降低数据的计算性能。

3.定点数类型

定点数类型表示精度确定的小数类型,适合用于对精度要求比较高的数据。定点数类型分为DECIMAL 和NUMERIC(需要说明的是,在MySQL中NUMERIC和DECIMAL同义)。定义定点数类型的方式如下。

DECIMAL(M,D)

在上述定义中,M表示数据的精度,即数据存储的有效位数(整数位数加小数位数),最大值为65,默认值为10;D表示数据的小数位数,即可以存储的小数点后的位数,最大值为30,默认值为0。例如,DECIMAL(5,2)表示存储的小数的范围是-999.99-999.99,系统会根据存储的具体数据来分配存储空间。

浮点数和定点数也可以使用数据类型后加(M,D)的方式来表示(属于非标准语法,从MySQL 8.0.17开始不推荐使用非标准语法定义浮点数)。需要注意的是,对浮点数类型和定点数类型的字段插入数据时,如果插入数据的精度高于实际定义的精度,小数位数超出范围,那么系统会自动对数据进行四舍五入处理,使值的精度达到要求。不同的是,定点数类型在四舍五入时会出现Data truncated(数据截断)警告,而浮点数不会出现警告;如果因为整数部分超出范围(数据的整数位数大于M-D的值),那么数据会插入失败,提示Out of range(超出取值范围)错误。

4.BIT类型

BIT(位)类型的字段通常用于存储bit值。定义BIT类型的基本语法格式如下。

BIT(M)

在上述格式中,M用于表示每个值的位数,范围为1~64。需要注意的是,如果分配的BIT(M)类型的数据长度小于M,则将在数据的左边用0补齐。例如,为BIT(6分配值b'101'的效果与分配b'000101'相同。

日期和时间类型

为方便在数据库中存储日期和时间,MySQL提供了表示日期和时间的数据类型分别是YEAR、DATE、TIME、DATETIME和TIMESTAMP。MySQL中的日期和时间数据类型如表所示。

从表中可以看出,每种日期和时间类型的取值范围是不同的,如果插入的数值超出这个范围,系统会进行错误提示,并且自动将对应类型的零值插入数据库。为了更好的学习日期和时间类型,下面会对表中的类型进行详细讲解。

1.YEAR类型

YEAR类型用于存储年份数据。当只需要记录年份时,使用YEAR更为方便和节省空间。在MySQL中,可以使用以下3种表示方式指定YEAR类型的值,具体如下

(1)使用4位字符串或数字表示,范围为'1901'-'2155'或1901-2155。例如,输'2021'或2021,则插入数据库的值均为2021。

(2)使用1位或2位字符串表示,范围为'0'-'99',其中‘0'-'69'范围的值会被转换为2000-2069范围的YEAR值,'70'-'99'范围的值会被转换为1970-1999范围的YEAR值例如,输入'21',则插入数据库的值为2021。

(3)使用1位或2位数字表示,范围为0-99,其中1-69范围的值会被转换为2001-2069范围的YEAR值,70-99范围的值会被转换为1970-1999范围的YEAR值。例如,输入21,则插入数据库的值为2021。

需要注意的是,当使用YEAR类型时,一定要区分'0'和0。因为字符串格式的'0'表示的YEAR值是2000,而数字格式的0表示的YEAR值是0000。

2. DATE类型

DATE类型用于存储日期数据。如果数据要用来记录年月日,通常使用DATE类型。在MySQL中,可以使用以下4种表示方式指定DATE类型的值,具体如下。

(1)以'YYYY-MM-DD'或'YYYYMMDD' 字符串方式表示。例如,输入'2021-01-21'或'20210121',则插入数据库的日期都为2021-01-21。

(2)以YY-MM-DD'或YYMMDD字符串方式表示。YY表示的是年,它转换为对应年份的规则与YEAR类型类似。例如,输入'21-01-21'或“210121',则插入数据库的日期都为2021-01-21。

(3)以YYMMDD数字方式表示。例如,输入210121,则插入数据库的日期为2021-01-21。

(4)使用CURRENT_DATE或NOWO表示当前系统日期。

3.TIME类型

1.TIME类型用于储存时间数据。如果数据要用来记录时分秒,通常使用TIME类型。TIME类型的显示格式一般为hh:mm:ss,其中hh表示小时,mm表示分,ss表示秒。在MySQL中,可以使用以下3种表示方式指定TIME类型的值,具体如下。

(1)以'D hh:mm:ss'字符串方式表示。其中,D表示日,可以取0~34的值,插入数据,.小的值等于D×24+hh。例如,输入'2 11:30:50',则插人数据库的时间为59:30:50。

(2)以'hhmmss'字符串方式或hhmmss数字方式表示。例如,输入'345454'或345454,则插入数据库的时间为34:54:54。

(3)使用CURRENT_TIME或NOW()输入当前系统时间。

4. DATETIME类型

DATETIME类型用于存储日期和时间的数据。如果数据要用来记录年月日时分秒,可以使用DATETIME类型。DATETIME类型的显示格式为'YYYY-MM-DD hh:mm:ss'其中,YYYY表示年,MM表示月,DD表示日,hh表示小时,mm表示分,ss表示秒。在MySQL中,可以使用以下4种表示方式指定DATETIME类型的值。

(1)以'YYYY-MM-DD hh:mm:ss'或' YYYYMMDDhhmmss'字符串方式表示的日期和时间,取值范围为'1000-01-01 00:00:00'~'9999-12-31 23:59:59'。例如,输入 '2021-01-22 09:01:23'或'20210122090123',则插入数据库的DATETIME值都为2021-01-22 09:01:23。

(2)以'YY-MM-DD hh:mm:ss'或'YYMMDDhhmmss' 字符串方式表示的日期和时间,其中YY表示年,取值范围为'00'-'99'。与DATE类型中的YY相同,'00'~'69范围的值会被转换为2000-2069范围的YEAR值,'70'~'99'范围的值会被转换为1970-1999范围的YEAR值。

(3)以YYYYMMDDhhmmss或YYMMDDhhmmss数字方式表示的日期和时间。例如,输入20210122090123或210122090123,则插入数据库的DATETIME值都为2021-01-22 09:01:23。

(4)使用CURRENT_TIMESTAMP或NOW()输入当前系统时间。

5. TIMESTAMP类型

TIMESTAMP类型用于表示日期和时间,它的显示形式与DATETIME类似,但是在使用时,两者却有一些区别,具体如下。

(1)TIMESTAMP类型的取值范围比DATATIME类型小。

(2)TIMESTAMP类型的值和时区相关,如果插入的日期时间为TIMESTAMP类型,系统会根据当前系统所设置的时区,对日期时间进行转换后存放;从数据库中取出TIMESTAMP类型的数据时,系统也会将数据转换为对应时区时间后显示。由于TIMESTAMP类型的这个特性,因此可能会导致两个不同时区取出来的同一个日期显示不一样。

字符串类型

MySQL中的字符串类型分为CHAR、VARCHAR、TEXT等多种类型,不同的数据类型具有不同的特点,具体如表所示。

接下来,针对这些字符串类型进行详细讲解。

1.CHAR和VARCHAR

CHAR类型和VARCHAR类型的字段通常用于存储字符串数据,不同的是CHAR类型的字段用于存储固定长度的字符串,其中固定长度可以是0~255中的任意整数值;VARCHAR类型的字段用于存储可变长度的字符串,其中可变长度可以是0~65535中的任意整数值。在MySQL中,定义CHAR和VARCHAR类型的方式如下。

CHAR(M)或VARCHAR(M),括号里面的M是字节长度,也就是你定义字段(这个后面会有)需要的一个字符串类型的整数值,也可以代表字符串的最大长度。

为帮助大家更好的理解CHAR和VARCHAR的区别,接下来,以CHAR(4)和VARCHAR(4)做对比进行说明,具体如表所示。

从表中可以看出,当数据为CHAR(4)类型时,不管插入值的长度是多少,所占用的存储空间都是4字节;而VARCHAR(4)对应的数据所占用的字节数为实际长度加1。

需要注意的是,如果插入的字符串尾部存在空格,CHAR类型会去除空格后进行存储,而VARCHAR类型会保留空格完整地存储字符串。

2.BINARY和VARBINARY类型

BINARY和VARBINARY类型类似于CHAR和VARCHAR类型,不同的是BINARY和VARBINARY类型用于存储二进制数据。定义BINARY和VARBINARY类型的方式如下。

BINARY(M)

VARBINARY(M)

在上述格式中,M指的是可保存的二进制数据的最大长度。需要注意的是,BINARY类型的长度是固定的,如果数据的长度小于M,将在数据的后面用\0补齐,最终达到指定长度。例如,指定数据类型为BINARY(3),当插入d时,实际存储的数据为d\0\0;当插入db时,实际存储的数据为db\0。

3. TEXT类型

TEXT类型用于表示大文本数据,该类型的字段通常用于存储文章内容、评论等,它的类型分为4种,具体如表所示。

4.BLOB类型

BLOB类型的字段通常用于存储二进制的数据,如图片、PDF文档等。BLOB类型分为4种,具体如表所示。

需要注意的是,BLOB类型的数据是根据二进制编码进行比较和排序,而TEXT类型数据是根据文本模式进行比较和排序。

5. ENUM类型

ENUM类型又称为枚举类型,定义ENUM类型的语法格式如下。

ENUM('value1','value2',...)

在上述格式中('valuel','value2',...)称为枚举列表,往ENUM类型的字段中插入值时,需要插入枚举列表中存在的值。枚举列表中的每个枚举值都有一个索引值,索引值从1开始,一次递增。

6.SET类型

SET类型的字段通常用于存储字符串对象,该类字段的值可以有零个或多个。SET类型数据的定义格式与ENUM类型类似,具体如下。

SET('value1','value2',...)

与ENUM类型相同,('valuel',value2'..)列表中的每个值都有一个索引值,MySQL中存入的也是这个索引值,而不是列表中的值。

数据表的基本操作

在MySQL中,所有数据都存储在数据表中,因此在学习数据表中的数据操作之前有必要先了解数据表的基本操作。

创建数据表

创建数据表指的是在已经创建的数据库中建立新表。在MySQL中使用CREATETABLE语句创建数据表,其基本语法格式如下。

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name

(字段名1 数据类型1 [列级约束1]

[,字段名2数据类型2【列级约束2]][,·..]

[,表级约束(字段名3[,字段名4][,.])][,···])

[table_options][partition_options];

上述语法格式的说明具体如下。

  • TEMPORARY:可选项,表示临时表。临时表仅在当前会话中可见,并且在会话关闭时自动删除。
  • IF NOT EXISTS:可选项,只有在创建的数据表尚不存在时,才会创建数据表,可以避免因为存在同名数据表导致创建失败。
  • tbl_name:创建的数据表的名称。
  • 字段名:数据表字段的名称。
  • 数据类型:字段中保存的数据的类型,如日期类型等。(知道我为什么让你们了解数据类型了吧,这个很重要的)
  • 约束:用于保证数据的完整性和有效性的规则,具体内容会在后面进行讲解。
  • table_options可选项,表示表选项,用于设置数据表的相关选项,如字符集校对集等。
  • partition opions:可选项,表示分区选项,用于设置数据表分区的内容。

看到有这么多条件是不是一阵头大,没关系,下面我会用简单的SQL语法带你了解数据表的创建,一看就会的那种。具体SQL语法及执行结果如下:

这里我们先选择一个库进入,我选择的是之前创建的data数据库

use data;

Database changed

进入数据库之后开始创建数据表:

mysql> create table year(-> name VARCHAR(100),-> birthday YEAR);
Query OK, 0 rows affected (0.04 sec)

下面这个是查看数据表的结构的语句,后面也会提到,在这里先了解一下

mysql> desc year;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| name     | varchar(100) | YES  |     | NULL    |       |
| birthday | year         | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

下面这个是插入语句,后面也会提到

mysql> insert into year values-> ('李白',24);
Query OK, 1 row affected (0.01 sec)

这个是查看数据表中的具体内容的SQL语句

mysql> select * from year;
+--------+----------+
| name   | birthday |
+--------+----------+
| 李白   |     2024 |
+--------+----------+
1 row in set (0.00 sec)

至此我们已经创建好了一个简单的数据表,上面提到的插入和查询语句后面会一一进行详细讲解。

这个就是创建数据表成功了,create table是创建数据表的语句,创建数据库就是database了,year是数据表的名称,name和birthday 是字段,也可以理解为属性名称,后面的 VARCHAR(100)和 YEAR是数据类型,也就是前面说到的,如果字段是age(年龄)或者学号就可以使用整数类型,成绩也可以使用整数或者浮点类型,这里的年龄,学号,成绩都是字段,字段后面是数据类型,下面再写一个SQL语句来加深理解;

mysql> create table data01(-> age int,-> id int-> );
Query OK, 0 rows affected (0.02 sec)

这里的两个字段的数据类型我都设置为整型了,int默认是11位,表后面有个括号,结尾也要有个括号,然后以英文分号结尾。

上面这两个SQL语法都是最简单的了

查看数据表

数据表创建成功,可以通过SQL语句对数据表进行查看,以确认数据表是否创建成功和数据表的定义是否正确。在MySQL中,查看数据表的SQL语句有3中,具体如下。

1使用SHOW TABLES语句查看数据表

选择数据库后,可以通过SHOW TABLES语句查看当前数据库中的数据表,基本语法格式如下

SHOW TABLES [LIKE 'pattern'I WHERE expr];

在上述语法格式中,LIKE子句和 WFERE子句为可选项,如果SHOW TABLES句中不添加可选项,表示管看当前数据库中的所有数据表;如果添加则按照LIKE子句或WHERE子句的匹配结果查看数据表。

接下来,使用SHOW TABLES语句查看当前数据库中所有的数据表,以验证数据表year和data01是否创建成功,具体SQL语句及执行结果如下。

mysql> SHOW TABLES;
+----------------+
| Tables_in_data |
+----------------+
| data01         |
| year           |
+----------------+
2 rows in set (0.00 sec)

查询到了这两个数据表,说明我们创建成功了

2.使用SHOWCREATE TABLE查看数据表创建语句

在MySQL中,可以通过SHOW CREATE TABLE语句显示创建数据表的语句。SHOWCREATE TABLE语句的基本语法格式如下。

SHOW CREATE TABLE tbl_name;

在上述格式中,tbl_name指的是要查看的数据表的名称。

接下来,使用SHOW CREATE TABLE语句查看数据表tb dept的创建语句,具体SQL语句及执行结果如下所示。

mysql> SHOW CREATE TABLE year;
+-------+-------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table|
+-------+-------------------------------------------------------------------------------------------------------------------------------+
| year  | CREATE TABLE `year` (`name` varchar(100) DEFAULT NULL,`birthday` year DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

从上述执行结果可以看出,year数据表的创建语句显示出来了。

3.使用DESCRIBE语句查看数据表结构信息

在MySQL中,使用DESCRIBE语句可以查看字段名、字段类型等数据表结构信息。DESCRIBE语句的基本语法格式如下。

DESCRIBE数据表名;

上述语法格式可以简写为如下形式。

DESC 数据表名;

上述两种语法格式效果都一样,为简化书写,后续查看数据表结构信息时,都使用“DESC数据表名;”这种方式。

接下来,使用DESC语句查看数据表data01的表结构信息,具体SQL语句及执行结果如下。

mysql> DESC data01;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| age   | int  | YES  |     | NULL    |       |
| id    | int  | YES  |     | NULL    |       |
+-------+------+------+-----+---------+-------+
2 rows in set (0.00 sec)
  • 上述命令的执行结果显示了数据表data01的表结构信息,其中第一行字段的含义如下。
  • Field:表示数据表中字段的名称,即列的名称。
  • Type:表示数据表中字段对应的数据类型。
  • Null:表示该字段是否可以存储NULL值。
  • Key:表示该字段是否已经建立索引。
  • Default:表示该字段是否有默认值,如果有,将显示对应的默认值。
  • Extra:表示与字段相关的附加信息。

码字不易,请大家多多支持,感谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/661652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode189.轮转数组|超简单易于理解方法

题目 https://leetcode.cn/problems/rotate-array/description/https://leetcode.cn/problems/rotate-array/description/ 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输…

springboot完成一个线上图片存放地址+实现前后端上传图片+回显

1.路径 注意路径 2.代码&#xff1a;&#xff08;那个imagePath没什么用&#xff0c;懒的删了&#xff09;&#xff0c;注意你的本地文件夹要有图片&#xff0c;才可以在线上地址中打开查看 package com.xxx.common.config;import org.springframework.beans.factory.annotat…

深信服技术认证“SCCA-C”划重点:深信服云计算关键技术

为帮助大家更加系统化地学习云计算知识&#xff0c;高效通过云计算工程师认证&#xff0c;深信服特推出“SCCA-C认证备考秘笈”&#xff0c;共十期内容。“考试重点”内容框架&#xff0c;帮助大家快速get重点知识。 划重点来啦 *点击图片放大展示 深信服云计算认证&#xff08…

mermaid使用指南+notion使用实例-持续更新中

最近一个月了吧&#xff0c;发现Notion插入图片的功能坏了&#xff0c;直接paste会404&#xff0c;本地上传也不行。电脑本地版和手机端都插不了图片&#xff0c;很头疼。解决方法也简单&#xff0c;用图床&#xff0c;放链接。 付费版我用的七牛&#xff0c;结合PicGo&#x…

Linux 路由配置与使用

概念 路由信息用于指导数据包从源地址查找到目的地址传输路径的信息&#xff1b; 路由分类 根据路由信息的来源分为静态路由和动态路由 静态路由 由管理员手动配置的路由表项信息&#xff0c;根据路由形式的不同&#xff0c;静态路由又可细分为&#xff1a; 直连路由&#xf…

LEETCODE 170. 交易逆序对的总数

class Solution { public:int reversePairs(vector<int>& record) {if(record.size()<1)return 0;//归并 递归int left,right;left0;rightrecord.size()-1;int nummergeSort(left,right,record);return num;}int mergeSort(int left,int right, vector<int>…

【Qt】Json在Qt中的使用

Json JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;广泛用于互联网应用程序之间的数据传输。JSON基于JavaScript中的对象语法&#xff0c;但它是独立于语言的&#xff0c;因此在许多编程语言中都有对JSON的解析和生成支持。…

STM32CubeIDE 使用标准库来编写程序

这些天我想找一个软件来实现软件的替代。就找到了st 的生态。可是现在st 生态都在极力的推荐HAL 库,但是习惯了标准库的朋友们,还不是很习惯。 先上总结一下,为了好记忆: 一、 在编译栏做如下设置 1、头文件设置 2、源文件设置 二、指定具体的预定义宏 1、USE_STDPERIPH_D…

数据结构-图的最小生成树

最小生成树介绍 最小生成树(Minimum Cost Spanning Tree)是代价最小的连通网的生成树&#xff0c;即该生成树上的边的权值和最小 最小生成树的性质&#xff1a; 必须使用且仅使用连通网中的n-1条边来联结网络中的n个顶点&#xff1b; 不能使用产生回路的边&#xff1b; 各…

Linux部署幻兽帕鲁服务器,PalWorld开服联机教程,保姆级教程

------另一个号申请积分-------- Linux系统搭建PalWorld私服&#xff0c;幻兽帕鲁开服联机教程&#xff0c;保姆级教程 最近这游戏挺火&#xff0c;很多人想跟朋友联机&#xff0c;如果有专用服务器&#xff0c;就不需要房主一直开着电脑&#xff0c;稳定性也好得多。 幻兽帕…

Kubernetes operator(五)api 和 apimachinery 篇

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Kubernetes operator学习 系列第五篇&#xff0c;主要对 k8s.io/api 和 k8s.io/apimachinery 两个项目 进行学习基于 kubernetes v1.24.0 代码分析Kubernetes operator学习系列 快捷链接 Kubernetes operator&a…

大数据StarRocks(九):资源隔离实战

前言 自 2.2 版本起&#xff0c;StarRocks 支持资源组管理&#xff0c;集群可以通过设置资源组&#xff08;Resource Group&#xff09;的方式限制查询对资源的消耗&#xff0c;实现多租户之间的资源隔离与合理利用。在 2.3 版本中&#xff0c;StarRocks 支持限制大查询&#…

Android配置GitLab CI/CD持续集成,Shell版本的gitlab-runner,FastLane执行,上传蒲公英

mac环境下&#xff0c; 首选需要安装gitlab-runner和fastlane brew install gitlab-runner brew install fastlane 安装完成&#xff0c;来到我们在gitlab下新建的Android项目&#xff0c;我们开始创建gitlab-runner 1、创建runner 点开runner&#xff0c;点击新建runner …

自然语言nlp学习四

5-5 BMTrain--ZeRO_哔哩哔哩_bilibili 5-6 BMTrain--Pipeline Parallel (流水线并行)_哔哩哔哩_bilibili 5-12 BMCook--背景介绍_哔哩哔哩_bilibili 5-20 BMInf--背景介绍_哔哩哔哩_bilibili 6-7 机器问答--QA介绍_哔哩哔哩_bilibili 6-8 机器问答--阅读理解_哔哩哔哩_bilibili…

常用API1 ---Math

包含用于执行基本数学运算的方法&#xff0c;如初等指数、对数、平方根和三角函数。 常用方法&#xff1a; package MyApi.a01mathdemo01;public class MathDemo01 {public static void main(String[] args) {//abs 获取参数的绝对值System.out.println(Math.abs(-88));System…

江科大stm32学习笔记10——对射式红外传感器

一、接线 上电之后可以看到对射式红外传感器亮两个灯&#xff0c;如果此时用挡光片挡住两个黑色方块中间的部分&#xff0c;则只亮一个灯。 二、代码 将4-1的工程文件夹复制粘贴一份&#xff0c;重命名为“5-1 对射式红外传感器计次”&#xff0c;打开keil&#xff0c;右键添…

认识 SYN Flood 攻击

文章目录 1.什么是 SYN Flood 攻击&#xff1f;2.半连接与全连接队列3.如何防范 SYN Flood 攻击&#xff1f;参考文献 1.什么是 SYN Flood 攻击&#xff1f; SYN Flood 是互联网上最原始、最经典的 DDoS&#xff08;Distributed Denial of Service&#xff09;攻击之一。 SYN…

[C#][opencvsharp]opencvsharp sift和surf特征点匹配

SIFT特征和SURF特征比较 SIFT特征基本介绍 SIFT(Scale-Invariant Feature Transform)特征检测关键特征&#xff1a; 建立尺度空间&#xff0c;寻找极值关键点定位&#xff08;寻找关键点准确位置与删除弱边缘&#xff09;关键点方向指定关键点描述子 建立尺度空间&#xff0…

SpringBoot RestTemplate 设置挡板

项目结构 代码 BaffleConfig /*** Description 记录配置信息* Author wjx* Date 2024/2/1 14:47**/ public interface BaffleConfig {// 是否开启挡板的开关public static boolean SWITCH true;// 文件根目录public static String ROOT_PATH "D:\\TIS\\mock";// …

最新2024如何解决谷歌浏览器Chrome谷歌翻译无法使用问题

快速恢复谷歌浏览器一键翻译功能在Chrome 中安装好【翻译】插件 Macbook 操作步骤&#xff1a; 1点击“前往”&#xff0c;打开“前往文件夹” 2 在对话框中输入“/etc” 囝找到“hosts”文件&#xff0c;复制粘贴到桌面 3 在复制的文件最后新起一行&#xff0c;输入并保存&am…