关系型数据库mysql(8)sql高级语句②

目录

一.子查询——Subquery

语法

 环境准备

In——查询已知的值的数据记录

子查询——Insert 

子查询——Update

子查询——Delete 

Not In——表示否定,不在子查询的结果集里

Exists——判断查询结果集是否为空 

子查询——别名 

​编辑

二.视图

理论:

视图和表的区别和联系

操作

创建视图(单表)

​编辑

 查看视图

查看表状态

​编辑

 修改原表数据

 修改视图数据

总结

三.Null值——缺失

null值与空值的区别 

​编辑

四.连接查询

​编辑 内连接——Inner Join

语法

 左连接——Left Join

语法

右连接——Right Join

语法

五.存储过程

1.概述

2.存储过程的优点 

3.语法

 调用存储过程

查看存储过程 

​编辑

​编辑 查看指定存储过程

删除存储过程:

存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。 

参数

六.总结

1.子查询

2.视图——View

3.缺失值——Null

4.连接查询——内 左 右

5.存储过程——Procedure 

 创建

 查看存储过程 

  调用存储过程

6.参数


一.子查询——Subquery

子查询也被称作为内查询或者嵌套查询,是指一个查询语句里面还嵌套着另一个查询语句,即SQL语句调用另一个Select子句。子查询语句是先于主查询语句被执行的,其结果作为外层的条件返回给主查询进行下一步查询过滤。

子语句可以与主语句所查询的表相同,也可以是不同表;

子语句中的SQL语句是为了最后过滤出一个结果集,用于主语句的判断条件;

in是作为主表和另一个表的连接的语法

语法

IN 用来判断某个值是否在给定的结果集中,通常结合子查询来使用语法:
<表达式> [NOT] IN <子查询>

当表达式与子查询返回的结果集中的某个值相等时,返回 TRUE,否则返回 FALSE。 若启用了 NOT 关键字,则返回值相反。需要注意的是,子查询只能返回一列数据,如果需 求比较复杂,一列解决不了问题,可以使用多层嵌套的方式来应对。 多数情况下,子查询都是与 SELECT 语句一起使用的
子查询不仅可以在 SELECT 语句中使用,在 INERT、UPDATE、DELETE 中也同样适用。在嵌套的时候,子查询内部还可以再次嵌套新的子查询,也就是说可以多层嵌套。

 环境准备

mysql> create database school;
Query OK, 1 row affected (0.01 sec)mysql> use school
Database changed
mysql> create table class1(id int, name varchar(16),score char(10),address varchar(20),cardid int);
Query OK, 0 rows affected (0.00 sec)mysql> insert into class1 values(1,'zhangsan',80,'nanjing',1);
Query OK, 1 row affected (0.00 sec)mysql> insert into class1 values(2,'lisi',80,'beijing',1);
Query OK, 1 row affected (0.00 sec)mysql> insert into class1 values(3,'wanghan',95,'chengdu',2);
Query OK, 1 row affected (0.01 sec)mysql> insert into class1 values(4,'wanghan',95,'chengdu',2);
Query OK, 1 row affected (0.01 sec)mysql> insert into class1 values(5,'tianqi',90,'shandong',3);
Query OK, 1 row affected (0.00 sec)mysql> insert into class1 values(6,'wangba',90,'beijing',3);
Query OK, 1 row affected (0.01 sec)mysql> select * from class1;
+------+----------+-------+----------+--------+
| id   | name     | score | address  | cardid |
+------+----------+-------+----------+--------+
|    1 | zhangsan | 80    | nanjing  |      1 |
|    2 | lisi     | 80    | beijing  |      1 |
|    3 | wanghan  | 95    | chengdu  |      2 |
|    4 | zhaoliu  | 88    | shanghai |      2 |
|    5 | tianqi   | 90    | shandong |      3 |
|    6 | wangba   | 90    | beijing  |      3 |
+------+----------+-------+----------+--------+
6 rows in set (0.00 sec)mysql> create table class2(id int);
Query OK, 0 rows affected (0.00 sec)mysql> insert into class2 values(1),(2),(3);
Query OK, 3 rows affected (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 0mysql> select * from class2;
+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+
3 rows in set (0.00 sec)mysql> select * from class3-> ;
+------+--------+-------+----------+--------+
| id   | name   | score | address  | cardid |
+------+--------+-------+----------+--------+
|    6 | wangba | 90    | beijing  |      3 |
|    3 | wangwu | 95    | chengdu  |      2 |
|    5 | tianqi | 90    | shandong |      3 |
+------+--------+-------+----------+--------+
3 rows in set (0.00 sec)

In——查询已知的值的数据记录

IN 用来判断某个值是否在给定的结果集中,通常结合子查询来使用

<表达式> [NOT] IN <子查询>

mysql> select id,name,score from class where id in(select id from class2);
#先查询class2数据表中的id字段列  将查询到的结果id字段列作为一个已知的值的数据记录;再根据已知的值的数据记录查询class1数据表中id,name,score字段列

select id,name,score from class1 where id in(select id from class3 where score e >= 90);#先查询class3数据表判断条件为 score分数大于等于90分的数据作为id列  以此作为查询条件从class1数据表中获取数据

select id,name,score from class1 where name in(select name from class3 where score >= 90);

 

 子查询的判断条件主查询语句必须与子查询语句中的字段一致

当表达式与子查询返回的结果集中的某个值相等时,返回 TRUE,否则返回 FALSE。 若启用了 NOT 关键字,则返回值相反。需要注意的是,子查询只能返回一列数据,如果需 求比较复杂,一列解决不了问题,可以使用多层嵌套的方式来应对。 多数情况下,子查询都是与 SELECT 语句一

子查询——Insert 

子查询还可以用在 INSERT 语句中。子查询的结果集可以通过 INSERT 语句插入到其 他的表中

将class3变成空表 

mysql> select * from class3;
+------+--------+-------+----------+--------+
| id   | name   | score | address  | cardid |
+------+--------+-------+----------+--------+
|    6 | wangba | 90    | beijing  |      3 |
|    3 | wangwu | 95    | chengdu  |      2 |
|    5 | tianqi | 90    | shandong |      3 |
+------+--------+-------+----------+--------+
3 rows in set (0.00 sec)mysql> delete from class3;
Query OK, 3 rows affected (0.00 sec)mysql> select * from class3;
Empty set (0.00 sec)
mysql> insert into class3 select * from class1 where id in(select id from class1);
Query OK, 6 rows affected (0.00 sec)
#先遍历class1数据表中id的字段列 然后根据查询到的字段列插入到class3数据表中
Records: 6  Duplicates: 0  Warnings: 0mysql> select * from class3;
+------+----------+-------+----------+--------+
| id   | name     | score | address  | cardid |
+------+----------+-------+----------+--------+
|    1 | zhangsan | 80    | nanjing  |      1 |
|    2 | lisi     | 80    | beijing  |      1 |
|    3 | wanghan  | 95    | chengdu  |      2 |
|    4 | zhaoliu  | 88    | shanghai |      2 |
|    5 | tianqi   | 90    | shandong |      3 |
|    6 | wangba   | 90    | beijing  |      3 |
+------+----------+-------+----------+--------+
6 rows in set (0.00 sec)

子查询——Update

UPDATE 语句也可以使用子查询。UPDATE 内的子查询,在 set 更新内容时,可以是单独的一列,也可以是多列。

更新class3数据表中 根据查询关联表class1数据表id=1的数据内容 修改id=1的字段的分数为85分

mysql> select * from class3;
+------+----------+-------+----------+--------+
| id   | name     | score | address  | cardid |
+------+----------+-------+----------+--------+
|    1 | zhangsan | 80    | nanjing  |      1 |
|    2 | lisi     | 80    | beijing  |      1 |
|    3 | wanghan  | 95    | chengdu  |      2 |
|    4 | zhaoliu  | 88    | shanghai |      2 |
|    5 | tianqi   | 90    | shandong |      3 |
|    6 | wangba   | 90    | beijing  |      3 |
+------+----------+-------+----------+--------+
6 rows in set (0.00 sec)mysql> update class3 set score=85 where id in(select id from class1 where id=1);
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0mysql> select * from class3;
+------+----------+-------+----------+--------+
| id   | name     | score | address  | cardid |
+------+----------+-------+----------+--------+
|    1 | zhangsan | 85    | nanjing  |      1 |
|    2 | lisi     | 80    | beijing  |      1 |
|    3 | wanghan  | 95    | chengdu  |      2 |
|    4 | zhaoliu  | 88    | shanghai |      2 |
|    5 | tianqi   | 90    | shandong |      3 |
|    6 | wangba   | 90    | beijing  |      3 |
+------+----------+-------+----------+--------+
6 rows in set (0.00 sec)
子查询——Delete 

先查询class1数据表中 得分大于90分的 删除class3数据表中大于90分的数据

mysql> select * from class3 where score>90;
+------+---------+-------+---------+--------+
| id   | name    | score | address | cardid |
+------+---------+-------+---------+--------+
|    3 | wanghan | 95    | chengdu |      2 |
+------+---------+-------+---------+--------+
1 row in set (0.00 sec)mysql>  delete from class3 where id in (select id from class1 where score > 90);
Query OK, 1 row affected (0.00 sec)mysql> select * from class3;
+------+----------+-------+----------+--------+
| id   | name     | score | address  | cardid |
+------+----------+-------+----------+--------+
|    1 | zhangsan | 85    | nanjing  |      1 |
|    2 | lisi     | 80    | beijing  |      1 |
|    4 | zhaoliu  | 88    | shanghai |      2 |
|    5 | tianqi   | 90    | shandong |      3 |
|    6 | wangba   | 90    | beijing  |      3 |
+------+----------+-------+----------+--------+
5 rows in set (0.00 sec)
Not In——表示否定,不在子查询的结果集里

在 IN 前面还可以添加 NOT,其作用与IN相反,表示否定(即不在子查询的结果集里面)

删除class数据表条件判断 取反 遍历score分数 小于85分的 也就是删除class3数据表中分数大于85分的所有数据

mysql> select * from class3;
+------+----------+-------+----------+--------+
| id   | name     | score | address  | cardid |
+------+----------+-------+----------+--------+
|    1 | zhangsan | 85    | nanjing  |      1 |
|    2 | lisi     | 80    | beijing  |      1 |
|    4 | zhaoliu  | 88    | shanghai |      2 |
|    5 | tianqi   | 90    | shandong |      3 |
|    6 | wangba   | 90    | beijing  |      3 |
+------+----------+-------+----------+--------+
5 rows in set (0.00 sec)mysql> delete from class3 where id not in(select id where score <85);
Query OK, 4 rows affected (0.00 sec)mysql> select * from class3;
+------+------+-------+---------+--------+
| id   | name | score | address | cardid |
+------+------+-------+---------+--------+
|    2 | lisi | 80    | beijing |      1 |
+------+------+-------+---------+--------+
1 row in set (0.00 sec)
Exists——判断查询结果集是否为空 

先查询class数据表中id字段列 判断score分数是否大于80分 exists判断子查询结果是否为空,如果为空返回false 子查询结果为空 那么 不执行class3数据表的求和

mysql> select sum(score) from class3 where exists(select id from class3 where score > 80);
+------------+
| sum(score) |
+------------+
|       NULL |
+------------+
1 row in set (0.00 sec)

 先查询class3数据表中id字段列 判断条件score分数是否大于80 exists判断子查询结果为空 依旧不执行class1数据表的sum求和

mysql> select sum(score) from class1 where exists(select id from class3 where score > 80);
+------------+
| sum(score) |
+------------+
|       NULL |
+------------+
1 row in set (0.00 sec)

 先查询class3数据表 判断条件为小于等于80 exists子查询结果为TRUE 为真 那么执行前面的class1查询语句 查询所有字段并且Sum求和

mysql> select sum(score) from class1 where exists(select id from class3 where score <= 80);
+------------+
| sum(score) |
+------------+
|        523 |
+------------+
1 row in set (0.00 sec)
子查询——别名 

 报错的原因是子查询语句中select查询的表名是一个完整的结果集,主查询语句不能识别子查询的结果(不能识别子查询语句输出的整个数据表的数据内容)

 给class1做一个s的别名

 

 select * from 表名 此为标准格式,而以上的查询语句,"表名"的位置其实是一个完整结果集,mysql并不能直接识别,而此时给与结果集设置一个别名 s  以”select s.id from s“的方式查询将此结果集视为一张"表",就可以正常查询数据了.

二.视图

理论:

视图:优化操作+安全方案  
数据库中的虚拟表,这张虚拟表中不包含真实数据,只是做了真实数据的映射

作用场景[图]:
针对不同的人(权限身份),提供不同结果集的“表”(以表格的形式展示)
作用范围:

select * from class1;			#展示的部分是class1表select * from view_name;	  #展示的一张或多张表

功能:
简化查询结果集、灵活查询、可以针对不同用户呈现不同结果集、相对有更高的安全性
本质而言视图是一种 select (结果集的呈现) 

注意:

视图适合于多表连接浏览时使用,不适合增、删、改
而存储过程适合于使用较频繁的SQL语句,这样可以提高执行效率!

视图和表的区别和联系

区别

  • 视图是已经编译好的sql语句。而表不是
  • 视图没有实际的物理记录。而表有
  • 表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改
  • 视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构
  • 表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表
  • 视图的建立和删除只影响视图本身,不影响对应的基本表。(但是更新视图数据,是会影响到基本表的)

联系

  • 视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。

操作

创建视图(单表)
create view v_score as select * from class1;#创建视图  视图表v_score 基于class1数据表而存在

 查看视图
mysql> select * from v_score;

查看表状态
show table status\G

创建的视图看不到任何的状态信息

 查看视图与源表结构

mysql> desc v_score;mysql> desc class1;

 修改原表数据

更改原表数据 

 

可以看到视图跟着原表的数据改动一起改动了 

 修改视图数据

可以看出修改视图数据,表的数据也会改变 

总结

  • 修改表不能修改以函数、符合函数方式计算出来的字段
  • 视图的存在是为了查询更加方便,为了增强安全性

三.Null值——缺失

在SQL语句使用过程中,通常使用NULL表示缺失的值,也就是在表中该字段是没有值的。如果在创建表时,指定某字段不能为空(Not Null),不指定则默认可以为空。在向表中插入记录或者更新记录的时候,如果该字段没有Not Null值,且没有任何值,这时新记录的字段数据为Null。

需要注意 的是,NULL 值与数字 0 或者空白(spaces)的字段是不同的,值为 NULL 的字段是没有 值的。在 SQL 语句中,使用 IS NULL 可以判断表内的某个字段是不是 NULL 值,相反的用 IS NOT NULL 可以判断不是 NULL 值。 

null值与空值的区别 

  • 空值长度为0,不占空间,NULL值的长度为null,占用空间
  • is null 无法判断空值
  • 空值使用 "=“ 或者 ”<>" 来处理(!=)
  • count()计算时,NULL会忽略,空值会加入计算

 

添加新的字段 

 

count计数统计数量的时候 null值不会计数总数 

四.连接查询

Mysql的连接查询,通常都是将来自两个或多个表的记录行结合起来,基于这些表之间的共同字段,进行数据的拼接。首先,要确定一个主表作为结果集,然后将其他表的行有选择性的连接到该主表。

 内连接——Inner Join

MySQL 中的内连接就是两张或多张表中同时符合某种条件的数据记录的组合。通常在 FROM 子句中使用关键字 INNER JOIN 来连接多张表,并使用 ON 子句设置连接条件,内连接是系统默认的表连接,所以在 FROM 子句后可以省略 INNER 关键字,只使用 关键字 JOIN。同时有多个表时,也可以连续使用 INNER JOIN 来实现多表的内连接,不过为了更好的性能,建议最好不要超过三个表

语法
#语法:
SELECT column_name(s)FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;

 左连接——Left Join

左连接也可以被称为左外连接,在 FROM 子句中使用 LEFT JOIN 或者 LEFT OUTER JOIN 关键字来表示。左连接以左侧表为基础表,接收左表的所有行,并用这些行与右侧参 考表中的记录进行匹配,也就是说匹配左表中的所有行以及右表中符合条件的行。

语法
mysql> select a.a_id,a.a_name from test1 a left join test2 b on a.a_name=b.b_name;

左连接中左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录,右表记录不足的地方均为 NULL。 

右连接——Right Join

右连接也被称为右外连接,在 FROM 子句中使用 RIGHT JOIN 或者 RIGHT OUTER JOIN 关键字来表示。右连接跟左连接正好相反,它是以右表为基础表,用于接收右表中的所有行,并用这些记录与左表中的行进行匹配

语法
mysql> select a.a_id,a.a_name from test1 a right join test2 b on a.a_name=b.b_name;

在右连接的查询结果集中,除了符合匹配规则的行外,还包括右表中有但是左表中不匹 配的行,这些记录在左表中以 NULL 补足 

五.存储过程

1.概述

存储过程是一组为了完成特定功能的SQL语句集合。  两个点 第一 触发器(定时任务) 第二个判断 
存储过程这个功能是从5.0版本才开始支持的,它可以加快数据库的处理速度,增强数据库在实际应用中的灵活性。存储过程在使用过程中是将常用或者复杂的工作预先使用SQL语句写好并用一个指定的名称存储起来,这个过程经编译和优化后存储在数据库服务器中。当需要使用该存储过程时,只需要调用它即可。操作数据库的传统 SQL 语句在执行时需要先编译,然后再去执行,跟存储过程一对比,明显存储过程在执行上速度更快,效率更高

存储过程在数据库中L 创建并保存,它不仅仅是 SQ语句的集合,还可以加入一些特殊的控制结构,也可以控制数据的访问方式。存储过程的应用范围很广,例如封装特定的功能、 在不同的应用程序或平台上执行相同的函数等等。

2.存储过程的优点 

  • 执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率
  • SQL语句加上控制语句的集合,灵活性高
  • 在服务器端存储,客户端调用时,降低网络负载
  • 可多次重复被调用,可随时修改,不影响客户端调用
  • 可完成所有的数据库操作,也可控制数据库的信息访问权限

3.语法

CREATE PROCEDURE <过程名> ( [过程参数[,…] ] ) <过程体>
[过程参数[,…] ] 格式
<过程名>:尽量避免与内置的函数或字段重名
<过程体>:语句
[ IN | OUT | INOUT ] <参数名><类型>
mysql> delimiter $$
#将语句的结束符号从分号;临时改为两个$$(可以自定义)
mysql> create procedure kgc()
#创建存储过程,过程名为kgc,不带参数-> begin
#过程体以关键字 BEGIN 开始-> create table class4(id int,name varchar(8),score decimal(5,2));-> insert into class4 values(1,'zhangsan',80);-> insert into class4 values(2,'lisi',70);-> select * from class4;
#过程体语句-> END $$
#过程体以关键字 END 结束
Query OK, 0 rows affected (0.12 sec)
mysql> DELIMITER ;
#将语句的结束符号恢复为分号
mysql> delimiter $$
mysql> create procedure kgc()-> begin-> create table class4(id int,name varchar(8),score decimal(5,2));              -> insert into class4 values(1,'zhangsan',80);                                  -> insert into class4 values(2,'lisi',70);-> select * from class4;                                                        -> end $$                                                                       
Query OK, 0 rows affected (0.01 sec)mysql> delimiter ;
 调用存储过程
call Procedure_name();

 

查看存储过程 
show create procedure Procedure_name

 查看指定存储过程

删除存储过程:
存储过程内容的修改方法是通过删除原有存储过程,之后再以相同的名称创建新的存储过程。 
DROP PROCEDURE IF EXISTS Proc;

参数

  • IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
  • OUT 输出参数:表示过程向调用者传出值(可以返回多个值)(传出值只能是变量)
  • INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

表示调用者向过程传入值,又表示过程向调用者传出值(只能是变量) 

 

  • 定义方式与作用域不同。形参是在函数定义中声明的,用于在函数体内进行使用,但它们只在函数执行期间存在,函数调用结束后,形参的作用域结束。实参则是在主调函数中定义的,用于传递值给形参,在函数调用期间,实参的值被传递给形参。
  • 内存占用不同。形参本质上是一个名字,它不占用内存空间,直到函数被调用时,形参才被分配内存空间。实参则是一个已经占用内存空间的变量,它在程序运行期间一直存在。
  • 传递机制不同。在传值调用中,只有实参的值被使用;而在引用调用中,实参的地址被传递给形参,这意味着对形参的任何修改都会影响到实参本身。

六.总结

1.子查询

  • In:查询已知的值数据记录
  • Not In:表示否定,不存在子查询结果集里(相当于取反)
  • Exists:判断查询结果集是否为空(空返回False,非空返回TRUE)

2.视图——View

无论修改视图还是原表数据,都会随之一起更改

3.缺失值——Null

  • Null:占用空间Null值
  • 空值:占用空间为0

4.连接查询——内 左 右

  • 内连接:Inner Join
  • 左连接:Left Join
  • 右连接:Right Join

5.存储过程——Procedure 

 创建
​mysql> delimiter $$
#将语句的结束符号从分号;临时改为两个$$(可以自定义)
mysql> create procedure kgc()
#创建存储过程,过程名为kgc,不带参数-> begin
#过程体以关键字 BEGIN 开始-> create table class4(id int,name varchar(8),score decimal(5,2));-> insert into class4 values(1,'zhangsan',80);-> insert into class4 values(2,'lisi',70);-> select * from class4;
#过程体语句-> END $$
#过程体以关键字 END 结束
Query OK, 0 rows affected (0.12 sec)
mysql> DELIMITER ;
#将语句的结束符号恢复为分号​
 查看存储过程 
show create procedure Procedure_name
  调用存储过程
call Procedure_name();

6.参数

  • IN 输入参数:表示调用者向过程传入值(传入值可以是字面量或变量)
  • 程向调用者传出值(可以返回多个值)(传出值只能是变量)
  • INOUT 输入输出参数:既表示调用者向过程传入值,又表示过程向调用者传出值(值只能是变量)

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

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

相关文章

图论之路径条数专题

一直忙着金工实习蓝桥杯&#xff0c;好久没有看图论了&#xff0c;今天就小试几题享受下被虐的快感。 1.最短路拓扑 首先来几个结论&#xff1a; 1.最短路图没有环&#xff08;可以用反证法证明&#xff09; 2.dis[u]edge[u,v]dis[v]&#xff0c;那么u,v端点的边一定在最短路…

selenium自动化测试

selenium自动化测试 1、Javaselenium环境搭建2、测试&#xff0c;打开任意网页3、selenium 常见的Api3.1元素定位findElement3.1.1 css 选择语法3.1.2 xpath 选择语法 1、Javaselenium环境搭建 下载chromedriver&#xff0c;版本要与Chrome浏览器版本一致。 下载之后将chro…

第P1周:实现mnist手写数字识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制](https://mtyjkh.blog.csdn.net/)** 目录 一、前言 二、我…

vant checkbox 复选框 样式改写

修改前 修改后 基于 vant&#xff1a; 4.8.3 unocss: 0.53.4 <van-checkbox-group v-model"query.zczb" shape"square" class"text-16 w-100% flex flex-wrap"><template v-for"item in registerCapitalOption"><v…

LeetCode 27 移除元素

给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面…

“预防儿童烧烫伤”科普安全课堂走进嘉鱼县第一小学

为提高嘉鱼县儿童烧烫伤安全意识、隐患识别能力以及突发应急处置能力&#xff0c;3月26日下午&#xff0c;在中国社会福利基金会烧烫伤关爱公益基金、嘉鱼县妇女联合会、嘉鱼县教育局的支持下&#xff0c;嘉鱼县蒲公英社会工作服务中心走进嘉鱼县第一小学开展预防儿童烧烫伤科普…

基于Spring Boot 3 + Spring Security6 + JWT + Redis实现登录、token身份认证

基于Spring Boot3实现Spring Security6 JWT Redis实现登录、token身份认证。 用户从数据库中获取。使用RESTFul风格的APi进行登录。使用JWT生成token。使用Redis进行登录过期判断。所有的工具类和数据结构在源码中都有。 系列文章指路&#x1f449; 系列文章-基于Vue3创建前端…

MongoDB内存过高问题分析解决

告警 公司有个3.2.7版本的mongo复制集&#xff0c;最近几天频繁告警内存过高。 服务器配置16C64G内存。mongo备节点内存使用到55G&#xff0c;触发告警。 以下内容基于3.2.7版本&#xff0c;3.2.7版本已经太老&#xff0c;很多后来的命令和配置&#xff0c;3.2.7都没有。 …

【黑马头条】-day04自媒体文章审核-阿里云接口-敏感词分析DFA-图像识别OCR-异步调用MQ

文章目录 day4学习内容自媒体文章自动审核今日内容 1 自媒体文章自动审核1.1 审核流程1.2 内容安全第三方接口1.3 引入阿里云内容安全接口1.3.1 添加依赖1.3.2 导入aliyun模块1.3.3 注入Bean测试 2 app端文章保存接口2.1 表结构说明2.2 分布式id2.2.1 分布式id-技术选型2.2.2 雪…

Unity2018发布安卓报错 Exception: Gradle install not valid

Unity2018发布安卓报错 Exception: Gradle install not valid Exception: Gradle install not valid UnityEditor.Android.GradleWrapper.Run (System.String workingdir, System.String task, System.Action1[T] progress) (at <c67d1645d7ce4b76823a39080b82c1d1>:0) …

Prometheus +Grafana +node_exporter可视化监控Linux虚机

1、介绍 待补充 2、架构图 待补充 Prometheus &#xff1a;主要是负责存储、抓取、聚合、查询方面。 node_exporter &#xff1a;主要是负责采集物理机、中间件的信息。 3、搭建过程 配置要求&#xff1a;1台主服务器 n台从服务器 &#xff08;被监控的linux虚机&am…

MoneyPrinterTurbo搭建详细流程(Linux)及常见问题

先附上链接: MoneyPrinterTurbohttps://github.com/harry0703/MoneyPrinterTurboMoneyPrinterTurbo是一款合成视频的软件。 你只需要提供一个主题或者关键字,就可以全自动生成视频文案、视频素材、视频字幕、视频背景音乐,然后合成一个高清的短视频。 接下来讲解详细的搭…

macOS 13 Ventura (苹果最新系统) v13.6.6正式版

macOS 13 Ventura是苹果电脑的全新操作系统&#xff0c;它为用户带来了众多引人注目的新功能和改进。该系统加强了FaceTime和视频通话的体验&#xff0c;同时优化了邮件、Safari浏览器和日历等内置应用程序&#xff0c;使其更加流畅、快速和安全。特别值得一提的是&#xff0c;…

测试人进阶技能:单元测试报告应用指南

为什么需要单元测试 从产品角度而言&#xff0c;常规的功能测试、系统测试都是站在产品局部或全局功能进行测试&#xff0c;能够很好地与用户的需要相结合&#xff0c;但是缺乏了对产品研发细节&#xff08;特别是代码细节的理解&#xff09;。 从测试人员角度而言&#xff0…

MySQL索引18连问,谁能顶住

前言 过完这个节&#xff0c;就要进入金银季&#xff0c;准备了 18 道 MySQL 索引题&#xff0c;一定用得上。 作者&#xff1a;感谢每一个支持&#xff1a; github 1. 索引是什么 索引是一种数据结构&#xff0c;用来帮助提升查询和检索数据速度。可以理解为一本书的目录&…

Hadoop面试重点

文章目录 1. Hadoop 常用端口号2.Hadoop特点3.Hadoop1.x、2.x、3.x区别 1. Hadoop 常用端口号 hadoop2.xhadoop3.x访问HDFS 端口500709870访问 MR 执行情况端口80888088历史服务器1988819888客户端访问集群端口90008020 2.Hadoop特点 高可靠&#xff1a;Hadoop底层维护多个数…

Spring boot 发送文本邮件 和 html模板邮件

Spring boot 发送文本邮件 和 html模板邮件 提示&#xff1a;这里使用 spring-boot-starter-mail 发送文本邮件 和 html模板邮件 文章目录 Spring boot 发送文本邮件 和 html模板邮件一、开启QQ邮箱里的POP3/SMTP服务①&#xff1a;开启步骤 二、简单配置①&#xff1a;引入依赖…

8.均值滤波

1 简介 均值滤波是一种低通滤波&#xff0c;它可以有效过滤图片中的椒盐噪声&#xff0c;但是副作用也同样明显&#xff0c;会使图片的边缘过于模糊。   均值滤波的卷积核系数均为1。   这里最终重复一下算法实现以及验证的步骤&#xff1a;     1.MATLAB读取图片并转化…

macOS Sonoma如何查看隐藏文件

在使用Git进行项目版本控制时&#xff0c;我们可能会遇到一些隐藏文件&#xff0c;比如.gitkeep文件。它通常出现在Git项目的子目录中&#xff0c;主要作用是确保空目录也可以被跟踪。 终端命令 在尝试查看.gitkeep文件时&#xff0c;使用Terminal命令来显示隐藏文件 default…

【Pt】马灯贴图绘制过程 03-制作油渍、积尘效果

目录 效果 一、制作油渍效果 1.1 基本油渍 1.2 流淌的油渍痕迹 二、制作浮尘效果 三、制作积尘效果 效果 一、制作油渍效果 1.1 基本油渍 将上篇制作的“锈迹_深色”和“锈迹_浅色”两个文件夹再次合并为一个文件夹 这里就命名为“锈迹” 添加一个填充图层 设置Base …