【MySQL数据库】基础总结

news2025/1/12 8:19:49

目录

前言

一、概述

二、 SQL

1. SQL通用语法

2. SQL分类

3. DDL

3.1 数据库操作

3.2 表操作

4. DML

5. DQL

5.1 基础查询

5.2 条件查询

5.3 聚合函数 

5.4 分组查询

5.5 排序查询

5.6 分页查询

6. DCL

6.1 管理用户

6.2 权限控制

三、数据类型

1. 数值类型

2. 字符串类型

3. 日期时间类型

4. 选择建议

四、函数

1. 字符串函数

2. 数值函数

3. 日期函数 

4. 流程函数

五、约束

六、多表查询

1. 内连接

2. 外连接

3. 自连接

4. 联合查询

5. 子查询

5.1 标量子查询

5.2 列子查询

5.3 行子查询

5.4 表子查询

七、事务

1. 事务概述

2. 并发事务问题

3. 事务隔离级别

总结 


前言

  本篇文章总结了与MySQL有关的一些基础知识,包含SQL、数据类型、函数、多表查询和事务,一些知识点不会说明地特别详细,可用来随时回顾与复习。与MySQL有关的其他知识点可以参考其相关的手册。

MySQL 8.0 参考手册_MySQL 8.0 参考手册

MySQL :: MySQL 8.4 Reference ManualMySQL 8.4 参考手册MySQL :: MySQL 8.4 Reference Manual

一、概述

  我们需要了解下图所示的三个概念:

  另外,目前市面上有许多流行的关系型数据库,如Oracle、MySQL、SQLlite等等。不论我们使用的是上面的哪一个关系型数据库,最终在操作时,都是使用SQL语言来进行统一操作,因为我们前面讲到SQL语言,是操作关系型数据库的统一标准

二、 SQL

1. SQL通用语法

  • SQL语句可以用单行活多行书写,以分号结尾。
  • SQL语句可以使用空格/缩进来增强语句的可读性。
  • MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
  • 注释:
    • 单行注释: -- 注释内容 或 # 注释内容
    • 多行注释:/* 注释内容 */

2. SQL分类

  SQL语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL。

3. DDL

3.1 数据库操作

  下面是数据库操作的示例,其中注释解释了SQL的具体作用:

SHOW DATABASES; # 查询所有数据库

SELECT DATABASE(); # 查询当前数据库

/*
说明:创建数据库
create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ] ;
*/
CREATE DATABASE IF NOT EXISTS animal DEFAULT CHARSET utf8mb4;

DROP DATABASE IF EXISTS animal; # 删除数据库

USE animal; # 切换数据库

3.2 表操作

  下面是表操作的示例,其中注释解释了SQL的具体作用:

SHOW TABLES; # 查询当前数据库所有表

DESC sys_user; # 查看指定表结构

SHOW CREATE TABLE sys_user; # 查询指定表的建表语句

/*
说明:创建表结构
CREATE TABLE 表名(
		字段1 字段1类型 [ COMMENT 字段1注释 ],
		字段2 字段2类型 [COMMENT 字段2注释 ],
		字段3 字段3类型 [COMMENT 字段3注释 ],
		......
		字段n 字段n类型 [COMMENT 字段n注释 ]
) [ COMMENT 表注释 ] ;
*/
CREATE TABLE tb_student(
	id INT COMMENT '编号',
	`name` VARCHAR(15) COMMENT '姓名'
) COMMENT '学生表';

/*
说明:添加字段
ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];
*/
ALTER TABLE tb_student ADD age TINYINT COMMENT '年龄';

/*
说明:修改字段类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度) [ COMMENT 注释 ] [ 约束 ];
*/
ALTER TABLE tb_student MODIFY age INT COMMENT '年龄';

/*
说明:修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];
*/
ALTER TABLE tb_student CHANGE age age_new INT COMMENT '年龄';

ALTER TABLE tb_student RENAME TO tb_student_new; # 修改表名

DROP TABLE IF EXISTS tb_student_new; # 删除表

TRUNCATE TABLE tb_student; # 删除指定表,并重新创建表

4. DML

  下面是DML的示例,其中注释解释了SQL的具体作用:

/*
说明:给指定字段添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
*/
INSERT INTO tb_student (`name`) VALUES ('小明');

/*
说明:给全部字段添加数据
INSERT INTO 表名 VALUES (值1, 值2, ...);
*/
INSERT INTO tb_student VALUES (1, '小王');

/*
说明:批量添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值
1, 值2, ...) ;
*/
INSERT INTO tb_student (`name`) VALUES ('小美'), ('王肖');

/*
说明:修改数据
UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 条件 ] ;
*/
UPDATE tb_student SET `name` = '老王' WHERE `name` = '小王';

/*
说明:删除数据
DELETE FROM 表名 [ WHERE 条件 ] ;
*/
DELETE FROM tb_student;

5. DQL

  DQL查询语句基本语法如下:

SELECT
    字段列表
FROM
    表名列表
WHERE
    条件列表
GROUP BY
    分组字段列表
HAVING
    分组后条件列表
ORDER BY
    排序字段列表
LIMIT
    分页参数

  DQL的编写顺序与实际的执行顺序不太一样,具体的顺序如下图所示:

5.1 基础查询

  在基本查询的DQL语句中,不带任何的查询条件,查询的语法如下:

1). 查询多个字段

SELECT 字段1, 字段2, 字段3 ... FROM 表名 ;
SELECT * FROM 表名 ;

 2). 字段设置别名

SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;

3). 去除重复记录 

SELECT DISTINCT 字段列表 FROM 表名;

5.2 条件查询

  条件查询的语法格式如下:

SELECT 字段列表 FROM 表名 WHERE 条件列表 ;

  对于条件来说,有如下图所示的常用的比较运算符和逻辑运算符:

5.3 聚合函数 

  聚合函数是将一列数据作为一个整体,进行纵向计算 ,聚合函数的语法如下:

SELECT 聚合函数(字段列表) FROM 表名 ;
注意 : NULL 值是不参与所有聚合函数运算的。

  常见的聚合函数如下图所示:

5.4 分组查询

  分组查询的语法格式如下所示:

SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ];

WHERE 和 HAVING的区别如下:

  1. 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
  2. 判断条件不同:where不能对聚合函数进行判断,而having可以。

 注意事项:

  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
  • 执行顺序: where > 聚合函数 > having 。
  • 支持多字段分组, 具体语法为 : group by columnA,columnB

5.5 排序查询

  排序查询的语法格式如下:

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;

  排序方式如下:

  • ASC : 升序(默认值)
  • DESC: 降序

注意事项:
  • 如果是升序, 可以不指定排序方式ASC ;
  • 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ;

5.6 分页查询

  分页查询的语法格式如下:

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;
注意事项:
  • 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。

6. DCL

6.1 管理用户

-- 创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';

-- 修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ;

-- 删除用户
DROP USER '用户名'@'主机名' ;

注意事项:

  • 在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。
  • 主机名可以使用 % 通配。
  • 这类SQL开发人员操作的比较少,主要是DBA( Database Administrator 数据库管理员)使用。

6.2 权限控制

  MySQL 中定义了很多种权限,但是常用的就以下几种:
 

更多权限可参考:6.2.2 MySQL提供的权限_MySQL 8.0 参考手册

  下面是有关权限控制的语法示例:

-- 查询权限
SHOW GRANTS FOR '用户名'@'主机名' ;

-- 授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';

-- 撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
注意事项:
  • 多个权限之间,使用逗号分隔。
  • 授权时, 数据库名和表名可以使用 * 进行通配,代表所有。

三、数据类型

  对于表操作来说,我们需要先了解数据库中包含哪些数据类型,才能更好地进行操作,下面我们将补充说明MySQL中存在的一些数据类型,下图是对数据类型的一个分类:

备注:下面我们将简单介绍前面三种常见的数据类型,有关其他类型和更详细的解释,可以参考下面:

博客:MySQL数据类型精讲-CSDN博客

MySQL中文手册:第 11 章数据类型_MySQL 8.0 参考手册

1. 数值类型

  整数类型是数据库中最基本的数据类型。

  MySQL中使用浮点类型和定点类型来表示小数。浮点类型包括单精度浮点数(FLOAT型)和双精度浮点数(DOUBLE型),定点数类型就是DECIMAL型。浮点数型在数据库中存放的是近似值,而定点数类型在数据库中存放的是精确值。

举例说明DECIMAL:DECIMAL(5,2) 中的第一个参数 5 指定了数值的最大总长度,即整数部分加上小数部分的总和不能超过 5 位。第二个参数 2 表示小数点后的位数,也就是小数点后面应该保留两位小数。如果插入的数据没有提供足够多的小数位数,则会自动补足到指定的数量;反之,如果有更多的小数位数,则会被截断或四舍五入到最接近的有效值2。

2. 字符串类型

  CHAR和VARCHAR区别:

  1. 都可以通过指定n来限制存储的最大字符数长度,CHAR(20)和VARCHAR(20)将最多只能存储20个字符,超过的字符会被截掉。n必须小于该类型允许的最大字符数。
  2. CHAR类型指定了n之后,如果存入的字符数小于n,后面将会以空格补齐,查询的时候再将末尾的空格去掉,所以CHAR类型存储的字符串末尾不能有空格,VARCHAR不受此限制。
  3. 内部存储机制不同,CHAR是固定长度,CHAR(4)不管是存入1个字符,2个字符或者是4个字符(英文的),都将占用4个字节。VARCHAR是存入的实际字符数+1个字字节(n<=255)或2个字节(n>255),所以VARCHAR(4),存入1个字符将占用2个字节,2个字符占用3个字节,4个字符占用5个字节。
  4. CHAR类型的字符串检索速度要比VARCHAR类型的快。

  BLOB和TEXT是对应的,不过存储方式不同,TEXT是以文本方式存储的,而BLOB是以二进制方式存储的。如果存储英文的话,TEXT区分大小写,而BLOB不区分大小写。TEXT可以指定字符集,BLOB不用指定字符集。

  二进制类型实在数据库中存储二进制数据的数据类型,如数码照片、视频和扫描的文档等数据。在MySQL中是用BLOB数据类型存储这些数据。BLOB有四种类型:TINYBLOB、BLOB、MEDIUMBLOB、LONGBLOB,其中最大长度对应4种TEXT数据类型。 

  BINARY和VARBINARY数据类型类似于CHAR和VARCHAR。不同之处在于BINARY与VARBINARY使用字节为存储单位,而CHAR与VARCHAR使用字符为存储单位。例如,INARY(5)表示5字节的二进制数据,CHAR(5)表示存储5个字符的数据。 BINARY(n):固定n个字节二进制数据。n的取值范围为1~255,默认为1.若输出的字节长度小于n,则不足部分以0填充。BINARY(n)数据存储的长度为n+4个字节。 VARBINARY(n):可变长度,n的取值范围是1~65535,默认为1,数据存储长度为实际长度+4个字节。

3. 日期时间类型

  日期和时间类型是为了方便在数据库中存储日期和时间而设计的。

4. 选择建议

 

四、函数

  函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着,这一段程序或代码在 MySQL中已经给我们提供了,我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。

1. 字符串函数

2. 数值函数

3. 日期函数 

4. 流程函数

五、约束

   约束是作用于表中字段上的规则,用于限制存储在表中的数据。其目的是保证数据库中数据的正确、有效性和完整性。约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束。约束的分类如下:

  下面是一个建表的时候使用约束的例子:

CREATE TABLE tb_user(
    id int AUTO_INCREMENT PRIMARY KEY COMMENT 'ID唯一标识',
    name varchar(10) NOT NULL UNIQUE COMMENT '姓名' ,
    age int check (age > 0 && age <= 120) COMMENT '年龄' ,
    status char(1) default '1' COMMENT '状态',
    gender char(1) COMMENT '性别'
);

  在这些约束里面,比较重要的是外键约束,下面是外键约束的一般语法格式:

-- 添加外键
CREATE TABLE 表名(
    字段名 数据类型,
    ...
    [CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名)
);
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名) ;

-- 删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
  添加了外键之后,再删除父表数据时产生的约束行为,我们就称为删除 / 更新行为。具体的删除 /更新行为有以下几种 :

  示例如下:

ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段) REFERENCES
主表名 (主表字段名) ON UPDATE CASCADE ON DELETE CASCADE;

六、多表查询

  多表查询就是指从多张表中查询数据。在多表查询中,我们可以给表起别名,但是一旦为表起了别名,就不能再使用表名来指定对应的字段了,此时只能够使用别名来指定字段。 对于多表查询来说,有以下一些分类:

1. 内连接

  内连接的语法格式如下:

-- 隐式内连接
SELECT 字段列表 FROM 表1 , 表2 WHERE 条件 ... ;

-- 显示内连接
SELECT 字段列表 FROM 表1 [ INNER ] JOIN 表2 ON 连接条件 ... ;

注意:如果一边或两边的数据对于连接字段是NULL,那么这些行就不会出现在内连接的结果集中。

2. 外连接

  外连接的语法格式如下:

-- 左外连接
SELECT 字段列表 FROM 表1 LEFT [ OUTER ] JOIN 表2 ON 条件 ... ;

-- 右外连接
SELECT 字段列表 FROM 表1 RIGHT [ OUTER ] JOIN 表2 ON 条件 ... ;
注意事项: 左外连接和右外连接是可以相互替换的,只需要调整在连接查询时SQL中,表结构的先后顺序就可以了。而我们在日常开发使用时,更偏向于左外连接。

3. 自连接

  自连接查询,顾名思义,就是自己连接自己,也就是把一张表连接查询多次。对于自连接查询,可以是内连接查询,也可以是外连接查询。自连接查询的语法格式如下:

SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件 ... ;
  在自连接查询中,必须要为表起别名,要不然我们不清楚所指定的条件、返回的字段,到底
是哪一张表的字段。

4. 联合查询

  对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集,其语法格式如下:

SELECT 字段列表 FROM 表A ...
UNION [ ALL ]
SELECT 字段列表 FROM 表B ....;
  • 对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
  • union all 会将全部的数据直接合并在一起,union 会对合并之后的数据去重。

5. 子查询

  SQL 语句中嵌套 SELECT 语句,称为嵌套查询,又称子查询。对于子查询来说,大致分为如下几类:
  1. 标量子查询(子查询结果为单个值)
  2. 列子查询(子查询结果为一列)
  3. 行子查询(子查询结果为一行)
  4. 表子查询(子查询结果为多行多列)

5.1 标量子查询

  子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询称为标量子查询。常用的操作符有 =、<>、 > 、>=、 <、 <=。示例如下:
-- 根据销售部部门ID查询员工信息
select * from emp where dept_id = (select id from dept where name = '销售部');

5.2 列子查询

  子查询返回的结果是一列(可以是多行),这种子查询称为列子查询。常用的操作符有 IN NOT IN ANY SOME ALL。

  示例如下:

-- 根据部门ID查询员工信息
select * from emp where dept_id in (select id from dept where name = '销售部' or name = '市场部');

-- 查询比财务部所有员工工资都高的员工信息
select * from emp where salary > all ( select salary from emp where dept_id = (select id from dept where name = '财务部') );

5.3 行子查询

  子查询返回的结果是一行(可以是多列),这种子查询称为行子查询。 常用的操作符有 = <> IN NOT IN。示例如下:
-- 查询与张无忌的薪资及直系领导相同的员工信息
select * from emp where (salary,managerid) = (select salary, managerid from emp where name = '张无忌');

5.4 表子查询

  子查询返回的结果是多行多列,这种子查询称为表子查询。 常用的操作符为 IN。示例如下:
-- 查询与鹿杖客, 宋远桥的职位和薪资相同的员工信息
select * from emp where (job,salary) in ( select job, salary from emp where name = '鹿杖客' or name = '宋远桥' );

七、事务

1. 事务概述

  事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。事务具有如下四个特性,简称ACID,这四个特性如下:

  1. 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
  2. 一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
  3. 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
  4. 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的
注意: 默认MySQL的事务是自动提交的,也就是说,当执行完一条DML语句时,MySQL会立即隐式的提交事务。

  下面是MySQL当中对事务的控制:

SELECT @@autocommit ; # 查询事务提交方式
SET @@autocommit = 0 ; # 把默认的自动提交修改为了手动提交, 默认值为1(自动提交)

-- 开启事务
START TRANSACTION 或 BEGIN ;

-- 提交事务
COMMIT;

-- 回滚事务
ROLLBACK;

  下面是有关事务的一个转账案例:

-- 开启事务
start transaction

-- 1. 查询张三余额
select * from account where name = '张三';

-- 2. 张三的余额减少1000
update account set money = money - 1000 where name = '张三';

-- 3. 李四的余额增加1000
update account set money = money + 1000 where name = '李四';

-- 如果正常执行完毕, 则提交事务
commit;

-- 如果执行过程中报错, 则回滚事务
-- rollback;

2. 并发事务问题

  赃读:一个事务读到另外一个事务还没有提交的数据。比如 B 读取到了 A 未提交的数据。

  不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。事务A两次读取同一条记录,但是读取到的数据却是不一样的。

  幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了 " 幻影 "

3. 事务隔离级别

  为了解决并发事务所引发的问题,在数据库中引入了事务隔离级别。主要有以下几种:

   有关事务隔离级别的操作语法如下:

-- 查看事务隔离级别
SELECT @@TRANSACTION_ISOLATION;

-- 设置事务隔离级别
SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED |
READ COMMITTED | REPEATABLE READ | SERIALIZABLE }
注意:事务隔离级别越高,数据越安全,但是性能越低。

总结

  本篇博客总结了MySQL数据库的一些基础知识,如果您觉得有用的话,可以点一个关注,让我们一起努力进步吧!!

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

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

相关文章

ubuntu/kali安装c-jwt-cracker

1.下载安装包 可以去GitHub下载解压&#xff0c;我这直接在kali克隆下来了。&#xff08;网络不好可能克隆不下来&#xff09; git clone https://github.com/brendan-rius/c-jwt-cracker.git 2.如果下载的压缩包就需要进行解压&#xff0c;克隆的直接进入目录就好了。 unzi…

H266/VVC 帧内预测中 ISP 技术

帧内子划分 ISP ISP 技术是在 JVET-2002-v3 提案中详细介绍其原理&#xff0c;在 VTM8 中完整展示算法。ISP是线基内预测&#xff08;LIP&#xff09;模式的更新版本&#xff0c;它改善了原始方法在编码增益和复杂度之间的权衡&#xff0c;ISP 算法的核心原理就是利用较近的像…

《拉依达的嵌入式\驱动面试宝典》—计算机网络篇(二)

《拉依达的嵌入式\驱动面试宝典》—计算机网络篇(二) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《…

【2024年华为OD机试】 (A卷,100分)- 对称美学(Java JS PythonC/C++)

一、问题描述 题目描述 对称就是最大的美学&#xff0c;现有一道关于对称字符串的美学。已知&#xff1a; 第1个字符串&#xff1a;R第2个字符串&#xff1a;BR第3个字符串&#xff1a;RBBR第4个字符串&#xff1a;BRRBRBBR第5个字符串&#xff1a;RBBRBRRBBRRBRBBR 相信你…

c#集成npoi根据excel模板导出excel

NuGet中安装npoi 创建excel模板&#xff0c;替换其中的内容生成新的excel文件。 例子中主要写了这四种情况&#xff1a; 1、替换单个单元格内容&#xff1b; 2、替换横向多个单元格&#xff1b; 3、替换表格&#xff1b; 4、单元格中插入图片&#xff1b; using System.IO; …

【数据库系统概论】第5章 数据库完整性【!触发器】

目录 5.1数据库完整性概述 5.2 实体完整性 5.3 参照完整性 5.4 用户定义的完整性 属性上的约束 1. 列值非空&#xff08;NOT NULL&#xff09; 2. 列值唯一&#xff08;UNIQUE&#xff09; 3. 检查列值是否满足条件&#xff08;CHECK&#xff09; 元组上的约束 5.5 完…

一键部署Netdata系统无需公网IP轻松实现本地服务器的可视化监控

文章目录 前言1.关于Netdata2.本地部署Netdata3.使用Netdata4.cpolar内网穿透工具安装5.创建远程连接公网地址6.固定Netdata公网地址 &#x1f4a1; 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。…

HBuilderX(uniapp)实现微信小程序获取用户头像、昵称、授权登录、获取用户手机号

前言&#xff1a;微信文档写的零零散散的&#xff0c;网上搜的教程&#xff0c;23年的教程还在教22年改版之前的东西&#xff0c;导致踩坑无数&#xff0c;所以自己写一下文档记录一下&#xff0c;帮助后来者&#xff0c;记录于2024.11.14 一.获取用户头像和昵称 首先阅读微信…

RabbitMQ基础(简单易懂)

什么是RabbitMQ&#xff1f; 它基于AMQP协议&#xff08;Advanced Message Queuing Protocol&#xff09;&#xff0c;一种为应用构建消息队列的标准协议。过程中&#xff0c;它提供了一些重要模块&#xff1a;为消息发送的Producer&#xff08;生产者&#xff09;&#xff0c…

【web靶场】之upload-labs专项训练(基于BUUCTF平台)

前言 该靶场&#xff0c;是通过平台BUUCTF在线评测中的靶场进行的&#xff0c;基于linux搭建的 当然若是想要该靶场&#xff0c;可以采用github上的醒目&#xff0c;点击后面文字即可访问c0ny1/upload-labs: 一个想帮你总结所有类型的上传漏洞的靶场 或者本人分享在网盘中&a…

美摄科技为企业打造专属PC端视频编辑私有化部署方案

美摄科技&#xff0c;作为视频编辑技术的先行者&#xff0c;凭借其在多媒体处理领域的深厚积累&#xff0c;为企业量身打造了PC端视频编辑私有化部署解决方案&#xff0c;旨在帮助企业构建高效、安全、定制化的视频创作平台&#xff0c;赋能企业内容创新&#xff0c;提升品牌影…

Vue3(elementPlus) el-table替换/隐藏行箭头,点击整行展开

element文档链接&#xff1a; https://element-plus.org/zh-CN/component/form.html 一、el-table表格行展开关闭箭头替换成加减号 注&#xff1a;Vue3在样式中修改箭头图标无效&#xff0c;可能我设置不对&#xff0c;欢迎各位来交流指导 转变思路&#xff1a;隐藏箭头&…

【C++入门】详解(中)

目录 &#x1f495;1.函数的重载 &#x1f495;2.引用的定义 &#x1f495;3.引用的一些常见问题 &#x1f495;4.引用——权限的放大/缩小/平移 &#x1f495;5. 不存在的空引用 &#x1f495;6.引用作为函数参数的速度之快&#xff08;代码体现&#xff09; &#x1f4…

【题解】—— LeetCode一周小结53

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 【题解】—— 每日一道题目栏 上接&#xff1a;【题解】—— LeetCode一周小结52 30.二叉树中的链表 题目链接&#xff1a;1367. 二叉树中的链…

Vue方法、计算机属性及侦听器

数组变化侦测 假设我们写了一个数组&#xff0c;现在想让该数组中新增一条数据,那么如何去实现呢&#xff1f; <template><h3>数组变化侦听</h3><button click"addListHandler">添加数据</button><ul><li v-for"(item…

TIOBE编程语言排行靠前的编程语言的吉祥物

Python的吉祥物&#xff1a;小蟒蛇 Python语言的吉祥物是一只名叫"Pythonidae"&#xff08;或简称"Py"&#xff09;的小蟒蛇。这个吉祥物由Tobias Kohn设计于2005年&#xff0c;它的形象借鉴了真实的蟒蛇&#xff0c;但加入了一些可爱和友善的特点。小蟒蛇…

Linux (CentOS) 安装 Docker 和 Docker Compose

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template &#x1f33a; 仓库主页&#xff1a; GitCode︱ Gitee ︱ Github &#x1f496; 欢迎点赞 &#x1f44d; 收藏 ⭐评论 …

Unity热更新 之 Addressables(2) 本地/远端打包 流程测试

基础篇&#xff1a;Unity热更新 之 Addressables(1) 资源基础加载-CSDN博客 基础方法来源于唐老狮,我也是初学热更这一块&#xff0c;所有不保证步骤完全正确&#xff0c;如有不足还请斧正 目录 0.前提 1.本地打包 1.1.资源放入包 1.2.简化路径名称给出标签(如有需要的话) …

Openstack持久存储-Swift,Cinder,Manila三者之间的区别

总结不易&#xff0c;给个三连吧&#xff01;&#xff01;&#xff01; 补充&#xff1a; 文件共享存储服务Manila 在OpenStack生态系统中&#xff0c;Cinder和Manila分别提供了两种不同类型的存储服务&#xff0c;类似于传统的SAN&#xff08;存储区域网络&#xff09;和NAS&…

【TI毫米波雷达】DCA1000不使用mmWave Studio的数据采集方法,以及自动化实时数据采集

【TI毫米波雷达】DCA1000不使用mmWave Studio的数据采集方法&#xff0c;以及自动化实时数据采集 mmWave Studio提供的功能完全够用了 不用去纠结用DCA1000低延迟、无GUI传数据 速度最快又保证算力无非就是就是Linux板自己写驱动做串口和UDP 做雷达产品应用也不会采用DCA1000的…