MySQL的基础语法1(增删改查、DDL、DML、DQL和DCL)
目录
一、基本介绍
二、SQL通用语法
三、SQL分类(DDL、DML、DQL、DCL)
1.DDL
1.1数据库操作
1.2表操作
1.2.1表操作-查询创建
1.2.2表操作-数据类型
1)数值类型
2)字符串类型
3)日期时间类型编辑
4)表操作-案例
1.2.3表操作-修改
1.2.4表操作-删除
2.DML
2.1添加数据
2.2修改数据
2.3删除数据
3.DQL
3.1基本语法以及执行顺序
3.2基础查询
3.3 条件查询
1). 语法
2). 条件 常用的比较运算符如下:
3)常用的逻辑运算符如下:
4)案例
3.4聚合函数
1). 介绍
2). 常见的聚合函数如下
3). 语法
4)案例
3.5 分组查询
3.6 排序查询
3.7分页查询
4.DCL
4.1 管理用户
1)基本语法
2)案例
4.2 权限控制
1)常见权限
编辑 2)基本语法
3)案例
一、基本介绍
SQL: 全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了 一套操作关系型数据库统一标准 。
数据模型如下图:
二、SQL通用语法
1). SQL语句可以单行或多行书写,以分号结尾。
2). SQL语句可以使用空格/缩进来增强语句的可读性。
3). MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
4). 注释:
单行注释:-- 注释内容 或 # 注释内容
多行注释:/* 注释内容 */
三、SQL分类(DDL、DML、DQL、DCL)
SQL语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL。
1.DDL
Data Definition Language,数据定义语言,用来定义数据库对象(数据库,表,字段) 。
1.1数据库操作
注意:语句必须以分号结束1). 查询所有数据库
show databases ;2). 查询当前数据库select database() ;3). 创建数据库create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序
规则 ] ;
注意:在同一个数据库服务器中,不能创建两个名称相同的数据库,否则将会报错。4). 删除数据库drop database [ if exists ] 数据库名 ;
注意:如果删除一个不存在的数据库,将会报错。此时,可以加上参数 if exists ,如果数据库存在,再
执行删除,否则不执行删除。5). 切换数据库
use 数据库名 ;
解释:我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则是不能操作的。
1.2表操作
1.2.1表操作-查询创建
1). 查询当前数据库所有表
show tables;比如,我们可以切换到sys这个系统数据库,并查看系统数据库中的所有表结构。
use sys;
show tables;2). 查看指定表结构
desc 表名 ;
通过这条指令,我们可以查看到指定表的字段,字段的类型、是否可以为NULL,是否存在默认值等信
息。3). 查询指定表的建表语句
show create table 表名 ;
通过这条指令,主要是用来查看建表语句的,而有部分参数我们在创建表的时候,并未指定也会查询
到,因为这部分是数据库的默认值,如:存储引擎、字符集等。4). 创建表结构
CREATE TABLE 表名(字段1 字段1类型 [ COMMENT 字段1注释 ],字段2 字段2类型 [COMMENT 字段2注释 ],字段3 字段3类型 [COMMENT 字段3注释 ],......字段n 字段n类型 [COMMENT 字段n注释 ]
) [ COMMENT 表注释 ] ;注意: [...] 内为可选参数,最后一个字段后面没有逗号
示例:创建以下表格形式:
id | name | age | gender |
---|---|---|---|
1 | 橙 | 18 | 男 |
2 | 桃 | 19 | 女 |
代码如下:
create table tb(id int comment '编号',name varchar(50) comment '姓名',age int comment '年龄',gender varchar(1) comment '性别') comment '用户表';
1.2.2表操作-数据类型
MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。
1)数值类型
类型 | 大小 | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 |
---|---|---|---|---|
TINYINT | 1byte | (-128, 127) | (0, 255) | 小整数值 |
SMALLINT | 2bytes | (-32768, 32767) | (0, 65535) | 大整数值 |
MEDIUMINT | 3bytes | (-8388608,8388607) | (0, 16777215) | 大整数值 |
INT/INTEGER | 4bytes | (-2147483648,2147483647) | (0,4294967295) | 大整数值 |
BIGINT | 8bytes | (-2^63, 2^63-1) | (0, 2^64-1) | 极大整数值 |
FLOAT | 4bytes | (-3.402823466 E+38, 3.402823466351 E+38) | 0 和 (1.175494351 E-38, 3.402823466 E+38) | 单精度浮点数 |
DOUBLE | 8bytes | (-1.7976931348623157 E+308, 1.7976931348623157 E+308) | 0 和 (2.2250738585072014 E-308, 1.7976931348623157 E+308) | 双精度浮点数 |
DECIMAL | 依赖于 M (精度) 和 D (标度) 的值 | 依赖于 M (精度) 和 D (标度) 的值 | 小数值 (精确定点数) |
如: 1). 年龄字段 -- 不会出现负数, 而且人的年龄不会太大age tinyint unsigned2). 分数 -- 总分100分, 最多出现一位小数score double(4,1)
2)字符串类型
char 与 varchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和 字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性 能会更高些。
如: 1). 用户名 username ------> 长度不定, 最长不会超过50username varchar(50)2). 性别 gender ---------> 存储值, 不是男,就是女gender char(1)3). 手机号 phone --------> 固定长度为11phone char(11)
3)日期时间类型
如: 1). 生日字段 birthdaybirthday date2). 创建时间 createtimecreatetime datetime
4)表操作-案例
设计一张员工信息表,要求如下:
1. 编号(纯数字)
2. 员工工号 (字符串类型,长度不超过10位)
3. 员工姓名(字符串类型,长度不超过10位)
4. 性别(男/女,存储一个汉字)
5. 年龄(正常人年龄,不可能存储负数)
6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符)
7. 入职时间(取值年月日即可)
create table emp(id int comment '编号',workno varchar(10) comment '工号',name varchar(10) comment '姓名',gender char(1) comment '性别',age tinyint unsigned comment '年龄',idcard char(18) comment '身份证号',entrydate date comment '入职时间') comment '员工表';
1.2.3表操作-修改
1). 添加字段
ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];案例:
为emp表增加一个新的字段”昵称”为nickname,类型为varchar(20)
ALTER TABLE emp ADD nickname varchar(20) COMMENT '昵称';2). 修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度);3). 修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];案例:
将emp表的nickname字段修改为username,类型为varchar(30)
ALTER TABLE emp CHANGE nickname username varchar(30) COMMENT '昵称';4). 删除字段
ALTER TABLE 表名 DROP 字段名;案例:
将emp表的字段username删除
ALTER TABLE emp DROP username;5). 修改表名
ALTER TABLE 表名 RENAME TO 新表名;案例:
将emp表的表名修改为 employee
ALTER TABLE emp RENAME TO employee;
1.2.4表操作-删除
1). 删除表
DROP TABLE [ IF EXISTS ] 表名;可选项 IF EXISTS 代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不
加该参数项,删除一张不存在的表,执行将会报错)。案例:
如果tb_user表存在,则删除tb_user表
DROP TABLE IF EXISTS tb_user;2). 删除指定表, 并重新创建表
TRUNCATE TABLE 表名;注意: 在删除表的时候,表中的全部数据也都会被删除。
(从下面开始使用DataGrip图形化操作界面)
2.DML
DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进 行增、删、改操作。 添加数据(INSERT)、修改数据(UPDATE)、 删除数据(DELETE)
2.1添加数据
1). 给指定字段添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);案例: 给employee表所有的字段添加数据 ;
insert into employee(id,workno,name,gender,age,idcard,entrydate) values(1,'1','Itcast','男',10,'123456789012345678','2000-01-01');2). 给全部字段添加数据
INSERT INTO 表名 VALUES (值1, 值2, ...);案例:插入数据到employee表,具体的SQL如下:
insert into employee values(2,'2','张无忌','男',18,'123456789012345670','2005-01-01');3). 批量添加数据INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值
1, 值2, ...) ;INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...) ;案例:批量插入数据到employee表,具体的SQL如下:
insert into employee values(3,'3','韦一笑','男',38,'123456789012345670','2005-01
01'),(4,'4','赵敏','女',18,'123456789012345670','2005-01-01');注意事项: • 插入数据时,指定的字段顺序需要与值的顺序是一一对应的。• 字符串和日期型数据应该包含在引号中。• 插入的数据大小,应该在字段的规定范围内。
2.2修改数据
修改数据的具体语法为:
UPDATE 表名 SET 字段名1 = 值1 , 字段名2 = 值2 , .... [ WHERE 条件 ] ;案例:
A. 修改id为1的数据,将name修改为itheima
update employee set name = 'itheima' where id = 1;B. 修改id为1的数据, 将name修改为小昭, gender修改为 女
update employee set name = '小昭' , gender = '女' where id = 1;C. 将所有的员工入职日期修改为 2008-01-01
update employee set entrydate = '2008-01-01';注意事项:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
2.3删除数据
删除数据的具体语法为:
DELETE FROM 表名 [ WHERE 条件 ] ;案例:A. 删除gender为女的员工
delete from employee where gender = '女';B. 删除所有员工
delete from employee;注意事项:• DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数
据。• DELETE 语句不能删除某一个字段的值(可以使用UPDATE,将该字段值置为NULL即
可)。• 当进行删除全部数据操作时,datagrip会提示我们,询问是否确认删除,我们直接点击
Execute即可。
3.DQL
DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记 录。
查询关键字: SELECT
在一个正常的业务系统中,查询操作的频次是要远高于增删改的,当我们去访问企业官网、电商网站, 在这些网站中我们所看到的数据,实际都是需要从数据库中查询并展示的。而且在查询的过程中,可能 还会涉及到条件、排序、分页等操作。
3.1基本语法以及执行顺序
DQL 查询语句,语法结构如下:SELECT字段列表
FROM表名列表
WHERE条件列表
GROUP BY分组字段列表
HAVING分组后条件列表
ORDER BY排序字段列表
LIMIT分页参数将上面的完整语法进行拆分,分为以下几个部分:
基本查询(不带任何条件)
条件查询(WHERE)
聚合函数(count、max、min、avg、sum)
分组查询(group by)
排序查询(order by)
分页查询(limit)
开始之前完成准备工作,代码如下:
create table emp(id int comment '编号',workno varchar(10) comment '工号',name varchar(10) comment '姓名',gender char(1) comment '性别',age tinyint unsigned comment '年龄',idcard char(18) comment '身份证号',workaddress varchar(50) comment '工作地址',entrydate date comment '入职时间')comment '员工表';INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (1, '00001', '柳岩', '女', 20, '123456789012345678', '北京', '2000-01-01'),(2, '00002', '张无忌', '男', 18, '123456789012345670', '北京', '2005-09-01'),(3, '00003', '韦一笑', '男', 38, '123456789712345670', '上海', '2005-08-01'),(4, '00004', '赵敏', '女', 18, '123456757123845670', '北京', '2009-12-01'),(5, '00005', '小昭', '女', 16, '123456769012345678', '上海', '2007-07-01'),(6, '00006', '杨逍', '男', 28, '12345678931234567X', '北京', '2006-01-01'),(7, '00007', '范瑶', '男', 40, '123456789212345670', '北京', '2005-05-01'),(8, '00008', '黛绮丝', '女', 38, '123456157123645670', '天津', '2015-05-01'),(9, '00009', '范凉凉', '女', 45, '123156789012345678', '北京', '2010-04-01'),(10, '00010', '陈友谅', '男', 53, '123456789012345670', '上海', '2011-01-01'),(11, '00011', '张士诚', '男', 55, '123567897123465670', '江苏', '2015-05-01'),(12, '00012', '常遇春', '男', 32, '123446757152345670', '北京', '2004-02-01'),(13, '00013', '张三丰', '男', 88, '123656789012345678', '江苏', '2020-11-01'),(14, '00014', '灭绝', '女', 65, '123456719012345670', '西安', '2019-05-01'),(15, '00015', '胡青牛', '男', 70, '12345674971234567X', '西安', '2018-04-01'),(16, '00016', '周芷若', '女', 18, null, '北京', '2012-06-01');
3.2基础查询
1). 查询多个字段SELECT 字段1, 字段2, 字段3 ... FROM 表名 ; 1SELECT * FROM 表名 ;
注意 : * 号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)。2). 字段设置别名
SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名; 1
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;3). 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;案例:
A. 查询指定字段 name, workno, age并返回
select name,workno,age from emp;B. 查询返回所有字段
select id ,workno,name,gender,age,idcard,workaddress,entrydate from emp; 1
select * from emp;C. 查询所有员工的工作地址,起别名
select workaddress as '工作地址' from emp;
-- as可以省略
select workaddress '工作地址' from emp;D. 查询公司员工的上班地址有哪些(不要重复)
select distinct workaddress '工作地址' from emp;
3.3 条件查询
1). 语法
SELECT 字段列表 FROM 表名 WHERE 条件列表 ;
2). 条件 常用的比较运算符如下:
3)常用的逻辑运算符如下:
4)案例
案例:A. 查询年龄等于 88 的员工
select * from emp where age = 88;B. 查询年龄小于 20 的员工信息
select * from emp where age < 20;C. 查询年龄小于等于 20 的员工信息
select * from emp where age <= 20;D. 查询没有身份证号的员工信息
select * from emp where idcard is null;E. 查询有身份证号的员工信息
select * from emp where idcard is not null;F. 查询年龄不等于 88 的员工信息
select * from emp where age != 88;
select * from emp where age <> 88;G. 查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息
select * from emp where age >= 15 && age <= 20;
select * from emp where age >= 15 and age <= 20;
select * from emp where age between 15 and 20;H. 查询性别为 女 且年龄小于 25岁的员工信息
select * from emp where gender = '女' and age < 25;I. 查询年龄等于18 或 20 或 40 的员工信息
select * from emp where age = 18 or age = 20 or age =40;
select * from emp where age in(18,20,40);J. 查询姓名为两个字的员工信息 _ %
select * from emp where name like '__'; --两个下划线K. 查询身份证号最后一位是X的员工信息
select * from emp where idcard like '%X';
select * from emp where idcard like '_________________X'; --17个下划线
3.4聚合函数
1). 介绍
将一列数据作为一个整体,进行纵向计算 。
2). 常见的聚合函数如下
3). 语法
SELECT 聚合函数(字段列表) FROM 表名 ;注意 : NULL值是不参与所有聚合函数运算的。
4)案例
A. 统计该企业员工数量select count(*) from emp; -- 统计的是总记录数
select count(idcard) from emp; -- 统计的是idcard字段不为null的记录数对于count聚合函数,统计符合条件的总记录数,还可以通过 count(数字/字符串)的形式进行统计
查询,比如:select count(1) from emp;B. 统计该企业员工的平均年龄
select avg(age) from emp;C. 统计该企业员工的最大年龄
select max(age) from emp;D. 统计该企业员工的最小年龄
select min(age) from emp;E. 统计西安地区员工的年龄之和
select sum(age) from emp where workaddress = '西安';
3.5 分组查询
1). 语法
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ];
2). where与having区别
执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
判断条件不同:where不能对聚合函数进行判断,而having可以。
注意事项:
• 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
• 执行顺序: where > 聚合函数 > having 。
• 支持多字段分组, 具体语法为 : group by columnA,columnB
3)案例
A. 根据性别分组 , 统计男性员工 和 女性员工的数量
select gender, count(*) from emp group by gender ;B. 根据性别分组 , 统计男性员工 和 女性员工的平均年龄
select gender, avg(age) from emp group by gender ;C. 查询年龄小于45的员工 , 并根据工作地址分组 , 获取员工数量大于等于3的工作地址
select workaddress, count(*) address_count from emp where age < 45 group by
workaddress having address_count >= 3; --分组之后在,在过滤大于等于3的工作地址D. 统计各个工作地址上班的男性及女性员工的数量
select workaddress, gender, count(*) '数量' from emp group by gender , workaddress ;
3.6 排序查询
1). 语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;
2). 排序方式
ASC : 升序(默认值)DESC: 降序注意事项:• 如果是升序, 可以不指定排序方式ASC ;• 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ;
3)案例
A. 根据年龄对公司的员工进行升序排序select * from emp order by age asc;
select * from emp order by age;B. 根据入职时间, 对员工进行降序排序select * from emp order by entrydate desc;C. 根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序select * from emp order by age asc , entrydate desc;
3.7分页查询
分页操作在业务系统开发时,也是非常常见的一个功能,我们在网站中看到的各种各样的分页条,后台 都需要借助于数据库的分页操作。
1). 语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;注意事项:• 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。• 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。• 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。
2)案例
A. 查询第1页员工数据, 每页展示10条记录select * from emp limit 0,10;
select * from emp limit 10;B. 查询第2页员工数据, 每页展示10条记录 --------> (页码-1)*页展示记录数
select * from emp limit 10,10;
4.DCL
DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访 问权限。
4.1 管理用户
1)基本语法
1). 查询用户
select * from mysql.user;2). 创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';3). 修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ;4). 删除用户
DROP USER '用户名'@'主机名' ; 注意事项:• 在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。• 主机名可以使用 % 通配。• 这类SQL开发人员操作的比较少,主要是DBA( Database Administrator 数据库
管理员)使用。
2)案例
A. 创建用户itcast, 只能够在当前主机localhost访问, 密码123456;
create user 'itcast'@'localhost' identified by '123456';B. 创建用户heima, 可以在任意主机访问该数据库, 密码123456;
create user 'heima'@'%' identified by '123456';C. 修改用户heima的访问密码为1234;
alter user 'heima'@'%' identified with mysql_native_password by '1234';D. 删除 itcast@localhost 用户
drop user 'itcast'@'localhost';
4.2 权限控制
1)常见权限
MySQL中定义了很多种权限,但是常用的就以下几种:
2)基本语法
1). 查询权限
SHOW GRANTS FOR '用户名'@'主机名' ;2). 授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';3). 撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';注意事项:
• 多个权限之间,使用逗号分隔
• 授权时, 数据库名和表名可以使用 * 进行通配,代表所有。
3)案例
A. 查询 'heima'@'%' 用户的权限
show grants for 'heima'@'%';B. 授予 'heima'@'%' 用户itcast数据库所有表的所有操作权限
grant all on itcast.* to 'heima'@'%';C. 撤销 'heima'@'%' 用户的itcast数据库的所有权限
revoke all on itcast.* from 'heima'@'%';
相关文章:
MySQL的基础语法1(增删改查、DDL、DML、DQL和DCL)
目录 一、基本介绍 二、SQL通用语法 三、SQL分类(DDL、DML、DQL、DCL) 1.DDL 1.1数据库操作 1.2表操作 1.2.1表操作-查询创建 1.2.2表操作-数据类型 1)数值类型 2)字符串类型 3)日期时间类型编辑 4)表操作-案例 1.2.3…...
基于 SpringBoot 的火车订票管理系统
收藏关注不迷路!! 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题),项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多…...
c#的反射和特性
在 C# 中,反射(Reflection)和特性(Attributes)是两个强大的功能,它们在运行时提供元编程能力,广泛用于框架开发、对象映射和动态行为扩展。以下是对它们的详细介绍,包括定义、用法、…...
MaxEnt物种分布建模全流程;R+ArcGIS+MaxEnt模型物种分布模拟、参数优化方法、结果分析制图与论文写作
融合R语言的MaxEnt模型具有以下具体优势: 数据处理高效便捷 📊强大的数据预处理功能:R语言提供了丰富的数据处理工具,能够轻松完成数据清洗、筛选、转换等操作,为MaxEnt模型提供高质量的输入数据。 🌐自动…...
【AI插件开发】Notepad++插件开发实践:从基础交互到ScintillaCall集成
一、背景与目标 在文本编辑器领域,Notepad凭借其轻量级特性和强大的插件生态,成为开发者群体中的热门选择。作为基于Scintilla组件构建的编辑器(Scintilla是开源的代码编辑控件,被Notepad、Geany等知名工具广泛采用)&…...
TCP/IP协议的应用层与传输层
TCP/IP协议簇是互联网的核心通信框架,定义了数据如何在网络中封装、寻址、传输和路由(确定数据包从源主机到目标主机的传输路径的过程)。 应用层 直接面向用户和应用,负责实现网络服务的具体功能(如网页浏览、文件传输…...
CentOS与Ubuntu命令对比指南:从软件包管理到系统配置
CentOS与Ubuntu命令对比指南 作为两大主流Linux发行版,**CentOS(基于RHEL)和Ubuntu(基于Debian)**在日常运维中常因命令差异引发混淆。本文通过关键场景对比,助您快速掌握两者的核心操作区别。 一、软件包管理:yum/dnf vs apt 操作CentOSUbuntu更新软件源yum check-upd…...
python-leetcode 61.N皇后
题目: 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击 给你一个整数 n ,返回所有不同的 n 皇后问题 的解…...
Scala 正则表达式
Scala 正则表达式 引言 正则表达式(Regular Expression)是一种强大的文本处理工具,在Scala编程语言中也有着广泛的应用。Scala正则表达式可以帮助开发者高效地进行字符串匹配、搜索、替换和解析等操作。本文将深入探讨Scala正则表达式的相关知识,包括语法、常用模式、匹配…...
【分布式】分布式限流方案解析
文章目录 固定窗口限流方案实现方式优点缺点 滑动窗口限流方案实现方式优点缺点 令牌桶限流方案实现方式优点缺点 漏斗限流方案实现方式优点缺点 在分布式系统蓬勃发展的当下,系统面临的流量挑战日益复杂。为确保系统在高并发场景下…...
Docker 拉取镜像部分成功部分失败?
🐋 Docker 拉取镜像部分成功部分失败?一次代理配置踩坑记录! 最近在部署 Zitadel 身份认证平台的过程中,遇到一个看似“随机”的问题:Docker 有些镜像可以拉取,有些却一直超时失败。最终通过配置 Docker 守…...
Spring AI Alibaba 对话记忆使用
一、对话记忆 (ChatMemory)简介 1、对话记忆介绍 ”大模型的对话记忆”这一概念,根植于人工智能与自然语言处理领域,特别是针对具有深度学习能力的大型语言模型而言,它指的是模型在与用户进行交互式对话过程中,能够追踪、理解并利…...
Mysql从入门到精通day5————子查询精讲
本文主要讲述子查询的几种方法,读者注意体会它们的不同场合的适用情况及功能,本篇文章也融入了小编实践过程遇到的坑,希望读者不要再踩坑 一.带IN关键字的子查询 in关键字可以检测结果集中是否存在某个特定的值,检测成功则执行外…...
QScreen 捕获屏幕(截图)
一、QScreen核心能力解析 硬件信息获取 // 获取主屏幕对象 QScreen* primaryScreen QGuiApplication::primaryScreen();// 输出屏幕参数 qDebug() << "分辨率:" << primaryScreen->size(); qDebug() << "物理尺寸:" << primar…...
Skyeye 云智能制造办公系统 VUE 版本 v3.15.15 发布
Skyeye 云智能制造,采用 Springboot winUI 的低代码平台、移动端采用 UNI-APP。包含 30 多个应用模块、50 多种电子流程,CRM、PM、ERP、MES、ADM、EHR、笔记、知识库、项目、门店、商城、财务、多班次考勤、薪资、招聘、云售后、论坛、公告、问卷、报表…...
【最新】探索CFD的未来:从OpenFOAM到深度学习,全面解析计算流体力学的顶级资源与前沿技术
计算流体力学(CFD)作为现代工程与科学研究的核心工具,正以前所未有的速度迈向智能化与多物理场耦合的新时代。本文全面梳理了在线学习CFD的顶级资源,涵盖了从传统数值模拟到深度学习驱动的物理信息模型的广泛领域,旨在为研究者、工程师和学生提供一站式参考指南。内容分为…...
【QT5 网络编程示例】TCP 通信
文章目录 TCP 通信 TCP 通信 QT主要通过QTcpSocket 和 QTcpServer两个类实现服务器和客户端的TCP 通信。 QTcpSocket 是 Qt 提供的套接字类,看用于建立、管理和操作 TCP 连接。 常用方法 connectToHost(host, port):连接到指定服务器。disconnectFro…...
QT五 文件系统,QFile,QfileInfo
总览 QIODevice:所有 I/O 设备类的父类,提供了字节块读写的通用操作以及基本接口;QFileDevice:Qt5新增加的类,提供了有关文件操作的通用实现。QFlie:访问本地文件或者嵌入资源;QTemporaryFile&a…...
OpenMCU(五):STM32F103时钟树初始化分析
概述 本文主要描述了STM32F103初始化过程系统时钟的初始化,主要描述了系统时钟的初始化,AHB总线时钟,APB总线时钟等的初始化。 硬件板卡3d图 时钟树 STM32F103的时钟树,如下所示: 时钟源选择 从STM32F103的时钟树框图,我们可以…...
docker save如何迁移镜像更节省空间?
文章目录 方法一:使用docker save命令方法二:直接保存多个镜像到一个tar文件哪个方法更节省磁盘空间?空间效率对比实际测试示例其他优势结论 如何用脚本迁移加载镜像 迁移镜像时候,往往会碰到基础镜像相同的很多镜像需要迁移&…...
在 UniApp 编译小程序时出现 `:class` 不支持 `getStatusClass(device.deviceStatus)` 语法的报错
在 UniApp 编译小程序时出现 :class 不支持 getStatusClass(device.deviceStatus) 语法的报错,这是因为在非 H5 平台,v-bind:class(:class 是其简写形式)里直接使用方法调用这种动态计算类名的方式可能不被支持。下面为你提供几种…...
Python之贪心算法
Python实现贪心算法(Greedy Algorithm) 概念 贪心算法是一种在每一步选择中都采取当前状态下最优的选择,从而希望导致结果是全局最优的算法策略。 基本特点 局部最优选择:每一步都做出当前看起来最佳的选择不可回退:一旦做出选择…...
Javaweb后端AOP记录操作日志
日志记录表 提示词 切入点表达式,注解的方法 查询不用加上日志记录功能...
obsidian ios git同步
首先感谢几位博主的文章,我现在时间久了,未保存原文地址。以下是我自己的执行步骤总结。 应用商店安装 iSH 打开iSH,执行 apk update 安装下面软件,(我觉得只安装第一个应该就行,下次测试)。 …...
我的机器学习学习之路
学习python的初衷 • hi,今天给朋友们分享一下我是怎么从0基础开始学习机器学习的。 • 我是2023年9月开始下定决心要学python的,目的有两个,一是为了提升自己的技能和价值,二是将所学的知识应用到工作中去,提升工作…...
Python的ASGI Web 服务器之uvicorn
文章目录 什么是uvicornUvicorn 和 uWSGI 对比区别安装 Uvicorn使用示例 什么是uvicorn 官网https://www.uvicorn.org/ Uvicorn 是一个用于 Python 的 ASGI Web 服务器实现。 Until recently Python has lacked a minimal low-level server/application interface for async…...
Spring Boot分布式项目实战:装饰模式的正确打开方式
我在最近参与的物流中台项目中,面对复杂的分布式服务调用场景时,发现装饰模式(Decorator Pattern)竟成为提升系统扩展性的秘密武器。当某个基础服务接口需要同时支持缓存、日志、限流等多种能力时,传统的继承方式已难以…...
基于WebSocket的金融数据实时推送系统架构设计对接多国金融数据API
基于WebSocket的金融数据实时推送系统架构设计 ——高可用、低延迟与全球化数据支持的技术实践 一、实时数据推送的技术演进 在证券交易、外汇监控、量化策略等场景中,毫秒级延迟可能带来完全不同的业务结果。早期基于HTTP轮询的方案存在三大核心问题:…...
Java虚拟机JVM知识点(已完结)
JVM内存模型 介绍下内存模型 根据JDK8的规范,我们的JVM内存模型可以拆分为:程序计数器、Java虚拟机栈、堆、元空间、本地方法栈,还有一部分叫直接内存,属于操作系统的本地内存,也是可以直接操作的。 详细解释一下 程…...
ffuf:一款高效灵活的Web模糊测试利器
在网络安全领域,模糊测试(Fuzzing)是一种强大的技术,用于发现系统中的隐藏功能、潜在漏洞或未公开资源。而在Web渗透测试中,ffuf(Fast Fuzzing Tool)凭借其高效性、灵活性和强大的自定义能力&am…...
深入理解二叉树、B树与B+树:原理、应用与实现
文章目录 引言一、二叉树:基础而强大的结构基本概念特性分析Java实现应用场景 二、B树:适合外存的多路平衡树基本概念关键特性查询流程示例Java简化实现典型应用 三、B树:数据库索引的首选核心改进优势分析范围查询示例Java简化实现实际应用 …...
NLP高频面试题(二十八)——Reward model是如何训练的,怎么训练一个比较好的Reward model
在强化学习领域,**奖励模型(Reward Model)是关键组件之一,旨在通过预测特定行为或输出的奖励值,指导智能体的学习方向。特别是在基于人类反馈的强化学习(RLHF)**中,奖励模型通过整合…...
基础算法篇(3)(蓝桥杯常考点)-图论
前言 这期是蓝桥杯常考点的最后一章了,其中的dijkstra算法更是蓝桥杯中的高频考点 图的基本相关概念 有向图和无向图 自环和重边 稠密图和稀疏图 对于不带权的图,一条路径的路径长度是指该路径上各边权值的总和 对于带权的图,一条路径长度时…...
【力扣hot100题】(017)矩阵置零
还是挺简单的,使用哈希表记录需要置换的行列即可,这样就可以避免重复节省时间。 class Solution { public:void setZeroes(vector<vector<int>>& matrix) {unordered_set<int> row;unordered_set<int> line;for(int i0;i&l…...
量子退火与机器学习(2):少量实验即可找到新材料,黑盒优化➕量子退火
使用量子退火和因子分解机设计新材料 这篇文章是东京大学的一位博士生的毕业论文中的主要贡献。 结合了黑盒优化和量子退火,是融合的非常好的一篇文章,在此分享给大家。 https://journals.aps.org/prresearch/abstract/10.1103/PhysRevResearch.2.0133…...
Ubuntu 系统上完全卸载 CasaOS
以下是在 Ubuntu 系统上完全卸载 CasaOS 的详细步骤 一.卸载验证 二.卸载步骤 1.停止并禁用 CasaOS 服务 # 停止 CasaOS 核心服务 sudo systemctl stop casaos.service# 禁用开机自启 sudo systemctl disable casaos.service# 确认服务状态(应显示 inactive&…...
Flutter敏感词过滤实战:基于AC自动机的高效解决方案
Flutter敏感词过滤实战:基于AC自动机的高效解决方案 在社交、直播、论坛等UGC场景中,敏感词过滤是保障平台安全的关键防线。本文将深入解析基于AC自动机的Flutter敏感词过滤实现方案,通过原理剖析实战代码性能对比,带你打造毫秒级…...
Java Spring Boot 与前端结合打造图书管理系统:技术剖析与实现
目录 运行展示引言系统整体架构后端技术实现后端代码文件前端代码文件1. 项目启动与配置2. 实体类设计3. 控制器设计4. 异常处理 前端技术实现1. 页面布局与样式2. 交互逻辑 系统功能亮点1. 分页功能2. 搜索与筛选功能3. 图书操作功能 总结 运行展示 引言 本文将详细剖析一个基…...
高精度加减乘除 + R 格式
蓝桥账户中心 高精度核心思路:使用vector存储每一位数,倒序存储,即数组从低到高存储的是个位数。 注意减法、乘法、除法都需要去掉前导零 加法: vector<int> add(vector<int> &A, vector<int> &B) …...
鸿蒙编译构建-多目标产物
此文章内容兼容API12,使用harmony next应用开发 前置概念介绍 1,配置文件介绍: build-profile.json5:modules字段,用于记录工程下的模块信息,主要包含模块名称、模块的源码路径以及模块的 target 信息oh-…...
从零开始:Windows 系统中 PowerShell 配置 FFmpeg 的详细步骤
在Windows系统中不想每次都 cd 到FFmpeg目录中应用,现在可以通过PowerShell在任意目录下应用了。 PowerShell 基础概念 跨平台脚本工具 PowerShell 是微软开发的命令行外壳和脚本语言,支持 Windows、Linux 和 macOS 系统。其核心优势在于面向对象的操作…...
Spring Boot 支持哪些日志框架?推荐和默认的日志框架是哪个?
Spring Boot 支持多种日志框架,以下是详细介绍: 支持的日志框架 Logback Logback 是 Log4j 创始人设计的另一个开源日志组件,作为 Log4j 的改良版本,它具有更快的执行速度、更丰富的配置选项以及更好的性能。Logback 分为三个模块…...
【STM32单片机】#4 OLED调试外部中断
主要参考学习资料: B站江协科技 STM32入门教程-2023版 细致讲解 中文字幕 开发资料下载链接:https://pan.baidu.com/s/1h_UjuQKDX9IpP-U1Effbsw?pwddspb 单片机套装:STM32F103C8T6开发板单片机C6T6核心板 实验板最小系统板套件科协 实验&…...
[7-02-02].第15节:生产经验 - 消费者相关操作
Kafka笔记大纲 五、生产经验——分区的分配以及再平衡: 4.1.生产经验——分区的分配以及再平衡 4.2.参数: 5.4.1 Range 以及再平衡...
cmd命令查看电脑的CPU、内存、存储量
目录 获取计算机硬件的相关信息的命令分别的功能结果展示结果说明获取计算机硬件的相关信息的命令 wmic cpu get name wmic memorychip get capacity wmic diskdrive get model,size,mediaType分别的功能 获取计算机中央处理器(CPU)的名称 获取计算机内存(RAM)芯片的容量…...
# OpenCV实现人脸与微笑检测:从图像到视频的实战应用
OpenCV实现人脸与微笑检测:从图像到视频的实战应用 在计算机视觉领域,人脸检测和微笑检测是两个非常有趣且实用的任务。它们广泛应用于智能监控、社交媒体分析、人机交互等多个场景。本文将通过两个代码示例,详细介绍如何使用OpenCV实现人脸…...
k8s EmptyDir(空目录)详解
1. 定义与特性 emptyDir 是 Kubernetes 中一种临时存储卷类型,其生命周期与 Pod 完全绑定。当 Pod 被创建时,emptyDir 会在节点上生成一个空目录;当 Pod 被删除时,该目录及其数据会被永久清除。它主要用于同一 Pod 内多个容器间的…...
学习笔记—数据结构—二叉树(链式)
目录 二叉树(链式) 概念 结构 初始化 遍历 前序遍历 中序遍历 后序遍历 层序遍历 结点个数 叶子结点个数 第k层结点个数 深度/高度 查找值为x的结点 销毁 判断是否为完整二叉树 总结 头文件Tree.h Tree.c 测试文件test.c 补充文件Qu…...
STM32单片机的桌面宠物机器人(基于HAL库)
效果 基于STM32单片机的桌面宠物机器人 概要 语音模块:ASR PRO,通过天问block软件烧录语音指令 主控芯片:STM32F103C8T6 使用HAL库 屏幕:0.96寸OLED屏,用来显示表情 4个舵机,用来当作四只腿 底部一个面…...
ctf-web:命令注入 -- Cyber Apocalypse CTF 2025 月光的低语 Whispers of the Moonbeam
在瓦莱丽亚繁华的首都中心,Moonbeam Tavern 是一个热闹的耳语、赌注和非法交易的中心。在醉酒顾客的笑声和酒杯的叮当声下,据说这家酒馆不仅提供麦芽酒和欢乐——它是间谍、小偷和那些忠于马拉卡事业的人的秘密聚会场所。 护卫队了解到,在月光…...