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…...
Oracle数据库数据编程SQL<3.3 PL/SQL 游标>
游标(Cursor)是Oracle数据库中用于处理查询结果集的重要机制,它允许开发者逐行处理SQL语句返回的数据。 目录 一、游标基本概念 1. 游标定义 2. 游标分类 二、静态游标 (一)显式游标 【一】不带参数,普通的显示游标 1. 显式…...
畅享电脑流畅运行:深度卸载、智能监视与空间释放
软件介绍 在数字化办公与娱乐高度融合的当下,电脑承载着我们诸多重要任务,然而,随着软件的频繁安装与卸载,系统逐渐被各种顽固软件及其残留 “拖垮”,运行速度变慢、磁盘空间告急等问题接踵而至。别愁,今天…...
R --- Error in library(***) : there is no package called ‘***’ (服务器非root用户)
步骤 步骤一:在自己目录下创建R包安装路径步骤二:配置用户本地的R库路径步骤三:安装缺失的包(在终端)步骤四:验证安装 步骤一:在自己目录下创建R包安装路径 mkdir -p ~/R_libs步骤二࿱…...
Visual Studio Code 无法打开源文件解决方法
🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 🔥 系列专栏:C从入门到精通 目录 一:🔥 突发状况 二:🔥 共勉 一:🔥 突发状况 🐬…...
核函数(机器学习深度学习)
一、核函数的基本概念 核函数(Kernel Function) 是机器学习中处理非线性问题的核心工具,通过隐式映射将数据从原始空间转换到高维特征空间,从而在高维空间中实现线性可分或线性建模。其数学本质是计算两个样本在高维空间中的内积…...
【工具】BioPred一个用于精准医疗中生物标志物分析的 R 软件包
介绍 R 语言包 BioPred 提供了一系列用于精准医疗中的亚组分析和生物标志物分析的工具。它借助极端梯度提升(XGBoost)算法,并结合倾向得分加权和 A 学习方法,帮助优化个体化治疗规则,从而简化亚组识别过程。BioPred 还…...
【银河麒麟系统常识】命令:dotnet --list-sdks(列出已安装的 .NET SDK 版本)
命令: dotnet --list-sdks 功能 列出当前系统中所有已安装的 .NET SDK 版本; 返回值规则 # 1. 格式:<版本号>[<安装路径>]; # 2. 排序:按版本号从低到高排序;示例...
【深度学习】不管理论,入门从手写数字识别开始
1. 环境安装 学习深度学习,开发语言是Python。Python开发工具有很多。其中 anaconda vscode的Python开发环境很好用,建议使用这个组合。 编写手写数字识别测试代码,需要在使用Anaconda安装以下4个库: NumpyScipymatplotlibsci…...
3.使用epoll实现单线程并发服务器
目录 1. epoll的概述 2. 多线程与epoll的处理流程 2.1 多线程处理流程 2.2 epoll处理流程 3. epoll与多线程的比较 4. epoll的操作函数 4.1 epoll_create() 4.2 epoll_ctl() 4.3 epoll_wait() 5. 示例代码 6. epoll的工作模式 7. 使用O_NONBLOCK防止阻塞 8.运行代…...
关于JVM和OS中的栈帧的区别和内存浅析
关于JVM和OS中的栈帧的区别和内存浅析 刚看了黑马JVM中的栈帧的讲解,感觉和自己理解的栈帧有一定出入,查询资料研究了一下发现的确有天壤之别,可惜黑马并没有讲。 故写下这篇文章巩固一下, OS的栈帧: OS的栈帧会在调用一个函…...
拥抱健康生活,开启养生之旅
在快节奏的现代生活中,健康养生愈发重要。它不仅能让我们拥有强健体魄,还能提升生活质量。 均衡饮食是养生的基石。多吃蔬菜和水果,它们富含维生素与膳食纤维。比如西兰花,堪称 “蔬菜皇冠”,不仅含有丰富的维生素 …...
测试用例管理工具
一、免费/开源工具 TestLink 适用场景:传统手工测试团队,需基础用例管理与测试计划跟踪。 关键功能:用例分层管理、执行结果记录、基础报告生成。 局限:界面陈旧,自动化集成需插件支持。 Kiwi TCMS 适用场景࿱…...
visual studio 2017配置QT5.9.4环境
前提是已经安装完毕vs 2017以及QT5.9.4,然后再进行下列的操作 一 环境配置 修改成如下所示,然后关闭vs 打开浏览器,搜索网站download.qt.io 如果2.4.1版本出现问题,可以换版本,如2.3.1,2.7.1都比较稳定 …...
基于EFISH-SBC-RK3576的无人机智能飞控与数据存储方案
一、方案背景 民用无人机在电力巡检、农业植保、应急救援等领域快速普及,但传统方案面临多协议设备兼容性差、野外环境数据易丢失、复杂电磁干扰三大痛点。 电鱼智能推出EFISH-SBC-RK3576,可集成双冗余总线接口与工业级加固存储&#x…...
c++的特性——多态
目录 概念 多态实现条件 虚函数 虚函数的重写/覆盖 练习题 析构函数的重写 override和final关键字 重载/隐藏/重载的区别 纯虚函数和抽象类 多态 虚函数表指针 多态的原理 动态绑定与静态绑定 虚函数表总结 前面学习了C的三个特性中的两个特性,今天我们…...
MySQL基础语法DDLDML
目录 #1.创建和删除数据库 #2.如果有lyt就删除,没有则创建一个新的lyt #3.切换到lyt数据库下 #4.创建数据表并设置列及其属性,name是关键词要用name包围 编辑 #5.删除数据表 #5.查看创建的student表 #6.向student表中添加数据,数据要与列名一一对应 #7.查询studen…...
性能测试理论基础-性能指标及jmeter中的指标
1、什么是性能测试 通过一定的手段,在多并发下情况下,获取被测系统的各项性能指标,验证被测系统在高并发下的处理能力、响应能力,稳定性等,能否满足预期。定位性能瓶颈,排查性能隐患,保障系统的质量,提升用户体验。 2、什么样的系统需要做性能测试 用户量大,页面访问…...
Postman CORS 测试完全指南:轻松模拟跨域请求,排查 CORS 相关问题
在使用 Postman 进行 API 测试时,通常不会遇到跨域问题,因为 Postman 是一个独立的客户端应用程序,不同于在浏览器中运行的 JavaScript 代码,它没有同源策略(SOP)的限制。跨域资源共享(CORS&…...
iOS抓包-charles和Stream
简单介绍几种抓包工具 1、Charles Charles是一款流行的跨平台HTTP代理软件,常用于Web调试,它可以帮助你在开发过程中检查、修改或模拟HTTP/HTTPS请求和响应。以下是如何在iOS设备上使用Charles进行抓包的基本步骤: 第一步:安装…...
三个核心文件:src\App.vue文件,index.html文件,src\main.js文件 的关系与运行流程解析(通俗形象)
一、三个文件的角色定位 用生活比喻理解它们的关系: index.html → “空房子” 像一栋毛坯房,只有基本的墙面和预留的插座(空白的HTML结构)。它的作用是提供一个容器,告诉Vue:“请把装修好的房间…...
云原生系列-K8S实战
K8S实战 1. K8S 资源创建方式2. NameSpace 资源创建3. Pod4. Deployment5. Service6. Ingress7. 存储抽象1. 环境准备2. PV&PVC1) 创建PV池2) PVC创建与绑定 3. ConfigMap 抽取应用配置,并且可以自动更新1) redis 示例2) 创建…...
从责任链模式聊到aware接口
从责任链模式聊到aware接口 责任链是什么? 责任链模式是一种行为型设计模式,将多个对象连接成一条链,并且沿着这条链传递请求,让多个对象都有机会处理这个请求,请求会顺着链传递,直到某个对象处理它为止。…...
ArcGIS地理信息系统空间分析实验教程学习
ArcGIS 作为地理信息系统领域的经典软件,以其强大的功能和广泛的应用场景,成为了众多学者、研究人员和专业人士的首选工具。它不仅可以高效地处理和可视化地理空间数据,还能通过复杂的空间分析模型,揭示地理现象背后的规律和趋势。…...
【3天!!!从0-1完成自动化集成平台开发--Cursor AI赋能0代码基础测试工程师开发平台-亲测有效-保姆级】
利用Cursor AI 赋能测试工程师从0-1开发自动化集成平台 ——含框架设计、实例代码与CI/CD集成 一、技术选型与框架设计1.1 核心框架选择1.2 整体架构图二、从0到1开发步骤2.1 初始化项目2.2 核心模块开发模块1:测试用例管理(Python)模块2:测试执行引擎(pytest)三、实战案…...
Compose 实践与探索十七 —— 多指手势与自定义触摸反馈
上一节我们讲了滑动的手势识别以及嵌套滑动,二者都属于触摸反馈这个大的范畴内的知识。本节我们将深入触摸反馈这个话题,讲一讲多指手势的识别与完全自定义的触摸反馈的实现。 1、多指手势 多指手势可以分为两类: 利用 API 处理预设好的手…...
Spring Boot 整合 ElasticJob 分布式任务调度教程
精心整理了最新的面试资料和简历模板,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 Spring Boot 整合 ElasticJob 分布式任务调度教程 一、ElasticJob 简介 ElasticJob 是当当网开源的分布式任务调度解决方案,支持: …...
Go 语言规范学习(6)
文章目录 StatementsTerminating statementsEmpty statementsLabeled statementsExpression statementsSend statementsIncDec statementsAssignment statementsIf statementsSwitch statementsExpression switchesType switches For statementsFor statements with single con…...
centos8上实现lvs集群负载均衡nat模式
1.背景: 个人(菜鸟)学习笔记,学点记下来,给未来的自己看。高手看了也请多指点。 按照课程讲,lvs是我国大神开发的负载均衡程序,被收录进内核,只要安装时内核里有它,它就…...
深度学习篇---模型参数调优
文章目录 前言一、Adam学习(lr)1. 默认学习率2. 较小的学习率模型复杂数据集规模小 3. 较大的学习率模型简单训练初期 4. 学习率衰减策略固定步长衰减指数衰减 二、训练轮数(epoch)1. 经验值设定小数据集与简单模型大数据集和复杂…...
