【《深入浅出计算机网络》学习笔记】第1章 概述

内容来自b站湖科大教书匠《深入浅出计算机网络》视频和《深入浅出计算机网络》书籍


目录

1.1 信息时代的计算机网络

1.1.1 计算机网络的各类应用

1.1.2 计算机网络带来的负面问题

1.2 因特网概述

1.2.1 网络、互联网与因特网的区别与关系

1.2.1.1 网络

1.2.1.2 互联网

1.2.1.3 因特网

1.2.2 因特网的发展历程

1.2.3 因特网的标准化工作和管理机构

1.2.3.1 因特网的标准化工作

1.2.3.2 因特网的管理机构

1.2.4 因特网的组成

1.3 电路交换、分组交换和报文交换

1.3.1 电路交换

1.3.2 分组交换

1.3.3 报文交换

1.4 计算机网络的定义和分类

1.4.1 计算机网络的定义

1.4.2 计算机网络的分类

1.5 计算机网络的性能指标

1.5.1 速率

1.5.2 带宽

1.5.3 吞吐量

1.5.4 时延

1.5.5 时延带宽积

1.5.6 往返时间

1.5.7 利用率

1.5.8 丢包率

1.6 计算机网络的体系结构

1.6.1 常见的三种计算机网络体系结构

1.6.1.1 开放系统互连参考模型

1.6.1.2 TCP/IP参考模型

1.6.1.3 原理参考模型

1.6.2 计算机网络体系结构分层的必要性

1.6.2.1 物理层(physical layer)

1.6.2.2 数据链路层(data link layer)

1.6.2.3 网络层(network layer)

1.6.2.4 运输层(transport layer)

1.6.2.5 应用层(application layer)

1.6.3 计算机网络体系结构分层思想举例

1.6.3.1 主机对数据包的处理过程

1.6.3.2 路由器对数据包的处理过程

1.6.3.3 Web服务器对数据包的处理过程

1.6.3.4 Web服务器给主机发送HTTP响应报文的过程

1.6.4 计算机网络体系结构中的专用术语

1.6.4.1 实体和对等实体

1.6.4.2 协议

1.6.4.3 服务


1.1 信息时代的计算机网络

1.1.1 计算机网络的各类应用

1.1.2 计算机网络带来的负面问题

1.2 因特网概述

1.2.1 网络、互联网与因特网的区别与关系

1.2.1.1 网络

网络(Network)是由若干节点(Node)和连接这些节点的链路(Link)组成的,如图所示。网络中的节点可以是计算机(笔记本电脑、台式电脑、服务器等)、网络互连设备(集线器、交换机、路由器等)、其他具有网络功能的设备(网络打印机、网络摄像头、物联网设备等)。网络中的链路既可以是有线链路,也可以是无线链路。

为了简单起见,我们可以仅用一朵云来表示一个网络,而网络内部的细节则不用给出,如图所示。在今后研究网络互连的相关问题时,这样的做法可以带来极大的便利。

1.2.1.2 互联网

互联网(internet)是由若干网络和连接这些网络的路由器组成的,如图所示。如果我们忽略互连细节,则可将互联网看作一个覆盖范围更大的网络,因此也可称其为“网络的网络(Network of Networks)”。为了简单起见,互联网也可用一朵云表示。

1.2.1.3 因特网

因特网(Internet)是我们几乎每天都会使用的网络,它是当今世界上最大的互联网,其用户数以亿计,互连的网络数以百万计。因特网也常常用一朵云来表示,其内部各种路由器和异构型网络的互连细节不用给出(一般也难以给出),如图所示。连接在因特网上的各种通信设备(例如智能手机、平板电脑、笔记本电脑、台式电脑、服务器、网络打印机和可联网家用电器等)称为主机(Host),而路由器是用于网络互连的专用设备,一般不称其为主机。

综上所述,我们可以将网络、互联网与因特网的区别与关系总结如下:若干节点和链路互连形成网络,而若干网络通过路由器互连形成互联网因特网是当今世界上最大的互联网。

注意:

  • 我们有时并没有严格区分互联网和因特网这两个名词,许多人口中的互联网实际上是指因特网。

  • 网络互连并不仅仅是简单的物理连接,还需要各通信设备中安装有相应的软件。因此当我们谈到网络互连时,就隐含地表示在这些通信设备中已经安装好了相应的软件,因而各通信设备可以通过网络交换信息。

1.2.2 因特网的发展历程

我国的ISP主要有中国电信、中国移动以及中国联通这三大电信运营商,它们向广大用户提供因特网接入服务、信息服务和增值服务,如图所示。

目前,因特网已发展成基于ISP的多层次结构的互连网络,没有人能够准确说出因特网究竟有多大,其整个结构也很难进行细致的描述。下图给出了一种具有三层ISP结构的因特网概念示意图,三层ISP分别为:

  • 第一层ISP是国际级的,其覆盖面积最大并且拥有高速链路和交换设备。第一层ISP之间相互连接构成因特网主干网(Internet Backbone)。
  • 第二层ISP是区域级或国家级的,与少数第一层ISP相连接,作为第一层ISP的用户。一些大公司也是第一层ISP的用户。
  • 第三层ISP是本地级的,与第二层ISP相连接,作为第二层ISP的用户。普通的校园网、企业网、住宅用户以及移动用户等,都是第三层ISP的用户。相同层次的ISP也可选择直接相连。

注意,已接入因特网的用户也可以成为一个ISP。他只需要购买一些相关的设备(例如调制解调器、路由器等),让其他用户能够通过他来接入因特网。因此,因特网的结构实际上是基于ISP的多层次结构,各ISP可以在因特网拓扑上添加新的层次和分支。

1.2.3 因特网的标准化工作和管理机构

1.2.3.1 因特网的标准化工作

制定因特网标准需要经过因特网草案(Internet Draft)、建议标准(ProposedStandard)、草案标准(Draft Standard)、因特网标准(Internet Standard)这4个阶段。由于“草案标准”容易与“因特网草案”混淆,所以从2011年10月起取消了“草案标准”这个阶段[RFC 6410]。这样,现在制定因特网标准的过程简化为:“因特网草案”→“建议标准”→“因特网标准”。

1.2.3.2 因特网的管理机构

1.2.4 因特网的组成

  • 因特网的边缘部分。由连接在因特网上的台式电脑、笔记本电脑、平板电脑、服务器、智能手机、智能手表、网络摄像头和网络打印机等用户设备构成。这些用户设备常称为主机,由用户直接使用,为用户直接提供各式各样的网络应用。
  • 因特网的核心部分。由大量异构型网络和连接这些网络的路由器构成。因特网的核心部分为其边缘部分提供连通性和数据交换等服务。

1.3 电路交换、分组交换和报文交换

1.3.1 电路交换

在早期专为电话通信服务的电信网络中,需要使用很多相互连接起来的电话交换机来完成全网的交换任务。电话交换机接通电话线的方式就是电路交换(Circuit Switching)。从通信资源分配的角度看,交换(Switching)实际上就是以某种方式动态地分配传输线路的资源。使用电路交换进行通信的三个步骤如下:

  1. 建立连接:主叫方必须首先进行拨号以请求建立连接。当被叫方听到电话交换机送来的振铃音并摘机后,从主叫方到被叫方就建立了一条专用的物理通路,简称为连接。这条连接为通话双方提供通信资源。
  2. 通话:主叫方和被叫方现在可以基于已建立的连接进行通话了。在整个通话期间,通话双方始终占用着连接,通信资源不会被其他用户占用。
  3. 释放连接:通话完毕挂机后,从主叫方到被叫方的这条专用的物理通路被交换机释放,将双方所占用的通信资源归还给电信网。

如果主叫方在拨号请求建立连接时听到忙音,这可能是被叫方此时正忙或电信网的资源已不足以支持这次请求,则主叫方必须挂机等待一段时间后再重新拨号。

1.3.2 分组交换

早在因特网的鼻祖ARPANET的研制初期,就采用了基于存储转发技术的分组交换。源主机将待发送的整块数据构造成若干个分组并发送出去,分组传送途中的各交换节点(也就是路由器)对分组进行存储转发,目的主机收到这些分组后将它们组合还原成原始数据块。

待发送的整块数据通常被称为报文(Message)。较长的报文一般不适宜直接传输。如果报文太长,则对交换节点的缓存容量有很大的需求,在错误处理方面也会比较低效。因此需要将较长的报文划分成若干个较小的等长数据段,在每个数据段前面添加一些由必要的控制信息(例如源地址和目的地址等)组成的首部(Header),这样就构造出了一个个分组(Packet)。分组是在分组交换网上传送的数据单元。构造分组的示意图如图所示。

源主机将分组发送到分组交换网中,分组交换网中的分组交换机收到一个分组后,先将其缓存下来,然后从其首部中提取出目的地址,按照目的地址查找自己的转发表,找到相应的转发接口后将分组转发出去,把分组交给下一个分组交换机。经过多个分组交换机的存储转发后,分组最终被转发到目的主机。我们来举例说明上述过程。

在如图所示的简化的分组交换网中,为了简单起见,图中并没有画出互联网中通过路由器互连的各个物理网络,而是把它们分别等效为路由器之间的一段链路,整个互联网可以看作一个分组交换网,而路由器R1~R5就是分组交换网中的交换节点,主机H1~H5通过分组交换网进行通信。

如图所示,H1将分组逐个发送给与其直接相连的路由器R1。此时H1到R1的链路被占用,而分组交换网中的其他链路并未被当前通信的双方占用。

路由器R1对收到的分组进行存储转发,如图所示。假设R1根据分组首部的目的地址查找自己的转发表,查找结果是“下一跳为路由器R2”,则R1转发分组给R2。当分组正在R1与R2之间的链路上传送时,仅占用R1与R2这段链路,而不会占用分组交换网中的其他资源。

假设路由器R2收到分组后按上述方式将分组转发给路由器R3,如图所示。R3收到分组后将分组转发给主机H3。

假设在主机H1给H3连续发送多个分组的过程中,路由器R1与R2之间的通信量太大,那么R1可以把分组沿另一条路径转发给路由器R5。R5转发分组给R4,R4转发分组给R3,R3把分组转发给主机H3。

从上述例子可以看出,分组交换与电路交换有着很大的不同。分组交换没有建立连接和释放连接带来的开销,分组在哪段链路上传送才占用这段链路的通信资源,因而数据的传输效率更高,这对于突发式的计算机数据的传送是非常适宜的。相比于采用电路交换传送突发式的计算机数据,分组交换的通信线路利用率大大提高。

为了提高分组交换网的可靠性,常采用网状拓扑结构。当少数交换节点或链路出现故障时,又或是网络发生拥塞时,交换节点都可以相应地改变转发路由,而不会引起通信中断或全网瘫痪。另外,网络中的主干线路也常由一些高速链路组成。

分组交换的优缺点:

1.3.3 报文交换

电路交换、报文交换以及分组交换的对比:

1.4 计算机网络的定义和分类

1.4.1 计算机网络的定义

计算机网络并没有一个精确和统一的定义。在计算机网络发展的不同阶段,人们对计算机网络给出了不同的定义,这些定义反映了当时计算机网络技术发展的水平。

计算机网络早期的一个最简单定义是,一些互连的、自治的计算机的集合。“互连”是指计算机之间可以进行数据通信,而“自治”是指独立的计算机,它有自己的软硬件,可以独立运行。然而,在当今这个计算机网络技术飞速发展的信息时代,上述有关计算机网络的最简单定义已经不能很好地反映出计算机网络技术的发展水平。

有关计算机网络的一个较好的定义是,计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。这个较好的定义包含了以下含义:

  • 计算机网络所连接的硬件,并不限于一般的计算机,还包括智能手机、具有网络功能的传感器以及智能家电等智能硬件。定义中的“可编程的硬件”表明这种硬件一定包含有中央处理单元CPU。
  • 计算机网络并非只用来传送数据,而是能够基于数据传送进而实现各种各样的应用,包括今后可能出现的各种应用。

1.4.2 计算机网络的分类

1.5 计算机网络的性能指标

1.5.1 速率

注意:

  • 在表1中,数据量单位中的K、M、G、T的数值分别为2^10、2^20、2^30、2^40;在表2中,速率单位中的k、M、G、T的数值分别为10^3、10^6、10^9、10^12。然而在实际应用中,很多人并没有严格区分上述两种类型的单位。例如,某块固态硬盘的厂家标称容量为250GB,而操作系统给出的容量却为232GB,如图所示。产生容量差别的原因在于,厂家在标称容量时,GB中的G并没有严格采用数据量单位中的数值2^30,而是采用了数值10^9;但操作系统在计算容量时,GB中的G严格采用了数据量单位中的数值2^30。
  • 在日常生活中,人们习惯于用更简洁但不严格的说法来描述计算机网络的速率,例如网速为100M,而省略了单位中的b/s。

1.5.2 带宽

1.5.3 吞吐量

1.5.4 时延

  • 发送时延是主机或路由器发送分组所耗费的时间,也就是从发送分组的第一个比特开始,到该分组的最后一个比特发送完毕为止所耗费的时间。
  • 传播时延是电磁波在链路(传输介质)上传播一定的距离所耗费的时间。
  • 当分组进入路由器后,会在路由器的输入队列中排队缓存并等待处理。在路由器确定了分组的转发接口后,分组会在输出队列中排队缓存并等待转发。分组在路由器的输入队列和输出队列中排队缓存所耗费的时间就是排队时延。
  • 路由器从自己的输入队列中取出排队缓存并等待处理的分组后,会进行一系列处理工作。例如,检查分组的首部是否误码、提取分组首部中的目的地址、为分组查找相应的转发接口以及修改分组首部中的部分内容(例如生存时间)等。路由器对分组进行这一系列处理工作所耗费的时间就是处理时延。

1.5.5 时延带宽积

我们可以将链路看作一个圆柱形管道,管道的长度是链路的传播时延(即以时间作为单位来表示链路长度),管道的横截面积是链路的带宽,如图所示。因此,时延带宽积就相当于这个管道的容积,表示这样的链路可以容纳的比特数量。

1.5.6 往返时间

往返时间(Round-Trip Time,RTT)是指从发送端发送数据分组开始,到发送端收到接收端发来的相应确认分组为止,总共耗费的时间。

在下图中,主机A与主机B通过多个异构型的网络和多个路由器进行互连。以太网中的主机A给无线局域网中的主机B发送数据分组(①),主机B收到数据分组后给主机A发送相应的确认分组(②)。从主机A发送数据分组开始,到主机A收到主机B发来的相应确认分组为止,就是这一次交互的往返时间。请读者注意,卫星链路带来的传播时延比较大,这是因为卫星链路的通信距离一般都比较远,例如地球同步卫星与地球的距离大约为36000km,信号的往返传播时延为

往返传播时延 = \frac{36000km}{3\times 10^{8}m/s}\times 2 = 240ms

1.5.7 利用率

1.5.8 丢包率

1.6 计算机网络的体系结构

1.6.1 常见的三种计算机网络体系结构

1.6.1.1 开放系统互连参考模型

开放系统互连参考模型(Open Systems Interconnection Reference Model,OSI/RM),简称OSI。

1.6.1.2 TCP/IP参考模型

因特网是全球覆盖范围最广、用户数量最多的互联网,它采用TCP/IP参考模型。

由于TCP/IP在网络层使用的核心协议是IP协议,IP协议的中文意思是网际协议(Internet Protocol,IP),因此TCP/IP体系结构的网络层也常称为网际层。

大多数网络用户每天都有使用因特网的需求,这就要求用户的主机必须使用TCP/IP体系结构。在用户主机的操作系统中,通常都带有完整的TCP/IP协议族。而因特网中用于网络互连的路由器,就其所需完成的网络互连这一基本任务而言,只包含TCP/IP的网络接口层和网际层即可,因此我们一般认为路由器的网络体系结构的最高层为网际层(网络层),如图所示。

TCP/IP体系结构各层包含的主要协议如图所示。

1.6.1.3 原理参考模型

1.6.2 计算机网络体系结构分层的必要性

1.6.2.1 物理层(physical layer)

我们可以将上述这些问题划归到物理层。

注意,严格来说传输媒体并不属于物理层范畴,它并不包含在计算机网络体系结构之中。另外,计算机网络中传输的信号,并不是我们举例的简单的数字基带信号。之所以举例成数字基带信号,是为了更容易理解。

1.6.2.2 数据链路层(data link layer)

解决了物理层的问题后,主机间可以通过信号来传送比特0和1了。

主机A、主机B和主机C通过总线互连成了一个总线型网络,如图所示。在总线型网络中,需要考虑的主要问题有哪些?

注意,上述这种总线型网络早已淘汰。现在常用的是使用以太网交换机将多台主机互连成交换式以太网,如图所示。在交换式以太网中,不会出现主机争用总线而产生碰撞的问题。

那么以太网交换机又是如何实现的呢?就是以太网交换机自学习和转发帧的原理。

对于交换式以太网这种有线网络,很少出现数据误码的情况,而对于无线网络,比较容易出现数据误码。这就引出了如何检测数据在传输过程中是否出现了误码的问题,也就是差错检测。当检测到数据包有误码时,是直接丢弃,然后什么也不做,又或是让发送方重传有误码的数据包。这就引出了出现传输差错如何处理的问题,根据应用需求,可分为可靠传输服务和不可靠传输服务。

再来看这种情况,主机A给主机B连续发送数据,然而,主机B正在处理很多其他任务,来不及取走输入缓存中的数据。于是,主机B给主机A发送通知,通知主机A停止发送。这就引出了接收方控制发送方注入网络的数据量问题,即流量控制。

1.6.2.3 网络层(network layer)

解决了物理层和数据链路层各自所面临的问题后,就可以实现数据包在一个网络上传输了。然而,我们的网络应用往往不仅限于在一个单独的网络上。例如,我们几乎每天都会使用的因特网,是由非常多的网络和路由器互连起来的,仅解决物理层和数据链路层的问题,还是不能正常工作。

我们可以把如图所示的小型互联网看作因特网中很小的一部分,我们来看看在该小型互联网中,需要考虑的主要问题有哪些。

1.6.2.4 运输层(transport layer)

解决了物理层、数据链路层以及网络层各自的问题后,就可以实现分组在多个网络之间的传送了。然而,对于计算机网络应用而言,仍有一些重要问题需要考虑。

1.6.2.5 应用层(application layer)

解决了物理层、数据链路层、网络层以及运输层各自的问题后,就可以实现进程之间基于网络的通信了。

在进程之间基于网络通信的基础上,可以制定各种应用协议,并按协议标准编写相应的应用程序,通过应用进程之间的交互来实现特定的网络应用。例如支持万维网的HTTP协议、支持电子邮件的SMTP协议以及支持文件传送的FTP协议等。另外,在制定应用协议时,还需要考虑应用进程基于网络通信时的会话管理问题和数据表示问题(采用何种编码、是否加密和压缩数据)。

我们可以将上述这些问题划归到应用层。


1.6.3 计算机网络体系结构分层思想举例

为了更好地领会计算机网络体系结构的分层思想,我们将通过一个常见的网络应用实例来介绍计算机网络体系结构的分层处理方法。

如图所示,主机属于网络N1,Web服务器属于网络N2,N1和N2通过路由器互连。用户在主机中使用浏览器访问Web服务器的过程如下:

  1. 用户在浏览器地址栏中输入Web服务器的域名(①)。
  2. 主机向Web服务器发送一个请求报文(②)。
  3. Web服务器收到请求报文后,执行相应的操作,然后给主机发送响应报文(③)。
  4. 主机收到响应报文后,由浏览器负责解析和渲染显示(④)。

注意,上述网络应用实例仅给出了一个简化的示意过程,因为本节的重点是计算机网络体系结构的分层处理方法,而不是浏览器和Web服务器的详细交互过程。

主机和Web服务器之间基于网络的通信,实际上是主机中的浏览器应用进程与Web服务器中的Web服务器应用进程之间基于网络的通信。我们从如图所示的五层原理体系结构的角度来看看其具体过程。

1.6.3.1 主机对数据包的处理过程

  • 应用层:根据HTTP协议的规定,构建一个HTTP请求报文,用来请求Web服务器执行相应的操作。应用层将构建好的HTTP请求报文向下交付给运输层。

  • 运输层:给HTTP请求报文添加一个TCP首部,将其封装成TCP报文段。TCP首部的主要作用是区分应用进程和实现可靠传输。运输层将封装好的TCP报文段向下交付给网络层。

  • 网络层:为TCP报文段添加一个IP首部,将其封装成IP数据报。IP首部的主要作用是P寻址和路由。网络层将封装好的IP数据报向下交付给数据链路层。

  • 数据链路层:为IP数据报添加一个首部和一个尾部,将其封装成帧。帧首部和尾部的主要作用是MAC寻址和帧校验。数据链路层将封装好的帧向下交付给物理层。

  • 物理层:并不认识帧的结构,仅仅将其看作比特流,以便将比特流转换成相应的电信号进行发送。对于以太网,物理层还会在比特流前添加前导码,目的是使接收方的时钟同步,并做好接收准备。

1.6.3.2 路由器对数据包的处理过程

  • (接收口的)物理层:将收到的电信号转换成比特流,并去掉前导码,然后将帧向上交付给数据链路层。

  • (接收口的)数据链路层:去掉帧的首部和尾部后,将IP数据报向上交付给网络层。

  • 网络层:网络层从IP数据报的首部中提取出目的IP地址,根据目的IP地址查找自己的转发表,以便决定从哪个接口转发该IP数据报。与此同时,还要对首部中的某些字段值(例如生存时间TTL字段的值)进行相应的修改,然后将该IP数据报向下交付给数据链路层。

  • (转发口的)数据链路层:为IP数据报添加一个首部和一个尾部,将其封装成帧,然后将帧向下交付给物理层。

  • (转发口的)物理层:将帧看作比特流,给其添加前导码后转变成相应的电信号发送出去。

1.6.3.3 Web服务器对数据包的处理过程

Web服务器收到数据包后,按网络体系结构自下而上的顺序对其进行逐层解封,解封出HTTP请求报文,如图所示。

1.6.3.4 Web服务器给主机发送HTTP响应报文的过程

Web服务器的应用层收到HTTP请求报文后执行相应的操作,然后给主机发送包含有浏览器请求内容的HTTP响应报文。与浏览器发送HTTP请求报文的过程类似,HTTP响应报文需要在Web服务器层层封装后才能发送。数据包经过路由器的转发到达主机。主机对收到的数据包按网络体系结构自下而上的顺序逐层解封,解封出HTTP响应报文。上述过程如图所示。


1.6.4 计算机网络体系结构中的专用术语

1.6.4.1 实体和对等实体

1.6.4.2 协议

注意,将两个对等实体间的通信称为“逻辑通信”,是因为这种通信其实并不存在,它只是我们假设出来的一种通信。这样做的目的,是方便我们单独研究网络体系结构某一层时,不用考虑其他层。例如,当研究运输层时,可以假设只有运输层的对等实体在进行逻辑通信,而不用顾及其他各层。

计算机网络协议有三个要素。它们分别是语法、语义以及同步。

1.6.4.3 服务

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Microsoft Message Queuing Denial-of-Service Vulnerability

近期官方公布了一个MSMQ的拒绝服务漏洞,可能因为网络安全设备的更新,影响业务,值得大家关注。 漏洞具体描述参见如下: Name: Microsoft Message Queuing Denial-of-Service Vulnerability Description: Microsoft Message Queuing…

Jenkins持续集成-快速上手

Jenkins持续集成-快速上手 注:Jenkins一般不单独使用,而是需要依赖代码仓库,构建工具等。 搭配组合:GitGitee(GitHub、GitLab)MavenJenkins 前置准备 常见安装方式: war包Docker容器实例&…

W5100S-EVB-PICO 做TCP Server进行回环测试(六)

前言 上一章我们用W5100S-EVB-PICO开发板做TCP 客户端连接服务器进行数据回环测试,那么本章将用开发板做TCP服务器来进行数据回环测试。 TCP是什么?什么是TCP Server?能干什么? TCP (Transmission Control Protocol) 是一种面向连…

从Spring源码看创建对象的过程

从Spring源码看创建对象的过程 Spring对于程序员set注入的属性叫做属性的填充、对于set注入之后的处理(包括BeanPostProcessor的处理、初始化方法的处理)叫做初始化。 研读AbstractBeanFactory类中的doGetBean()方法 doGetBean()方法首先完成的工作是…

【Linux操作系统】makefile入门:一个规则-两个函数-三个变量

在Linux中,makefile是一种非常重要的工具,用于自动化构建和管理项目。它可以帮助开发人员轻松地编译和链接程序,同时还可以处理依赖关系和增量构建等问题。在makefile中,我们将重点介绍makefile中的一个规则,两个函数和…

湘大 XTU OJ 1214 A+B IV 题解:数位移动的本质+布尔变量标记+朴素模拟

一、链接 AB IV 二、题目 题目描述 小明喜欢做ab的算术,但是他经常忘记把末位对齐,再进行加,所以,经常会算错。 比如1213,他把12左移了1位,结果变成了133。 小明已经算了一些等式,请计算一下…

harbor搭建

回到目录 Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务 通俗的讲,harbor是一个私人镜像存储服务器 1 下载安装 进入官网,下载一个离线安装包,harbor官网下载 这…

Vc - Qt - QToolButton

QToolButton 是 Qt 框架中的一个类,是 QPushButton 的子类。它可以显示一个可单击的按钮,并且可以与弹出菜单、图标和文本等进行关联。 QToolButton的一些常见特性和用法包括: 设置文本:使用 setText() 函数设置按钮上的文本。设置…

AES加密(1):AES基础知识和计算过程

从产品代码的安全角度考虑,我们需要对代码、数据进行加密。加密的算法有很多种,基于速度考虑,我们一般使用对称加密算法,其中有一种常见的对称加密算法:AES(Advanced Encryption Standard)。在一些高端的MCU&#xff0…

[虚幻引擎] UE DTBase64 插件说明 使用蓝图对字符串或文件进行Base64加密解密

本插件可以在虚幻引擎中使用蓝图对字符串,字节数组,文件进行Base64的加密和解密。 目录 1. 节点说明 String To Base64 Base64 To String Binary To Base64 Base64 To Binary File To Base64 Base64 To File 2. 案例演示 3. 插件下载 1. 节点说…

普罗米修斯之一实现图形化监控

普罗米修斯之一实现图形化监控 1:prometheus1. 下载:2. 安装:3. 启动:1:启动方式之一加入systemctl2:启动方式之二---直接启动3:启动方式之三----后台运行 4:默认配置文件prometheus…

Idea使用Docker插件实现maven打包自动构建镜像

Docker 开启TCP 服务 vi /lib/systemd/system/docker.service改写以下内容 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock重启服务 #重新加载配置文件 systemctl daemon-reload #重启服务 systemctl restart docker.service此时docker已…

考研408 | 【计算机网络】物理层

导图: 一、通信基础 基本概念: 物理层接口特性:物理层解决如何在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。 物理层主要任务:确定与传输媒体接口有关的一些特性 典型的数据通信模型 数据通…

Springboot中拦截GET请求获取请求参数验证合法性

目录 目的 核心方法 完整代码 创建拦截器 注册拦截器 测试效果 目的 在Springboot中创建拦截器拦截所有GET类型请求,获取请求参数验证内容合法性防止SQL注入(该方法仅适用拦截GET类型请求,POST类型请求参数是在body中,所以下面…

WhatsApp 实时聊天小插件:快速触达客户的秘密

当您进入商店时,您希望销售人员会向您打招呼,或者至少在您需要时可以找到人提供帮助。对于电子商务商店,客户的期望不会降低。但谁应该担任 24-7的商店经理?实时聊天可以成为您的电子商务商店经理。 什么是 WhatsApp 实时聊天小插…

MySQL 索引 详解

一、索引概述 索引是帮助 MySQL 高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上…

XML(eXtensible Markup Language)

目录 为什么需要XML? 一 XML语法 1.文档声明 2.元素 语法: 3.属性 4.注释 5.CDATA节 二 树结构 三 转义字符 四 DOM4J 1.XML解析技术 2.dom4j介绍 3.dom4j基本使用 XML 指可扩展标记语言(eXtensible Markup Language)。 XML 被设计用来传…

Redux中reducer 中为什么每次都要返回新的state!!!

Redux中reducer 中为什么每次都要返回新的state!!! 最近在学习react相关的知识,学习redux的时候遇到看到一个面试题: 如果Redux没返回新的数据会怎样? 这就是要去纠结为什么编写reducer得时候为什么不允许直…

【数学】CF1796 C

Problem - 1796C - Codeforces 题意&#xff1a; 思路&#xff1a; 模拟一下样例可以发现一些规律 Code&#xff1a; #include <bits/stdc.h>#define int long longusing i64 long long;constexpr int N 1e6 10; constexpr int mod 998244353;void solve() {int l…

自定义注解(Annontation)

目录 1.注解定义 2.元注解定义 3. 自定义注解&#xff08;自定义的注解名称相同的会覆盖原注解&#xff09; 4.Annotation架构&#xff08;元注解参数介绍&#xff09; 1.注解定义 注解是用来将任何的信息或元数据&#xff08;metadata&#xff09;与程序元素&#xff08;类…