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

news2024/11/15 20:08:50

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

  • 1.说说断开连接 - TCP 四次挥手
  • 2.为什么要四次挥手?
  • 3.为什么不能把服务器发送的 ACK 和 FIN 合并起来,变成三次挥手?
  • 4.如果第二次挥手时服务器的 ACK 没有送达客户端,会怎样?
  • 5.为什么第四次挥手客户端需要等待 2*MSL(报文段最长寿命)时间后才进入 CLOSED 状态?
  • 6.TCP 如何保证传输的可靠性?
  • 7.TCP 如何实现流量控制?
  • 8.TCP 的拥塞控制是怎么实现的?
  • 9.ARQ 协议了解吗?
    • 停止等待 ARQ 协议
    • 连续 ARQ 协议
  • 10.从输入URL 到页面展示到底发生了什么?
    • 输入地址
    • 浏览器查找域名的 IP 地址
    • 浏览器向 web 服务器发送一个 HTTP 请求
    • 服务器的永久重定向响应
    • 浏览器跟踪重定向地址
    • 服务器处理请求
    • 服务器返回一个 HTTP 响应
    • 浏览器显示 HTML
    • 浏览器发送请求获取嵌入在 HTML 中的资源(如图片、音频、视频、CSS、JS等等)
    • 断开TCP连接,连接结束

1.说说断开连接 - TCP 四次挥手

TCP 四次挥手图解

断开一个 TCP 连接则需要“四次挥手”,缺一不可 :

  1. 第一次挥手 :客户端发送一个 FIN(SEQ=X) 标志的数据包->服务端,用来关闭客户端到服务器的数据传送。然后,客户端进入 FIN-WAIT-1 状态。
  2. 第二次挥手 :服务器收到这个 FIN(SEQ=X) 标志的数据包,它发送一个 ACK (SEQ=X+1)标志的数据包->客户端 。然后,此时服务端进入CLOSE-WAIT状态,客户端进入FIN-WAIT-2状态。
  3. 第三次挥手 :服务端关闭与客户端的连接并发送一个 FIN (SEQ=y)标志的数据包->客户端请求关闭连接,然后,服务端进入LAST-ACK状态。
  4. 第四次挥手 :客户端发送 ACK (SEQ=y+1)标志的数据包->服务端并且进入TIME-WAIT状态,服务端在收到 ACK (SEQ=y+1)标志的数据包后进入 CLOSE 状态。此时,如果客户端等待 2MSL 后依然没有收到回复,就证明服务端已正常关闭,随后,客户端也可以关闭连接了。

2.为什么要四次挥手?

TCP是全双工通信,可以双向传输数据。任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了 TCP 连接。

举个例子:A 和 B 打电话,通话即将结束后。

  1. 第一次挥手 : A 说“我没啥要说的了”
  2. 第二次挥手 :B 回答“我知道了”,但是 B 可能还会有要说的话,A 不能要求 B 跟着自己的节奏结束通话
  3. 第三次挥手 :于是 B 可能又巴拉巴拉说了一通,最后 B 说“我说完了”
  4. 第四次挥手 :A 回答“知道了”,这样通话才算结束。

3.为什么不能把服务器发送的 ACK 和 FIN 合并起来,变成三次挥手?

因为服务器收到客户端断开连接的请求时,可能还有一些数据没有发完,这时先回复 ACK,表示接收到了断开连接的请求。等到数据发完之后再发 FIN,断开服务器到客户端的数据传送。


4.如果第二次挥手时服务器的 ACK 没有送达客户端,会怎样?

客户端没有收到 ACK 确认,会重新发送 FIN 请求。


5.为什么第四次挥手客户端需要等待 2*MSL(报文段最长寿命)时间后才进入 CLOSED 状态?

MSL : 一个片段在网络中最大的存活时间,2MSL 就是一个发送和一个回复所需的最大时间。如果直到 2MSL,Client 都没有再次收到 FIN,那么 Client 推断 ACK 已经被成功接收,则结束 TCP 连接😱

第四次挥手时,客户端发送给服务器的 ACK 有可能丢失,如果服务端没有因为某些原因而没有收到 ACK 的话,服务端就会重发 FIN,如果客户端在 2*MSL 的时间内收到了 FIN,就会重新发送 ACK 并再次等待 2MSL,防止 Server 没有收到 ACK 而不断重发 FIN。


6.TCP 如何保证传输的可靠性?

  1. 基于数据块传输 :应用数据被分割成 TCP 认为最适合发送的数据块,再传输给网络层,数据块被称为报文段或段。
  2. 对失序数据包重新排序以及去重:TCP 为了保证不发生丢包,就给每个包一个序列号,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据就可以实现数据包去重。
  3. 校验和 : TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。
  4. 超时重传 : 当发送方发送数据之后,它启动一个定时器,等待目的端确认收到这个报文段。接收端实体对已成功收到的包发回一个相应的确认信息(ACK)。如果发送端实体在合理的往返时延(RTT)内未收到确认消息,那么对应的数据包就被假设为已丢失并进行重传。
  5. 流量控制 : TCP 连接的每一方都有固定大小的缓冲空间,TCP 的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议(TCP 利用滑动窗口实现流量控制
  6. 拥塞控制 : 当网络拥塞时,减少数据的发送。

7.TCP 如何实现流量控制?

TCP 利用滑动窗口实现流量控制。流量控制是为了控制发送方发送速率,保证接收方来得及接收。 接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。

为什么需要流量控制? 这是因为双方在通信的时候,发送方的速率与接收方的速率是不一定相等,如果发送方的发送速率太快,会导致接收方处理不过来。如果接收方处理不过来的话,就只能把处理不过来的数据存在 接收缓冲区 里(失序的数据包也会被存放在缓存区里)。如果缓存区满了发送方还在狂发数据的话,接收方只能把收到的数据包丢掉。出现丢包问题的同时又疯狂浪费着珍贵的网络资源。因此,我们需要控制发送方的发送速率,让接收方与发送方处于一种动态平衡才好。

这里需要注意的是(常见误区):

  • 发送端不等同于客户端
  • 接收端不等同于服务端

TCP 为全双工通信,双方可以进行双向通信,客户端和服务端既可能是发送端又可能是服务端。因此,两端各有一个发送缓冲区接收缓冲区,两端都各自维护一个发送窗口和一个接收窗口。接收窗口大小取决于应用、系统、硬件的限制(TCP传输速率不能大于应用的数据处理速率)。通信双方的发送窗口和接收窗口的要求相同

TCP 发送窗口可以划分成四个部分

  1. 已经发送并且确认的TCP段(已经发送并确认);
  2. 已经发送但是没有确认的TCP段(已经发送未确认);
  3. 未发送但是接收方准备接收的TCP段(可以发送);
  4. 未发送并且接收方也并未准备接受的TCP段(不可发送)。

TCP发送窗口结构图示

TCP发送窗口结构

  • SND.WND :发送窗口。
  • SND.UNA:Send Unacknowledged 指针,指向发送窗口的第一个字节。
  • SND.NXT:Send Next 指针,指向可用窗口的第一个字节。

TCP 接收窗口可以划分成三个部分

  1. 已经接收并且已经确认的 TCP 段(已经接收并确认);
  2. 等待接收且允许发送方发送 TCP 段(可以接收未确认);
  3. 不可接收且不允许发送方发送TCP段(不可接收)。

TCP 接收窗口结构图示

TCP接收窗口结构

接收窗口的大小是根据接收端处理数据的速度动态调整的。 如果接收端读取数据快,接收窗口可能会扩大。 否则,它可能会缩小🥵


8.TCP 的拥塞控制是怎么实现的?

在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种情况就叫拥塞。

拥塞控制就是为了防止过多的数据注入到网络中,这样就可以使网络中的路由器或链路不致过载。拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机,所有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制往往是点对点通信量的控制,是个端到端的问题。流量控制所要做到的就是抑制发送端发送数据的速率,以便使接收端来得及接收。

在这里插入图片描述

为了进行拥塞控制,TCP 发送方要维持一个 拥塞窗口(cwnd) 的状态变量。拥塞控制窗口的大小取决于网络的拥塞程度,并且动态变化。

发送方让自己的发送窗口取为拥塞窗口和接收方的接受窗口中较小的一个🥶

TCP 的拥塞控制采用了四种算法,即 慢开始拥塞避免快重传快恢复。在网络层也可以使路由器采用适当的分组丢弃策略(如主动队列管理 AQM),以减少网络拥塞的发生。

  • 慢开始: 慢开始算法的思路是当主机开始发送数据时,如果立即把大量数据字节注入到网络,那么可能会引起网络阻塞,因为现在还不知道网络的符合情况。经验表明,较好的方法是先探测一下,即由小到大逐渐增大发送窗口,也就是由小到大逐渐增大拥塞窗口数值。cwnd 初始值为 1,每经过一个传播轮次,cwnd 加倍(指数递增)。
  • 拥塞避免: 当 cwnd 的值达到 ssthresh 的值时,开启拥塞避免算法,拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢增大,即每经过一个往返时间 RTT 就把发送放的 cwnd 加 1,试探网络的流量情况。
  • 快重传与快恢复: 在 TCP/IP 中,快速重传和恢复是一种拥塞控制算法,它能快速恢复丢失的数据包。没有 FRR,如果数据包丢失了,TCP 将会使用定时器来要求传输暂停。在暂停的这段时间内,没有新的或复制的数据包被发送。有了 FRR,如果接收机接收到一个不按顺序的数据段,它会立即给发送机发送一个重复确认。如果发送机接收到三个重复确认,它会假定确认件指出的数据段丢失了,并立即重传这些丢失的数据段。有了 FRR,就不会因为重传时要求的暂停被耽误。当有单独的数据包丢失时,快速重传和恢复(FRR)能最有效地工作。当有多个数据信息包在某一段很短的时间内丢失时,它则不能很有效地工作。

快重传与快恢复算法是为了解决超时导致 cwnd 值置为1的网络延迟问题,事实上,超时可能不代表拥塞,而是发生了丢包😳


9.ARQ 协议了解吗?

自动重传请求(ARQ)是 OSI 模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送后一段时间之内没有收到确认信息(Acknoledgements,就是我们常说的 ACK),它通常会重新发送,直到收到确认或者重试超过一定的次数。

ARQ 包括停止等待 ARQ 协议和连续 ARQ 协议

停止等待 ARQ 协议

停止等待协议是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认(回复 ACK)。如果过了一段时间(超时时间后),还是没有收到 ACK 确认,说明没有发送成功,需要重新发送,直到收到确认后再发下一个分组;

在停止等待协议中,若接收方收到重复分组,就丢弃该分组,但同时还要发送确认。

无差错情况:

发送方发送分组,接收方在规定时间内收到,并且回复确认。发送方再次发送。

出现差错情况(超时重传):

停止等待协议中超时重传是指只要超过一段时间仍然没有收到确认,就重传前面发送过的分组(认为刚才发送过的分组丢失了)。因此每发送完一个分组需要设置一个超时计时器,其重传时间应比数据在分组传输的平均往返时间更长一些。这种自动重传方式常称为 自动重传请求 ARQ 。另外在停止等待协议中若收到重复分组,就丢弃该分组,但同时还要发送确认。

确认丢失和确认迟到:

  • 确认丢失 :确认消息在传输过程丢失。当 A 发送 M1 消息,B 收到后,B 向 A 发送了一个 M1 确认消息,但却在传输过程中丢失。而 A 并不知道,在超时计时过后,A 重传 M1 消息,B 再次收到该消息后采取以下两点措施:1. 丢弃这个重复的 M1 消息,不向上层交付。 2. 向 A 发送确认消息。(不会认为已经发送过了,就不再发送。A 能重传,就证明 B 的确认消息丢失)
  • 确认迟到 :确认消息在传输过程中迟到。A 发送 M1 消息,B 收到并发送确认。在超时时间内没有收到确认消息,A 重传 M1 消息,B 仍然收到并继续发送确认消息(B 收到了 2 份 M1)。此时 A 收到了 B 第二次发送的确认消息。接着发送其他数据。过了一会,A 收到了 B 第一次发送的对 M1 的确认消息(A 也收到了 2 份确认消息)。处理如下:1. A 收到重复的确认后,直接丢弃。2. B 收到重复的 M1 后,也直接丢弃重复的 M1

停止-等待协议的信道利用率很低,若出现超时重传,则信道利用率更低🤪于是就有了连续ARQ协议!

连续 ARQ 协议

连续 ARQ 协议可提高信道利用率。发送方维持一个发送窗口,凡位于发送窗口内的分组可以连续发送出去,而不需要等待对方确认。接收方一般采用累计确认,对按序到达的最后一个分组发送确认,表明到这个分组为止的所有分组都已经正确收到了。

优点: 信道利用率高,容易实现,即使确认丢失,也不必重传。

缺点: 不能向发送方反映出接收方已经正确收到的所有分组的信息。 比如:发送方发送了 5 条 消息,中间第三条丢失(3 号),这时接收方只能对前两个发送确认。发送方无法知道后三个分组的下落,而只好把后三个全部重传一次。这也叫 Go-Back-N(回退 N),表示需要退回来重传已经发送过的 N 个消息。


10.从输入URL 到页面展示到底发生了什么?

输入地址

当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址。对于 google的chrome 的浏览器,他甚至会直接从缓存中把网页展示出来,就是说,你还没有按下 enter,页面就出来了

浏览器查找域名的 IP 地址

  1. 请求一旦发起,浏览器首先要做的事情就是解析这个域名,一般来说,浏览器会首先查看本地硬盘的 hosts 文件,看看其中有没有和这个域名对应的规则,如果有的话就直接使用 hosts 文件里面的 ip 地址。
  2. 如果在本地的 hosts 文件没有能够找到对应的 ip 地址,浏览器会发出一个 DNS请求到本地DNS服务器 。本地DNS服务器一般都是你的网络接入服务器商提供,比如中国电信,中国移动。
  3. 查询你输入的网址的DNS请求到达本地DNS服务器之后,本地DNS服务器会首先查询它的缓存记录,如果缓存中有此条记录,就可以直接返回结果。如果没有,本地DNS服务器还要向DNS根服务器进行查询。
  4. 根DNS服务器没有记录具体的域名和IP地址的对应关系,而是告诉本地DNS服务器,你可以到域服务器上去继续查询,并给出域服务器的地址。
  5. 本地DNS服务器继续向域服务器发出请求,假设请求的对象是.com域服务器。.com域服务器收到请求之后,也不会直接返回域名和IP地址的对应关系,而是告诉本地DNS服务器,你的域名的解析服务器的地址。
  6. 最后,本地DNS服务器向域名的解析服务器发出请求,这时就能收到一个域名和IP地址对应关系,本地DNS服务器不仅要把IP地址返回给用户电脑,还要把这个对应关系保存在缓存中,以备下次别的用户查询时,可以直接返回结果,加快网络访问。

浏览器向 web 服务器发送一个 HTTP 请求

拿到域名对应的IP地址之后,浏览器会以一个随机端口(1024<端口<65535)向服务器的WEB程序(常用的有httpd,nginx等)80端口发起TCP的连接请求。

这个连接请求到达服务器端后(这中间通过各种路由设备,局域网内除外),进入到网卡,然后是进入到内核的TCP/IP协议栈(用于识别该连接请求,解封包,一层一层的剥开),还有可能要经过Netfilter防火墙(属于内核的模块)的过滤,最终到达WEB程序,最终建立了TCP/IP的连接。

建立了TCP连接之后,发起一个http请求

服务器的永久重定向响应

服务器给浏览器响应一个301永久重定向响应,这样浏览器就会访问http://www.google.com/而非http://google.com/

浏览器跟踪重定向地址

现在浏览器知道了 http://www.google.com/ 才是要访问的正确地址,所以它会发送另一个http请求

服务器处理请求

后端从在固定的端口接收到TCP报文开始,它会对TCP连接进行处理,对HTTP协议进行解析,并按照报文格式进一步封装成HTTP Request对象,供上层使用。

一些大一点的网站会将你的请求到反向代理服务器中,因为当网站访问量非常大,网站越来越慢,一台服务器已经不够用了。于是将同一个应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。

此时,客户端不是直接通过HTTP协议访问某网站应用服务器,而是先请求到NginxNginx再请求应用服务器,然后将结果返回给客户端,这里Nginx的作用是反向代理服务器。同时也带来了一个好处,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。

服务器返回一个 HTTP 响应

服务器收到了我们的请求,也处理我们的请求,到这一步,它会把它的处理结果返回,也就是返回一个HTTP响应

浏览器显示 HTML

在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了

浏览器发送请求获取嵌入在 HTML 中的资源(如图片、音频、视频、CSS、JS等等)

浏览器会发送一个获取请求来重新获得这些文件。比如我要获取外图片,CSS,JS文件等

这些地址都要经历一个和HTML读取类似的过程。所以浏览器会在DNS中查找这些域名,发送请求,重定向等等…

断开TCP连接,连接结束

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

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

相关文章

第五届字节跳动青训营 前端进阶学习笔记(五)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算法 …

Java反射学习

反射的概念 Reflection(反射&#xff09;是Java被视为动态语言的关键 反射机制允许程序在执行期借助于Reflection API获得任何类的内部信息&#xff0c; 并能直接操作任意对象的内部属性及方法。 加载完类之后&#xff0c;在堆内存的方法区中就产生了一个Class类型的对象&…

【JavaEE】阻塞队列 + 生产者消费者模型

目录 阻塞队列 阻塞队列的使用 生产者消费者模型 模型的两个好处 1. 降低耦合 2. 削峰填谷 简单实现阻塞队列 阻塞队列 阻塞队列是在一般的队列上升级而来的。 对于队列为空时&#xff0c;如果还想取队列中的元素&#xff0c;此时阻塞队列就会进行阻塞。 对于队列为满时…

fpga的SD卡读BMP图片显示实验(SPI模式)

对于 SD 卡的 SPI 模式而言&#xff0c;采用的 SPI 的通信模式为模式 3&#xff0c;即 CPOL1&#xff0c;CPHA1&#xff0c;在 SD 卡 2.0 版本协议中&#xff0c;SPI_CLK 时钟频率可达 50Mhz。SD 卡的 SPI 模式&#xff0c;只用到了 SDIO_D3&#xff08;SPI_CS&#xff09;、SD…

Nacos 部署简单使用

文章目录1、前置相关知识及说明2、官网3、环境4、Nacos 和 Zookeeper、Eureka 的主要区别5、安装部署 & 启动5.1、Windows下载安装包部署单机部署集群部署测试6、使用服务端客户端 - SpringBoot 使用 Nacos Client7、运维健康检查获取配置&#xff0c;验证服务端是否正常异…