Mysql -- 基础
SQL
SQL通用语法:
SQL分类:
DDL:
数据库操作
查询:
SHOW DATABASES;
创建:
CREATE DATABASE[IF NOT EXISTS] 数据库名 [DEFAULT CHARSET字符集] [COLLATE 排序规则];
删除:
DROP DATABASE [IF EXISTS] 数据库名;
使用:
USE 数据库名;
DDL - 表操作 - 查询:
查询当前数据库所有表
SHOW TABLES;
查询表结构:
DESC 表名
查询指定表的建表语句:
SHOW CREATE TABLE 表名;
DDL - 表操作 - 创建:
DDL - 表操作 - 数据类型
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 '员工表';
DDL - 表操作 - 修改
添加字段:
ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMENT 注释][约束];
修改数据类型:
ALTER TABLE MODIFY 字段名 新数据类型(长度)
修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释]
删除字段:
ALTER 表名 DROP 字段名;
修改表名:
ALTER TABLE 表名 RENAME TO 新表名;
DDL - 表操作 - 删除
删除表
DROP TABLE [IF EXISTS] 表名
删除指定表,并重新创建该表
TRUNCATE TABLE 表名;
相当于清空
DML:
DML - 添加数据
给指定字段添加数据
INSERT INTO 表名(字段1,字段2)VALUES(值1,值2);
给全部字段添加数据
INSERT INTO 表名 VALUES(值1,值2);
批量添加数据
INSERT INTO 表名(字段1,字段2) VALUES (值1,值2),(值1,值2),(值1,值2);
INSERT INTO 表名 VALUES(值1,值2),(值1,值2);
注:
- 插入数据时,指定的字段顺序需要与值的顺序是一一对应的
- 字符串和日期数据应该在包含在引号中
- 插入的数据应该在范围内
DML - 修改数据
UPDATE 表名 SET 字段名1 = 值1,字段名2 = 值2,[WHERE ...]
注:修改语句的条件可以有,也可以没有,如果么有条件,则会修改整张表的所有数据。
DML - 删除数据
DELETE FROM 表名 [WHERE 条件];
DQL:
语法:
DQL - 基本查询:
查询多个字段
SELECT 字段1,字段2,字段3 ... FROM 表名;
SELECT * FROM 表名
设置别名
SELECT 字段1 [AS 别名1],字段2 [AS 别名2]... FROM 表名;
去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
DQL - 条件查询:
语法:
SELECT 字段列表 FROM 表名 WHERE 条件列表;
-- --------------------------------------------------- > 查询需求 <------------------------------------------------ 基本查询
-- 1. 查询指定字段 name workno age 返回
select name,workno,age from emp;-- 2. 查询所有字段返回
select * from emp;-- 3. 查询所有员工的工作地址,起别名
select workaddress as '工作地址' from emp;-- 4. 查询公司员工的上班地址(不重复)
select distinct workaddress '工作地址' from emp;-- 条件查询
-- A. 查询年龄等于 88 的员工
select * from emp where age = 88;-- B. 查询年龄小于 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;-- 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; -- between 跟最小值-- H. 查询性别为 女 且年龄小于 25岁的员工信息
select * from emp where gender = '女' and age <25;-- I. 查询年龄等于18 或 20 或 40 的员工信息
select * from emp where age = 18 || age = 20 || 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';
聚合函数:
分组查询:
排序查询:
分页查询:
DQL -聚合函数:
常见聚合函数
语法:
SELECT 聚合函数(字段列表) FROM 表名;
注:null值不参与所有聚合函数的运算
-- ------------------------------------> 聚合函数--
-- A. 统计该企业员工数量
select count(*) from emp;
select count(idcard) 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 = '西安';
DQL -分组函数:
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
where 和 having区别
- 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
- 判断条件不同:where不能对聚合函数进行判断,而having可以
-- 分组查询
-- 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;
-- D. 统计各个工作地址上班的男性及女性员工的数量
select workaddress,gender,count(*) '数量' from emp group by gender, workaddress;
- 执行顺序:where > 聚合函数 > having
- 分组之后,查询字段一般为聚合函数和分组字段,查询其他字段无任何意义。
DQL -排序查询:
语法:
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;
排序方式:
- ASC :升序
- DESC:降序
-- 排序查询
-- A.根据年龄对公司的员工进行升序排序
select * from emp order by age asc;
select * from emp order by age desc ;
-- B. 根据入职时间, 对员工进行降序排序
select * from emp order by entrydate desc;
-- C. 根据年龄对公司的员工进行升序排序 , 年龄相同 , 再按照入职时间进行降序排序
select * from emp order by age asc, entrydate desc;
注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
DQL -分页查询:
语法:
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
-- 分页查询
-- A. 查询第1页员工数据, 每页展示10条记录
select * from emp limit 10;
-- B. 查询第2页员工数据, 每页展示10条记录 --------> (页码-1)*页展示记录数
select * from emp limit 10,10;
练习:
-- 2.6.8 案例
-- 1). 查询年龄为20,21,22,23岁的员工信息。
select * from emp where gender = '女' and age in(20,21,22,23);-- 2). 查询性别为 男 ,并且年龄在 20-40 岁(含)以内的姓名为三个字的员工。
select * from emp where gender = '男' and (age between 20 and 40) and name like '___';-- 3). 统计员工表中, 年龄小于60岁的 , 男性员工和女性员工的人数。
select gender,count(*) from emp where age < 60 group by gender;-- 4). 查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按年龄升序排序,如果年龄相同按入职时间降序排序。
select name '姓名',age '年龄' from emp where age <= 35 order by age asc,entrydate desc ;-- 5). 查询性别为男,且年龄在20-40 岁(含)以内的前5个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。
select * from emp where gender = '男' and (age between 20 and 40) order by age asc,entrydate desc limit 5;
DQL -执行顺序:
DCL:
DCL - 管理用户:
1) 查询用户
select * from mysql.user; 1
2). 创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码'; 1
3). 修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码' ; 1
4). 删除用户
DROP USER '用户名'@'主机名' ;
注意事项:
• 在MySQL中需要通过用户名@主机名的方式,来唯一标识一个用户。
DCL- 权限控制
函数
字符串函数
-- ---------------------------- 函数 ------------------------------- --
-- conccat
select concat('Hello','Mysql');-- lower
select lower('HEllo');-- upper
select upper('hello');-- Lpad
select lpad('01',5,'-');-- rpad
select rpad('01',5,'-');-- trim
select trim(' Hello MySql ');-- substring
select substring('Hello MySQL',1,5);update emp set workno = lpad(workno,5,'0');
数值函数
常见的数值函数如下:
-- 数值函数
-- ceil
select ceil(1.5);-- floor
select floor(1.1);-- mod
select mod(3,4);-- rand
select rand();-- round
select round(2.345,2);-- 生成六位随机验证码
select lpad(round(rand() * 1000000,0),6,'0') ;
日期函数
-- 日期函数
-- curdate
select curdate();
-- curtime
select curtime();
-- now
select now();-- Year,MONTH,DAY
select YEAR(NOW());
SELECT MONTH(NOW());
SELECT DAY(NOW());-- DATE_ADD
SELECT DATE_ADD(NOW(),INTERVAL 70 DAY );-- DATEDIFF(第一个时间减去第二个时间)
SELECT DATEDIFF('2021-12-01','2021-12-21');select name,datediff(curdate(),entrydate) as 'entrydays' from emp order by entrydays desc ;
流程函数
-- 流程控制函数
-- -- IF
select if(true,'ok','Error');
select if(false,'ok','Error');-- IFNULL
select ifnull('ok','default'); -- ok
select ifnull(null,'default'); -- default-- CASE
SELECTNAME,(CASE workaddress WHEN '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作地址'
FROM emp;
-- 案例
selectid,name,(case when math >=85 then '优秀' when math >=60 then '及格' else '不及格' end) '数学' ,(case when english >=85 then '优秀' when english >=60 then '及格' else '不及格' end) '英语' ,(case when chinese >=85 then '优秀' when chinese >=60 then '及格' else '不及格' end) '语文'from score;
约束
概述:
案例:
根据需求,完成表结构的创建
create table user (id int primary key auto_increment comment '主键',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 '性别'
) comment '用户表';-- 插入数据insert into user (name,age,status,gender) values ('程梦雨',19,'1','女'),('Messi',20,'1','男');
外键约束:
外键用来让两张表的数据之间建立连接,从而保证数据的一致性和完整性。
语法:
添加外键:
CREATE TABLE 表名 (字段名 数据类型,...[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENCES 主表 (主表列名)
);
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名) REFERENCE 主表(主表列名);
ALTER TABLE emp ADD CONSTRAINT fk_emp_dept_id FOREIGN KEY (dept_id) references dept(id);
删除外键:
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
-- 删除外键
ALTER TABLE emp DROP FOREIGN KEY fk_emp_dept_id;
删除/更新行为:
语法:
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCES 主表名 ON UPDATE CASCADE ON DELETE CASCADE;
-- 外键的删除和更新行为
ALTER TABLE emp ADD CONSTRAINT fk_emp_dept_id FOREIGN KEY (dept_id) REFERENCES dept(id) ON UPDATE CASCADE ON DELETE CASCADE ;ALTER TABLE emp ADD CONSTRAINT fk_emp_dept_id FOREIGN KEY (dept_id) REFERENCES dept(id) ON UPDATE SET NULL ON DELETE SET NULL ;
多表查询:
概述:指从多张表中查询数据
笛卡尔积:两个集合A和集合B的所有组合情况。(在多表查询时,需要消除无效的笛卡尔积)
-- 多表查询
select * from emp , dept where emp.dept_id = dept.id;
多表查询分类:
连接查询 - 内连接:
-- 内连接
-- 1.查询每一个员工的姓名及关联的部门的名称(隐式内连接实现)
select emp.name,dept.name from emp,dept where emp.dept_id = dept.id;-- 2. 查询每一个员工的姓名,及关联的部门的名称(显式内连接实现)
select emp.name , dept.name from emp inner join dept on emp.dept_id = dept.id;
连接查询 - 外连接:
-- 外连接
-- 1. 查询emp标的所有数据,和对应的部门信息(左外)
select emp.* ,d.name from emp left join dept d on d.id = emp.dept_id;-- 2. 查询dept表的所有数据,和相对应的员工信息(右外)
select d.* , emp.* from emp right join dept d on d.id = emp.dept_id;
连接查询 - 子连接:
-- 子链接
-- 1. 查询员工及其领导的名字
select e.name , b.name from emp e , emp b where e.managerid = b.id;-- 2. 查询员工及其领导的名字 ,如果没有领导,也要查询出来
select a.name '员工', b.name '领导' from emp a left join emp b on a.managerid = b.id;
联合查询:
-- union all , union
-- 1. 将薪资低于 5000 的员工,和年龄大于50岁的员工共查询出来
select * from emp where salary < 5000
union all
select * from emp where age > 50;select * from emp where salary < 5000
union
select * from emp where age > 50;
子查询:
标量子查询:(返回单个值)
-- 标量子查询
-- 1. 查询“销售部”的所有员工信息
select * from emp where dept_id = (select id from dept where name = '销售部');-- 2. 查询“房东白”入职之后的员工信息
select entrydate from emp where name = '方东白';select * from emp where entrydate > (select entrydate from emp where name = '方东白');
列子查询:(返回的结果是一列)
-- 列子查询
-- 1. 查询销售部和市场部的所有员工信息
select * from emp where dept_id in (select dept.id from dept where name = '市场部' or name = '销售部');-- 2. 查询比财务部所有人员工资都高的员工信息
select * from emp where salary > all (select salary from emp where dept_id = (select id from dept where name = '财务部'));-- 3. 查询比研发部其中任意一人工资高的员工信息
select salary from emp where dept_id = (select id from dept where name = '研发部');select * from emp where salary > any (select salary from emp where dept_id = (select id from dept where name = '研发部'));
行子查询:
-- 行子查询
-- 1. 查询与“张无忌”工资和直属领导相同的信息
select salary , managerid from emp where name = '张无忌';select * from emp where (salary,managerid) = (select salary , managerid from emp where name = '张无忌');
表子查询:(返回多行多列)
-- 表子查询
-- 1. 查询路杖客,宋远桥的职位和薪资相同的员工信息
select salary , job from emp where name = '鹿杖客' or name = '宋远桥';select * from emp where (job,salary) in (select job, salary from emp where name = '鹿杖客' or name = '宋远桥');-- 2.查询入职日期是2006-01-01之后的员工信息及其部门信息
select * from emp where entrydate > '2006-01-01';select e.* , d.* from (select * from emp where entrydate > '2006-01-01') e left join dept d on e.dept_id = d.id;
练习:
-- 1. 查询员工的姓名、年龄、职位、部门信息 (隐式内连接)
select e.name, e.age,e.job,d.name from emp e join dept d on d.id = e.dept_id;-- 2. 查询年龄小于30岁的员工的姓名、年龄、职位、部门信息(显式内连接)
select e.name,e.age,e.job,d.name from emp e join dept d on d.id = e.dept_id where e.age < 30;-- 3. 查询拥有员工的部门ID、部门名称
select distinct d.id,d.name from emp e,dept d where e.dept_id = d.id;-- 4. 查询所有年龄大于40岁的员工, 及其归属的部门名称; 如果员工没有分配部门, 也需要展示出来-- 外连接select e.*,d.name from emp e left join dept d on d.id = e.dept_id where e.age > 40;-- 5. 查询所有员工的工资等级-- 表:emp salgrade-- 连接条件:emp.salary >= salgrade.losal and emp.salary <= salgrade.hisalselect e.* ,s.grade from emp e ,salgrade s where e.salary >= s.losal and e.salary <= s.hisal;-- 6. 查询 "研发部" 所有员工的信息及 工资等级
select e.*, s.grade
from emp e,salgrade s
where e.dept_id = (select dept.id from dept where dept.name = '研发部')and (e.salary between s.losal and s.hisal);-- 7. 查询 "研发部" 员工的平均工资
select avg( e.salary) '平均工资' from emp e, dept d where e.dept_id = d.id and d.name = '研发部';-- 8. 查询工资比 "灭绝" 高的员工信息
select * from emp where salary > (select salary from emp where name = '灭绝');-- 9. 查询比平均薪资高的员工信息
select avg(salary) from emp;
select * from emp where salary > (select avg(salary) from emp);-- 10. 查询低于本部门平均工资的员工信息
select avg(e1.salary) from emp e1 where e1.dept_id = 1;select *,(select avg(e1.salary) from emp e1 where e1.dept_id = e2.dept_id) '平均工资' from emp e2 where e2.salary < (select avg(e1.salary) from emp e1 where e1.dept_id = e2.dept_id);-- 11. 查询所有的部门信息, 并统计部门的员工人数
select d.id ,d.name, (select count(*) from emp e where e.dept_id = d.id) '人数' from dept d;select count(*) from emp where dept_id = 1;-- 12. 查询所有学生的选课情况, 展示出学生名称, 学号, 课程名称
总结:
事务:
事务简介:
select @@autocommit;set @@autocommit = 0; -- 设置手动提交
-- 转账操作
-- 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;
-- ---------------- 方式二 ----------------
begin ;
-- 转账操作
-- 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 ;
事务的四大特性:
并发事务问题:
并发事务的隔离级别:
orcal的默认是 Read committted
事务隔离级别越高,数据效率越低
总结:
相关文章:
Mysql -- 基础
SQL SQL通用语法: SQL分类: DDL: 数据库操作 查询: SHOW DATABASES; 创建: CREATE DATABASE[IF NOT EXISTS] 数据库名 [DEFAULT CHARSET字符集] [COLLATE 排序规则]; 删除: DROP DATABA…...
《AI大模型应知应会100篇》第14篇:大模型商业化现状:主流应用场景及盈利模式
第14篇:大模型商业化现状:主流应用场景及盈利模式 摘要 近年来,大模型(如Qwen、DeepSeek、GPT、BERT等)以其强大的语言理解和生成能力引发了技术界的广泛关注。然而,如何将这些前沿技术转化为商业价值&am…...
深入理解linux操作系统---第3讲 基本操作与基本管理
3.1 shell基本功能与基本概念 3.1.1 shell基本功能 Shell是Linux系统的核心交互工具,主要功能包括: 程序启动与进程管理:通过命令行将程序名传递给内核执行,支持进程的后台运行与监控(如ps、kill命令)文…...
Go:函数
函数 函数声明 func name(parameter-list) (result-list) { body }函数声明包含函数名、形参列表、可选的返回列表以及函数体 。形参列表指定由调用者传递的变量参数名和类型;返回列表指定函数返回值类型 ,无返回值或返回未命名值时,返回列…...
swagger 注释说明
一、接口注释核心字段 在 Go 的路由处理函数(Handler)上方添加注释,支持以下常用注解: 注解名称用途说明示例格式Summary接口简要描述Summary 创建用户Description接口详细说明Description 通过用户名和邮箱创建新用户Tags接口分…...
【C++】C与C++、C++内存空间、堆与栈
C嘎嘎嘎嘎嘎~ C与C的区别与联系 C内存空间 int global_var; // 未初始化全局变量,BSS段 const char* str "Hello"; // 字符串常量text段 in数据段void func() {static int static_var; // 未初始化的静态变量,数据段int local_var; …...
从零训练LLM-1.训练BPE
文章目录 BPE 简介BPE (Byte-Pair Encoding) 算法训练流程BPE 编码流程BPE 评估代码 参考 本文基于 HF -tokenizer 训练,更便捷 BPE 简介 分词器将单词从自然语言通过“词典”映射到0, 1, 36这样的数字,可以理解为数字就代表了单词在“词典”中的页码。…...
shield.io网站|markdown中适用的“徽标”
动态的我还没看是怎么弄,但是应该和静态的差不多,因此本文仅讨论静态徽标 静态徽标效果 创建方法 网址:Shields.io | Shields.io 进入之后点击“Badges”标签进入网页创建徽标的页面,根据文档中对每个属性的介绍在右侧将自己预…...
Vue 3 自定义指令
Vue 3 是一个非常强大的前端框架,它不仅提供了简单易用的 API,还支持多种高级功能,以便开发者根据需要扩展和优化应用。在 Vue 中,自定义指令是一种非常灵活的功能,它允许我们为 DOM 元素添加特定的行为,扩…...
25某团校招后端开发一面
一、进程通信和线程通信方式 进程通信方式 管道(Pipe) 半双工通信,数据单向流动,仅用于有亲缘关系的进程(如父子进程)。通过内核缓冲区实现数据传输,如父进程写、子进程读。命名管道ÿ…...
音视频学习(三十四):H264中的宏块
什么是宏块? 在 H.264 中,宏块是编码图像时最小的处理单位。它的核心作用包括: 帧内预测(Intra Prediction)帧间预测(Inter Prediction)变换、量化、熵编码等 标准定义: 一个宏块…...
Pandas 中透视表(`pivot_table`)和交叉表(`crosstab`)的区别
Pandas 中透视表(pivot_table)和交叉表(crosstab)的区别 核心区别 透视表 (pivot_table) 用于对数据进行 聚合计算(如求和、均值、计数等)。支持多维度分组(行、列、甚至多层索引)。…...
Restful风格接口开发
目录 Restful Apifox 介绍 端口号8080怎么来的? 为什么要使用Apifox? Restful 如果请求方式是Post,那我就知道了要执行新增操作,要新增一个用户 如果请求方式是Put,那就代表我要修改用户 具体要对这些资源进行什么样的操…...
20250414| AI:RAG多路召回和融合重排序技术
好的!以下是对RAG(检索增强生成)中多路召回和融合重排序技术的详细解释,结合解释学习的视角,帮助你更好地理解和学习。这些技术是RAG系统的核心组成部分,决定了检索阶段的效果和最终生成答案的质量。我会尽…...
基于时间序列分解与XGBoost的交通通行时间预测方法解析
一、问题背景与数据概览 在城市交通管理系统中,准确预测道路通行时间对于智能交通调度和路径规划具有重要意义。本文基于真实道路传感器数据,构建了一个结合时间序列分解与机器学习模型的预测框架。数据源包含三个核心部分: 道路通行数据(new_gy_contest_traveltime_train…...
论文精度:HeightFormer:基于Transformer的体素高度预测在路边3D目标检测中的应用
论文地址:https://arxiv.org/pdf/2503.10777 1. 背景与问题定义 1.1 路边视觉3D检测的重要性 在自动驾驶领域,车辆端的视觉感知系统面临视角局限性(如遮挡、短距离感知)和安全挑战。相比之下,路边摄像头通过高位安装,可覆盖更广的感知范围(如交叉路口、高速公路)…...
华为手机清理大数据的方法
清理手机最大的问题是,手动和自动清理了多次,花费了很长时间,但是只腾挪出来了一点点空间,还是有很大空间无法使用,这篇文章就告诉你怎样做,以花瓣剪辑为例,如下: 删除数据ÿ…...
tcp特点+TCP的状态转换图+time_wait详解
tcp特点TCP的状态转换图time wait详解 目录 一、tcp特点解释 1.1 面向连接 1.1.1 连接建立——三次握手 1.1.2 连接释放——四次挥手 1.2 可靠的 1.2.1 应答确认 1.2.2 超时重传 1.2.3 乱序重排 1.2.4 去重 1.2.5 滑动窗口进行流量控制 1.3 流失服务(字节…...
flutter 桌面应用之窗口自定义
在开发桌面软件的时候我们经常需要配置软件的窗口的大小以及位置 我们有两个框架选择:window_manager和bitsdojo_window 对比bitsdojo_window 特性bitsdojo_windowwindow_manager自定义标题栏✅ 支持❌ 不支持控制窗口行为(大小/位置)✅(基本…...
【C++】NAN相关研究
先说结论:NAN对比一切都是false INF 对INF 是true 正无穷与正无穷比较相等,正无穷与负无穷比较不相等 window linux环境下基本相同, debug release基本相同 NAN -NAN INF -INF 不做论述 // TestNan.cpp : 此文件包含 "main" 函数。…...
windows下Git安装及其IDEA配置
1.下载Git安装包 阿里镜像链接(建议从这里下载,速度很快) git-scm.com(官方网站,提供了各个平台(Windows、Mac、Linux)的安装程序) 选择版本号后,在选择此版本的不同包…...
迷你世界脚本脚本常见问题
脚本常见问题 彼得兔 更新时间: 2024-05-22 17:54:44 在查阅开发者学院中的脚本API时,若有任何问题或建议,欢迎通过问卷进行反馈!【点我填写问卷】 1.Block中的data在什么地方使用 data使用有具体需求,此处不建议开发者使用。开发者尽可能使…...
2025蓝桥杯C++ A组省赛 题解
昨天打完蓝桥杯本来想写个 p y t h o n python python A A A 组的题解,结果被队友截胡了。今天上课把 C A CA CA 组的题看了,感觉挺简单的,所以来水一篇题解。 这场 B B B 是一个爆搜, C C C 利用取余的性质比较好写&#…...
链接世界:计算机网络的核心与前沿
计算机网络引言 在数字化时代,计算机网络已经成为我们日常生活和工作中不可或缺的基础设施。从简单的局域网(LAN)到全球互联网,计算机网络将数以亿计的设备连接在一起,推动了信息交换、资源共享以及全球化的进程。 什…...
MySQL 常见存储引擎全解析:InnoDB、MyISAM、Memory 等对比与实战
一、什么是存储引擎? 存储引擎(Storage Engine)是 MySQL 中负责数据存储与管理的底层模块。不同的存储引擎负责处理表的读写、索引维护、事务支持、崩溃恢复等机制。 在创建表时可以指定使用的存储引擎: CREATE TABLE user (id…...
21天Python计划:零障碍学语法(更新完毕)
目录 序号标题链接day1Python下载和开发工具介绍https://blog.csdn.net/XiaoRungen/article/details/146583769?spm1001.2014.3001.5501day2数据类型、字符编码、文件处理https://blog.csdn.net/XiaoRungen/article/details/146603325?spm1011.2415.3001.5331day3基础语法与…...
Python中NumPy的统计运算
在数据分析和科学计算领域,Python凭借其丰富的库生态系统成为首选工具之一,而NumPy作为Python数值计算的核心库,凭借其高效的数组操作和强大的统计运算功能,广泛应用于机器学习、信号处理、统计分析等场景。本文将系统介绍NumPy在…...
SQL 解析 with as
sql的运行顺序 <select id"getTrendList" parameterType"java.util.HashMap" resultType"java.util.Map"><![CDATA[WITH-- 生成连续年份列表(当前年前8年到前1年)year_range AS (SELECT EXTRACT(YEAR FROM SYSD…...
07-算法打卡-链表-移除链表-leetcode(203)-第七天
1 题目地址 203. 移除链表元素 - 力扣(LeetCode)203. 移除链表元素 - 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1:[https://assets.leetc…...
抓包神器,自研EtherCAT抓包工具
大家好,博主自研了一款以太网抓包神器,可以用于EtherCAT抓包。 把抓包工具接入以太网总线中,就能正常使用了。 上位机软件采用wireshark。 开启以下协议 抓包截图如下 时间戳的精度为5ns。...
五、adb常用命令
SDK路径下的 \Android\Sdk\platform-tools\adb.exe adb devices 查看连接的设备 adb shell getprop ro.build.version.release 查看系统版本 adb shell dumpsys window windows | findstr mFocusedApp 获取正在运行的app启动包名 结果为空,我不知道是不是Android…...
Java第四节:idea在debug模式夏改变变量的值
作者往期文章 Java第一节:debug如何调试程序(附带源代码)-CSDN博客 Java第二节:debug如何调试栈帧链(附带源代码)-CSDN博客 Java第三节:新手如何用idea创建java项目-CSDN博客 步骤一 在需要修改…...
Java学习手册:Java反射与注解
Java反射(Reflection)和注解(Annotation)是Java语言中两个强大的特性,它们在框架开发和复杂应用中扮演着重要角色。反射允许程序在运行时检查和操作类、对象、接口、字段和方法,而注解则提供了一种元数据形…...
21 天 Python 计划:MySQL事务四大隔离级别深度剖析
文章目录 一、事务1.1 什么是事务?1.2 事务的四大特性 二、事务并发存在的问题2.1 脏读(dirty read)2.2 不可重复读(unrepeatable read)2.3 幻读 三、事务的四大隔离级别实践3.1 读未提交(Read Uncommitted…...
IO多路复用沉浸式体验
这篇文章主要讲解一下IO多路复用常见问题,包含常见面试题,对你有帮助的话可以留个赞和关注嘛?谢谢大家支持! 1.epoll 相比于 select/poll 的优点有哪些? 高效的数据结构:epoll使用红黑树管理fd࿰…...
音视频学习(三十三):GOP详解
GOP 概念 GOP(图像组)是视频编码中一组帧的集合(按相关性分组),它从一个关键帧(I帧)开始,后面跟随若干个参考帧(P帧)和预测帧(B帧)。其结构决定了视频帧的压…...
部署YUM仓库
目录 一.YUM 1.1yum概述 1.2yum的实现 1.3yum服务的组成 1.4yum服务实现过程 1.5yum配置文件位置 二.yum相关命令 三.搭建yum仓库的方式 3.1使用HTTP方式搭建yum仓库 准备工作(服务端和客户端都需要做) 服务端 客户端 3.2使用ftp方式搭建yu…...
中位数学习(低估它了)
-----------------------------------------------------------------中位数------------------------------------------------------- 中位数有一个很好的性质:假设有一批数据,你想找一个数,使得这批数据与它差的绝对值的和最小࿰…...
音视频转换器 AV 接口静电保护方案
方案简介 音视频转换器是将音视频(AV)信号转换成其他格式或信号类型的设备或软件。 它能够实现大多数视频、音频以及图像格式之间的转换,包括但不限于 RMVB、AVI、 MP4、MOV 等常见格式,同时也支持将不同采样率、位深度、声道数…...
蓝桥杯嵌入式第十二届省赛程序设计1(超简单版)
此程序只需要会C语言数组,结构体(struct),for , if , switch(也可以用if)就能够实现。 引脚设置: 引脚配置(参照笔记): 代码部分: /* USER CODE END Header */ /* Includes ------------------…...
CSS 链接样式学习笔记
在网页设计中,链接(<a> 标签)是不可或缺的元素,通过 CSS 可以对链接进行丰富的样式设置,从而提升用户体验和页面美观度。以下是关于 CSS 链接样式的详细学习笔记。 一、链接的四种状态 链接有四种不同的状态&a…...
有ts文件却无法ts出来解决办法
一开始报错是报这个,但是我其实完全看不懂为什么 原因是这个 打开某个test就行了...
javaSE.Lambda表达式
如果一个接口中有且只有一个待实现的抽象方法,那么我们可以将匿名内部类简写为Lambda表达式。 简写规则 标准格式: (【参数类型 参数名称,】...) -> {代码语句, 包括返回值} 只有一行花括号{}可以省略。…...
Web渗透之文件包含漏洞
文件包含漏洞原理 1、源代码 <?php$filename $_GET[filename]; include $filename; //或include_once,require,require_onceecho "欢迎来到PHP的世界.";?> 2、利用条件 php.ini中alllow_url_fopenOn(默认开启)和allow_url_includeOff(默认关闭)要开启…...
费马引理和罗尔定理
cheer 向……欢呼,使高兴,欢呼,欢呼,愉快 前言区间平均值费马引理罗尔三步万能构造原函数的方法什么时候用罗尔定理计划拉格朗日需要记忆的不等式柯西中值定理泰勒高阶导数判断极值最后 前言 继续学习。今天争取把讲义和作业题都…...
【合新通信】浸没式液冷中低成本冷媒开发的最新进展
浸没式液冷光模块是一种结合高效散热技术与光通信的新型解决方案,主要用于数据中心、超算中心等高密度计算场景。其核心特点是通过将光模块直接浸入绝缘冷却液中(如矿物油、氟化液等),实现高效散热和节能降耗。低成本冷却液的研发…...
【开发记录】服务外包大赛记录
参加服务外包大赛的A07赛道中,最近因为频繁的DEBUG,心态爆炸 记录错误 以防止再次出现错误浪费时间。。。 2025.4.13 项目在上传图片之后 会自动刷新 没有等待后端返回 Network中的fetch /upload显示canceled. 然而这是使用了VS的live Server插件才这样&…...
智能指针之设计模式1
本文探讨一下智能指针和GOF设计模式的关系,如果按照设计模式的背后思想来分析,可以发现围绕智能指针的设计和实现有设计模式的一些思想体现。当然,它们也不是严格意义上面向对象的设计模式,毕竟它们没有那么分明的类层次体系&…...
Spring Boot 中应用的设计模式
Spring Boot 中应用的设计模式详解 Spring Boot 作为 Spring 框架的扩展,广泛使用了多种经典设计模式。以下是主要设计模式及其在 Spring Boot 中的具体应用: 一、创建型模式 1. 工厂模式 (Factory Pattern) 应用场景: BeanFactory 和 Ap…...
23种GoF设计模式
GoF(Gang of Four)设计模式是由四位计算机科学家 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著的书籍《Design Patterns: Elements of Reusable Object-Oriented Software》中提出的设计模式 目录 一、创建型模式(Cre…...