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

【MySQL】复合查询与内外连接

目录

一、复合查询

1、基本查询回顾:

2、多表查询:

3、自连接:

4、子查询:

单列子查询

多行子查询:

多列子查询:

在from语句中使用子查询:

5、合并查询:

union:

union all:

二、内外连接:

1、内连接:

2、外连接:

左外连接:

右外连接:


这里依然是使用经典数据表:员工表(emp)、部门表(dept)和工资等级表(salgrade)

如下是员工表,分别是empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno所属部门编号

如下是部门表,分别是deptno部门编号,dname部门名称,loc部门所在地

如下是薪资等级:

一、复合查询

1、基本查询回顾:

查询工资高于500或岗位为MANAGER的员工,同时还要满足他们的名字的首字母大写的J

select * from emp where (sal>500 or job='MANAGER') and ename like 'J%';

除了用模糊匹配,还有字符串切割也可以

select * from emp where (sal>500 or job='MANAGER') and substring(ename,1,1)='J';

查询员工信息,按部门号升序而员工工资降序显示

select ename,sal,deptno from emp order by deptno asc ,sal desc;

查询员工信息,按年薪降序显示

select * from emp order by 12*sal+ifnull(comm,0) desc;

员工的年薪为月工资*12+年终奖,但是这里不能够直接12*sal+comm,因为comm可能为NULL,此时如果用NULL运算就会使结果为空

所以需要使用函数ifnull,如果comm为NULL就将其设置为0

查询工资最高的员工的姓名和岗位

首先查看工资最高是谁,这里使用聚合函数:

select max(sal) from emp;

当查询到最高工资的人后,可以将这个结果放到where语句中作为判断条件,也就是说where语句中可以进行查询:

select ename,job from emp where sal=(select max(sal) from emp);

查询工资高于平均工资的员工信息

首先依然是查询员工的平均工资:

select avg(sal) from emp;

接着将这个语句嵌套在where中作为判断:

select * from emp where sal>(select avg(sal) from emp);

查询每个部门的平均工资和最高工资

既然是每个部门,就需要进行分组

select deptno,avg(sal) 平均工资,max(sal) 最高工资 from emp group by deptno;

查询平均工资低于2000的部门号和它的平均工资

select deptno,avg(sal) 平均工资 from emp group by deptno having avg(sal)<2000;

这里因为是进行分组查询,不能使用where,需要使用having来进行条件判断

查询每种岗位的雇员总数和平均工资

人数用count()函数进行统计

select job,count(*) 人数,avg(sal) 平均工资 from emp group by job;

2、多表查询:

在上述基本查询中,都是在单表中进行查询的,但是在实际开发中,更多的是多个表综合起来进行查询的,这就叫做多表查询

笛卡尔积:
在进行多表查询的时候,将多个表名放在from后面并用逗号隔开,这是,MySQL就会对这些表取笛卡尔积,组成一张新表

进行笛卡尔积转化后:

笛卡尔积的本质是拿着第一张表的信息 依次 和第二张表的所有信息进行组合,这样形成地一张表

多表查询的本质:对给的多张表取笛卡尔积,然后对笛卡尔积后的表进行查询

在进行笛卡尔积的多张表中可能会存在相同的列名,这时在选中列名时需要通过(表名.列明)的方式进行指明

显示雇员名,雇员工资以及所在部门的名字

这里雇员名和雇员工资是在同一张表中的,但是所在部门名字是在另一张表中的,所以需要对这两张表进行笛卡尔积,然后在进行查询即可

通过上述图片可以看到,比如Smith他的部门号有两个,这里是取相等的,其他的就是没有意义的数据,所以需要进行初步筛选:

select * from emp,dept where emp.deptno=dept.deptno;

最后在将*修改为所需即可

select ename,sal,dname from emp,dept where emp.deptno=dept.deptno;

显示部门号为10的部门名、员工名和员工工资

这里部门名和其他是在不同的表中的

select dname,ename,sal from emp,dept where emp.deptno=dept.deptno and emp.deptno=10;

显示各个员工的姓名、工资和工资级别

这里工资级别和其他是不同的表中:

需要where增加的条件是工资处于最低和最高之间工资筛选出来,才有意义

3、自连接:

自连接是在同一张表进行连接查询,也就是说对同一张表进行取笛卡尔积,

显示员工FORD的上级领导的编号和姓名

子查询解决:

首先找到FORD的上级领导的编号,

select mgr from emp where ename='FORD';

接着通过嵌套找到对应编号的姓名

select empno,ename from emp where empno=(select mgr from emp where ename='FORD');

自连接解决:

员工表中的mgr字段能够将表中员工的信息和员工领导的信息关联起来

mysql> select leader.empno,leader.ename from emp leader,emp worker-> where worker.ename='FORD' and leader.empno=worker.mgr;

这里是对同一张表进行取笛卡尔积的,所以需要对其取别名来区别开来

4、子查询:

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询

子查询可分为单行子查询,多行子查询,多列子查询,以及在from子句中使用的子查询

单列子查询

显示SMITH同一部门的员工

首先显示SMITH的部门

select deptno from emp where ename='SMITH';

接着将这个语句嵌套在where判断中,作为嵌套的子语句,再来查询对应的员工

select * from emp where deptno=(select deptno from emp where ename='SMITH') and ename<>'SMITH';

多行子查询:

回多行单列数据的子查询

in关键字:查询和 10 号部门的工作岗位相同的雇员的名字,岗位,工资,部门号,但是不包含 10 自己的

首先查询10号部门的工作岗位,这里要进行去重,因为可能不同的人在同一个部门有着相同的工作岗位

这里查出来和之前不同的是这里查询的是单列多行的,只要岗位和这里面一个相同就可以,用in关键字

select ename,job,sal,deptno from emp where job in(select distinct job from emp where deptno=10) and deptno<>10;

all关键字:显示工资比30号部门的所有员工的工资高的员工的姓名、工资和部门号

先查询30号部门的所有员工的工资,因为工资可能相等,所以这里最好去重

接着在进行嵌套,为了保证所查出来的工资比30号部门的所有员工的工资高,这里使用all关键字

any关键字:显示工资比30号部门的任意员工的工资高的员工的姓名、工资和部门号,包含30号部门的员工

首先查询30号部门的员工的工资:

select distinct sal from emp where deptno=30;

接着通过关键字any进行员工的查看:

select ename,sal,deptno from emp where sal>any(select distinct sal from emp where deptno=30);

多列子查询:

这是返回多列多行的查询

显示和SMITH的部门和岗位完全相同的员工,不包含SMITH本人

首先显示SMITH的部门和岗位:

select deptno,job from emp where ename='SMITH';

接着通过复合查询,将上述的查询放在where后面作为子查询

这里是采用的多列查询,所以在where后面匹配的时候通过括号进行多列匹配,并且在后面记得保证名字不能为SMITH

也就是说,多列子查询在where匹配的时候要用括号将多列数据进行比较,并且如果数据是多行的,也可以使用in,all,any关键字

在from语句中使用子查询:

我们知道from后面跟着的是表,在MySQL下一切皆表,所以可以将一个查询结果当做临时表,放在from语句的后面

显示每个高于自己部门平均工资的员工的姓名、部门、工资和部门的平均工资

首先查询每一个部门其自己的平均工资:

select deptno,avg(sal) from emp group by deptno;

接着将如上表和员工表取笛卡尔积,然后再通过部门号相等删除部分无效数据,最后where筛选出高于自己部门平均工资的员工的数据

mysql> select ename,emp.deptno,sal,平均工资-> from emp,(select deptno,avg(sal) 平均工资 from emp group by deptno) newtable-> where emp.deptno=newtable.deptno and sal>平均工资;

注意:在from子句的查询中,必须给子查询所生成的临时表取一个别名,否则查询结果会出错找不到对应的字段,并且如果两张表中有相同的字段,要指定其是在哪张表的,否则也会报错

显示每个部门工资最高的员工的姓名、工资、部门和部门的最高工资

首先查询每个部门的最高工资的员工:

select deptno,max(sal) from emp group by deptno;

接着将上述表和员工表进行笛卡尔积,在进行筛选即可

mysql> select ename,sal,emp.deptno,最高工资-> from emp,(select deptno,max(sal) 最高工资 from emp group by deptno) newtable-> where emp.deptno=newtable.deptno and sal=最高工资;

5、合并查询:

为了合并多个select查询结果,可以通过操作符union和union all进行合并查询

union:

用于取得两个查询结果的并集,union会自动去掉结果集中的重复行

显示工资大于2500或职位是MANAGER的员工

首先查询工资大于2500员工:

select * from emp where sal>2500;

接着查询职位是MANAGER的员工:

select * from emp where job='MANAGER';

为了完成上述,可以使用or关键字:

select * from emp where sal>2500 or job='MANAGER';

或者使用union关键字:

select * from emp where sal>2500 union select * from emp where job='MANAGER';

union all:

该操作符用于取得两个结果集的并集,与union不同的是,这个不会对结果进行去重:

select * from emp where sal>2500 union all select * from emp where job='MANAGER';

注意:待合并的两个查询结果的列的数量必须一致,否则无法合并

二、内外连接:

表的连接分为内连接和外连接

1、内连接:

内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前面学习的查询都是内连接,也是在开发过程中使用的最多的连接查询

语法:

select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;
显示 SMITH 的名字和部门名称

其实完成上述查询可以不使用内连接,用以前学习的已经够了,只是内连接能够让我们的查询逻辑更清楚

在上述的查询中,我们可以使用以前学习的笛卡尔积

select emp.ename,dept.dname from emp,dept where emp.deptno=dept.deptno and emp.ename='SMITH';

除了笛卡尔积这种写的方式,我们还可以用内连接的写法:

select ename,dname from emp inner join dept on emp.deptno=dept.deptno and ename='SMITH';

2、外连接:

左外连接:

如果想让左侧的表完全显示,右侧的表如果和左侧的表没有匹配的就去掉,就使用左外连接,其语法和内连接一模一样只是将inner这个关键字修改为left

select 字段 from 表1 left join 表2 on 连接条件 and 其他条件;

示例:

首先创建一个测试表:

查询所有学生的成绩,如果这个学生没有成绩,也要将学生的个人信息显示出来
select * from stu left join exam on stu.id=exam.id;

尽管在exam这个右侧表中,没有王五赵六的成绩信息,但是他们仍然被显示出来了,左连接更偏向于左边的表

右外连接:

右外连接和左外连接就是相反的了,比如上述要求我们改为:

查询所有成绩,如果这个成绩没有对应的学生,也要将这个成绩显示出来

select * from stu right join exam on stu.id=exam.id;

但事实上,左外连接和右外连接是可以相互转换的

相关文章:

【MySQL】复合查询与内外连接

目录 一、复合查询 1、基本查询回顾&#xff1a; 2、多表查询&#xff1a; 3、自连接&#xff1a; 4、子查询&#xff1a; 单列子查询 多行子查询&#xff1a; 多列子查询&#xff1a; 在from语句中使用子查询&#xff1a; 5、合并查询&#xff1a; union&#xff1…...

第3篇:请求参数处理与数据校验

在 Web 开发中&#xff0c;请求参数处理与数据校验是保障系统稳定性的第一道防线。本文将深入探讨 Egg.js 框架中参数处理的完整解决方案&#xff0c;涵盖常规参数获取、高效校验方案、文件流处理等核心功能&#xff0c;并分享企业级项目中的最佳实践。 一、多场景参数获取策略…...

Android JIT编译:adb shell cmd package compile选项

Android JIT编译&#xff1a;adb shell cmd package compile选项 例如&#xff1a; adb shell cmd package compile -m speed -f --full 包名 配置参数指令说明&#xff1a; compile [-r COMPILATION_REASON] [-m COMPILER_FILTER] [-p PRIORITY] [-f] [--primary-dex] …...

排序算法——冒泡排序

一、介绍 「冒泡排序bubblesort」通过连续地比较与交换相邻元素实现排序。这个过程就像气泡从底部升到顶部一样&#xff0c;因此得名冒泡排序。 冒泡过程可以利用元素交换操作来模拟&#xff1a;从数组最左端开始向右遍历&#xff0c;依次比较相邻元素大小&#xff0c;如果“左…...

文献阅读篇#5:5月一区好文阅读,BFA-YOLO,用于建筑信息建模!(上)

期刊简介&#xff1a;《Advanced Engineering Informatics》创刊于2002年&#xff0c;由Elsevier Ltd出版商出版&#xff0c;出版周期Quarterly。该刊已被SCIE数据库收录&#xff0c;在中科院最新升级版分区表中&#xff0c;该刊分区信息为大类学科工程技术1区&#xff0c;2023…...

工行手机银行安全吗?在应用商店下载工商银行安全吗?

现在很多的人都会用手机银行&#xff0c;其中工行的使用几率也是比较高的&#xff0c;但大家在使用的过程中就会比较关心使用工行手机银行是否安全。如果直接在应用商店下载&#xff0c;是否有安全保障&#xff1f; 工行的手机银行会拥有较高的保障&#xff0c;从技术到服务都可…...

python如何word转pdf

在Python中&#xff0c;将Word文档&#xff08;.docx或.doc&#xff09;转换为PDF可以通过多种库实现。以下是几种常见的方法及详细步骤&#xff1a; 方法1&#xff1a;使用 python-docx comtypes&#xff08;仅Windows&#xff0c;需安装Word&#xff09; 适用于Windows系统…...

在阿里云 Ubuntu 24.04 上部署 RabbitMQ:一篇实战指南

前言 RabbitMQ 是业界常用的开源消息中间件,支持 AMQP 协议,易于部署、高可用、插件丰富。本文以阿里云 ECS 上运行的 Ubuntu 24.04 LTS 为例,手把手带你完成 RabbitMQ 从仓库配置到运行的全流程,并分享在国内环境下常见的坑与对应解决方案。 环境概况 操作系统:Ubuntu …...

Linux Shell 重定向与管道符号(>, >>, |)的实现机制

文章目录 Linux Shell 重定向与管道符号&#xff08;>, >>, |&#xff09;的实现机制一、重定向基础&#xff1a;dup2() 的核心作用二、输出重定向的实现原理>&#xff08;覆盖重定向&#xff09;>>&#xff08;追加重定向&#xff09; 三、| 管道符的实现原…...

GitHub 趋势日报 (2025年04月30日)

本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ &#x1f4c8; 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1hacksider/Deep-Live-Camreal time face swap and one-click video deepfake with only a single image⭐ 1686⭐ 54925Python2Qwe…...

计算机操作系统知识集合

主要来自小林coding 硬件结构 cpu位宽 如果用 32 位 CPU 去加和两个 64 位大小的数字&#xff0c;就需要把这 2 个 64 位的数字分成 2 个低位 32 位数字和 2 个高位 32 位数字来计算&#xff0c;先加个两个低位的 32 位数字&#xff0c;算出进位&#xff0c;然后加和两个高位…...

PostgreSQL数据类型

数据类型 数值类型 整数类型 SMALLINT 小范围整数&#xff0c;取值范围&#xff1a;-32768 ~ 32767 INT&#xff08;INTEGER&#xff09; 普通大小整数&#xff0c;取值范围&#xff1a;-2147483648 ~ 2147483647 浮点数类型 REAL 6位十进制数字精度 NUMERIC(m, n) 任意精度…...

在Linux中,KVM和Docker在Linux虚拟化中的区别是什么?

KVM&#xff08;Kernel-based Virtual Machine&#xff09;和Docker是Linux环境中两种不同的虚拟化技术&#xff0c;它们在实现原理、资源隔离程度、应用场景等方面存在显著区别&#xff1a; 实现原理与技术层级 KVM&#xff1a;KVM是一种基于硬件辅助虚拟化的全虚拟化技术&a…...

【docker学习笔记】如何删除镜像启动默认命令

一些镜像会在它打镜像时&#xff0c;加入一些默认的启动命令&#xff0c;可以通过docker inspect \<image id\>来查看Entrypoint。如下图&#xff0c;docker run启动时&#xff0c;会默认执行 "python3 -m vllm.entrypoints.openai.api_server" 如果不想执行&…...

c语言 39.0625转为16进制

c语言 39.0625转为16进制 寄存器的4&#xff5e;15对应整数部分 39为整数部分 39 &#xff08;10进制&#xff09; 0x27&#xff08;16进制&#xff09; 寄存器的0&#xff5e;3对应小数部分 0.0625为小数部分 0.0626 1/16 则0&#xff5e;3位十六进制值应为 0x1 39.06250…...

【阿里云大模型高级工程师ACP习题集】2.8 部署模型

习题集: 以下关于直接调用模型(无需部署)的说法,错误的是?【单选题】 A. 无需部署模型,只需简单调用API B. 按token量计费,无需担心模型部署的资源消耗 C. 可随意调用,没有任何限制 D. 适合业务初期或中小规模场景 使用vLLM部署模型时,若出现端口被占用的情况,以下做…...

【进阶】--函数栈帧的创建和销毁详解

目录 一.函数栈帧的概念 二.理解函数栈帧能让我们解决什么问题 三.相关寄存器和汇编指令知识点补充 四.函数栈帧的创建和销毁 4.1.调用堆栈 4.2.函数栈帧的创建 4.3 函数栈帧的销毁 一.函数栈帧的概念 --在C语言中&#xff0c;函数栈帧是指在函数调用过程中&#xff0c;…...

猫,为什么是猫?

英语单词 cat&#xff0c;意为猫&#xff1a; cat n.猫 根据首字母象形原则&#xff0c;通常我们喜欢将首字母C&#xff0c;解释为猫爪&#xff0c;C的形象&#xff0c;通常可解释为字母K的右侧的中间凹陷部分&#xff0c;K | <&#xff0c;也就是 C 和 < 相通&#…...

数字智慧方案6169丨智慧医院后勤管理解决方案(58页PPT)(文末有下载方式)

资料解读&#xff1a;智慧医院后勤管理解决方案 详细资料请看本解读文章的最后内容。 在当今万物互联的时代&#xff0c;传统医院后勤管理模式逐渐暴露出诸多弊端&#xff0c;已难以适应医院集团化发展的需求。这份智慧医院后勤管理解决方案资料&#xff0c;深入剖析了传统管理…...

经济学和奥地利学派的起源

&#xff08;一&#xff09;经济学和奥地利学派的起源&#xff1a; 早期思想&#xff1a; 亚当斯密被认为是现代经济学的鼻祖&#xff0c;但早期的亚里士多德、柏拉图以及中国的《管子》等著作也包含经济学思想&#xff0c;但更偏向财政学。 亚当斯密之前的学者&#xff1a; 坎…...

Linux安全清理删除目录bash脚本

直接写清除目录命令可能会因为一时手抖导致删除重要目录 rm -rf是个危险的命令&#xff0c;我写了bash脚本&#xff0c;放在环境变量目录下可以当系统命令来用 这里是单线程的&#xff0c;如果需要更高的性能&#xff0c;需要加入多线程的支持。 1.实现功能 清理目录的子内容…...

C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 17)

&#x1f381;个人主页&#xff1a;工藤新一 &#x1f50d;系列专栏&#xff1a;C面向对象&#xff08;类和对象篇&#xff09; &#x1f31f;心中的天空之城&#xff0c;终会照亮我前方的路 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 文章目录 二…...

Lucene并不是只有倒排索引一种数据结构,支持多种数据结构

Lucene 的核心机制确实以**倒排索引&#xff08;Inverted Index&#xff09;**为核心&#xff0c;但它并不是“全部”都依赖倒排索引。Lucene 的索引结构中还包含其他辅助数据结构&#xff0c;用于支持不同的查询场景。以下是详细的解释&#xff1a; 1. 核心机制&#xff1a;倒…...

使用Docker一键安装SigLens:简单快捷的日志分析解决方案

在当今复杂的IT环境中,高效的日志管理和分析变得越来越重要。SigLens作为一款强大的开源日志分析工具,为开发者和运维人员提供了直观、高效的日志处理体验。本文将介绍如何使用Docker快速安装SigLens,让您在几分钟内就能开始进行日志分析。 为什么选择Docker安装SigLens? Do…...

【Linux】线程池和线程补充内容

个人主页~ 线程池 一、线程池简介单例模式线程池简介 二、单例模式线程池的实现1、ThreadPool.hpp2、Task.hpp3、main.cpp 三、其他常见锁读写锁 一、线程池简介 池化技术我们并不陌生&#xff0c;我们在前面的文章中实现过进程池&#xff0c;这里线程池的作用也是先申请资源交…...

vue3内置组件Suspense的使用

Suspense 实验性功能<Suspense> 是一项实验性功能。它不一定会最终成为稳定功能&#xff0c;并且在稳定之前相关 API 也可能会发生变化 <Suspense> 是一个内置组件&#xff0c;用来在组件树中协调对异步依赖的处理。它让我们可以在组件树上层等待下层的多个嵌套异…...

怪物猎人:世界-冰原10000+mod整合包5月最新更新!

700A大全套精美服装 800M大全套精美服装 3月31日更新 新增 新武器 新特效MOD 当前共计5800MOD整合包 好看的发型mod 实用的功能mod 炫酷的武器mod 新服装新特效新武器实用模组美化&#xff0c;等。 1月14日更新 新增皮肤MOD 500 当前共计2000MOD 1月16日更新 新增超…...

题解:洛谷 CF2091E Interesting Ratio

思路推导 我们先对 32 32 32 和 96 96 96 进行二进制拆分。 相同部分&#xff08;用 α \alpha α 表示&#xff09;&#xff1a; 5 5 5 个 2 2 2。 不同部分&#xff08;用 β \beta β 表示&#xff09;&#xff1a; 1 1 1 和 3 3 3。 gcd ⁡ ( 32 , 96 ) \gcd(32,9…...

PETR和位置编码

PETR和位置编码 petr检测网络中有2种类型的位置编码。 正弦编码和petr论文提出的3D Position Embedding。transformer模块输入除了qkv&#xff0c;还有query_pos和key_pos。这里重点记录下query_pos和key_pos的生成 query pos的生成 先定义reference_points, shape为(n_query…...

《社交类应用开发:React Native与Flutter的抉择》

社交类应用以令人目不暇接的速度更新迭代。新功能不断涌现&#xff0c;从更智能的算法推荐到多样化的互动形式&#xff0c;从增强的隐私保护到跨平台的无缝体验&#xff0c;每一次更新都旨在满足用户日益增长且多变的需求。面对如此高频的更新需求&#xff0c;选择合适的跨端框…...

多模态大语言模型arxiv论文略读(五十三)

Red Teaming GPT-4V: Are GPT-4V Safe Against Uni/Multi-Modal Jailbreak Attacks? ➡️ 论文标题&#xff1a;Red Teaming GPT-4V: Are GPT-4V Safe Against Uni/Multi-Modal Jailbreak Attacks? ➡️ 论文作者&#xff1a;Shuo Chen, Zhen Han, Bailan He, Zifeng Ding, …...

POI从入门到上手(三)-轻松完成EasyExcel使用,完成Excel导入导出.

前言: Apache POI 是一个流行的 Java 库&#xff0c;用于处理 Microsoft Office 格式文件&#xff0c;提供丰富 API 来创建、读取和修改 Office 文档。 1.官网&#xff1a;Apache POI™ - the Java API for Microsoft Documents 2.优点&#xff1a;功能强大&#xff0c;可处…...

使用Delphi 和 CrossVcl 开发基于VCL的 macOS 和 Linux 应用程序简介

CrossVcl 快速入门 大家都知道delphi可以开发linux程序&#xff0c;更多的是知道FMXLinux开发基于FMX的程序&#xff0c;这里给大家介绍使用 Embarcadero Delphi 和 CrossVcl 开发基于VCL的 macOS 和 Linux 应用程序。 概述 CrossVcl 是一个工具链&#xff0c;允许使用 Emb…...

Android Kotlin 项目完整集成 Bugly 异常监控指南

Android Kotlin 项目集成 Bugly 异常监控完整指南 一、Bugly 简介 Bugly 是腾讯提供的专业移动应用异常监控平台&#xff0c;支持&#xff1a; 崩溃报告&#xff08;Java/Native&#xff09;错误分析性能监控热更新功能&#xff08;需额外配置&#xff09; 二、集成步骤 1…...

C++使用accumulate函数对数组进行快速求和

C使用accumulate函数对数组进行快速求和 一、普通数组 1.1方法&#xff1a; 1.先求出数组的长度&#xff1a; int size sizeof(arr) / sizeof(arr[0]); 2.使用指针作为迭代器调用accumulate函数&#xff1a;int sum std::accumulate(arr, arr size, 0); 3.注意带上头文…...

【音视频】RTMP流媒体服务器搭建、推流拉流

服务器&#xff1a;SRS(Simple RTMP Server&#xff0c;⽀持RTMP、HTTP-FLV&#xff0c;HLS) 推流端&#xff1a;ffmpeg OBS 拉流端&#xff1a;ffplay VLC srs播放器 1 安装和测试srs流媒体服务器 1.1 安装srs流媒体服务器 srs官⽹&#xff1a;https://github.com/ossrs/…...

React Router

为什么需要路由&#xff1f; 单页应用&#xff08;SPA&#xff09;&#xff1a;在单页面中实现多视图切换&#xff0c;避免整页刷新。 核心功能&#xff1a; 根据 URL 路径渲染对应组件。 实现页面间导航&#xff08;前进、后退、跳转&#xff09;。 支持动态路由、嵌套路由…...

加载ko驱动模块:显示Arm版本问题解决!

1、问题 驱动模块加载&#xff0c;使用命令&#xff1a;modprobe chrdevbase.ko 时出现&#xff1a; hrdevbase: version magic 4.1.15 SMP preempt mod_unload modversions ARMv6 p2v8 ’ should be 4.1.15 SMP preempt mod_unload modversions ARMv7 p2v8 ’ ———————…...

OpenGL-ES 学习(9) ---- OpenGL-ES 简介和基本 Pipeline

目录 OpenGL-ES 简介渲染管线顶点和顶点着色器图元装配和光栅化片段和片段着色器逐片段操作EGL OpenGL-ES 简介 OpenGL-ES(OpenGL for Embedded System)是以手持和嵌入式设备为目标的高级3D图形应用编程接口&#xff0c;OpenGL ES 支持的的平台包括 IOS&#xff0c;Android&am…...

计算机视觉(CV)技术的优势和挑战(本片为InsCode)

计算机视觉&#xff08;CV&#xff09;技术是一种利用计算机和算法来模拟人类视觉实现图像和视频处理的技术。它在各个领域都有着广泛的应用&#xff0c;具有许多优势和挑战。 优势&#xff1a; 自动化&#xff1a;CV 技术可以自动识别、分类、跟踪和分析图像和视频数据&…...

Unity 几种主流的热更新方式

一、AssetBundle 资源热更 核心原理 将游戏资源打包为 AssetBundle 文件 运行时动态加载更新的 AssetBundle 实现步骤 资源标记&#xff1a;在 Unity Editor 中设置资源的 AssetBundle 属性 打包生成&#xff1a;使用 BuildPipeline.BuildAssetBundles 生成 AB 包 版本管…...

小结:ipsec-ike

IPSec 手动配置与自动配置&#xff08;IKE动态协商&#xff09; 手动配置IPSec 逻辑图 #mermaid-svg-eNMnNEwnoTjF8fkV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-eNMnNEwnoTjF8fkV .error-icon{fill:#552222;}…...

基于大模型预测的输尿管癌诊疗全流程研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、大模型预测输尿管癌的原理与方法 2.1 大模型技术概述 2.2 用于输尿管癌预测的大模型选择 2.3 数据收集与处理 2.4 模型训练与优化 三、术前风险预测与手术方案制定 3.1 术前风险预测指标 3.2 大模型预测…...

Python Cookbook-6.14 实现状态设计模式

任务 你希望你程序中的某个对象能在不同的“状态”之间切换&#xff0c;而且该对象的行为方式也能随着状态的变化而变化。 解决方案 状态设计模式的关键思路是将“状态”(带有它自身的行为方式)对象化&#xff0c;使其成为一个类实例(带有一些方法)。在Python中&#xff0c;…...

2025智能体的发展趋势

以下是2025年智能体的一些主要发展趋势&#xff1a; 技术能力提升 多模态融合深化&#xff1a;智能体将能够更加自然地处理和理解多种模态的数据&#xff0c;如文本、图像、语音、视频等&#xff0c;实现跨模态的感知、理解和生成。这将使智能体在复杂场景下的应用更加广泛和…...

PCA主成分分析法(最大投影方差,最小重构距离,SVD角度)

统计分析中&#xff0c;数据的变量之间可能存在相关性&#xff0c;以致增加了分析的难度。于是&#xff0c;考虑由少数不相关的变量来代替相关的变量&#xff0c;用来表示数据&#xff0c;并且要求能够保留数据中的大部分信息。 在信号处理领域,信号具有较大方差,噪声具有较小…...

《数据结构初阶》【顺序表/链表 精选15道OJ练习】

《数据结构初阶》【顺序表/链表 精选15道OJ练习】 前言&#xff1a;---------------顺序表OJ练习---------------[26. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/)题目介绍方法一&#xff1a; [27. 移除元素](https://leetco…...

Python协程入门指北

一、什么是协程&#xff1f; 协程&#xff08;Coroutine&#xff09;就像可以暂停执行的函数&#xff0c;能够在执行过程中主动让出控制权&#xff0c;等准备好后再继续执行。 生活小例子 想象你在咖啡店排队&#xff1a; 普通函数&#xff1a;必须一直排到取餐&#xff08…...

Nginx 核心功能02

目录 一、引言 二、正向代理 &#xff08;一&#xff09;正向代理基础概念 &#xff08;二&#xff09;Nginx 正向代理安装配置 &#xff08;三&#xff09;正向代理配置与验证 三、反向代理 &#xff08;一&#xff09;反向代理原理与应用场景 &#xff08;二&#xf…...

c++题目_P1027 [NOIP 2001 提高组] Car 的旅行路线

P1027 [NOIP 2001 提高组] Car 的旅行路线 - 洛谷 # P1027 [NOIP 2001 提高组] Car 的旅行路线 ## 题目描述 又到暑假了&#xff0c;住在城市 A 的 Car 想和朋友一起去城市旅游。 她知道每个城市都有 $4$ 个飞机场&#xff0c;分别位于一个矩形的 $4$ 个顶点上&#xff0c…...