JavaWeb基础入门——(二)MySQL数据库基础(2-SQL 结构化查询语言)

四、MySQL逻辑结构

4.1 逻辑结构

在这里插入图片描述

4.1 记录

在这里插入图片描述

五、SQL 结构化查询语言

5.1 SQL概述

SQL(Structural Query Language)结构化查询语言,用于存取、查询、更新数据以及管理关系型数据库系统

5.1.1 SQL发展

SQL是在1981年由IBM公司推出,一经推出基于其简洁的语法在数据库中得到了广泛的应用,成为主流数据库
的通用规范

  • SQL由ANSI组织确定规范

  • 在不同的数据库产品中遵守SQL的通用规范,但是也对SQL有一些不同的改进,形成了一些数据库的专有指令

    • MySQL:limit

    • SOLServer top

    • Oracle:rownum

5.1.2 SQL分类

根据SQL指令完成的数据库操作的不同,可以将SQL指令分为四类:

  • DDL Data Definition Language 数据定义语言
    • 用于完成对数据库对象(数据库、数据表、视图、索引等)的创建、删除、修改
  • DMLData Manipulation Language 数据操作/操纵语言
    • 用于完成对数据表中的数据的添加、删除、修改操作
    • 添加:将数据存储到数据表
    • 删除:将数据从数据表移除
    • 修改:对数据表中的数据进行修改
  • DQL Data Query Language 数据查询语言
    • 用于将数据表中的数据查询出来
  • DCL Data Control Language 数据控制语言
    • 用于完成事务管理等控制性操作

5.2 SQL基本语法

在MySQL Command Line Client或者navicat等工具中都可以编写SQL指令

  • SQL指令不区分大小写
  • 每条SQL表达式结束之后都以;结束
  • SQL关键字之间以空格进行分隔
  • SQL之间可以不限制换行(可以有空格的地方就可以有换行)

5.3 DDL-数据定义语言

5.3.1 DDL-数据库操作

使用DDL语句可以创建数据库、查询数据库、修改数据库、删除数据库

查询数据库

##显示当前mysq1中的数据库列表
show databases;
##显示指定名称的数据的创建的SQL指令
show create database <dbName>;

创建数据库

##创建数据库dbName:表示创建的数据库名称,可以自定义
create database <dbName>;
#创建数据库,当指定名称的数据库不存在时执行创建
create database if not exists <dbName>;
##在创建数据库的同时指定数据库的字符集(字符集:数据存储在数据库中采用的编码格式utf8gbk)
create database <dbName>character set utf8;

修改数据库修改数据库引擎、字符集

##修改数据库的字符集
alter database <dbName>character set utf8;utf8 gbk

删除数据库 删除数据库时会删除当前数据库中所有的数据表以及数据表中的数据

##删除数据库
drop database <dbName>;
##如果数据库存在则删除数据库
drop database is exists <dbName>;

5.3.2 DDL-数据表操作

在这里插入图片描述

创建数据表

数据表实际就是一个二维的表格,一个表格是由多列组成,表格中的每一类称之为表格的一个字段

image-20231117170530424
create table students(stu_num char(8)not null unique,stu_name varchar(20)not nullstu_gender char(2)not null,stu_age int not null,stu_tel char(11)not null unique,stu_qq varchar(11)unique
):

查询数据表

show tables;

查询表结构

desc <tableName>;

删除数据表

##删除数据表
drop table <tableName>;
##当数据表存在时除数据表
drop table if exists <tableName>;

修改数据表

##修改表名
alter table <tableName>rename to <newTableName>;
##数据表也是有字符集的,默认字符集和数据库一致
alter table <tableName>character set utf8;
#添加列(字段)
alter table <tableName>add <columnName>varchar(200);
##修改列(字段)的列表和类型
alter table <tableName>change <oldColumnName><newcloumnName><type>;
##只修改列(字段)类型
alter table <tableName>modify <columnName><newType>;
#删除列(字段)
alter table stus drop <columnName>;

5.4 MySQL数据类型

数据类型,指的是数据表中的列中支持存放的数据的类型

5.4.1 数值类型

在MySQL中有多种数据类型可以存放数值,不同的类型存放的数值的范围或者形式是不同的

在这里插入图片描述

5.4.2字符串类型

存储字符序列的类型

在这里插入图片描述

5.4.3 日期类型

在MySQL数据库中,我们可以使用字符串来存储时间,但是如果我们需要基于时间字段进行查间操作(查询
在某个时间段内的数据)就不便于查询实现

在这里插入图片描述

5.5 字段约束

5.5.1 约束介绍

在创建数据库时,指定的对数据表的列的数据限制性的要求(对表的列中的数据进行限制)

为什么要给表中的列添加约束呢?

  • 保证数据的有效性
  • 保证数据的完整性
  • 保证数据的正确性

字段常见的约束:

  • 非空约束(not null): 限制此列的字不能为null
  • 唯一约束(unique):在表中的多条数据,此列的值不能重复
  • 主键约束(primary key):非空,唯一,能够唯一标识数据表中的一条数据
  • 外键约束(foreign key):建立不同表之间的关联关系

5.5.2 非空约束

限制数据表中此列的值必须提供

  • 创建表:设置图书表的book_name not null

    create table books(book_isbn char(4),book_name varchar(10) not null,book_author varchar(6)
    );
    
  • 添加数据

在这里插入图片描述

5.5.3 唯一约束

在表中的多条数据,此列的值不能重复

  • 创建表:设置图书表的book_isbn为unique

    create table books(book_isbn char(4) unique,book_name varchar(10) not null,book_author varchar(6)
    );
    
  • 添加数据:

    在这里插入图片描述

5.5.4 主键约束

主键——就是数据表中记录的唯一标识,在一张表中只能有一个主键(主键可以是一个列,也可以时多个列的组合)

当一个字段声明为主键之后,添加数据时:

  • 此字段不能为null
  • 此字段不能重复

创建表时定义主键

create table books(book_isbn char(4) primary key,book_name varchar(10) not null,book_author varchar(6)
);

或者

create table books(book_isbn char(4),book_name varchar(10) not null,book_author varchar(6),primary key(book_isbn)
);

删除数据表主键约束

alter table books drop primary key;

创建表之后添加主键约束

## 创建表时没有添加主键约束
create table books(book_isbn char(4),book_name varchar(10) not null,book_author varchar(6)
);
## 创建表之后添加主键约束
alter table books modify book_isbn char(4) primary key;

5.5.5 主键自动增长

在我们创建一张数据表时,如果数据表中有列可以作为主键(例如:学生表的学号,图书表的id)我们可以直接设置这个列为主键;

当有些数据表中没有合适的列作为主键时,我们可以额外定义一个与记录本身无关的列(ID)作为主键,此列数据无具体的含义,主要用于标识一条记录,在MySQL数据库中我们可以将此列定义为int,同时设置为自动增长,当我们向数据表中新增一条记录时,无需提供ID列的值,会自动生成。

定义主键自动增长

create table types(type_id int primary key auto_increment,type_name varchar(20) not null,type_remark varchar(100)
);

注意:自动增长从1开始,每添加一条记录,自动的增长的列会自动+1,当我们把某条记泉删除之后再添加数据,
自动增长的数据也不会重复生成(自动增长只保证唯一性、不保证连续性)

5.5.6 联合主键

联合主键一一将数据表中的多列组合在一起设置为表的主键

在这里插入图片描述

定义联合主键

create table grades(stu_num char(8),course_id int,score int,primary key(stu_num,course_id)
);

注意:在实际企业项目的数据库设计中,联合主键使用率并不高;当一个数据表中没有明确的字段可以作为主键时,我们可以额外添加一个ID字段作为主键。

5.5.7 外键约束

5.6 DML数据操纵语言

用于完成对数据表中数据的插入、删除、修改操作

create table students(stu_num char(8) primary key,stu_name varchar(20)not nullstu_gender char(2)not null,stu_age int not null,stu_tel char(11)not null unique,stu_qq varchar(11)unique
);

5.6.1 插入数据

语法

insert into <tableName>(columnName,columnName....)values(value1,value2....)

示例

##向数据表中指定的列添加数据(不允许为空的列必须提供数据)
insert into stus(stu_num,stu_name,stu_gender,stu_age,stu_tel)
va1ues('20210101','张三',男',21,13030303300');##数据表名后的字段名列表顺序可以不与表中一致,但是va1ues中值的顺序必须与表名后字段名顺序对应
insert into stus(stu_num,stu_name,stu_age,stu_tel,stu_gender)
va1ues('28210103',王五',20,13030303302''女);##当要向表中的所有列添加数据时,数据表名后面的字段列表可以省略,但是v1ues中的值的顺序要与数据表定义的字段保
持一致;
insert int0 stus va1ues('20210105','孙琦','',21,'13030303304','666666');##不过在项目开发中,即使要向所有列添加数据,也建议将列名的列表显式写出来(增强$QL的稳定性】
insert into stus(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq)
va1ues('20218185,孙琦','',21,'13038303304','666666');

5.6.2 删除数据

从数据表中删除满足特定条件(所有)的记录

语法

delete from <tableName>[where conditions];

示例

##删除学号为20210102的学生信息
delete from stus where stu_num='20210102';##删除年龄大于20岁的学生信息(如果满足where-子句的记录有多条,则删除多条记录)
delete from stus where stu_age>20;#如果删除语句没有where子句,则表示删除当前数据表中的所有记录(敏感操作)
delete from stus;

5.6.3 修改数据

对数据表中已经添加的记录进行修改

语法

update <tableName>set columnName=value [where conditions]

示例

##将学号为20210105的学生姓名修改为“孙七”(只修改一列)
update stus set stu_name=''where stu_num='20210105';##将学号为20219183的学生性别修改为“男”,同时将QQ修改为777777(修改多列)
update stus set stu_gender='',stu_qq='777777'where stu_num='20210103'##根据主键修改其他所有列
update stus set stu_name='韩梅梅',stu_gender='女',stu_age=18,stu_tel='13131313311'
,stu_qq='999999'where stu._num='28210102';##如果update语句没有where-子句,则表示修改当前表中所有行(记录)
update stus set stu_name='Tom';

5.7 DQL数据查询语言

从数据表中提取满足特定条件的记录

  • 单表查间
  • 多表联合查询

5.7.1查询基础语法

##se1lect关键字后指定要显示查询到的记录的那些列
select colnumName1[,colnumName2,colnumName3...]from <tableName>;##如果要显示查询到的记录的所有列,则可以使用*替代字段名列表 (在项目开发中不建议使用*)
select from stus;

6.7.2 where子句
在删除、修改及查询的语句后都可以添加where-子句(条件),用于筛选满足特定的添加的数据进行删除、修
改和查询操作。

delete from tableName where conditions;update tabeName set...where conditions;select ...from tableName where conditions;

条件关系运算符

## = 等于
select from stus where stu_num ='20210101';## !=<>不等于
select from stus where stu_num !='20210101';
select from stus where stu_num <>20210101';# > 大于
select from stus where stu_age>18;# < 小于
select from stus where stu_age<20;# >=  大于等于
select from stus where stu_age>=20;# <= 小于等于
select from stus where stu_age<=20;## between...and...  区间查询
between v1 and v2		[v1,v2]
select from stus where stu_age between 18 and 20;

条件逻辑运算符

在where子句中,可以将多个条件通过逻辑预算(and or not)进行连接,通过多个条件来筛选要操作的数据。

# and 并且	 筛选多个条件同时满足的记录
select from stus where stu_gender=''and stu_age<21;## or 或者	筛选多个条件中至少满足一个条件的记录
select from stus where stu_gender=''or stu_age<21;## not 取反
select from stus where stu_age not between 18 and 20;

5.7.2 LIKE子句

在where子句的条件中,我们可以使用like关键字来实现模糊查询

语法

select from tableName where columnName like 'reg';
  • 在like关键字后的reg表达式中
    • %表示任意多个字符【%o%包含字母o】
    • _表示任意一个字符【__o%第二个字母为o】

示例

#查询学生姓名包含字母·的学生信息
select from stus where stu_name like '%o%;#查询学生姓名第一个字为张的学生信息
select from stus where stu_name 1ike'%';#查询学生姓名最后一个字母为o的学生信息
select from stus where stu_name like '%o';#查询学生姓名中第二个字母为o的学生信息
select from stus where stu_name
1ike'_o%':

5.7.3 对查询结果的处理

设置查询的列

声明显示查询结果的指定列

select colnumName1,columnName2,...from stus where stu_age>20;

计算列

对从数据表中查间的记录的列进行一定的运算之后显示出来

## 出生年份 = 当前年份 - 年龄
select stu_name,2021-stu_age from stus;
+-----------+--------------+
| stu_name | 2021-stu_age |
+-----------+--------------+
| omg 		| 2000 		  |
| 韩梅梅 	  | 2003 		|
| Tom 		| 2001 		  |
| Lucy 		| 2000		  |
| Polly 	| 2000		  |
| Theo 		| 2004		  |
+-----------+--------------+

as 字段别名

我们可以为查询结果的列名去一个语义性更强的别名 (如下案例中as关键字也可以省略))

select stu_name,2021-stu_age as stu_birth_year from stus;
+-----------+----------------+
| stu_name | stu_birth_year |
+-----------+----------------+
| omg 		| 2000 		|
| 韩梅梅 	  | 2003 	  |
| Tom 		| 2001 		|
| Lucy 		| 2000 		|
| Polly 	| 2000 		|
| Theo 		| 2004 		|
+-----------+----------------+
select stu_name as 姓名,2021-stu_age as 出生年份 from stus;
+-----------+--------------+
| 姓名 | 出生年份 |
+-----------+--------------+
| omg 	| 2000 |
| 韩梅梅 | 2003 |
| Tom   | 2001 |
| Lucy  | 2000 |
| Polly | 2000 |
| Theo  | 2004 |
+-----------+--------------+

distinct 消除重复行

从查询的结果中将重复的记录消除 distinct

select stu_age from stus;
+---------+
| stu_age |
+---------+
| 21 	 |
| 18 	 |
| 20 	 |
| 21 	 |
| 21   	 |
| 17  	 |
+---------+
select distinct stu_age from stus;
+---------+
| stu_age |
+---------+
| 21  	 |
| 18 	 |
| 20 	 |
| 17 	 |
+---------+

5.7.4 排序 — order by

将查询到的满足条件的记录按照指定的列的值升序/降序排列

语法

select from tableName where conditions order by columnName asc desc;
  • order by columnName表示将查询结果按照指定的列排序
    • asc按照指定的列升序(默认)
    • desc按照指定的列降序

实例

# 单字段排序
select * from stus where stu_age>15 order by stu_gender desc;
+----------+-----------+------------+---------+-------------+--------+
| stu_num | stu_name | stu_gender | stu_age | stu_tel | stu_qq |
+----------+-----------+------------+---------+-------------+--------+
| 20210101 | omg 	  || 21	  	 | 13030303300 | NULL |
| 20210103 | Tom 	  || 20	  	 | 13030303302 | 777777 |
| 20210105 | Polly    || 21	     | 13030303304 | 666666 |
| 20210106 | Theo 	  || 17	     | 13232323322 | NULL |
| 20210102 | 韩梅梅 	|| 18		   | 13131313311 | 999999 |
| 20210104 | Lucy     || 21	     | 13131323334 | NULL |
+----------+-----------+------------+---------+-------------+--------+
# 多字段排序 : 先满足第一个排序规则,第一个排序规则完成之后,在按照第二个排序规
则执行
(以下案例就是先按照性别升序排列,然后再降序排序相同性别的年龄)
select * from stus where stu_age>15 order by stu_gender asc,stu_age desc;
+----------+-----------+------------+---------+-------------+--------+
| stu_num | stu_name | stu_gender | stu_age | stu_tel | stu_qq |
+----------+-----------+------------+---------+-------------+--------+
| 20210104 | Lucy 	 || 21 | 13131323334 | NULL |
| 20210102 | 韩梅梅   || 18 | 13131313311 | 999999 |
| 20210101 | omg 	 || 21 | 13030303300 | NULL |
| 20210105 | Polly   || 21 | 13030303304 | 666666 |
| 20210103 | Tom 	 || 20 | 13030303302 | 777777 |
| 20210106 | Theo 	 || 17 | 13232323322 | NULL |
+----------+-----------+------------+---------+-------------+--------+

5.7.5 聚合函数

SQL中提供了一些可以对查询的记录的列进行计算的函数一一聚合函数

  • count
  • max
  • min
  • sum
  • count() 统计函数,统计满足条件的指定字段值的个数(记录数)
#统计学生表中学生总数
select count(stu_age ) from students;#统计学生表中性别伪男的学生总数
select count(stu_num)from students where stu_gender='男';
  • max() 计算最大值,查询满足条件的记录中指定列的最大值
select max(stu_age) from students;
  • min() 计算最大=小值,查询满足条件的记录中指定列的最小值
select min(stu_age) from students;
  • sum() 计算和,查询满足条件的记录中指定的列的值的总和
#计算所有学生年龄的总和
select sum(stu_age) from students;
  • avg() 计算均值,查询满足条件的记录中指定的列的值的均值
#计算所有学生年龄的均值
select avg(stu_age) from students;

5.7.6 日期函数和字符串函数

日期函数

当我们向日期类型的列添加数据时,可以通过字符串类型赋值(字符串的格式必须为yyyy-MM-ddhh:mm:ss)
如果我们想要获取当前系统时间添加到日期类型的列,可以使用now()或者sysdate()

示例:

# 增加一个入学时间列
alter  table students  add stu_enterence varchar(30);#通过字符串类型给日期类型的列赋值
insert into students(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq,stu_enterence)
values('20200108','张小三','女',20,'13434343344','123111','2023-11-01 09:00:00');#通过now()获取当前时间
insert into students(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq,stu_enterence)
values('20200109','王芳','女',23,'13434343377','123333',now());#通过sysdate()获取当前时间
insert into students(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq,stu_enterence)
values('20200107','李丽','女',20,'13434343388','133333',sysdate());

字符串函数

就是通过SQL指令对字符串进行处理

示例

 # concat(colnum1,colunm2,..)拼接多列select concat(stu_num,'-',stu_name,'-',stu_age) from students;# upper(column)将字段的值转换成大写select upper(stu_name) from students;# lower(column)将字段的值转换成小写select lower(stu_name) from students;# substring(column,start,len)从指定列中截取部分显示start从1开始select stu_name,substring(stu_tel,8,4) from students;

5.7.7 分组查询 — group by

分组——就是将数据表中的记录按照指定的类进行分组

语法

select分组字段/聚合函数
from表名
[where条件]
group by分组列名[ having条件
[order by排序字段]
  • select分组字段/聚合函数from表名[where条件]group by分组列名
  • select后使用*显示对查询的结果进行分组之后,显示每组的第一条记录(这种显示通常是无意义的)
  • select后通常显示分组字段和聚合函数(对分组后的数据进行统计、求和、平均值等)
  • 语句执行属性:
    • 1、先根据where条件从数据库查询记录;
    • 2、group by对查询记录进行分组
    • 3、执行having对分组后的数据进行筛选

示例

#先对查询的学生信息按性别进行分组(分成了男、女两组),然后再分别统计每组学生的个数
select stu_gender,count(stu_num) from stus 
group by stu_gender;# 先对查询的学生信息按性别进行分组(分成了男、女两组〉,然后再计算每组的平均年龄
select stu_gender ,avg(stu_age) from stus 
group by stu_gender;# 先对学生按年龄进行分组(分了16、17、18、20、21、22六组),然后统计各组的学生数量,还可以对最终的结果排序
select stu_age,count( stu_num) from stus 
group by stu_age 
order by stu_age;#查询所有学生,按年龄进行分组,然后分别统计每组的人数,再筛选当前组人数>1的组,再按年龄升序显示出来
select stu_age, count(stu_num) from stus 
group by stu_age 
having count(stu_num)>1 
order bystu_age;#查询性别为'男'的学生,按年龄进行分组,然后分别统计每组的人数,再筛选当前组人数>1的组,再按年龄升序显示出来
select stu_age , count( stu_num)
from stus
where stu_gender='男'
group by stu_age
having count(stu_num )>1
order by stu_age; 

5.7.8 分页查询 — limit

当数据表中的记录比较多的时候,如果一次性全部查询出来显示给用户,用户的可读性/体验性就不太好
因此我们可以将这些数据分页进行展示。

语法

select ...from ...where ...
limit param1 , param2
  • param1 int ,表示获取查询语句的结果中的第一条数据的索引(索引从o开始)
  • param2 int,表示获取的查询记录的条数(如果剩下的数据条数<param2,则返回剩下的所有记录)

案例

对数据表中的学生信息进行分页显示,总共有10条数据,我们每页显示3条总记录数count 10

每页显示 pageSize 3

总页数:pageCount = count%pageSize==0 ? count/pageSize : count/pageSize +1;

#查询第一页:
select k from stus [ where ...] limit 0,3;				( 1-1)*3#查询第二页:
select k from stus [ where ...] limit 3,3 ;				(2-1)*3#查询第三页:
select k from stus [ where ...] limit 6,3;				(3-1)*3#查询第四页:
select k from stus [ where ...] limit 9,3;				(4-1)*3#如果在一张数据表中:
# pageNum表示查询的页码
# pageSize表示每页显示的条数#通用分页语句如下:
select * from <tableName>[where ...] limit (pageNum-1 )*pageSize , pageSize;

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

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

相关文章

深入理解 Webpack 热更新原理:提升开发效率的关键

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

了解华为(PVID VLAN)与思科的(Native VLAN)本征VLAN的区别并学习思科网络中二层交换机的三层结构局域网VLAN配置

一、什么是二层交换机&#xff1f; 二层交换机&#xff08;Layer 2 Switch&#xff09;是一种网络设备&#xff0c;主要工作在OSI模型的数据链路层&#xff08;第二层&#xff09;&#xff0c;用于在局域网内部进行数据包的交换和转发。二层交换机通过学习MAC地址表&#xff0…

计算机服务器中了locked勒索病毒怎么解密,locked勒索病毒解密流程

科技的发展带动了企业生产&#xff0c;越来越多的企业开始利用计算机服务器办公&#xff0c;为企业的生产运营提供了极大便利&#xff0c;但随之而来的网络安全威胁也引起了众多企业的关注。近日&#xff0c;云天数据恢复中心接到许多企业的求助&#xff0c;企业的计算机服务器…

arthas之生产环境排查问题常用功能

背景 生产环境调试使用。对问题进行高效排查。 目录 一、watch idea安装arthas插件 idea插件下载代理配置 A. 选择Http Proxy Settings, 打开配置页面B. 选择 Auto-detect proxy settingC. 上图中选择Ok即可, plugin 列表 刷新得到插件内容 启动arthas客户端watch监听 通过art…

(关键点检测)YOLOv8实现多类人体姿态估计的输出格式分析

&#xff08;关键点检测&#xff09;YOLOv8实现多类人体姿态估计的输出格式分析 任务分析 所使用的数据配置文件 网络结构 导出模型 用 netron 可视化 输出格式分析 参考链接 1. 任务分析 判断人体关键点时一并给出关键点所属的类别&#xff0c;比如男人&#xff0c;女…

【Redis知识点总结】(二)——Redis高性能IO模型剖析

Redis知识点总结&#xff08;二&#xff09;——Redis高性能IO模型及其事件驱动框架剖析 IO多路复用传统的阻塞式IO同步非阻塞IOIO多路复用机制 Redis的IO模型Redis的事件驱动框架 IO多路复用 Redis的高性能的秘密&#xff0c;在于它底层使用了IO多路复用这种高性能的网络IO&a…

vue 自定义组件绑定model+弹出选择支持上下按键选择

参考地址v-modelhttps://v2.cn.vuejs.org/v2/guide/components-custom-events.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E7%BB%84%E4%BB%B6%E7%9A%84-v-model 原文代码 Vue.component(base-checkbox, {model: {prop: checked,event: change},props: {checked: Boolean},template: `…

2.4_3 死锁的处理策略——避免死锁

文章目录 2.4_3 死锁的处理策略——避免死锁&#xff08;一&#xff09;什么是安全序列&#xff08;二&#xff09;安全序列、不安全状态、死锁的联系&#xff08;三&#xff09;银行家算法 总结 2.4_3 死锁的处理策略——避免死锁 银行家算法是“避免死锁”策略的最著名的一个…

Elasticsearch架构原理

一. Elasticsearch架构原理 1、Elasticsearch的节点类型 在Elasticsearch主要分成两类节点&#xff0c;一类是Master&#xff0c;一类是DataNode。 1.1 Master节点 在Elasticsearch启动时&#xff0c;会选举出来一个Master节点。当某个节点启动后&#xff0c;然后使用Zen D…

时间感知自适应RAG(TA-ARE)

原文地址&#xff1a;Time-Aware Adaptive RAG (TA-ARE) 2024 年 3 月 1 日 介绍 随着大型语言模型&#xff08;LLM&#xff09;的出现&#xff0c;出现了新兴能力的概念。前提或假设是LLMs具有隐藏的和未知的能力&#xff0c;等待被发现。企业家们渴望在LLMs中发现一些无人知晓…

论文笔记 - 基于振动信号的减速器故障诊断方法

1.论文摘要 基于振动信号的减速器故障诊断方法, 沈晴,《起重运输机械》,2018 原作者联系方式: shenqing@zmpc.com 这篇文章包含了一个从工程到数据处理和故障定位的完整过程。是一篇综述文档。它介绍了机械设备常见的三类故障(轴,齿轮、轴承)的故障特征,并在一个故障追…

指针数组和数组指针(详细解释)

指针数组 指针数组的作用 指针数组和数组指针是C语言中常用的概念&#xff0c;它们分别有不同的作用和用法。 指针数组&#xff1a; 指针数组是一个数组&#xff0c;其中的每个元素都是指针类型。它可以用来存储多个指针&#xff0c;每个指针可以指向不同的数据类型或者相同…

xxl-job学习记录

1、应用场景 例&#xff1a; 某收银系统需要在每天凌晨统计前一天的财务分析、汇总 某银行系统需要在信用卡还款日前三天发短信提醒等 2、为什么需要使用任务调度 spring中提供了注解Scheduled的注解&#xff0c;这个注解也可以实现定时任务的执行 我们只需要在方法上使用这…

人工智能|机器学习——K-means系列聚类算法k-means/ k-modes/ k-prototypes/ ......(划分聚类)

1.k-means聚类 1.1.算法简介 K-Means算法又称K均值算法&#xff0c;属于聚类&#xff08;clustering&#xff09;算法的一种&#xff0c;是应用最广泛的聚类算法之一。所谓聚类&#xff0c;即根据相似性原则&#xff0c;将具有较高相似度的数据对象划分至同一类簇&#xff0c;…

2024 年中国高校大数据挑战赛赛题 D:行业职业技术培训能力评价完整思路以及源代码分享

中国是制造业大国&#xff0c;产业门类齐全&#xff0c;每年需要培养大量的技能娴 熟的技术工人进入工厂。某行业在全国有多所不同类型&#xff08;如国家级、 省级等&#xff09;的职业技术培训学校&#xff0c;进行 5 种技能培训。学员入校时需要 进行统一的技能考核&#xf…

数字化转型导师坚鹏:科技金融政策、案例及数字化营销

科技金融政策、案例及数字化营销 课程背景&#xff1a; 很多银行存在以下问题&#xff1a; 不清楚科技金融有哪些利好政策&#xff1f; 不知道科技金融有哪些成功案例&#xff1f; 不知道科技金融如何数字化营销&#xff1f; 课程特色&#xff1a; 以案例的方式解读原…

【个人开发】llama2部署实践(二)——基于GPU部署踩坑

折腾了一整天&#xff0c;踩了GPU加速的一堆坑&#xff0c;记录一下。 1.GPU加速方式 上篇已经写了llama2部署的大概流程&#xff1a;【【个人开发】llama2部署实践&#xff08;一&#xff09;】——基于CPU部署 针对llama.cpp文件内容&#xff0c;仅需再make的时候带上参数…

数字建筑欢乐颂,智慧工地共筑美好未来!

在解决农民工人欠薪这一长期困扰建筑业的难题上&#xff0c;某建筑公司响应政策&#xff0c;严格按照实名制管理&#xff0c;实施过程中发现并克服了传统管理模式的痛点&#xff1a;聊天群组的信息时&#xff0c;往往会被淹没在“收到”回复中&#xff0c;影响沟通效率&#xf…

探索React中的类组件和函数组件

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

每日一题leetcode-找出数组的第K大和

一.题目解析 读完题目后我们知道&#xff0c;该题就是让我们在子序列中求和&#xff0c;我们要在不同的子序列中排序找到第K大的和。何为子序列&#xff1f; 子序列就是在一个数组中抽出一些元素构成一个新的数组即可&#xff0c;不要求一定是连续的&#xff1b; 例如&#x…