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

【MySQL基础 | 中秋特辑】多表查询详细总结

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【MySQL学习专栏】🎈
本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌
在这里插入图片描述

目录

  • 一、多表关系
    • 多对一(一对多)
    • 多对多案例演示
    • 一对一案例演示
  • 二、多表查询概述
    • 多表查询分类
  • 三、内连接
    • 隐式内连接演示
    • 显式内连接演示
  • 四、外连接
    • 左连接
    • 右连接
  • 五、自连接
    • 案例1
    • 案例2
  • 六、联合查询
  • 七、子查询
    • 7.1标量子查询
      • 案例1
      • 案例2
    • 7.2列子查询
      • 案例1
      • 案例2
      • 案例3
    • 7.3行子查询
      • 案例
    • 7.4表子查询
      • 案例1
      • 案例2

一、多表关系

我们在平常的项目开发中,数据库层面设计表结构时,会根据业务需求及业务模块之间的关系分析并设计表结构,由于业务之间相互关联,所以各个表结构也会之间也存在着各种联系。

各个表结构一般分为三种:多对一(多对一)、一对一、多对多

多对一(一对多)

多对一(一对多)案例分析:比如部门和员工之间的关系就可以满足多对一(一对多),即1个员工只能属于1个部门,但是一个部门下可以有多少个员工

数据库方面的实现:在多的一方建立外键,指向一的一方的主键。
举例,请看下图:
在这里插入图片描述

多对多案例演示

多对多案例分析:比如学生和选的课程之间的关系,即1个学生可以选择多门课程、同时1个课程也可以被多个学生选择。
数据库方面的实现:建立第三张中间表,中间表至少包含两个外键,分别关联两个主键(多对多关系中,只能通过中间表来维持关系)。
如下图举例(通过中间表就可以来维护学生表和课程表之间的关系。):
在这里插入图片描述

下面我们通过SQL语句来创建学生表和课程表,建表语句如下:

-- 多对多案例演示:学生表和课程表的创建
create table student(id int auto_increment primary key comment '主键ID',name varchar(10) comment '姓名',num varchar(10) comment '学号'
) comment '学生表';
-- 学生表数据插入
insert into student values(null,'Daming','2022020100'),(null,'Simon','2022020101'),(null,'Amy','2022020102'),(null,'Tom','2022020103'),(null,'James','2022020103');-- 课程表的创建
create table course(id int auto_increment primary key comment '主键ID',name varchar(10) comment '课程名称'
) comment '课程表';
-- 课程表数据插入
insert into course values(null,'C++'),(null,'Java'),(null,'Python'),(null,'PHP'),(null,'MySQL');

结果运行如下:
在这里插入图片描述

在这里插入图片描述
可以看到上图的学生表和课程表已经创建好了,但是两张表之间好像没有任何关系,所以我们需要建立中间表来维护两张表之间的关系。

中间表建表语句和插入数据如下:

-- 学生课程中间表
create table student_course(id int auto_increment primary key comment '主键',studentid int not null comment '学生ID',courseid int not null comment '课程ID',constraint fk_courseid foreign key (courseid) references course(id),constraint fk_studentid foreign key (studentid) references course(id)
) comment '学生课程中间表';
insert student_course values (null,1,1),(null,1,2),(null,1,3),(null,2,2),(null,2,3),(null,3,4);

结果演示:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

一对一案例演示

下面来看一对一多表关系的案例介绍:
案例:用户与用户详情的关系。

一对一的多表关系多用于单表拆分,将一个表中的基础字段放在一张表中,其它详情字段放在另一个表中,以便提高工作效率。

多对多关系在数据库层面的实现方式:在任意一方加入外键,关联另一方的主键,并且设置外键为唯一的(UNIQUE),即唯一约束。

下面是建表和添加数据的SQL语句,请看:

-- 一对一案例介绍
create table tb_user(id int auto_increment primary key comment '主键ID',name varchar(10) comment '姓名',age int comment '年龄',gender char(1) comment '1:男,2:女',phone char(11) comment '手机号'
) comment '用户基本信息表';
insert into tb_user(id,name,age,gender,phone) values(null,'Daming',23,'1','18888000001'),(null,'Amy',22,'2','18888000002'),(null,'Simon',21,'1','18888000003'),(null,'Tom',25,'1','18888000004');create table tb_user_edu(id int auto_increment primary key comment '主键ID',degree varchar(20) comment '学历',major varchar(30) comment '专业',primaryschool varchar(30) comment '小学',middleschool varchar(50) comment '中学',university varchar(30) comment '大学',userid int unique comment '用户名ID',constraint fk_userid foreign key (userid) references tb_user(id)
) comment '用户教育信息表';
insert into tb_user_edu(id,degree,major,primaryschool,middleschool,university,userid) values(null,'本科','绘画','北京市第一小学','北京市第一中学','北京大学',1),(null,'大专','游戏','浙江第一小学','浙江第一中学','浙江大学',2),(null,'本科','棋盘','杭州第一小学','杭州第一中学','清华大学',3),(null,'研究生','编程','青岛第一小学','青岛第一中学','青岛大学',4);

语句运行结果如下:
在这里插入图片描述
在这里插入图片描述
注意,我们为tb_user_edu表中的userid建立了唯一约束,所以一条记录对应着一个用户的基本信息。

二、多表查询概述

多表查询顾名思义就是从多张表中查询数据。

通过多表查询,可以在关联的表之间建立联系,并从这些表中选择和过滤需要的数据。

笛卡尔积:笛卡尔乘积是两个集合A、B所有组合的情况。如下图:
在这里插入图片描述
所以我们在多表查询中需要消除无效的笛卡尔积。

我们通过下面的两张表(emp员工表和dept部门表进行演示),建表语句如下:

-- 部门表
create table dept(id int auto_increment primary key comment 'ID' ,name varchar(10) not null comment '部门名称'
) comment '部门表';-- 员工表
create table emp(id int auto_increment primary key,name varchar(10) not null comment '姓名',age int comment '年龄',job varchar(10) comment '工作',salary int comment '薪资',entrydate date comment '入职时间',managerid int comment 'BossID',dept_id int comment '部门ID'
) comment '员工表';-- 部门表数据插入
insert into dept(id,name) values(1,'研发部'),(2,'市场部'),(3,'财务部'),(4,'销售部'),(5,'总经办'),(6,'人事部');--员工表数据插入
insert into emp(id,name,age,job,salary,entrydate,managerid,dept_id) values(1,'Daming',18,'总经理',30000,'2010-9-12',null,5),(2,'Amy',19,'项目经理',15000,'2009-8-21',1,1),(3,'Simon',20,'后端开发',13000,'2008-8-7',2,1),(4,'David',21,'后端架构师',17000,'2007-7-9',2,1),(5,'Tom',23,'全栈',18000,'2004-8-6',3,1),(6,'Bob',18,'移动开发工程师',15000,'2001-7-30',2,1),(7,'高博',22,'Java架构师',20000,'1999-8-1',4,2),(8,'高翔',29,'前端工程师',10000,'2000-9-29',4,3),(9,'大明',27,'C++软件开发工程师',25000,'1995-9-2',4,2),(10,'Thame',24,'Go语言开发工程师',15000,'1999-5-20',1,2),(11,'Sam',26,'C++全栈开发师',20000,'2000-7-1',5,5),(12,'Jame',18,'安卓开发工程师',14000,'2003-5-1',4,3),(13,'James',29,'C++架构师',18000,'2000-8-9',3,2);-- 外键添加
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);

部门表和员工结果如下:
在这里插入图片描述
在这里插入图片描述

下面我们上述表为例来演示一下多表查询:
SQL语句:

select * from emp,dept where emp.dept_id = dept.id;

查询结果如下:
在这里插入图片描述

多表查询分类

多表查询主要分为两大类:连接查询和子查询。

其中连接查询主要分为三种:内连接、外连接、自连接。
内连接:用于查询A、B交集部分的数据。
外连接:分为左外连接(查询左表所有数据和A、B集合的交集部分的数据)和右外连接(查询右表所有数据和A、B集合的交集部分的数据)。
自连接:当前的表与自身的连接查询,自连接必须使用表别名。

三、内连接

内连接:查询的是两张表交集的部分。
内连接分为隐式内连接和显式内连接。

隐式内连接语法:

SELECT 字段列表 FROM1,2 WHERE 条件...;

显式内连接语法:

SELECT 字段列表 FROM1 [INNER] JOIN2 ON 连接条件...;

隐式内连接演示

案例:查询每一个员工的姓名以及该员工所关联部门的名称(隐式内连接演示)。
表结构:emp,dept
连接条件:emp.dept_id = dept.id;

隐式内连接查询语句:

select emp.name,dept.name from emp,dept where emp.dept_id = dept.id;

演示结果如下:
在这里插入图片描述

显式内连接演示

案例:查询每一个员工的姓名以及该员工所关联部门的名称(显式内连接实现)。
表结构:emp,dept
连接条件:emp.dept_id = dept.id;

显式内连接查询语句:

select emp.name,dept.name from emp inner join dept where emp.dept_id = dept.id;

查询结果如下:
在这里插入图片描述

四、外连接

外连接分为左外连接和右外连接。

左外连接:查询表1(左表)中的所有数据,这其中包含了表1和表2的交集部分的数据。

左连接

左外连接查询语法:

SELECT 字段列表 FROM1 LEFT [OUTER] JOIN2 ON 条件;

案例演示:查询emp表中的所有数据,和对应的部门信息(使用左外连接)。

查询语句

select emp.* ,dept.name from emp left outer join dept on emp.dept_id = dept.name;

查询结果如下:
在这里插入图片描述

右连接

右连接:查询表2(右表)中的所有数据,这其中包含了表1和表2的交集部分的数据。

右外连接查询语法:

SELECT 字段列表 FROM1 RIGHT [OUTER] JOIN2 ON 条件;

案例演示:查询dept表中的所有数据,和对应的员工信息(使用右外连接)。

查询语句:

select emp.*,dept.name from emp right outer join dept on emp.dept_id = dept.id;

查询结果如下:
在这里插入图片描述

五、自连接

子连接查询语法:

SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件...;

子连接查询可以是内连接查询,也可以是外连接查询。

下面来进行具体案例的举例:

案例1

案例1:查询员工及其所属领导的名字。

查询语句:

select a.name,b.name from emp a,emp b where a.id = b.managerid;

查询结果演示:
在这里插入图片描述

案例2

案例2:查询所有员工及其所属领导的名字,即使该员工没有所属领导,也需要查询出来。

查询语句:select a.name,b.name from emp a left outer join emp b on a.managerid = b.id;

查询结果如下:
在这里插入图片描述

六、联合查询

联合查询关键字:UNION、UNION ALL

联合查询就是把多次查询的结果合并起来,从而形成一个新的查询结果集。

联合查询语法:

SELECT 字段列表 FROM 表A...
UNION[ALL]
SELECT 字段列表 FROM 表B...;

案例演示:将薪资低于19000的员工和年龄超过25岁的员工全部查询出来。

查询语句:

select * from emp where salary < 19000
union all
select * from emp where age < 25;

查询结果如下(可以看到有18条记录):
在这里插入图片描述

如果想要查询结果进行去重的话,我们需要把关键字ALL去掉即可去重,请看:
在这里插入图片描述
可以看到去重之后的结果总共有11条记录。

联合查询注意事项:

  • 联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
  • union all会将全部的数据合在一起(并不会进行去重),而union会对合并后的数据进行去重

七、子查询

概念:SQL语句中嵌套着SELECT语句,称为嵌套查询,又称子查询。
格式如下:

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

注意:子查询的外部可以是INSERT/UPDATE/DELETE/SELECT中的任何一个。

根据子查询的结果不同,将子查询分为4类:

  • 标量子查询(子查询结果为单个值)
  • 列子查询(子查询结果为一列)
  • 行子查询(子查询结果为一行)
  • 表子查询(子查询结果为多列多行)

根据子查询位置,分为:WHERE之后FROM之后SELECT之后

7.1标量子查询

标量子查询的结果是单个值(数字、字符串、日期等),标量子查询是子查询中最为简单的一种形式。

标量子查询常用操作符= <> > < >= <=

下面我们来具体演示两个案例:

案例1

案例:查询市场部的所有员工信息。

解析:由于在emp表中是没有市场部这个部门名称的,所以我们把此问题拆分为两步:a.查询市场部的部门id b.根据部门id来查询员工信息

查询语句:

select * from emp where dept_id = (select id from dept where name = '市场部');

查询结果:
在这里插入图片描述

案例2

案例:查询在Tom入职之后的员工信息。

解析:依旧是分为两步走:a.查询Tom的入职时间 b.根据Tom的入职时间来查询员工信息

查询语句:

select * from emp where entrydate > (select entrydate from emp where name = 'Tom');

查询结果:
在这里插入图片描述

7.2列子查询

列子查询返回的结果是一列(可以是多行),将这种子查询称为列子查询。

列子查询常用操作符INNOT INALLANYSOME
在这里插入图片描述
我们接下来依旧是来通过案例来学习列子查询。

案例1

案例介绍:查询市场部和销售部的所有员工信息。

查询语句:

select * from emp where dept_id in(select id from dept where name = '市场部' or name = '销售部');

查询结果:
在这里插入图片描述

案例2

案例介绍:查询比市场部所有人工资都低的员工信息。

解析:如果将问题拆分的话会分为3步:a. 查询市场部的部门id b.根据市场部的部门id查询市场部人员的工资情况 c.根据市场部人员的工资情况来查询比市场部所有人工资都低的员工信息

查询语句1(拆分)

select id from dept where name = '市场部';
select salary from emp where dept_id = (select id from dept where name = '市场部');
select * from emp where salary < all(select salary from emp where dept_id = (select id from dept where name = '市场部'));

查询语句2(使用列子查询):

select * from emp where salary < all(select salary from emp where dept_id = (select id from dept where name = '市场部'));

查询结果
在这里插入图片描述

案例3

案例介绍:查询比研发部中任意一人工资高的员工信息。

查询语句:

select * from emp where salary > some(select salary from emp where dept_id = (select id from dept where name = '研发部'));

查询结果:
在这里插入图片描述

7.3行子查询

行子查询返回的是一行(可以是多列)。

行子查询常用操作符:=<>INNOT IN

案例

案例介绍:查询与Amy工资及直属领导相同的员工信息。

查询语句

select * from emp where (salary,managerid) = (select salary,managerid from emp where name = 'Amy'); 

查询结果
在这里插入图片描述

7.4表子查询

表子查询返回的是多行多列。

常用操作符:IN

案例1

案例介绍:查询与Amy和Tom职位和薪资相同的员工信息。

查询语句:

select * from emp where(job,salary) in(select job,salary from emp where name = 'Amy' or name = 'Tom');

查询结果:
在这里插入图片描述
哈哈,这里查询出来的结果依旧是Amy和Tom,并不是因为查询语句出错了,而是因为当时表中没有合适的数据。

案例2

案例介绍:查询入职时间是2000-1-1之后的员工信息以及部门信息。

查询语句:

select * from (select * from emp where entrydate > '2000-1-1') e left outer join dept d on e.dept_id = d.id;

查询结果:
在这里插入图片描述

好了,以上就是本文的全部内容。主要讲解了MySQL中的多表查询,其中包括连接查询和子查询。

就到这里吧,再见啦友友们!!!

相关文章:

【MySQL基础 | 中秋特辑】多表查询详细总结

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】&#x1f388; 本专栏旨在分享学习MySQL的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 一、多表…...

21天学会C++:Day14----模板

CSDN的uu们&#xff0c;大家好。这里是C入门的第十四讲。 座右铭&#xff1a;前路坎坷&#xff0c;披荆斩棘&#xff0c;扶摇直上。 博客主页&#xff1a; 姬如祎 收录专栏&#xff1a;C专题 目录 1. 知识引入 2. 模板的使用 2.1 函数模板 2.2 类模板 3. 模板声明和定义…...

MQ - 32 基础功能:消息查询的设计

文章目录 导图概述什么时候会用到消息查询消息队列支持查询的理论基础消息数据存储结构关于索引的一些知识点内核支持简单查询根据 Offset 查询数据根据时间戳查询数据根据消息 ID 查询数据借助第三方工具实现复杂查询第三方引擎支持查询工具化简单查询总结导图 概述 从功能上…...

c语言练习66:模拟实现offsetof

模拟实现offsetof #define offsetof(StructType, MemberName) (size_t)&(((StructType *)0)->MemberName) StructType是结构体类型名&#xff0c;MemberName是成员名。具体操作方法是&#xff1a; 1、先将0转换为一个结构体类型的指针&#xff0c;相当于某个结构体的首…...

数据库缓存服务器集群 redis集群

redis 提升数据库性能&#xff0c;缓解数据库压力 2.NoSql产品 产品: redis,mongodb,memcached 名词解释&#xff1a;非关系型数据库 以键值对的方式存储数据---&#xff08;Key-Value&#xff09;的形式 3.NoSql的优点 高可扩展性 分布式计算 低成本 架构的灵活性&…...

[密码学入门]仿射密码(Affine)

加密算法y(axb)mod N 解密算法x*(y-b)mod N(此处的为a关于N的乘法逆元&#xff0c;不是幂的概念&#xff09; 如何求&#xff0c;涉及的知识挺多&#xff0c;还没想好怎么写&#xff0c;丢番图方程&#xff0c;贝祖定理&#xff08;又译裴蜀定理&#xff09;&#xff0c;扩展欧…...

【Maven】SpringBoot多模块项目利用reversion占位符,进行版本管理.打包时版本号不能识别问题

问题原因&#xff1a; 多模块项目使用reversion点位符进行版管理&#xff0c;打包时生成的pom文件未将 {reversion}占位符替换为真实版本号。 而当子模块被依赖时&#xff0c;引入的pom文件中版本号是&#xff1a;{reversion}。而根据这个版本号去找相应父模块时肯定是找不到的…...

Vue watch实时计算器

watch实时计算器 可以自己选择、-、*、 参考代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title><script src"https://cdn.bootcdn.net/ajax/libs/vue/2.7.10/vue.js"></script>…...

Java中的super关键字

super 是Java中的一个关键字&#xff0c;它可以用来引用当前对象的父类&#xff08;超类&#xff09;的成员变量或方法。主要有以下用途&#xff1a; 访问父类的成员变量&#xff1a; 当子类和父类中有同名的成员变量时&#xff0c;可以使用super关键字来访问父类的成员变量。 …...

MySQL数据库入门到精通6--进阶篇(锁)

5. 锁 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决…...

js的继承

一、原型链继承 将父类的实例作为子类的原型 function Father(){this.name Tony }function Son() {}Son.prototype new Father()let son new Son();console.log(son.name) // Tony缺点&#xff1a; 父类所有的引用类型属性都会被所有子类共享&#xff0c;一个子类修改了属…...

HONEYWELLL 05701-A-0325 控制脉冲模块

运动控制&#xff1a; HONEYWELLL 05701-A-0325 控制脉冲模块可以用于运动控制应用&#xff0c;例如控制步进电机或伺服电机&#xff0c;以实现精确的位置和速度控制。 定位系统&#xff1a; 在自动化设备和机器人中&#xff0c;这些模块可以用于确定物体的位置和方向&#xf…...

Qt扩展-QCustomPlot 简介及配置

QCustomPlot 简介及配置 一、概述二、安装教程三、帮助文档的集成 一、概述 QCustomPlot是一个用于绘图和数据可视化的Qt 控件。它没有进一步的依赖关系&#xff0c;并且有良好的文档记录。这个绘图库专注于制作好看的、发布质量的2D绘图、图形和图表&#xff0c;以及为实时可…...

python教程:selenium WebDriver 中的几种等待--sleep(),implicitly_wait(),WebDriverWait()

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 强制等待:sleep() import time sleep(5) #等待5秒设置固定休眠时间&#xff0c;单位为秒。 由python的time包提供, 导入 time 包后就可以使用。’ 缺点&#xff1a; 不…...

从裸机开始安装操作系统

目录 一、预置知识 电脑裸机 win10版本 官方镜像 V.S. 正版系统 二、下载微软官方原版系统镜像 三、使用微PE系统维护U盘 四、安装操作系统 五、总结 一、预置知识 电脑裸机 ●只有硬件部分&#xff0c;还未安装任何软件系统的电脑叫做裸机。 ●主板、硬盘、显卡等必…...

redhat 6.1 测试环境安装 yum

redhat 6.1 测试环境安装 yum 记录 1. 新建虚拟机 1.1 自定义建立虚拟机 自定义创建新的虚拟机 选择硬件兼容性 创建空白硬盘&#xff0c;稍后选择 iso 文件创建系统。 选择操作系统类型 为虚拟机命名 选择处理器配置 选择虚拟机内存 选择虚拟机网络类型 选择…...

WARNING:tensorflow:Your input ran out of data; interrupting training. 解决方法

问题详情&#xff1a; WARNING:tensorflow:Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least steps_per_epoch * epochs batches (in this case, 13800 batches). You may need to use the repeat() funct…...

ChunJun(OldNameIsFlinkX)

序言 ChunJun主要是基于Flink实时计算框架,封装了不同数据源之间的数据导入与导出功能.我们只需要按照ChunJun的要求提供原始与目标数据源的相关信息给Chunjun,然后它会帮我们生成能运行与Flink上的算子任务执行,这样就避免了我们自己去根据不同的数据源重新编辑读入与读出的方…...

MySQL的时间差函数、日期转换计算函数

MySQL的时间差函数(TIMESTAMPDIFF、DATEDIFF)、日期转换计算函数(date_add、day、date_format、str_to_date) 时间差函数&#xff08;TIMESTAMPDIFF、DATEDIFF&#xff09; 需要用MySQL计算时间差&#xff0c;使用TIMESTAMPDIFF、DATEDIFF&#xff0c;记录一下实验结果 --0 …...

【神印王座】悲啸洞穴之物揭晓,圣采儿差点被骗,幸好龙皓晨聪明

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析神印王座。 神印王座动漫现阶段已经出到龙皓晨等人接取新任务深入魔族地界的阶段&#xff0c;而龙皓晨等人接取的任务想必现在大家都知道了&#xff0c;那就是探索魔族地界中的悲啸洞穴。但是大家知道悲啸洞穴里面藏着什么…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...