【MySQL基础】MySQL多表操作详解

news2024/11/15 19:51:56
序号系列文章
4【MySQL基础】MySQL表的七大约束
5【MySQL基础】字符集与校对集详解
6【MySQL基础】MySQL单表操作详解
7【MySQL基础】运算符及相关函数详解

文章目录

  • 前言
  • MySQL多表操作
    • 1,多表关系
      • 1.1,一对一
      • 1.2,一对多
      • 1.3,多对多
    • 2,多表查询
      • 2.1,交叉查询
      • 2.2,内连接
      • 2.3,外连接
      • 2.4,自连接
      • 2.5,联合查询
    • 3,子查询
      • 3.1,子查询概述
      • 3.2,标量子查询
      • 3.3,列子查询
      • 3.4,行子查询
      • 3.5,表子查询
    • 4,子查询关键字
      • 4.1,EXISTS关键字
      • 4.2,ANY|SOME关键字
      • 4.3,ALL关键字
  • 结语


前言

大家好,我是小杨!前面我为大家介绍了MySQL中的单表操作,那么今天我将详细的为大家介绍MySQL中的多表相关知识,希望大家能够从中收获多多!


MySQL多表操作

1,多表关系

1.1,一对一

概念:实体集A至少和实体集B中的一个实体有联系,反之亦是,则称实体集A和实体集B具有一对一联系,记为1:1。

实例:假设一个部门只能有一个负责人,每个负责人只能负责一个部分,则部门与负责人两个实体之间就是一对一关系。

关系: 一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以此提升操作效率。

实现: 在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)。


1.2,一对多

概念:实体集A中的每个实体与实体集B中的任意多个实体有联系,而实体B中每个实体集最多与实体集A的一个实体有联系,则称之为实体集A与实体集B具有一对多联系,记为1:n。

实例:一个员工只能属于一个部门,而一个部门却可能有多个员工,则部门实体集与员工实体集之间是一对多关系。

实现:在多的一方建立外键,指向一的一方的主键,即对员工表设置外键,对部门表设置主键。


1.3,多对多

概念:实体集A中的每个实体与实体集B中的任意多个(含0个或多个)实体有联系,而实体集B中的每个实体与实体集A中的任意多个实体有联系,则称实体集A与实体集B具有多对多联系,记为n:n。

实例:一个学生可以选多门课程,而每个课程可以被多个学生选,则学生与课程两个实体之间是多对多关系。

实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方的主键,即根据学生表和课程表建立中间表,中间表关联两表。

实际效果图:
在这里插入图片描述


2,多表查询

2.1,交叉查询

在MySQL中,交叉查询是一种结合两张或多张表中所有记录的查询方式。它通常使用CROSS JOIN关键字来实现。

交叉查询会返回两个表中所有记录的笛卡尔积,这就意味着每一行记录在第一个表中都将与在第二个表中的所有记录匹配。

例如,如果表A有3条记录,3个字段和表B有4条记录,2个字段,那么交叉查询会返回12条记录。每条记录5个字段。

SELECT 查询字段 FROM 表1名称 CROSS JOIN 表2名称;

为了更好理解交叉查询,现对部门表和职工表进行交叉查询:

image-20230120104940658

操作说明:emp职工表的每条记录都会与dept部门表中的所有记录进行匹配,结果集是两张表的记录数相乘。

因此需要注意:使用交叉查询时需要特别小心,因为如果两个表中含有大量记录,结果集可能会非常大,导致性能问题。

扩展:笛卡尔积的示意图

笛卡尔积是指在第一个表中的每条记录都将与在第二个表中的所有记录相匹配。

image-20230120152041577


2.2,内连接

内连接在MySQL中是一种常见的连接查询,它会根据匹配条件返回第一个表和第二个表所有匹配成功的记录。

内连接的语法可分为两种: 隐式内连接、显式内连接。

1,隐式内连接

隐式内连接,也叫等值连接,是通过在查询中使用WHERE子句来指定连接条件来实现的。这种方式的语法是:

SELECT 字段列表 FROM 表1名称,表2名称 WHERE 条件;

为了更好地理解隐式内连接,实例:查询每个员工的信息及所在部门信息

image-20230120111352199

操作说明:因总裁小美的dept_id为NULL值,故无法在dept中找到相对应的部门,其余员工均能找到对应的部门,若有员工的dept_id在dept表中找不到时,也不会将其信息打印出来,只会将相互匹配(即emp.dept_id=dept.id)的数据信息打印出来。

为了更好地查看每个员工的基本信息和所在部门,根据指定字段进行查询:

image-20230120111522527

2,显性内连接

显式内连接,也叫非等值连接,是通过在查询中使用JOIN关键字和ON子句来指定连接条件来实现的。这种方式的语法是:

SELECT 字段列表 FROM 表1名称 [INNER] JOIN 表2名称 ON 匹配条件;

为了更好地理解显式内连接,实例:查询每个员工的信息及所在部门信息

image-20230120112448357

3,隐式内连接和显式内连接的对比

image-20230120113049546

从上述对比中,显式内连接这种写法可以清晰地表明该查询需要连接哪两个表,以及连接条件是什么,而隐式内连接表明的不太明显。

因此,在日常使用中建议使用显式内连接的方式,因为它可以清晰地表明连接操作和连接条件,更易于理解和维护。


2.3,外连接

外连接可分为两种,分别是:左外连接 和 右外连接。

1,左外连接

左外连接用于返回连接关键字(LEFT JOIN)左表中所有的记录,以及右表中符合连接条件的记录。

当左表的某行记录在右表中没有匹配的记录时,右表中相关的记录将会被设为空值NULL。

SELECT 查询字段 FROM 表1名称 LEFT [OUTER] JOIN 表2名称 ON 匹配条件;

关键字左边的表1称为左表,也称之为主表;右边的表2称为右表,也称之为从表;OUTER在查询时可省略。

为了更好地理解左外连接,实例:查询emp表的所有数据, 和对应的部门信息

image-20230120114701898

操作说明:对职员表emp(主表)和部门表dept(从表)进行左外连接,emp表中的每条记录都会与dept表中的记录进行匹配,当左表的某行记录在右表中没有匹配的记录时,右表中相关的记录将会被设为空值NULL。


2,右外连接

右外连接用于返回连接关键字(RIGHT JOIN)右表(主表)中所有的记录,以及左表(从表)中符合连接条件的记录。

当右表的某行记录在左表中没有匹配的记录时,左表中相关的记录将会被设为空值NULL。

SELECT 查询字段 FROM 表1名称 RIGHT [OUTER] JOIN 表2名称 ON 匹配条件;

关键字左边的表1称为左表,也称之为从表;右边的表2称为右表,也称之为主表;OUTER在查询时可省略。

为了更好地理解右外连接,实例:查询dept表的所有数据, 和对应的员工信息

image-20230120115044821

操作说明:对职员表emp(从表)和部门表dept(主表)进行右外连接,dept表中的每条记录都会与emp表中的记录进行匹配,当右表的某行记录在左表中没有匹配的记录时,左表中相关的记录将会被设为空值NULL。


2.4,自连接

自连接查询,顾名思义,就是自己连接自己,也就是把一张表连接查询多次。

SELECT 字段列表 FROM 表1名称 表1别名 JOIN 表2名称 表2别名 ON 条件 ... ;

为了更好地理解自连接,实例:查询员工及其所属领导的部分信息

image-20230120122318841

操作说明:在自连接查询时,根据职员表emp中的id字段值与managerid字段值进行查询,符合条件的记录就打印出来,不符合条件的记录就不打印;在自连接时,对操作表进行取别名操作,因为是相同的表进行连接查询,若不取别名,无法分辨和进行查询。

为了更好地查看查询的员工及其所属领导的信息,根据指定字段进行查询

image-20230120122504129

注意事项:在自连接查询中,必须要为表起别名,要不然我们不清楚所指定的条件、返回的字段,到底是哪一张表的字段。


2.5,联合查询

联合查询是多表查询的一种方式,在保证多个SELECT语句的查询字段数相同的情况下,合并多个查询的结果。

SELECT 字段列表 FROM 表名称1 ...
UNION [ ALL | DISTINCT ]
SELECT 字段列表 FROM 表名称2 ...

在上述语法中,UNION是实现联合查询的关键字,ALL和DISTINCT是联合查询的选项。

ALL表示保留所有的查询记录;DISTINCT是默认值,表示去除完全重复的记录。

为了更好地理解联合查询,实例:查询薪资低于 8000 和 高于15000的员工信息

image-20230120125153824

操作说明:先分别进行查询薪资高于15000和薪资低于8000的员工信息,再通过联合查询的方式进行查询,对比查询结果。

联合查询特殊情况:查询的字段数相同但字段不同

image-20230120125720096

操作说明:先查询薪资高于15000的员工id,name,job,salary这些信息,再查询低于8000的员工的id,name,job,salary这些信息,然后再通过联合查询进行查询,最终查询结果只保留第一个SELECT语句对应的字段名称,且第二个查询的字段虽与第一个查询的字段不匹配,但也会根据字段出现顺序对结果进行合并。

结论:SELECT查询的字段个数必须相同,且联合查询的结果只保留第一个SELECT语句对应的字段名称。

即使UNION后的SELECT查询的字段与第一个SELECT查询的字段表达含义或数据类型不同,也仅会根据字段出现顺序对结果进行合并。

若要对联合查询的记录进行排序等操作,需要用圆括号包括每一个SELECT语句,在SELECT语句内或者在联合查询的最后添加ORDER BY语句。若想要排序生效,必须在ORDER BY后添加LIMIT限定联合查询排序的数量,通常推荐使用大于表记录数的任意值。


3,子查询

3.1,子查询概述

1,子查询

子查询指的是在一个SQL语句A(SELECT、INSERT、UPDATE等)中嵌入一个查询语句B,作为执行的条件或者是查询的数据源(代替FROM后的数据表),这里的查询语句B就是子查询语句,它是一条完整的SELECT语句,能够独立的执行。

其实对子查询的理解,可以简单理解归纳为以下两点:

1,SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。

2, 子查询外部的语句可以是INSERT / UPDATE / DELETE / SELECT 的任何一个。

2,子查询的执行流程

在含有子查询的语句中,子查询必须书写在圆括号( )内。

1,SQL语句首先会执行子查询中的语句。

2, 然后再将返回的结果作为外层SQL语句的过滤条件。

3,当遇到同一个SQL语句中含有多层子查询时,执行顺序是从最里层的子查询开始执行。

3,子查询分类

子查询的划分方式有多种,最常见的是以功能和位置进行划分。

1,按子查询的功能可以将其分为标量子查询、列子查询、行子查询和表子查询。

2,按子查询出现的位置可以将其分为WHERE子查询和FROM子查询。

标量子查询、列子查询和行子查询都属于WHERE子查询,而表子查询属于FROM子查询。


3.2,标量子查询

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

常用的操作符:= 、<> 、> 、 >= 、 < 、<=

SELECT 字段列表 FROM 表名称 WHERE 条件判断  {=|<>}
(SELECT 字段名 FROM 数据源 [WHERE] [GROUP BY] [HAVING] [ORDER BY] [LIMIT]);

为了更好地理解标量子查询,实例:查询 “研发部” 的所有员工信息

1,基本查询,分两步进行

image-20230120133305908

2,标量子查询

image-20230120133050251

操作说明:标量子查询是将基本查询的两步操作合并在一起,将基本查询的第1步查询结果作为判断条件进行第2步查询。

总结:标量子查询的流程为:先将子查询的结果集与指定条件进行比较,然后根据比较结果完成相对应的操作。


3.3,列子查询

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

常用的操作符:IN 、NOT IN 、 ANY 、SOME 、 ALL

SELECT 字段列表 FROM 表名称 WHERE 条件判断 {IN|NOT IN}
(SELECT 字段名 FROM 数据源 [WHERE] [GROUP BY] [HAVING] [ORDER BY] [LIMIT]);

为了更好地理解列子查询,实例:查询 “财务部” 和 “市场部” 的所有员工信息

1,基本查询,分两步进行:

image-20230120132607271

2,列子查询:

image-20230120132948875

操作说明:列子查询是将基本查询的两步操作合并在一起,将基本查询的第1步查询的结果集作为判断条件进行第2步查询。

总结:列子查询的流程为先判断指定的条件是否在子查询语句返回的结果集中,然后根据比较结果完成相关需求的操作


3.4,行子查询

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

常用的操作符:= 、<> 、IN 、NOT IN

SELECT 字段列表 FROM 表名称WHERE (指定字段名1,指定字段名2,…) = 
(SELECT字段名1,字段名2,… FROM 数据源 [WHERE] [GROUP BY] [HAVING] [ORDER BY] [LIMIT]);

1,行子查询返回的一条记录与指定的条件比较,比较的运算符通常使用=

2,子查询的结果必须全部与指定的字段相等才满足WHERE指定的条件。


为了更好地理解行子查询,实例:查询与 “小代” 的部门及直属领导相同的员工信息 ;

1,基本查询,分两步进行:

image-20230120134404052

2,行子查询

image-20230120134527466

总结:行子查询的流程为先判断指定的条件是否在子查询返回的结果集中或对其比较,然后根据比较结果完成相关需求的操作


3.5,表子查询

子查询返回的结果用于FROM数据源,它是一个符合二维表结构的数据,可以是一行一列、一列多行、一行多列或多行多列。这种子查询称为表子查询。

SELECT 字段列表 FROM (SELECT语句) [AS] 别名
[WHERE] [GROUP BY] [HAVING] [ORDER BY] [LIMIT];

为了更好地理解表子查询,实例:查询与 “小代”,“小花” 的部门及直属领导相同的员工信息

1,基本查询,分两步进行:

image-20230120135941139

2,表子查询

image-20230120150334055

总结:表子查询的流程为:先将子查询的结果集作为数据源,作为表使用,然后再对该数据源根据需求进行相对应的操作。

注意:FROM后的数据源都是表名,但当数据源是子查询时,必须为其设置别名,同时也是为了将查询结果作为一个表使用时,可以进行条件判断、分组、排序以及限量等操作。


4,子查询关键字

关键字说明
IN在指定的集合范围之内,多选一
NOT IN不在指定的集合范围之内
EXISTS判断查询子句是否有记录
ANY子查询返回列表中,有任意一个满足即可
SOME与ANY等同,使用SOME的地方都可以使用ANY
ALL子查询返回列表的所有值都必须满足

1,带ANY、SOME、ALL关键字的子查询,不能使用<=>比较运算符。

2,若子查询结果与条件匹配时有NULL,那么此条记录不参与匹配。


4.1,EXISTS关键字

在SQL语句中使用带EXISTS关键的子查询时,表示判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。

WHERE EXISTS(子查询语句);

NOT EXISTS判断子查询的结果,当没有返回结果时则返回1,否则返回0。

WHERE NOT EXISTS(子查询语句);

为了更好地理解EXISTS关键字,实例:在存在薪资高于12000的情况下,查询薪资高于15000的员工信息

image-20230120164558683


4.2,ANY|SOME关键字

在SQL语句中使用带ANY关键的子查询时,表示给定的判断条件,只要符合ANY子查询结果中的任意一个,就返回1,否则返回0。

WHERE 表达式 比较运算符 ANY(子查询语句);

WHERE 表达式 比较运算符 SOME(子查询语句);

为了更好地理解ANY|SOME关键字,实例:查询比研发部其中任意一人工资高的员工信息

小知识:SOME关键字添加原因

MySQL在设计时添加SOME的原因在于,英文语法中虽然SOME和ANY的语法含义相同,但是NOT ANY和NOT SOME的含义区别很大。

前者NOT ANY表示一点也不,相当于NOT ALL,而后者NOT SOME仅用于否定部分内容。

因此,为了便于以英文为母语的开发者理解,设计出了带SOME和ANY关键字的子查询。


4.3,ALL关键字

在SQL语句中使用带ALL关键字的子查询时,表示给定的判断条件,只有全部符合ALL子查询的结果时,才返回1,否则返回0。

WHERE 表达式 比较运算符 ALL(子查询语句);

为了更好地理解ALL关键字,实例:查询比研发部所有人工资都高的员工信息

image-20230120143933717


结语

这就是本期博客的全部内容啦,想必大家已经对MySQL中的多表操作的相关知识有了全新地认识和理解吧,如果有什么其他的问题无法自己解决,可以在评论区留言哦!

最后,如果你觉得这篇文章写的还不错的话或者有所收获的话,麻烦小伙伴们动动你们的小手,给个三连呗(点赞👍,评论✍,收藏📖),多多支持一下!各位的支持是我最大的动力,后期不断更新优质的内容来帮助大家,一起进步。那我们下期见!

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/173878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Prometheus 配置身份认证

Prometheus 版本 2.41.0 平台统一监控的介绍和调研直观感受PromQL及其数据类型PromQL之选择器和运算符PromQL之函数Prometheus 配置身份认证 Prometheus 使用默认方式安装是不带有身份证认证和TLS&#xff0c;需要单独配置开启。 Prometheus 配置文件为yaml格式&#xff0c;并…

【自然语言处理】文本表示(一):One-Hot、BOW、TF-IDF、N-Gram

文本表示&#xff08;一&#xff09;&#xff1a;One-Hot、BOW、TF-IDF、N-Gram1.One-Hot 编码 One-Hot 编码&#xff0c;又称 “独热编码”&#xff0c;是比较常用的文本特征提取方法。这种方法把每个词表示为一个很长的向量。这个向量的维度是词表大小&#xff0c;只有一个维…

4. 基础语法

1. 标识符 a. 第一个字符必须是字母表中字母或下划线 _&#xff1b; b. 标识符的其他的部分由字母、数字和下划线组成&#xff1b; c. 标识符对大小写敏感&#xff1b; 在 Python 3 中&#xff0c;可以用中文作为变量名&#xff0c;非 ASCII 标识符也是允许的&#xff1b; 2.…

【JavaGuide面试总结】计算机网络·中

【JavaGuide面试总结】计算机网络中1.说说断开连接 - TCP 四次挥手2.为什么要四次挥手&#xff1f;3.为什么不能把服务器发送的 ACK 和 FIN 合并起来&#xff0c;变成三次挥手&#xff1f;4.如果第二次挥手时服务器的 ACK 没有送达客户端&#xff0c;会怎样&#xff1f;5.为什么…

第五届字节跳动青训营 前端进阶学习笔记(五)CSS进阶

文章目录前言CSS的重要特性1.选择器特指度&#xff08;1&#xff09;选择器优先级&#xff08;2&#xff09;选择器特指度2.继承&#xff08;1&#xff09;默认继承&#xff08;2&#xff09;显式继承3.初始值4.CSS属性值的计算过程布局&#xff08;Layout&#xff09;1.布局相…

搜索?——P3956 [NOIP2017 普及组] 棋盘

传送门: [NOIP2017 普及组] 棋盘 - 洛谷 思路: 将棋盘的每一个格子看做一个点&#xff0c;建一个无向图用来跑最短路. 这道题本应用搜索来做&#xff0c;但是转换成最短路好像简单点 建图: 1.对于已经有颜色的格子&#xff0c;在扫描四个方向的格子对相同颜色的建条长度为0…

【目标检测】目标检测究竟发展到了什么程度?聊聊这22年!

目录&#xff1a;目标检测的发展历程一、引言二、背景三、目标检测发展脉络3.1 传统目标检测算法3.1.1 Viola Jones Detector3.1.2 HOG Detector3.1.3 DPM Detector3.1.4 局限性3.2 Anchor-Based中的Two-stage目标检测算法3.2.1 RCNN3.2.2 SPPNet3.2.3 Fast RCNN3.2.4 Faster R…

Allegro如何设置Net Group操作指导

Allegro如何设置Net Group操作指导 Allegro除了可以对一组网络设置Bus以外,同样支持创建Net Group,如下图 功能和Bus的功能类似,并且同一个Net Group里面的网络可以形成一个shape形式的Group,方便查看 具体创建方法操作如下 打开规则管理器选择Electrical

MySQL窗口函教-开窗聚合函数(SUM()、AVG()、MAX()、MIN()、COUNT())

MySQL窗口函教-开窗聚合函数&#xff08;SUM()、AVG()、MAX()、MIN()、COUNT()&#xff09;和传统的聚合函数区别&#xff1f;最大的区别在于&#xff0c;一个操作列&#xff0c;一个是依次操作行&#xff0c;最终显示出每一行&#xff0c;最后的效果就是呈现叠加的效果-- 开窗…

Windows环境下安装配置Mosquitto服务及入门操作介绍

文章目录一、概念梳理二、下载与安装三、关于配置文件的一些重要说明四、配置登录账号和密码参考&#xff1a; 博客一、概念梳理 Mosquitto是一款实现了消息推送协议MQTT 3.1的开源消息代理软件&#xff0c;提供轻量级的、支持可订阅/可发布的消息推送模式&#xff0c;是设备与…

mf10ccwm芯片说明部分译文

MF10-N是一种通用的双二阶状态变量滤波器&#xff0c;其中心频率与应用于时钟输入&#xff08;fCLK&#xff09;的方波的频率成正比。通过将引脚12连接到适当的直流电压&#xff0c;滤波器中心频率fO可以等于fCLK/100或fCLK/50。通过使用晶体时钟振荡器可以非常精确地设置&…

《深入浅出计算机组成原理》学习笔记 Day5

动态链接1. 静态链接与动态链接2. 地址无关3. PLT 和 GOT参考1. 静态链接与动态链接 静态链接&#xff08;Static Link&#xff09;是通过合并代码段的方法来使程序装载至内存&#xff1b; 动态链接&#xff08;Dynamic Link&#xff09;则是链接加载到内存中的共享库&#xf…

数据结构之栈与队列详解

文章目录前言一、栈1.栈的概念及定义2.栈的实现&#xff08;1&#xff09;栈的结构&#xff08;2&#xff09;StackInit&#xff08;初始化&#xff09;&#xff08;3&#xff09;StackPush&#xff08;压栈&#xff09;&#xff08;4&#xff09;StackPop&#xff08;出栈&…

与众不同的异域年夜饭体验,你最中意哪一款?

年夜饭&#xff0c;中国人一年中最重要的一顿团圆聚餐&#xff0c;不仅丰富多彩&#xff0c;还充满了各种吉祥寓意。如果你选择的是出境旅游过春节&#xff0c;那么一次异域年夜饭体验也可以让你的旅行充满乐趣&#xff0c;收获与众不同的别样回忆。今天就跟着小旅城去看看&…

1597_AURIX_TC275_GPIO简介

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 左上角画出来的这个寄存器可以进行输入输出的控制。从右边上下拉设备这里可以看得出来&#xff0c;输入输出其实都是可以配置的。当端口配置为输入的时候&#xff0c;逻辑图中的输出驱动会…

使用文本编辑器编写Java源代码

使用文本编辑器编写Java源代码 编写JavaJavaJava应用程序&#xff0c;可以使用任何一个文本编辑器来编写程序的源代码&#xff0c;然后使用JDKJDKJDK搭配的工具进行编译和运行&#xff0c;在这里&#xff0c;我将介绍一个使用简单的文本编辑器来开发一个JavaJavaJava应用程序的…

【创业分享】2022年,仅赚几万,但却很踏实?

大家好&#xff0c;欢迎来到停止重构的频道。本期&#xff0c;我们停一下技术讨论&#xff0c;反思一下2022年的变化以及展望一下2023年。回顾2022这是我们以正式商业主体创业的第一年。总的来说&#xff0c;除了不赚钱和软件产品还没做出来以外&#xff0c;其实还不错。自媒体…

Linux常用命令——tcpreplay命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) tcpreplay 将PCAP包重新发送&#xff0c;用于性能或者功能测试 补充说明 简单的说&#xff0c;tcpreplay是一种pcap包的重放工具&#xff0c;它可以将用ethreal、wireshark工具抓下来的包原样或经过任意修改后…

Spark Core 编程入门,常用算子介绍

RDD的创建 如下代码&#xff0c;Spark RDD编程的入口对象是SparkContext对象(不论何种编程语言)&#xff0c;只有构建出SparkContext&#xff0c;基于它才能执行后续的API调用和计算 本质上&#xff0c;Spark Context对编程来说&#xff0c;主要功能就是创建第一个RDD出来 # …

JVM 垃圾回收(深入理解Java虚拟机第三章)

垃圾判断算法 引用计数法 每个对象增加引用计数器&#xff0c;引用加一&#xff0c;失效减一&#xff0c;为零判定为垃圾数据。 缺点&#xff1a;循环引用难以解决 根搜索算法 从树状引用链向下查找&#xff0c;如果对象无法找到&#xff0c;则标记为垃圾数据。 JVM算法 …