【MySQL】一文带你掌握聚合查询和联合查询
文章目录
- 1. 聚合函数
- 1.1 COUNT
- 1.2 SUM
- 1.3 AVG
- 1.4 MAX,MIN
- 2. GROUP BY
- 3. HAVING
- 4. 联合查询
- 4.1 内连接
- 4.2 外连接
- 4.3 自连接
- 4.4 子连接
- 5.合并查询
- 5.1 UNION
- 5.2 UNION ALL
1. 聚合函数
概念:
聚合函数是一种用于处理数据集合的函数,它将多个数据行作为输入,执行特定的计算,然后返回单个结果。聚合函数通常用于统计和汇总数据,例如计算平均值、总和、最大值、最小值等。
常见的聚合函数包括:
- COUNT - 统计数据行数
- SUM - 计算数据总和
- AVG - 计算数据的平均值
- MAX - 找出数据的最大值
- MIN - 找出数据的最小值
聚合函数通常与 GROUP BY 子句一起使用,以便根据一个或多个列对数据进行分组,并将聚合函数应用于每个分组。
以下举例都将以下表为例:
mysql> select * from student;
+----+--------+---------+------+---------+
| id | name | chinese | math | english |
+----+--------+---------+------+---------+
| 1 | 猪八戒 | 90.5 | 54.5 | 80.0 |
| 2 | 唐僧 | 95.0 | 85.0 | 70.0 |
| 3 | 孙悟空 | 75.0 | 75.5 | 87.0 |
| 4 | 沙僧 | 80.0 | 45.0 | 90.5 |
+----+--------+---------+------+---------+
1.1 COUNT
统计数据行数
mysql> -- count 查询数据数量,为 NULL 的数据不会计入结果
mysql> select count(*) from student;
+----------+
| count(*) |
+----------+
| 4 |
+----------+
1 row in set (0.00 sec)mysql> select count(id) from student;
+-----------+
| count(id) |
+-----------+
| 4 |
+-----------+
1 row in set (0.00 sec)
1.2 SUM
计算数据总和
mysql> -- 计算数据之和,只能用于数值类型
mysql> select sum(math) from student;
+-----------+
| sum(math) |
+-----------+
| 260.0 |
+-----------+
1 row in set (0.00 sec)mysql>-- 当用于非数值类型将为0
mysql> select sum(name) from student;
+-----------+
| sum(name) |
+-----------+
| 0 |
+-----------+
1 row in set, 4 warnings (0.00 sec)mysql>-- SUM 函数只能用于数值类型的列,不能用于 *
mysql> select sum(*) from student;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*) from student' at line 1
1.3 AVG
计算数据的平均值
mysql> -- 平均值,只可以作用于数值类型列
mysql> select avg(math) from student;
+-----------+
| avg(math) |
+-----------+
| 65.00000 |
+-----------+
1 row in set (0.00 sec)mysql> select avg(math+chinese+english) from student;
+---------------------------+
| avg(math+chinese+english) |
+---------------------------+
| 232.00000 |
+---------------------------+
1 row in set (0.00 sec)mysql> select avg(math+chinese+english) as avg from student;
+-----------+
| avg |
+-----------+
| 232.00000 |
+-----------+
1 row in set (0.00 sec)
1.4 MAX,MIN
最大值,最小值
mysql> -- 最大值,最小值
mysql> select max(math), min(math) from student;
+-----------+-----------+
| max(math) | min(math) |
+-----------+-----------+
| 85.0 | 45.0 |
+-----------+-----------+
1 row in set (0.00 sec)mysql> select max(chinese+math+english) as max,min(chinese+math+english) as min from student;
+-------+-------+
| max | min |
+-------+-------+
| 250.0 | 215.5 |
+-------+-------+
1 row in set (0.00 sec)
2. GROUP BY
概念:
GROUP BY是SQL命令的一部分,用于按一个或多个列中具有相同值的行进行分组。通常与聚合函数一起使用,例如SUM、AVG、COUNT、MIN和MAX,以对每个组应用计算并对数据进行分组。GROUP BY子句通常用于报告和数据分析中,以对大量数据进行汇总和组织。它有助于识别数据中的模式和趋势,并使其更易于理解和解释。
语法:
SELECT column1,column2,aggregate_function(column3)FROM table_name GROUP BY column1,column2;
以下举例以此表为例:
mysql> select * from emp;
+----+--------+----------+----------+
| id | name | role | salary |
+----+--------+----------+----------+
| 1 | 马晕 | 服务员 | 1000.20 |
| 2 | 马华藤 | 游戏陪玩 | 2000.99 |
| 3 | 孙悟空 | 游戏角色 | 999.11 |
| 4 | 猪无能 | 游戏角色 | 333.50 |
| 5 | 沙和尚 | 游戏角色 | 700.33 |
| 6 | 老王 | 董事长 | 12000.66 |
+----+--------+----------+----------+
查询每个角色的最高工资、最低工资和平均工资:
mysql> select role, max(salary),min(salary),avg(salary) from emp group by role;
+----------+-------------+-------------+--------------+
| role | max(salary) | min(salary) | avg(salary) |
+----------+-------------+-------------+--------------+
| 服务员 | 1000.20 | 1000.20 | 1000.200000 |
| 游戏角色 | 999.11 | 333.50 | 677.646667 |
| 游戏陪玩 | 2000.99 | 2000.99 | 2000.990000 |
| 董事长 | 12000.66 | 12000.66 | 12000.660000 |
+----------+-------------+-------------+--------------+
4 rows in set (0.00 sec)
3. HAVING
概念:
HAVING子句是SQL的一部分,通常与GROUP BY子句一起使用,用于对分组后的数据进行过滤。它允许使用聚合函数计算并过滤分组后的数据,以便只输出特定条件的结果。
语法:
SELECT column1,aggregate_function(column2) FROM table_name GROUP BY column1 HAVING condition;
显示平均工资低于1500的角色:
mysql> select role,max(salary),min(salary),avg(salary) from emp group by role having avg(salary)<1500;
+----------+-------------+-------------+-------------+
| role | max(salary) | min(salary) | avg(salary) |
+----------+-------------+-------------+-------------+
| 服务员 | 1000.20 | 1000.20 | 1000.200000 |
| 游戏角色 | 999.11 | 333.50 | 677.646667 |
+----------+-------------+-------------+-------------+
2 rows in set (0.00 sec)
显示平均工资高于2000的角色:
mysql> select role,max(salary),min(salary),avg(salary) from emp group by role having avg(salary)>2000;
+----------+-------------+-------------+--------------+
| role | max(salary) | min(salary) | avg(salary) |
+----------+-------------+-------------+--------------+
| 游戏陪玩 | 2000.99 | 2000.99 | 2000.990000 |
| 董事长 | 12000.66 | 12000.66 | 12000.660000 |
+----------+-------------+-------------+--------------+
2 rows in set (0.00 sec)
4. 联合查询
概念:
联合查询(UNION)是SQL中的一种操作,用于将两个或多个SELECT语句的结果合并为一个结果集。联合查询可以将两个或多个表的数据合并在一起,并返回一个新的结果集。联合查询是对多张表的数据取笛卡尔积:
联合查询一般都会有一些行是不符合要求的,这个时候我们可以添加条件精选筛选。
以下举例以此为例:
mysql> select * from student;
+------+--------+----------+
| id | name | class_id |
+------+--------+----------+
| 1 | 唐僧 | 1 |
| 2 | 沙僧 | 1 |
| 3 | 孙悟空 | 1 |
| 4 | 宋江 | 2 |
| 5 | 李逵 | 2 |
| 6 | 诸葛亮 | 3 |
| 7 | 张飞 | 3 |
| 8 | 曹操 | 3 |
| 9 | 周瑜 | 3 |
+------+--------+----------+
9 rows in set (0.00 sec)mysql> select * from class;
+------+--------+
| id | name |
+------+--------+
| 1 | 西游班 |
| 2 | 水浒班 |
| 3 | 三国班 |
+------+--------+
3 rows in set (0.00 sec)
4.1 内连接
概念:
内连接是一种关系型数据库的查询方式,它是联合查询的一种,但并不是所有联合查询都是内连接。内连接是基于两个或多个表之间的公共键将记录连接在一起的查询方式。内连接仅返回两个表中都包含匹配键值的行,其他行将被排除在结果之外。内连接通常使用JOIN关键字实现。
语法:
select 字段 from 表1 别名1 [inner] join 表2 别名2 on 连接条件 and 其他条件;
select 字段 from 表1 别名1,表2 别名2 where 连接条件 and 其他条件;
当我们查询时,如果不进行条件筛选,那么将会造成下面场景:
这种结果显然不是我们想要的,所以我们可以加上条件,进行筛选,精简表格,就是上面语法两种:
mysql> -- join on
mysql> select student.name,class.name from student join class on student.class_id = class.id;
+--------+--------+
| name | name |
+--------+--------+
| 唐僧 | 西游班 |
| 沙僧 | 西游班 |
| 孙悟空 | 西游班 |
| 宋江 | 水浒班 |
| 李逵 | 水浒班 |
| 诸葛亮 | 三国班 |
| 张飞 | 三国班 |
| 曹操 | 三国班 |
| 周瑜 | 三国班 |
+--------+--------+
9 rows in set (0.00 sec)mysql> -- where
mysql> select student.name,class.name from student, class where student.class_id = class.id;
+--------+--------+
| name | name |
+--------+--------+
| 唐僧 | 西游班 |
| 沙僧 | 西游班 |
| 孙悟空 | 西游班 |
| 宋江 | 水浒班 |
| 李逵 | 水浒班 |
| 诸葛亮 | 三国班 |
| 张飞 | 三国班 |
| 曹操 | 三国班 |
| 周瑜 | 三国班 |
+--------+--------+
9 rows in set (0.00 sec)mysql> -- 别名
mysql> select stu.name,cla.name from student stu, class cla where stu.class_id = cla.id;
+--------+--------+
| name | name |
+--------+--------+
| 唐僧 | 西游班 |
| 沙僧 | 西游班 |
| 孙悟空 | 西游班 |
| 宋江 | 水浒班 |
| 李逵 | 水浒班 |
| 诸葛亮 | 三国班 |
| 张飞 | 三国班 |
| 曹操 | 三国班 |
| 周瑜 | 三国班 |
+--------+--------+
9 rows in set (0.00 sec)
4.2 外连接
概念:
在数据库中,外连接(outer join)是指通过两个或多个表中的一个或多个共同数据列将它们连接起来,产生一个新的查询结果集。不同于Inner Join(内连接),外连接能够返回那些在一个表中存在但在另一个表中不存在的数据行。
外连接有左连接(left join)、右连接(right join)和全连接(full join)三种类型。
左连接(left join)返回左表中的所有数据行,即使在右表中没有匹配的数据行,也不会过滤掉左表中的数据。右连接(right join)则是返回右表中的所有数据行。
全连接(full join)是指返回两个表中的所有数据,不管它们在另一个表中是否有与之匹配的数据。全连接通常不常用,因为它可能会返回非常大的结果集。
外连接和内连接不同点在于外连接可以返回任何表中的数据,而内连接只能返回两个表中共有的数据行。
语法:
-- 左外连接,表1完全显示
select 字段名 from 表名1 left join 表名2 on 连接条件;
-- 右外连接,表2完全显示
select 字段 from 表名1 right join 表名2 on 连接条件;
代码使用和外连接基本相同,为了防止博客臃肿,大家可以自己敲打试试,不会的话随时可以私信问我。
4.3 自连接
概念:
自链接(self join)是指在同一张表中进行联接操作的过程。它和普通的表之间连接操作类似,但是表名出现了两次,也就是同一个表名在同一查询中出现了两次或以上。
自链接的语法格式与普通的表之间连接非常相似,只需要在表名后加上别名即可,这里的别名可以是任何合法的标识符,用于区分同一个表中不同的记录。
语法:
SELECT a.name, b.name AS leader FROM staff a, staff b WHERE a.leader_id = b.id;
4.4 子连接
概念:
子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。
使用示例:
mysql> -- 借助子查询查询诸葛亮同班同学
mysql> select * from student where class_id=(select class_id from student where name='诸葛亮');
+------+--------+----------+
| id | name | class_id |
+------+--------+----------+
| 6 | 诸葛亮 | 3 |
| 6 | 张飞 | 3 |
| 6 | 曹操 | 3 |
| 6 | 周瑜 | 3 |
+------+--------+----------+
4 rows in set (0.00 sec)mysql> -- 也可以将=换成in
mysql> select * from student where class_id in (select class_id from student where name='诸葛亮');
+------+--------+----------+
| id | name | class_id |
+------+--------+----------+
| 6 | 诸葛亮 | 3 |
| 6 | 张飞 | 3 |
| 6 | 曹操 | 3 |
| 6 | 周瑜 | 3 |
+------+--------+----------+
4 rows in set (0.00 sec)mysql> -- 使用not in可以查询非诸葛亮同班同学
mysql> select * from student where class_id not in (select class_id from student where name='诸葛亮');
+------+--------+----------+
| id | name | class_id |
+------+--------+----------+
| 1 | 唐僧 | 1 |
| 2 | 沙僧 | 1 |
| 3 | 孙悟空 | 1 |
| 4 | 宋江 | 2 |
| 5 | 李逵 | 2 |
+------+--------+----------+
5 rows in set (0.00 sec)
5.合并查询
概念:
MySQL的合并查询(union)是一种在多个查询结果中获取不同数据行并将它们整合成一个查询结果集的查询方式。合并查询需要满足一定的条件,比如数据行必须具有相同的列数和数据类型,并且必须按照相同的顺序排列。
合并查询通常用于需要从多个表或查询结果中获取数据的查询需求。合并查询分为两种类型:UNION和UNION ALL。UNION去重并合并查询结果,而UNION ALL只是简单地合并查询结果。
5.1 UNION
mysql> -- student表
mysql> select * from student;
+--------+----------+
| name | class_id |
+--------+----------+
| 唐僧 | 1 |
| 沙僧 | 1 |
| 孙悟空 | 1 |
| 宋江 | 2 |
| 李逵 | 2 |
| 诸葛亮 | 3 |
+--------+----------+
6 rows in set (0.00 sec)mysql> -- class表
mysql> select * from class;
+------+--------+
| id | name |
+------+--------+
| 1 | 西游班 |
| 2 | 水浒班 |
| 3 | 三国班 |
+------+--------+
3 rows in set (0.00 sec)mysql> -- 自己合并自己使用union就只能得到一个自己表
mysql> select * from student-> union-> select * from student;
+--------+----------+
| name | class_id |
+--------+----------+
| 唐僧 | 1 |
| 沙僧 | 1 |
| 孙悟空 | 1 |
| 宋江 | 2 |
| 李逵 | 2 |
| 诸葛亮 | 3 |
+--------+----------+
6 rows in set (0.00 sec)mysql> -- 两个不同的表列数要相同,不然不能拼接
mysql> select * from student-> union-> select * from class;
+--------+----------+
| name | class_id |
+--------+----------+
| 唐僧 | 1 |
| 沙僧 | 1 |
| 孙悟空 | 1 |
| 宋江 | 2 |
| 李逵 | 2 |
| 诸葛亮 | 3 |
| 1 | 西游班 |
| 2 | 水浒班 |
| 3 | 三国班 |
+--------+----------+
9 rows in set (0.00 sec)
5.2 UNION ALL
mysql> 必须列数相同,全部拼接在一张表
mysql> select * from student-> union all-> select * from class;
+--------+----------+
| name | class_id |
+--------+----------+
| 唐僧 | 1 |
| 沙僧 | 1 |
| 孙悟空 | 1 |
| 宋江 | 2 |
| 李逵 | 2 |
| 诸葛亮 | 3 |
| 1 | 西游班 |
| 2 | 水浒班 |
| 3 | 三国班 |
+--------+----------+
9 rows in set (0.00 sec)mysql> -- 没有去重效果
mysql> select * from student-> union all-> select * from student;
+--------+----------+
| name | class_id |
+--------+----------+
| 唐僧 | 1 |
| 沙僧 | 1 |
| 孙悟空 | 1 |
| 宋江 | 2 |
| 李逵 | 2 |
| 诸葛亮 | 3 |
| 唐僧 | 1 |
| 沙僧 | 1 |
| 孙悟空 | 1 |
| 宋江 | 2 |
| 李逵 | 2 |
| 诸葛亮 | 3 |
+--------+----------+
12 rows in set (0.00 sec)
相关文章:

【MySQL】一文带你掌握聚合查询和联合查询
文章目录 1. 聚合函数1.1 COUNT1.2 SUM1.3 AVG1.4 MAX,MIN 2. GROUP BY3. HAVING4. 联合查询4.1 内连接4.2 外连接4.3 自连接4.4 子连接 5.合并查询5.1 UNION5.2 UNION ALL 1. 聚合函数 概念: 聚合函数是一种用于处理数据集合的函数,它将多个…...
初步了解JVM
JVM 整体组成部分 类加载器 类加载过程 加载:使用IO读取字节码文件,转换并存储,为每个类创建一个Class对象,存储在方法区中 链接(验证,准备,解析) 验证:对字节码文件格式进…...

嘀嗒陪诊小程序v1.0.8+小程序前端
嘀嗒陪诊小程序功能相对简单,后台也简捷,如果只是做个陪诊服务的小程序也基本能满足了,整体测试了下海参崴发现BUG,小程序端也能正常为使用,唯一用户授权接口是老的。 应用背景:人口老龄化少子化ÿ…...

Java中线程的生命周期
Java中线程的生命周期 Java中线程的声明周期与os中线程的生命周期不太一样,java中线程有6个状态,见下: NEW: 初始状态,线程被创建出来但没有被调用 start() 。RUNNABLE: 运行状态,线程被调用了 start()等待运行的状态…...

光线追踪RayTracing,基本原理,判断物体与光线相交
光线的三点假设: 光线按直线传播光线之间不会发生碰撞光线会经过一系列折射反射进入摄像机 可以从摄像机发出光线,推出可逆的光路 上图中,透明球在与相机直连的线条处,需要将折射和反射的着色点结果相加,如果有光源直…...

三十六、数学知识——组合数(递推法 + 预处理法 + 卢卡斯定理 + 分解质因数求解组合数 + 卡特兰数)
组合数算法主要内容 一、基本思路1、组合数基本概念2、递推法——询问次数多 a b 值较小 模处理(%mod)3、预处理阶乘方法——询问次数较多 a b 值很大 模处理(%mod)4、卢卡斯定理——询问次数较少 (a b 值很大&am…...

LinuxC编程——高级文件操作
目录 一、查询文件信息1、stat2、stat fstat lstat区别 二、目录操作2.1 opendir2.2 readdir2.3 closedir例练习:实现ls操作 三、库3.1 库的定义3.2 库的分类3.2.1 静态库3.2.2 动态库 3.3 创建库3.3.1 静态库制作3.3.2 动态库制作 一、查询文件信息 1、stat int …...

【基础知识整理】图的基本概念 邻接矩阵 邻接表
一、图概述 定义: 图(graph)是由一些点(vertex)和这些点之间的连线(edge)所组成的; 其中,点通常被成为"顶点(vertex)“,而点与点之间的连线则被成为"边或弧”(edege)。 通常记为,G(V,E)。 图是一种重要的…...
5.程序控制结构|Java学习笔记
文章目录 程序流程控制介绍顺序控制分支控制分支控制if elseswitch分支结构 循环控制for循环控制while循环控制do...while循环控制跳转控制语句breakcontinuereturn 程序流程控制介绍 顺序控制分支控制循环控制 顺序控制 程序从上到下逐行地执行,中间没有任何判断…...

【最优PID 整定】PID性能指标(ISE,IAE,ITSE和ITAE)优化、稳定性裕量(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Linux内核中断和Linux内核定时器
目录 Linux内核中断 Linux内核定时器 Linux内核中断 int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,const char *name, void *dev) 功能:注册中断 参数: irq : 软中断号 gpio的软中断号 软中断号 gpio_to_i…...

OMG--IDL(Interface Definition Language)
OMG--IDL(Interface Definition Language) 1 概述2 内容缩写IDL 语法和语义概述词法约定ISO Latin-1的字母字符如下表十进制数字字符图形字符格式化字符Tokens注释标识符冲突规则转义标识符关键字IDL识别的其他字符字面量 预处理IDL 语法构建块核心数据类…...
英语学习:M开头
machine 机器 mad 发疯的,生气的 madam 女士,夫人 madame 夫人 magazine 杂志 magic 有魔力的 maid 女仆,侍女 mail 邮递 mailbox 邮箱 mainland 大陆 major 较大的,主要的 majority 大多数 male 雄的 man 人类 man…...

【计算机组成原理与体系结构】控制器
目录 一、CPU的功能与基本结构 二、指令周期的数据流 三、数据通路 四、硬布线控制器 五、微程序控制器 六、微指令 一、CPU的功能与基本结构 运算器基本结构 控制器基本结构 CPU的基本结构 二、指令周期的数据流 取址周期 间址周期 中断周期 指令周期流程 三、数据通路 …...
结构化命令
章节目录: 一、使用 if-then 语句二、if-then-else 语句三、嵌套 if 语句四、test 命令4.1 数值比较4.2 字符串比较4.3 文件比较 五、复合条件测试六、if-then 的高级特性6.1 使用单括号6.2 使用双括号6.3 使用双方括号 七、case 命令八、结束语 本章内容࿱…...

Java Web实训项目:西蒙购物网
文章目录 一、创建数据库和表1、创建数据库2、创建用户表3、创建类别表4、创建商品表5、创建订单表 二、创建Simonshop项目1、创建web项目2、修改Artifacts名称:simonshop3、重新部署项目4、编辑首页5、启动应用,查看效果 三、创建实体类1、用户实体类2、…...

ChatGPT Prompt 提示词设计技巧必知必会
本文内容整理自图灵社区直播《朱立成:ChatGPT Prompt提示词技巧必知必会》。 朱立成,图灵社区《ChatGPT即学即用》视频课程作者,软件工程师,对新事物充满好奇,关注ChatGPT应用。2001年毕业于浙江大学,从事软…...

尚硅谷-云尚办公-项目复盘
尚硅谷-云尚办公-项目复盘 资料地址本文介绍问题汇总问题1.knife4j无法下载 视频4问题2.dev等含义 视频5问题3.wrapper继承/实现图 视频8问题4.修改统一返回结果 视频11问题5.修改后新增也变修改 视频29问题6.redis中key值乱码 视频55-60问题7.RangeError: Maximum call stack …...

nacos升级到2.0.3(单机模式)
前提:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明 Spring Cloud AlibabaSpring CloudSpring BootNacos2.2.7.RELEASESpring Cloud Hoxton.SR122.3.12.RELEASE2.0.3 一、pom.xml文件 <parent><groupId>org.springframework.boot&…...

Koa学习3:用户添加、错误处理
模型 在src目录下创建model目录,用来存放模型 创建用户模型 user.model.js 注意: UUID类型是无法自增的,将id设置为UUID类型时只需要为其指定默认值即可 // 数据类型 const { DataTypes } require(sequelize); // 导入已经连接了数据库…...

高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会
在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

消息队列系统设计与实践全解析
文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...