当前位置: 首页 > news >正文

MySQL多表操作

熟能生巧,全部代码在最后!!!

一、多表关系

一对一关系、一对多关系、多对多关系

注意多对多关系必须有中间表进行关联

多对多的关系就相当于是两个一对多关系

二、创建外键约束

专门用于多表操作的一种约束方式

控制的那个表是主表,被控制的表是从表,外键列的值受主键列的值约束

就是让外键列受到主键列的约束,主键列控制外键列,主键列外键列类型要一致

关键字:foreign key

constraint是给表起别名,可以不使用这一步

记得要先创建主键

一般来说使用第一种方式,直接在创建表的时候创建外键约束

特点:主表的数据可以随便添加,从表的外键列数据必须依赖主表

主表的数据如果被从表依赖,则不能删除,而从表的数据可以随便删除

三、外键约束-一对多关系-验证外键约束的作用 

注意:必须先给主表添加数据,在给从表添加数据时,外键列的值不能随便写,必须依赖主表的主键列

外键列里的必须是主键列里有的

删除数据:

        主表的数据被从表依赖时,不能删除,否则可以删除

        从表的数据可以随便删除

删除表:

        必须先删除从表,在删除主表

1001不可以删除,但是1004可以删除

删除外键约束:

删除外键约束后,删除数据也可以了

四、外键约束-多对多关系-构建外键约束

修改和删除时,中间从表可以随便删除和修改,但是两边的主表受从表依赖的数据不能删除或者修改

五、多表联合查询

外键约束只是对增删改起作用,对多表查询并无影响。

数据准备

交叉连接查询

形成一个笛卡尔集:就是用一张表的每一行去匹配另外一张表的每一行

我们只需要让左表的数据等于右表的数据即可得到想要的数据

内连接查询

求的是交集

-- 查询每个部门的所属员工
-- 隐世内连接
select * from dept3,emp3 where dept3.deptno = emp3.dept_id;
select * from dept3 d,emp3 e where d.deptno = e.dept_id;
-- 显世内连接
select * from dept3 inner join emp3 on dept3.deptno = emp3.dept_id;
select * from dept3 join emp3 on dept3.deptno = emp3.dept_id;
select * from dept3 a inner join emp3 b on a.deptno = b.dept_id;

-- 查询研发部门的所属员工
-- 隐世内连接
select * from dept3 a ,emp3 b where a.deptno = b.dept_id and name = '研发部';
-- 显世内连接
select * from dept3 a inner join emp3 b on a.deptno = b.dept_id and name = '研发部';

-- 查询研发部和销售部的所属员工
select * from dept3 a inner join emp3 b on a.deptno = b.dept_id and (name = '研发部' or name = '销售部');
select * from dept3 a inner join emp3 b on a.deptno = b.dept_id and name in('研发部','销售部');

-- 查询每个部门的员工数,并升序排序
select a.deptno,a.name,count(1) from dept3 a inner join emp3 b on a.deptno = b.dept_id group by a.deptno,name;

-- 查询人数大于等于2的部门,并按照人数降序排序
select a.deptno,a.name,count(1) as total_cnt from dept3 a inner join emp3 b on a.deptno = b.dept_id group by a.deptno,name  having total_cnt >= 2 order by total_cnt desc;
 

外连接查询

outer可以省略

左外连接:

会把左表的数据全部输出,右表的数据如果有对应的就输出,没有就补null

如果有多张表:select * from a left join b on 条件1 left join c on 条件2 left join d on 条件3;

右外连接:

会把右表的数据全部输出,左表的数据如果有对应的就输出,没有就补null

如果有多张表:select * from a right join b on 条件1 right join c on 条件2 right join d on 条件3;

满外连接:

就是把左表和右表一起输出

实现满外连接:full join

mysql不支持full join

union 是把上下的代码拼起来,相当于把左右两个结果并起来,并去重

union all 是把左右两个结果放一起,没有去重

基本子查询

单行单列,可以作为一个值使用

多行多列

一般来说关联效率更高一点

括号里面是2个结果,所以不能用=要使用in

多行多列

子查询的表必须要设置别名

子查询关键字     -      all

all是要大于所有的值

就是and

关键字      -     any和some

就是和最值比较

这两个是一样的,只是一个别名罢了

any是比任意一个值大就好了

关键字      -      in

就是or

关键字      -      exists

就是看有没有结果

exists比in的运算效率高,在实际开发中,特别是大数据容量时,推荐使用exists关键字

全表输出,只要exists关键字后面的是正确的就正常执行

因为没有大于60岁的所以输出null

因为有大于20分的所以全部输出

如果查询时没有使用别名就是整个表查询,如果使用了别名就是每一行一行查询

查询有所属部门的员工信息

自关联查询

需要对自身进行关联查询时使用,把一张表当成多张表来用,注意自关联时表必须给表起别名

对自身进行关联查询,结构示意图

六、MySQL多表操作-总结

思维导图

七、练习

数据准备

练习:

八、全部代码

create database mydb3;
use mydb3;
create table if not exists dept(
  detpno varchar(20) primary key, -- 部门号
  name varchar(20) -- 部门名字
  );
create table if not exists emp(
  eid varchar(20),  -- 员工编号
  ename varchar(20),  -- 员工名字
  age int, -- 员工年龄
  dept_id varchar(20), -- 员工所属部门
  constraint emp_fk foreign key(dept_id) references dept(detpno) -- 外键约束
  );
  
use mydb3;
create table if not exists dept2(
  detpno varchar(20) primary key, -- 部门号
  name varchar(20) -- 部门名字
  );
create table if not exists emp2(
  eid varchar(20),  -- 员工编号
  ename varchar(20),  -- 员工名字
  age int, -- 员工年龄
  dept_id varchar(20) -- 员工所属部门 
  );
alter table emp2 add constraint emp2_fk foreign key(dept_id) references dept(detpno);

insert into dept values('1001','研发部');
insert into dept values('1002','销售部');
insert into dept values('1003','财务部');
insert into dept values('1004','人事部');

insert into emp values('1','琼安奉',20,'1001');
insert into emp values('2','阿坎德',21,'1001');
insert into emp values('3','阿达啊',23,'1001');
insert into emp values('4','阿达尔',18,'1001');
insert into emp values('5','凤飞飞',25,'1001');
insert into emp values('6','发发哇',35,'1001');
insert into emp values('7','阿强啊',33,'1005');


delete from dept where detpno = '1001'; -- 不可以删除
delete from dept where detpno = '1004'; -- 可以删除
delete from emp where eid = '7'; -- 可以删除

alter table emp2 drop foreign key emp2_fk;

insert into dept2 values('1001','研发部');
insert into dept2 values('1002','销售部');
insert into dept2 values('1003','财务部');
insert into dept2 values('1004','人事部');

insert into emp2 values('1','琼安奉',20,'1001');
insert into emp2 values('2','阿坎德',21,'1001');
delete from dept2 where detpno = '1001';

use mydb3;
create table if not exists student(
  sid int primary key auto_increment,
  name varchar(20),
  age int,
  gender varchar(20)
  );
  
create table course(
  cid int primary key auto_increment,
  cidname varchar(20)
  );
  
-- 从表
create table score(
  sid int,
  cid int,
  score DOUBLE
  );
  
alter table score add foreign key(sid) references student(sid);
alter table score add foreign key(cid) references course(cid);

insert into student values(1,'ikun',18,'女'),(2,'zhangji',29,'男'),(3,'xiji',32,'男');
insert into course values(1,'语文'),(2,'数学'),(3,'英语');  
insert into score values(1,1,78),(1,2,76),(2,1,87),(2,3,75),(3,2,57),(3,3,96); 
  
use mydb3;  
create table if not exists dept3(
  deptno varchar(20),  -- 部门号
  name varchar(20) -- 部门名字
  );
create table if not exists emp3(
  eid varchar(20) primary key, -- 员工编号
  ename varchar(20), -- 员工名字
  age int, -- 年龄
  dept_id varchar(20) -- 所属部门
  );
insert into dept3 values('1001','研发部');
insert into dept3 values('1002','人事部');
insert into dept3 values('1003','销售部');
insert into dept3 values('1004','财务部');
insert into dept3 values('1006','财务部');

insert into emp3 values('1','琼安奉',20,'1001');
insert into emp3 values('2','阿达啊',22,'1002');
insert into emp3 values('3','阿达发',18,'1003');
insert into emp3 values('4','阿尔法',24,'1004');
insert into emp3 values('5','阿飞发',33,'1001');
insert into emp3 values('6','爱蜂窝',29,'1005');

select * from dept3,emp3;

-- 查询每个部门的所属员工
-- 隐世内连接
select * from dept3,emp3 where dept3.deptno = emp3.dept_id;
select * from dept3 d,emp3 e where d.deptno = e.dept_id;
-- 显世内连接
select * from dept3 inner join emp3 on dept3.deptno = emp3.dept_id;
select * from dept3 join emp3 on dept3.deptno = emp3.dept_id;
select * from dept3 a inner join emp3 b on a.deptno = b.dept_id;

-- 查询研发部门的所属员工
-- 隐世内连接
select * from dept3 a ,emp3 b where a.deptno = b.dept_id and name = '研发部';
-- 显世内连接
select * from dept3 a inner join emp3 b on a.deptno = b.dept_id and name = '研发部';

-- 查询研发部和销售部的所属员工
select * from dept3 a inner join emp3 b on a.deptno = b.dept_id and (name = '研发部' or name = '销售部');
select * from dept3 a inner join emp3 b on a.deptno = b.dept_id and name in('研发部','销售部');

-- 查询每个部门的员工数,并升序排序
select a.deptno,a.name,count(1) from dept3 a inner join emp3 b on a.deptno = b.dept_id group by a.deptno,name;

-- 查询人数大于等于2的部门,并按照人数降序排序
select a.deptno,a.name,count(1) as total_cnt from dept3 a inner join emp3 b on a.deptno = b.dept_id group by a.deptno,name  having total_cnt >= 2 order by total_cnt desc;


use mydb3;
select * from dept3 a left outer join emp3 b on a.deptno = b.dept_id;

select * from dept3 a right outer join emp3 b on a.deptno = b.dept_id;

select * from dept3 a full join emp3 b on a.deptno = b.dept_id;

select * from dept3 a left outer join emp3 b on a.deptno = b.dept_id
union all
select * from dept3 a right outer join emp3 b on a.deptno = b.dept_id;

select max(age) from  emp3;
select * from emp3 where age = 33;
-- 化简语法
select * from emp3 where age = (select max(age) from emp3); -- 单行单列,可以作为一个值使用

-- 方式1:关联查询
select * from dept3 a join emp3 b on a.deptno = b.dept_id and (name = '研发部' or name = '销售部');
-- 方式2:子查询
select * from emp3 where dept_id in (select deptno from dept3 where name = '研发部' or name = '销售部');

-- 方式1:关联查询
select * from dept3 a join emp3 b on a.deptno = b.dept_id and (name = '研发部' and age < 30);
-- 方式2:子查询
select * from (select * from dept3 where name = '研发部') t1 join (select * from emp3 where age < 30) t2 on t1.deptno = t2.dept_id;

select * from emp3 where age > all(select age from emp3 where dept_id = '1002');

select * from emp3 where dept_id != all(select deptno from dept3);

select * from emp3 where age > any(select age from emp3 where dept_id = '1003') and dept_id != '1003';

select eid,ename from emp3 where dept_id in (select deptno from dept3 where name = '研发部' or name = '销售部');

select * from emp3 where exists(select * from emp3);
select * from emp3 where exists(select 1);

select * from emp3 where exists(select age from emp3 where age > 60);
select * from emp3 where exists(select age from emp3 where age > 20);
select * from emp3 a where exists(select age from emp3 where a.age > 20);

select * from emp3 a where exists(select * from dept3 b where a.dept_id = b.deptno);

use mydb2;
create table t_sanguo(
  eid int primary key,
  ename varchar(20),
  manager_id int,
  foreign key (manager_id) references t_sanguo(eid)
  );
insert into t_sanguo values(1,'刘协',NULL);
insert into t_sanguo values(2,'刘备',1);
insert into t_sanguo values(3,'关羽',2);
insert into t_sanguo values(4,'张飞',2);
insert into t_sanguo values(5,'曹操',1);
insert into t_sanguo values(6,'许诸',5);
insert into t_sanguo values(7,'典韦',5);
insert into t_sanguo values(8,'孙权',1);
insert into t_sanguo values(9,'周瑜',8);
insert into t_sanguo values(10,'鲁肃',8);

-- 1.查询每个三国人物及他的上级信息
select * from t_sanguo a,t_sanguo b where a.manager_id = b.eid;
select a.ename,b.ename from t_sanguo a,t_sanguo b where a.manager_id = b.eid;

-- 2.查询所有人物及上级
select a.ename,b.ename from t_sanguo a left join t_sanguo b on a.manager_id = b.eid;

-- 3.查询所有人物的上级和上上级
select a.ename,b.ename,c.ename from t_sanguo a left join t_sanguo b on a.manager_id = b.eid left join t_sanguo c on b.manager_id = c.eid;

create database test1;

use test1;

create table dept(
  deptno int primary key,  -- 部门编号
  dname varchar(14), -- 部门名称
  loc varchar(13) -- 部门地址
  );


insert into dept values (10,'accounting','new york');
insert into dept values (20,'research','dallas');
insert into dept values (30,'sales','chicago');
insert into dept values (40,'operations','boston');

create table emp(
  empno int primary key,  -- 员工编号
  ename varchar(10),  -- 姓名
  job varchar(9),  -- 工作
  mgr int,  -- 直属领导编号
  hiredate date,  -- 入职时间
  sal double,-- 工资
  comm double,  -- 奖金
  deptno int -- 对应dept表的外键
  );

-- 添加部门和员工 之间的主外键关系
alter table emp add constraint foreign key emp(deptno) references dept(deptno);

insert into emp values(7369,'smith','clerk',7902,'1980-12-17',800,null,20);
insert into emp values(7499,'allen','salesman',7698,'1981-02-20',1600,300,30);
insert into emp values(7521,'ward','salesman',7698,'1981-02-22',1250,500,30);
insert into emp values(7566,'jones','manager',7839,'1981-04-02',2975,null,20);
insert into emp values(7654,'martin','salesman',7698,'1981-09-28',1250,1400,30);
insert into emp values(7698,'blake','manager',7839,'1981-05-01',2850,null,30);
insert into emp values(7782,'clark','manager',7839,'1981-06-09',2450,null,10);
insert into emp values(7788,'scott','analyst',7566,'1987-07-03',3000,null,20);
insert into emp values(7839,'king','president',null,'1981-11-17',5000,null,10);
insert into emp values(7844,'turner','salesman',7698,'1981-09-08',1500,0,30);
insert into emp values(7876,'adams','clerk',7788,'1987-07-13',1100,null,20);
insert into emp values(7900,'james','clerk',7698,'1981-12-03',950,null,30);
insert into emp values(7902,'ford','analyst',7566,'1981-12-03',3000,null,20);
insert into emp values(7934,'miller','clerk',7782,'1981-01-23',1300,null,10);


create table salgrade(
  grade int,  -- 等级
  losal double,  -- 最低工资
  hisal DOUBLE -- 最高工资
  );
insert into salgrade values(1,700,1200);
insert into salgrade values(2,1201,1400);
insert into salgrade values(3,1401,2000);
insert into salgrade values(4,2001,3000);
insert into salgrade values(5,3001,9999);

-- 1 、返回拥有员工的部门名、部门号
select d.dname,d.deptno from dept d join emp e on d.deptno = e.deptno;
select distinct d.dname,d.deptno from dept d join emp e on d.deptno = e.deptno; -- 去重

-- 2、工资水平多余smith的员工信息
select * from emp where sal > (select sal from emp where ename = 'smith');

-- 3、返回员工和所属经理的姓名
select a.ename,b.ename from emp a,emp b where a.mgr = b.empno;

-- 4、返回雇员的雇佣日期早于其经理雇佣日期的员工及其经理姓名
select a.empno,a.hiredate,b.empno,b.hiredate from emp a,emp b where a.mgr = b.empno and a.hiredate < b.hiredate;

-- 5、返回员工姓名及其所在的部门名称
select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno;

-- 6、返回从事clerk工作的员工姓名和所在部门名称
select e.ename,d.dname from emp e,dept d where e.deptno = d.deptno and e.job = 'clerk';

-- 7、返回部门号及其本部门的最低工资
select deptno,min(sal) from emp group by deptno;

-- 8、返回销售部(sales)所有员工的姓名
select e.ename from emp e join dept d on e.deptno = d.deptno and d.dname = 'sales';

-- 9、返回工资水平多于平均工资的员工
select e.ename from emp e where sal > (select avg(sal) from emp);

-- 10、返回与scott从事相同工作的员工
select e.ename,e.job from emp e where job = (select job from emp where ename = 'scott');

-- 11、返回工资高于30部门所有员工工资水平的员工信息
select * from emp where sal > all(select sal from emp where deptno = 30);

-- 12、返回员工工作及其从事此工作的最低工资
select job,min(sal) from emp group by job;

-- 13、计算出员工的年薪,并且以年薪排序
select ename,(sal * 12 + ifnull(comm,0)) from emp order by (sal * 12 + ifnull(comm,0)) desc;

-- 14、返回工资处于第四级别的员工的姓名
select ename from emp where sal between (select losal from salgrade where grade = 4) and (select hisal from salgrade where grade = 4);

-- 15、返回工资为二等级的职员名称、部门所在地
select * from dept a join emp b on a.deptno = b.deptno join salgrade c  on grade = 2 and b.sal >= c.losal and b.sal <= c.hisal;
select * from dept a,emp b,salgrade c where a.deptno = b.deptno and grade = 2 and b.sal >= c.losal and b.sal <= c.hisal;

相关文章:

MySQL多表操作

熟能生巧&#xff0c;全部代码在最后&#xff01;&#xff01;&#xff01; 一、多表关系 一对一关系、一对多关系、多对多关系 注意多对多关系必须有中间表进行关联 多对多的关系就相当于是两个一对多关系 二、创建外键约束 专门用于多表操作的一种约束方式 控制的那个表…...

WPF TextBlock控件性能优化指南

WPF TextBlock控件性能优化指南 1. 引言 TextBlock作为WPF中最基础且使用最广泛的文本显示控件&#xff0c;其性能优化对整个应用程序的响应速度和资源占用有着重要影响。尽管TextBlock是一个轻量级控件&#xff0c;但在大型应用或需要显示大量文本的场景中&#xff0c;不恰当…...

DotNet 入门:(一) 环境安装

一、前言 本想用 Go 语言实现一个通过小爱同学操作电脑的&#xff0c;比如我对着手机说打开音乐&#xff0c;或调小音乐&#xff0c;电脑能做相应的处理。奈何我一时间没看懂&#xff0c;就想着用.Net 来试一下&#xff0c;于是就有了下面这篇文章。 二、安装.Net 环境 1. 下…...

初识Redis · 分布式锁

目录 前言&#xff1a; 分布式锁 setnx lua脚本和看门狗 redlock算法 Redlock 的加锁流程&#xff08;5 步&#xff09; 前言&#xff1a; 到了分布式锁这一章之后&#xff0c;我们首先能联想到的问题就是线程安全的问题&#xff0c;线程安全指的是多个线程在并发执行的…...

使用 OpenCV 实现图像中心旋转

在图像处理中&#xff0c;围绕中心点旋转图像是一个常见的需求。无论是为了数据增强、视觉效果&#xff0c;还是图像对齐&#xff0c;旋转图像都是一项基础且重要的操作。本文将详细介绍如何使用 OpenCV 实现围绕图像中心旋转的功能&#xff0c;并深入探讨其背后的数学原理。 一…...

云钥科技红外短波工业相机

云钥科技的红外短波相机是一款基于短波红外&#xff08;SWIR&#xff0c;波长范围约1-3微米&#xff09;技术的成像设备&#xff0c;专为高精度检测、全天候成像及特殊场景应用设计。以下从核心技术、性能参数、应用场景及产品优势等方面进行详细介绍&#xff1a; ​​一、核心…...

npm如何安装pnpm

在 npm 中安装 pnpm 非常简单,你可以通过以下步骤完成: 1. 使用 npm 全局安装 pnpm 打开终端(命令行工具),运行以下命令: npm install -g pnpm2. 验证安装 安装完成后,可以检查 pnpm 的版本以确保安装成功: pnpm --version如果正确显示版本号(如 8.x.x),说明安…...

GTC Taipei 2025 医疗域前瞻:从AI代理到主权生态,解码医疗健康与生命科学的未来图景

引言 2025年,全球医疗健康领域正经历一场由人工智能、机器人技术与分布式计算驱动的范式转移。随着NVIDIA及其生态伙伴在GTC Taipei 2025大会上的深度布局,医疗行业的核心趋势愈发清晰:AI代理程序(Digital AI Agents)赋能临床协作、医疗大数据与精准医学加速落地、医学影…...

【AI学习】李宏毅新课《DeepSeek-R1 这类大语言模型是如何进行「深度思考」(Reasoning)的?》的部分纪要

针对推理模型&#xff0c;主要讲了四种方法&#xff0c;两种不需要训练模型&#xff0c;两种需要。 对于reason和inference&#xff0c;这两个词有不同的含义&#xff01; 推理时计算不是新鲜事&#xff0c;AlphaGo就是如此。 这张图片说明了将训练和推理时计算综合考虑的关系&…...

npm打包内存不足- JavaScript heap out of memory

直接贴出报错信息 <--- Last few GCs --->[30904:0000010F60FE58E0] 22090 ms: Scavenge 2037.4 (2069.4) -> 2036.4 (2074.2) MB, 2.5 / 0.0 ms (average mu 0.228, current mu 0.216) allocation failure [30904:0000010F60FE58E0] 22101 ms: Scavenge 2…...

【最新 MCP 战神手册 08】工具使用详解:实现 AI 行动

文章目录 1. 开始啦!2. 第一部分:设计高效且安全的工具3. 第二部分:定义工具蓝图——参数、输出与约束条件4. 第三部分:弥合差距:LLM 兼容性(函数调用)5. 第四部分:实施与测试的最佳实践1. 开始啦! 在前几章中,我们将工具介绍为 AI 模型在 MCP 客户端引导下向 MCP 服…...

开发iOS App时,我常用的一款性能监控小工具分享

开发iOS App时&#xff0c;我常用的一款性能监控小工具分享 最近在做一个iOS应用的性能优化&#xff0c;频繁遇到内存泄露、界面卡顿和网络请求超时的问题。平时用Xcode Instruments虽然专业&#xff0c;但流程繁琐&#xff0c;临时排查问题不够灵活。 于是开始找有没有轻量一…...

如何防止 ES 被 Linux OOM Killer 杀掉

当 Linux 系统内存不足时&#xff0c;内核会找出一个进程 kill 掉它释放内存&#xff0c;旨在保障整个系统不至于崩溃。如果 ES 按照最佳实践去实施部署&#xff0c;会保留一半的内存&#xff0c;不至于发生此类事情。但事情总有例外&#xff0c;有的朋友可能 ES 和其他的程序部…...

Windows权限与icacls命令详解

在Windows操作系统中&#xff0c;权限管理是确保系统安全和资源访问控制的核心机制。特别是在使用NTFS&#xff08;New Technology File System&#xff09;文件系统的环境中&#xff0c;访问控制列表&#xff08;ACL&#xff09;用于定义哪些用户或组可以对文件、文件夹或其他…...

5.4.2 MVVM例2-用户控件的使用(水在水管中流动的实例)

本文以一个例子介绍用户控件的使用(UserControl),下图所示: 一、主要技术点 1.MainViewModel使用CommunityToolkit.Mvvm 这个Nuget包 2.LinearGradientBrush使用,下面代码可以产生如下的效果 <LinearGradientBrush x:Key="HorizontalBackground" …...

PHP代码-服务器下载文件页面编写

内部环境的服务资源下载页面有访问需求&#xff0c;给开发和产品人员编写一个简洁的下载页面提供资源下载。直接用nginxphp的形式去编写了&#xff0c;这里提供展示index.php文件代码如下&#xff1a; <?php // 配置常量 define(BASE_DIR, __DIR__); // 当前脚本所在目录作…...

51单片机快速入门之 SPI通信 2025年4月29日09:26:32

SPI通信 : SPI&#xff08;Serial Peripheral Interface&#xff09;通信是一种同步串行数据传输协议&#xff0c;主要用于嵌入式系统内部设备之间的通信。它由Motorola公司在2000年提出&#xff0c;广泛应用于微控制器、传感器、存储设备等之间的数据传输。 SPI通信的主要特点…...

SpringMVC再复习1

一、三层架构 表现层&#xff08;WEB 层&#xff09; 定义 &#xff1a;是应用程序与客户端进行交互的最外层&#xff0c;主要负责接收用户的请求&#xff0c;并将处理结果显示给用户。 作用 &#xff1a;在 Spring MVC 中&#xff0c;表现层通常采用 MVC 设计模式来构建。 技…...

音视频之H.265/HEVC网络适配层

H.265/HEVC系列文章&#xff1a; 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 4、音视频之H.265/HEVC变换编码 5、音视频之H.265/HEVC量化 6、音视频之H.265/HEVC环路后处理 7、音视频之H.265/HEVC熵编…...

01_微服务常见问题

文章目录 微服务常见问题一、常见问题概要一、问题详解1.1 服务拆分1.2 服务通信1.3 服务注册与发现1.4 服务治理1.5 数据一致性1.6 故障隔离与容错处理1.7 数据库设计1.8 性能测试与调优 微服务常见问题 一、常见问题概要 ‌服务拆分‌&#xff1a;如何合理地拆分服务&#…...

Python在自动驾驶仿真环境中的应用:构建智能驾驶的虚拟世界

Python在自动驾驶仿真环境中的应用:构建智能驾驶的虚拟世界 引言 随着自动驾驶技术的迅速发展,仿真环境的构建变得愈发重要。传统的测试方法依赖物理车辆和道路进行验证,但这种方式不仅成本高昂,还存在一定的风险。为了加速自动驾驶技术的研发,仿真环境成为了一个必不可…...

【统计方法】交叉验证:Resampling, nested 交叉验证等策略 【含R语言】

Resampling (重采样方法) 重采样方法是从训练数据中反复抽取样本&#xff0c;并在每个&#xff08;重新&#xff09;样本上重新调整模型&#xff0c;以获得关于拟合模型的附加信息的技术。 两种主要的重采样方法 Cross-Validation (CV) 交叉验证 &#xff1a; 用于估计测试误…...

海外App数据隐私架构实战:构建GDPR、CCPA合规的全栈解决方案

一、隐私合规的架构范式转变 从“数据收集”到“数据最小化”传统模式&#xff1a;尽可能收集数据 → 导致合规风险隐私原生模式&#xff1a;默认不收集 → 按需申请 → 自动过期kotlin// Android权限动态申请示例&#xff08;GDPR兼容&#xff09; val request PermissionRe…...

Prometheus监控

1、docker - prometheusgrafana监控与集成到spring boot 服务_grafana spring boot-CSDN博客 2、【IT运维】普罗米修斯基本介绍及监控平台部署&#xff08;PrometheusGrafana&#xff09;-CSDN博客 3、Prometheus监控SpringBoot-CSDN博客 4、springboot集成普罗米修斯-CSDN博客…...

Vue3 Echarts 3D圆形柱状图实现教程以及封装一个可复用的组件

文章目录 前言一、实现原理二、series ——type: "pictorialBar" 简介2.1 常用属性 三、代码实战3.1 封装一个echarts通用组件 echarts.vue3.2 首先实现一个基础柱状图3.3 添加上下2个椭圆面3.4 进阶封装一个可复用的3D圆形柱状图组件 总结 前言 在前端开发的数据可视…...

洛谷P12238 [蓝桥杯 2023 国 Java A] 单词分类

[Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription] Copy from luogu. [Analysis] \color{blue}{\texttt{[Analysis]}} [Analysis] 既然都是字符串前缀的问题了&#xff0c;那当然首先就应该想到 Trie \text{Trie} Trie 树。 我们可…...

【3D基础】顶点法线与平面法线在光照与PBR中的区别与影响

顶点法线与平面法线在光照与PBR中的区别与影响 在3D图形学中&#xff0c;法线&#xff08;Normal&#xff09;是影响光照计算、表面细节表现和渲染质量的核心参数之一。法线用于描述一个表面或顶点的朝向&#xff0c;直接关系到光的反射与分布&#xff0c;从而影响最终像素的颜…...

jmeter-Beashell获取http请求体json

在JMeter中&#xff0c;使用BeanShell处理器或BeanShell Sampler来获取HTTP请求体中的JSON数据是很常见的需求。这通常用于在测试计划中处理和修改请求体&#xff0c;或者在响应后进行验证。以下是一些步骤和示例代码&#xff0c;帮助你使用BeanShell来获取HTTP请求体中的JSON数…...

为网页LOGO视频增加电影质感表现

为网页LOGO视频增加电影质感表现 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 为网页LOGO视频增加电影质感表现前几天,一个朋友开了一家烤肉店,给我发来了烤肉店的宣传视频,我…...

精益数据分析(32/126):电商指标优化与搜索策略解析

精益数据分析&#xff08;32/126&#xff09;&#xff1a;电商指标优化与搜索策略解析 在创业和数据分析的探索之旅中&#xff0c;每一次深入学习都能为我们带来新的启发和成长。今天&#xff0c;我们继续秉持共同进步的理念&#xff0c;深入研读《精益数据分析》&#xff0c;…...

​【空间数据分析】缓冲区分析--泰森多边形(Voronoi Diagram)-arcgis操作

泰森多边形&#xff08;Voronoi Diagram&#xff09;&#xff1a;根据一组输入点生成多边形&#xff0c;使得每个多边形内的任意位置到其关联点的距离最近。 多边形之间无重叠&#xff0c;全覆盖研究区域。 边界是相邻两点连线的垂直平分线。 实验操作&#xff1a; 使用 Cre…...

JavaScript高级进阶(五)

操作节点属性 设置属性&#xff08;先找属性再操作&#xff09; setAttribute()方法添加指定的属性&#xff0c;并为其赋指定的值 语法&#xff1a; element.setAttribute(attributename/属性名,attributevalue/属性值) 例: <style> .box{ width: 200px; height: 200p…...

WPF之TextBlock控件详解

文章目录 1. TextBlock控件介绍2. TextBlock的基本用法2.1 基本语法2.2 在代码中创建TextBlock 3. TextBlock的常用属性3.1 文本内容相关属性3.2 字体相关属性3.3 外观相关属性3.4 布局相关属性 4. TextBlock文本格式化4.1 使用Run元素进行内联格式化4.2 其他内联元素 5. 处理长…...

串口通信协议

什么是串口通信&#xff1f; 串口通信是将数据在一条数据线上传输。 串口通信的特点是传输线少&#xff08;相对于并行通信&#xff09;&#xff0c;长距离传输的成本低&#xff0c;但数据的传送控制比并行通信复杂。 常见的串行通信接口包括&#xff1a;USB&#xff0c;RS-…...

9.idea中创建springboot项目

9. idea中创建springboot项目 步骤 1&#xff1a;打开 IntelliJ IDEA 并创建新项目 启动 IntelliJ IDEA。在欢迎界面&#xff0c;点击 New Project&#xff08;或通过菜单栏 File > New > Project&#xff09;。 步骤 2&#xff1a;选择 Maven 项目类型 在左侧菜单中…...

详解大语言模型生态系统概念:lama,llama.cpp,HuggingFace 模型 ,GGUF,MLX,lm-studio,ollama这都是什么?

llama&#xff0c;llama.cpp&#xff0c;HuggingFace 模型 &#xff0c;GGUF&#xff0c;MLX&#xff0c;lm-studio&#xff0c;ollama这些名词的概念给个详细的解释&#xff0c;彼此什么关系&#xff1f;是不是头很晕&#xff1f; 详解大语言模型生态系统概念 基础模型与架构…...

如何系统学习音视频

学习音视频技术涉及多个领域&#xff0c;包括音频处理、视频处理、编码解码、流媒体传输等。 第一阶段&#xff1a;基础知识准备 目标&#xff1a;掌握音视频学习所需的计算机科学和数学基础。 计算机基础 学习计算机网络基础&#xff08;TCP/IP、UDP、HTTP、RTSP等协议&#…...

elementui里的el-tabs的内置样式修改失效?

1.问题图 红框里的是组件的内置样式&#xff0c;红框下的是自定义样式 2.分析 2.1scoped vue模板编译器在编译有scoped的stye标签时&#xff0c;会生成对应的postCSS插件&#xff0c;该插件会给每个scoped标记的style标签模块&#xff0c;生成唯一一个对应的 data-v-xxxhash…...

Webshell管理工具的流量特征

目录 一、常见Webshell工具流量特征 1. ​​中国菜刀&#xff08;Chopper&#xff09;​​ 2. ​​冰蝎&#xff08;Behinder&#xff09;​​ 3. ​​哥斯拉&#xff08;Godzilla&#xff09;​​ 4. ​​蚁剑&#xff08;AntSword&#xff09;​​ 5. ​​C99 Shell​​…...

61.微服务保姆教程 (四) Gateway---SpringCloud微服务网关组件

Gateway—SpringCloud微服务网关组件 一、Spring Cloud Gateway简介 1.为什么要用Gateway? 在微服务架构中,通常一个系统会被拆分为多个微服务,微服务之间的调用可以用OpenFeign,但面对这么多微服务客户端调用会遇到哪些问题呢? 每个服务都需要鉴权、限流、跨域访问、权…...

问答:C++如何通过自定义实现移动构造函数和移动赋值运算符来实现rust的唯一所有权?

今天,我就带你深入C++的移动语义,用自定义的移动构造函数和移动赋值运算符,硬核模拟Rust的唯一所有权。不仅有干货代码,还会手把手讲明白,保证你看完就能上手。准备好了吗?咱们这就开干! 先搞懂Rust的“独家秘籍” Rust的唯一所有权,简单来说,就是一个资源只能有一个…...

MODSIM选型指南:汽车与航空航天企业如何选择仿真平台

1. 引言 在竞争激烈的汽车与航空航天领域&#xff0c;仿真技术已成为产品研发不可或缺的环节。通过在设计阶段验证概念并优化性能&#xff0c;仿真平台能有效缩短开发周期并降低物理样机制作成本。 MODSIM&#xff08;建模与仿真&#xff09;作为达索系统3DEXPERIENCE平台的核…...

扣子流程图批量导入飞书多维表格

文章目录 整体结构分步骤进行处理1. 程序代码处理2. 多维表格配置 整体结构 整个代码块结构如下&#xff1a; 首先&#xff0c;我们从其他流程中拿到一个数据列表&#xff0c;通过一个循环体&#xff0c;将每一个部分的内容都通过python代码整理后&#xff0c;使用【插件】的…...

Profinet 转 Modbus_4 网关

一、功能概述 1.1 设备简介 本产品是 Profinet 和 Modbus RTU 网关&#xff0c;使用数据映射方式工作。 本产品在 Profinet 侧作为 Profinet 从站&#xff0c;接西门子 PLC 如 1200 、 1500 、 200Smart 等&#xff1b;在 Modbus RTU 侧做为 RTU 主站或从站&#…...

Webug4.0通关笔记03- 第4关POST注入和第5关过滤注入

目录 第04关 POST型注入 1.源码分析 2.sqlmap注入 &#xff08;1&#xff09;bp保存报文 &#xff08;2&#xff09;sqlmap渗透 &#xff08;3&#xff09;获取flag 第05关 过滤型注入 1.源码分析 2.sqlmap渗透 &#xff08;1&#xff09;bp抓包保存报文 &#xff0…...

虹科新品 | 汽车通信新突破!PCAN-XL首发上线!

​​汽车智能化浪潮汹涌 通信技术如何跟上&#xff1f; 虹科带着支持最新CAN XL标准的 PCAN-XL套件 重磅来袭&#xff01; 助力行业快速开启 全新CAN XL标准的测试验证&#xff01; 新品登场&#xff1a;不止是升级 虹科PCAN-XL套件 随着汽车智能化进程加速&#xff0c;传…...

GitHub Actions 自动化部署 Azure Container App 全流程指南

一、前言 本文将详细介绍如何通过 GitHub Actions 实现 Azure Container App 的自动化部署流程。当代码推送到 master 分支时,系统将自动完成镜像构建、推送至 ACR 以及应用部署的全过程。以下是完整的配置方案: 二、GitHub Actions 工作流配置 完整 YAML 文件(.github/wo…...

华为L420Qml在wayland环境下崩溃问题

开发环境 操作系统 : kylin v10sp1qt版本 : qt5.15硬件信息 : 华为L420型号 背景 这个问题是在指定机型才出现的,应用同事帮忙将问题与业务抽离出来形成了一个demo //main.cpp#include #include int main(int argc, char *argv[]){qputenv("QT_QPA_PLATFORM", &quo…...

UniApp 小程序嵌套 H5 页面显示隐藏监听实践

UniApp 小程序嵌套 H5 页面显示隐藏监听实践 一、背景介绍 在小程序嵌套 H5 页面的场景中&#xff0c;经常需要监听页面的显示和隐藏状态&#xff0c;以便于处理一些特定的业务逻辑&#xff0c;如暂停/继续定时器、暂停/继续视频播放等。 二、实现方案 1. 页面可见性 API …...

CentOS上搭建 Python 运行环境并使用第三方库

CentOS上搭建 Python 运行环境并使用第三方库 更新 YUM 配置为阿里云镜像安装依赖包下载 Python 源码解压源码包配置和编译安装验证安装创建虚拟环境安装python第三方库编写并执行 Python 脚本 centos7.9上安装python环境 更新 YUM 配置为阿里云镜像 # 备份原有的 yum 配置文…...