【计算机网络】网络基础

文章目录

  • 1. 网络的发展
  • 2. 认识网络协议
    • 2.1 协议栈在所有操作系统中是统一的
    • 2.2 协议分层
    • 2.3 协议各层的功能
    • 2.4 协议分层的好处
  • 3. 具体的网络协议栈
    • 3.1 OSI七层模型
    • 3.2 TCP/IP五层模型
  • 4. 网络通信基本流程
    • 4.1 同局域网的两台主机通信
    • 4.2 跨局域网的两台主机通信
  • 5. 网络中的地址管理
    • 5.1 认识IP地址
    • 5.2 认识MAC地址

1. 网络的发展

独立模式:计算机之间相互独立

在早期的时候,计算机之间是相互独立的,此时如果要多个计算机协同完成某种业务,那么就只能等一台计算机处理完后再将数据传递给下一台计算机,然后下一台计算机再进行相应的业务处理,效率非常低下。
在这里插入图片描述

网络互联:多台计算机连接在一起,完成数据共享

这时就有人设法将这些计算机连接在一起,当某个业务需要多台计算机协同完成时,就可以将共享的数据放到服务器中进行集中管理,此时每个计算机就都能获取到这些共享的数据,所以各个业务在处理时就能随时进行切换了。

在这里插入图片描述

局域网LAN:计算机数量更多了,通过交换机和路由器连接在一起。

后来这样的网络雏形逐渐发展,连入这个网络中得到机器变得越来越多,于是就出现了局域网的概念。

在局域网中有一种设备叫做交换机,交换机主要完成局域网内数据的转发工作,也就是在局域网内将数据从一台主机转发给另一台主机。各个局域网之间通过路由器连接起来,路由器主要完成数据的路由转发工作。
在这里插入图片描述

广域网WAN:将远隔千里的的计算机都连在一起。

各个局域网之间通过路由器连接在一起,便组成了一个更大的网络结构,我们将其称之为广域网。实际局域网和广域网是一种相对的概念,我们也可以将广域网看作一个很大的局域网。
在这里插入图片描述
我们可能还听过城域网和校园网这样的概念,城域网实际就是在一个城市范围内所建立的计算机通信网,而校园网对应的就是在一个校园范围内所建立的计算机通信网。城域网和校园网实际也是一种相对的概念,我们都可以将它们看作一个大的局域网。

区分广域网和局域网

在一般情况下,可以通过是否有路由器来初步区分一个网络是广域网还是局域网。理论上来说,如果一个网络中存在路由器,则该网络可以连接到其他局域网和互联网上,从而形成了广域网。而如果一个网络中没有路由器,则之鞥呢与同一局域网内的设备进行通信,因此可以被视为局域网。这种区分方法可能并不准确,比如在一些大型企业和学习中,可能会使用多个路由器来分隔不同部门或楼层的网络。这种情况下,整个网络仍然可以被视为一个局域网,而不是广域网。

2. 认识网络协议

2.1 协议栈在所有操作系统中是统一的

我们通常在手机或者电脑上使用的APP,比如抖音,淘宝等,这些APP都是在应用层的。用户在应用层的各种请求最终会下达给操作系统,操作系统内除了
进程管理,文件管理,内存管理,驱动管理之外,还有一个内嵌的软件协议栈,协议栈将用户的数据进行各种封包后,通过网卡将数据传递到网络当中,数据在网络内部经过各种路由转发,最终将数据传送到了目标服务器。

目标服务器本身也是一台计算机,该计算机的操作系统就是Linux,而我们在访问目标服务器时使用的可能是Windows,安卓等操作系统。此外,对端服务器也有自己的协议栈,对端服务器将拿到的数据通过协议栈进行各种解包操作后上交给应用层,在对端服务器的应用层就有一个对应的软件服务器,比如抖音服务器,快手服务器,淘宝服务器等,软件服务器内部对收到的用户请求进行各种分析处理之后,再将对应的数据以相同方式返回给用户。
在这里插入图片描述
需要注意的是,不同操作系统的进程管理,文件管理,内存管理,驱动管理的实现方式可能是不一样的,比如Windows和Linux实现多线程的方式是不一样的,Linux当中的线程是用轻量级进程模拟的,而Windows当中是有真正意义上的线程的。

而协议栈是网络标准组织定义的,是具有全球性性质的,所有的操作系统都必须支持。也就是说,虽然客户端和服务器可能使用的是不同种类的操作系统,但每个系统实现网络协议栈的方法包括各种细节都是一样的,因此双方对数据进行封包和解包操作都是一样的。

2.2 协议分层

我们知道的是,操作系统中包含进程管理,文件管理,内存管理,驱动管理者四大模块,操作系统层与用户层之间有着系统调用层,操作系统再往下是驱动层,驱动层再往下就是各种硬件设备了。
在这里插入图片描述
操作系统中的进程管理,文件管理,内存管理,驱动管理是隶属于系统部分的,系统部分的核心工作就是管理好各种软硬件资源,对上提供一个良好稳定的运行环境。

操作系统中除了有着四大管理模块,还与网络协议栈有着密切的关系。网络协议栈主要负责数据的通信,其自顶向下可分为四层,分别是应用层,传输层,网络层,数据链路层。

网络协议栈各部分所处位置:

  • 应用层是处于用户层的。这部分代码是由网络协议的开发人员来编写的,比如HTTP协议,HTTPS协议以及SSH协议。
  • 传输层和网络层是位于操作系统层的。其中传输层最经典的协议叫做TCP协议,网络层最经典的叫做IP协议,这就是我们平常所说的TCP/IP协议。
  • 数据链路层是位于驱动层的。其负责真正的数据传输。
    在这里插入图片描述

网络协议栈的其他分层方法

在有些书上可能将网络协议栈分为了五层,这多出来的一层就是最低的物理层,物理层主要就是利用传输介质为数据链路层提供物理连接,实现比特流的透明传输,是与硬件强相关的。

其次,有的书还会将数据链路层和物理层统称为网络接口层,也有人会将网络层叫做网际层。

在这里插入图片描述

将通信过程进行抽象

我们可以将通信过程进行抽象,可以将通信理解成不是两台机器在通信,而是这两台机器当中的网络协议栈之间在进行通信。
在这里插入图片描述

2.3 协议各层的功能

数据链路层和物理层

要实现通信我们首先要能够将数据发送出去,而数据链路层和物理层就是负责数真正的发送过程的。

网络层

在数据链路层和物理层的支持下,现在能够将数据发送出去了,但是我们还应该知道数据应该往哪里发,而网络层完成的就是数据转发,解决了数据区哪里的问题。

传输层

现在有了发送数据的能力,也知道数据往哪里发,但是我们并不难保证发出去的数据能够成功地到达对端主机,比如在传输过程中可能会出现丢包或者对端主机关机,甚至对端服务器出错,导致数据传送出现问题。而传输层的工作就是处理传输时遇到的问题,主要是保证数据可靠性。

应用层

也就是说,网络协议栈的下三层能够保证把数据交付给对端主机,但现在我们还需要明确的是,我们将数据发送给对端主机的目的是什么,而这就是应用层要解决的问题。应用层需要根据特定的通信目的,对数据进行分析和处理,以达到某种业务性的目的。

因此网络协议栈的下三层主要主要完成的工作就是处理通信细节,而应用层完成的就是某种具有的业务的细节。

因此网络协议栈的顶层应用层对应的就是某种具体的业务细节,而位于应用层之下的各层就对应处理各种通信细节。
在这里插入图片描述

2.4 协议分层的好处

实际上,我们在设计协议栈的时候也可以不进行分层,将每个层的功能全部写在一起,将这些小模块合并成一个更大的模块。但这样的设计方式对设计人员的要求就非常高了,设计人员必须能够编写从物理层到应用层的整个通信过程的代码,并且最终设计出来的代码的可维护性和可扩展性是很低的。

层状结构的本质是软件工程上面的解耦,此时层与层之间只有接口的相互调用关系,此时我们就可以让研究不同领域的开发人员编写不同层的代码,最后再将各层的代码联调起来,由于每一层的代码都是对应领域的专业人员编写的,因此代码联调后整体的性能也是很高的。

并且这样的层状结构可以增加代码的可维护性和可扩展性。比如有一天你觉得数据链路层的代码已经无法承担起通信的能力了,那么此时我们就可以用一个新的协议对它进行替换,而其他各层对应的协议都不用换,这就叫做可扩展性。而如果协议栈的某一层出现了问题,我们只要确定了是哪一层出现了问题,就可以直接去对应层去找问题,这就叫做代码的可维护性。

3. 具体的网络协议栈

3.1 OSI七层模型

上面我们所说的那些东西都是TCP/IP四层协议的,而最初定的协议叫做OSI七层协议:

  • OSI(Open System Interconnection,开放系统互联)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。
  • OSI把网络从逻辑上分为了七层,每一层都有相关的,相对于的物理设备,比如路由器,交换机。
  • OSI七层模型是一种框架性的设计方法,其最主要的功能就是帮助不同类型的主机实现数据传输,比如手机和电视之间数据的传输。
  • OSI七层模型最大的优点是将服务,接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
  • 但是,OSI七层模型既复杂也不实用,所以后来在具体实现的时候就对其进行了调整,于是就有了我们现在看到的TCP/IP四层协议。

在这里插入图片描述

3.2 TCP/IP五层模型

TCP/IP是一组协议的代名词,它还包括许多协议,共同组成了TCP/IP协议簇。TCP/IP通讯协议采用了五层的层级结构,每一层都呼叫它的下一层锁提供的网络来完成自己的需求。

  • 物理层:负责光/电信号的传递。比如现在以太网通用的网线,早期以太网采用的同轴电缆,光纤,现在的WiFi无线网使用的电磁波等都属于物理层的概念。物理层的能力决定了最大传输数量,传输距离,抗干扰等。集线器就是工作在物理层的。
  • 数据链路层:负责设备之间的数据帧的传送和识别。例如网卡设备的驱动,帧同步,冲突检测(如果检测到冲突就自动重发),数据差错校验等工作。数据链路层底层的网络通信标准有很多,如以太网,令牌环网,无线LAN等。交换机就是工作在数据链路层的。
  • 网络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间数据传输的线路(路由)。路由器就是工作在网络层的。
  • 传输层:负责两台主机之间的数据传输。例如传输控制协议(TCP),能够确保可靠地从源主机发送到目标主机。
  • 应用层:负责应用程序间沟通。比如简单电子邮件传输(SMTP),文件传输协议(FTP),网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层的。

与OSI七层模型的对应关系:
在这里插入图片描述
可以看到,它们下面几层几乎是没有区别的,操作系统对应的是传输层和网络层,数据链路层和物理层都是对应在驱动层的,而TCP/IP协议当中的应用层就对应到OSI七层协议当中的应用层、表示层和会话层。

一般而言:

  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容。
  • 对于一台路由器,它实现了从网络层到物理层的内容。
  • 对于一台交换机,它实现了从数据链路层到物理层的内容。
  • 对于集线器,它只实现了物理层的内容。

但这并不是绝对的,比如很多交换机也实现了网络层的转发,很多路由器也实现了部分传输层的内容(比如端口转发)。

4. 网络通信基本流程

4.1 同局域网的两台主机通信

需要明确的是,同一个局域网内的主机是能够进行通信的,因为最初局域网设计的目的,就是为了让局域网内的主机能够进行通信。
在这里插入图片描述
当用户要将文件传输给另一台主机,该文件数据需要先通过网络协议栈进行封装:

  • 文件数据先交给应用层,应用层添加上应用层协议的报头信息后,将数据交给传输层。
  • 传输层收到数据之后,再添加上对应传输层协议的报头信息,并将数据继续向下进行交付。
  • 网络层收到数据之后,再添加上对应网络层协议的报头信息,接着将数据交给数据链路层。
  • 链路层收到数据之后,再添加上对应链路层协议的报头信息,至此数据封装完毕。

数据封装完毕之后就可以通过局域网将其发送给对端主机了,而当对端主机收到数据后,对端也需要通过网络协议栈对该数据进行解包和分用:

  • 链路层收到数据之后,先将数据中对应链路层协议的报头信息提取出来,然后将剩下数据交付给网络层。
  • 网络层收到数据之后,再将数据中对应网络层协议的报头信息提取出来,然后将剩下数据交付给传输层。
  • 传输层收到数据之后,再将数据中对应传输层协议的报头信息提取出来,然后将剩下的数据交付给应用层。
  • 应用层收到数据之后,最后将数据中对应应用层协议的报头信息提取出来,至此便完成了数据的解包与分用。

也就是说,任何一台主机在发送信息之前,该数据都要先自顶向下贯穿协议栈来完成数据的封装,在这个过程中,每一层协议都会添加上对应的报头信息。
而任何一台主机收到数据之后,都要先自底向上贯穿协议栈来完成数据的解包和分用,在这个过程中,每一层协议都会将对应的报头信息提取出来。

数据包的封装和分用

  • 不同协议层对数据包有着不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
  • 应用层数据通过协议栈发到网络上,每层协议都要加上一个数据首部(header)。
  • 首部信息中包含了一些类似于首部有多长,载荷有多长,上层协议是什么等信息。
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的“上层协议字段”将数据交给对应的上层协议处理。

数据封装的过程:
在这里插入图片描述
数据分用的过程:
在这里插入图片描述

什么是报头?

报头本质是也是一种数据,报头一般是通过位段实现的,因此协议栈的每一层都有一个对应的位段来表示当前层的报头。

数据的封装和解包:

  • 数据的封装:实际上就是不断给数据加上各种对应的报头,这些报头里面填充的就是对应的各种协议细节。
  • 数据的解包:实际是就是不断从数据中提取对应的报头,并对提取出来的报头进行数据分析。

有效载荷

当对端主机收到数据后,需要自底向上贯穿数据站,以此进行数据的解包和分用。在这个解包的过程中,每一层数据只需提取出对应的报头,然后对报头数据进行分析,而剩下的数据交付给上层即可。

每一层协议只关心与当前层相关的报头信息,而剩下的信息交付给上层即可,我们将除当前层报头意外的数据叫做“有效载荷”。

需要注意的是,上层协议在数据封装时添加的报头信息,在下层协议进行数据解包时开来就是有效载荷,比如在应用层对数据封装而添加的应用层报头信息,在传输层,网络层,链路层看来,就是有效载荷。

如何将报头与有效载荷进行分离?

协议栈的每一层都要从数据中提取对应的报头信息,而要将数据中的报头提取出来,首先就要明确报头与有效载荷直接的界限,这样才能将它们进行分离。而每一层添加报头时都是将报头添加到数据的首部的,因此我们只需要知道了报头的大小,就能够将报头和有效载荷进行分离。

获取报头的方法有两种

  1. 定长报头,顾名思义就是报头的大小是固定的。
  2. 字描述报头,报头中提供了一个字段,用来表示报头的长度

实际上每个协议都要提供一个方法,让我们获取到报头的大小,这样我们在能在解包时将报头和有效载荷进行分离。

当前层如何得到有效载荷交付给上层的哪一个协议?

网络协议栈的每一层都有多个协议,将报头和有效载荷分离之后,我们如果得知将有效载荷交给上层的哪一个协议呢?

在报头中有对应的字段,表明我们应该将有效载荷交给上层的哪个协议,这就是分用的过程。

协议共性

协议有以下两个共性:

  1. 提供一个将报头与有效载荷分离的方法(实际上是得知报头的大小)
  2. 提供一个字段,表明应该将有效载荷交给上层的哪一个协议

当我们在解包时要将报头与有效载荷分离,当我们分用时要得知将有效载荷交付给上层的哪一个协议。

局域网中传输数据时,该局域网中所有数据都能收到

在一个局域网中,除了当前正在进行通信的A主机和B主机以外,还有其他的主机,那么A主机是如何将数据精准发给B主机呢?

实际上当A主机将数据发给B主机的时候,其他主机也会收到对应的数据,但是它们会识别到这个数据不是发给自己的,于是就把对应的数据丢弃了。

也就是说,在局域网通信的时候,该局域网内所有主机其实都收到了所有被发送的消息,但是只会接收发给自己的数据,不是发给自己的就会丢弃。

什么是碰撞?

当主机A在向主机B发送数据时,其他主机也在通信,并且A主机也可能正在与其他主机进行通信。

但同一局域网内主机在进行相互通信时,使用的都是同一个通信信道,因此如果局域网内的多台主机同时进行通信,此时这些数据直接就可能会相互干扰。

每一个局域网都可以看作是一个碰撞域,如果某个主机发送的数据与其他的数据发生了干扰,我们就可以称这两台主机在该碰撞域内发生了碰撞。

如何判断发送出去的数据发生了碰撞?

刚才提到,主机发送出的数据在该局域网内所有的主机都可以接收到,也包括它自己。这样,它就可以通过将自己发送出的数据与接收到的数据进行对比,如果不相同,则说明发生了数据碰撞。

发生碰撞后是如何进行处理的?

当一个主机发现自己发送出去的数据发生了碰撞,该主机就会执行“碰撞避免”算法,这个算法其实很简单:就是等一段时间之后,再次发送该数据。这也就像现实生活中的两个人同时想要说话的时候,此时对方会说“那你先说吧”,这就是碰撞避免。

需要注意的是,在网络通信压力不大的时候发生碰撞的概率是很小的,我们不要小瞧计算机处理数据的时候和网线传输数据的速度。

每个主机是如果判断数据是否是发给自己的?

每一台计算机都至少配有一张网卡,这张网卡在出厂时就已经内置了一个48位的序列号,我们将这个序列号称之为“MAC”地址,这个MAC地址是全球唯一的。

在局域网中发送的数据实际叫做MAC数据帧,在这个MAC数据帧的报头中会包括两个字段,分别是源MAC地址和目的MAC地址。

在局域网中进行通信的时候,每一个主机在收到一个MAC数据帧之后,都会提取该MAC数据帧的报头,找到目的MAC地址,然后将其与自己的MAC地址进行对比,如果不一样,则会直接将该MAC数据帧丢弃,只有与自己MAC地址一样时,该主机才会将有效载荷交付给上层处理。

两种发送方式:

  1. 单向数据发送:主机发送数据帧时,将数据帧报头中的目的MAC地址设置为某一主机的MAC地址,这样只有指定的主机才会将有效载荷向上交付。
  2. 局域网内进行数据广播:主机发送数据帧时,将数据帧报头中的目的MAC地址设置为全1,此时所有主机收到该数据帧后都会对该数据帧进行处理。

4.2 跨局域网的两台主机通信

上面所说的都是同一局域网内的主机之间的通信,那跨局域网的两台主机之间是如何进行通信的呢?

通信标准相同的两个局域网内的主机通信

局域网之间都是通过路由器连接的,因此一个路由器至少能够横跨两个局域网。可以认为,路由器就是局域网内的一台主机,因此路由器可以喝这些局域网内的任意一台主机进行通信。

比如局域网1当中的主机A想要和局域网2中的主机B进行通信,那么主机A可以先将数据发送给路由器,路由器再将数据发送给主机B。
在这里插入图片描述

通信标准不同的两个局域网内的主机通信

如果路由器级联的两个局域网采用相同的通信标准,那么通信过程就是上述那么。但是路由器级联的局域网可能采用的是不同的通信标准,比如可能局域网1采用的以太网,局域网2采用的是令牌环网。
在这里插入图片描述
由于以太网和令牌环网采用的通信标准是不同的,它们给数据添加报头的形式也是不一样的,因此令牌环网中的主机无法对以太网中发送过来的数据帧进行解包。

路由器可以处理这样的问题,路由器是工作在网络层的一个设备,我们可以认为路由器当中的协议栈是下面这样的。在这里插入图片描述
当数据要从局域网1发送到局域网2时,路由器收到局域网1的数据之后,会将以太网对应的数据帧进行解包,然后将剩下的数据交付给网络层,在网络层对数据进行分析并添加令牌网网对应的报头,然后再将数据发送到局域网2中,此时该数据就能够在令牌环网中传输了。在这里插入图片描述

路由器为什么能够“认路”?

一个路由器可能会级联多个局域网,当路由器需要将一个局域网内的数据发送给另一个局域网时,路由器该如何知道另一个局域网具体是哪个呢?

路由器其实是通过IP地址来确定数据的转发方向的,因特网上的每一个计算机都有一个唯一的IP地址,在数据向下封装时,在网络层封装的报头当中就会包含两个字段,源IP地址和目的IP地址。

当路由器需要将一个局域网内的数据转发到另一个局域网时,在路由器的链路层会将数据对应的链路层报头去掉,然后将有效载荷向上交付给网络层,此时在网络层就可以获取到目的IP地址,然后路由器就会根据该IP地址再路由表中进行查找,最终就能确定该数据发送到哪一个局域网。

使用IP地址可以屏蔽底层的差异

IP地址的存在除了帮助数据“路由”之外,还有一个很重要的作用,那就是屏蔽了底层网络的差异。对于通信主机双方的IP层及往上的协议来说,它们并不需要关心底层使用的是以太网还是令牌环网,它们认为只要填写了源IP地址和目的IP地址就能够将数据发送出去,现在主流的网络也叫做“IP网络”。

屏蔽差异,寻找统一,与其类似的技术还有:

  • 虚拟地址空间:屏蔽了内存之间的差别,让所有的进程看到的都是同一块内存,并且这块内存的布局都是一样的。
  • Linux下一切皆文件:通过文件结构体和函数指针的方案,让我们能够以对待文件的方式对待某些资源。

5. 网络中的地址管理

5.1 认识IP地址

  • IP地址是在IP协议中,用来标识网络中不同主机的地址。一个公网IP地址只能被一台主机占用,一台主机可以拥有多个IP地址。
  • 对于IPv4来说,IP地址是一个4字节,32位的整数。
  • 我们通常也使用“点分十进制”的字符串表示IP地址,例如192.168.0.1,用点分割的每一个数字表示一个字节,范围是0~255。

需要注意的是,IP协议有两个版本,分别是IPv4和IPv6。IPv4用32个比特位来标识IP地址,而IPv6用128个比特位表示IP地址。

在Linux中查看自己的IP地址

在这里插入图片描述

5.2 认识MAC地址

  • MAC地址用来标识数据链路层中相连的节点
  • 长度为48位,即6个字节,一般用16进制数字加上冒号的形式来表示
  • MAC地址在网卡出厂时就确定了,不能修改。MAC地址通常是唯一的(虚拟机中的MAC地址不是真实的MAC地址,可能会冲突,也有些网卡支持永远忽配置MAC地址)。

在Linux中查看自己的MAC地址

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript基础篇(31-40题)

此文章,来源于印客学院的资料【第一部分:基础篇(105题)】,也有一些从网上查找的补充。 这里只是分享,便于学习。 诸君可以根据自己实际情况,自行衡量,看看哪里需要加强。 概述如下: javascri…

Flink简介及部署模式

文章目录 1、Flink简介2、Flink部署2.1 本地模式2.1 Standalone模式部署2.2 Standalone模式下的高可用2.3 Yarn模式Yarn模式的高可用配置:yarn模式中三种子模式的区别: 3、并行度4、提交命令执行指定任务Application Mode VS yarn per-job 5、注意事项5、…

硬件系统工程师宝典(33)-----EEPROM电路如何设计?

各位同学大家好,欢迎继续做客电子工程学习圈,今天我们继续来讲这本书,硬件系统工程师宝典。 上篇我们了解了嵌入式应用中应用领域不同,所采用的CPU也不同,不过CPU部分电路的设计过程都较为相似。并且,我们…

5. Bean 的作用域和生命周期

目录 1. Bean 被修改的案例 2. 作用域定义 2.1 Bean 的 6 种作用域 singleton prototype request session application(了解) websocket (了解) 单例作用域(singleton)VS 全局作用域(…

JVM堆内存介绍

一:JVM中内存 JVM中内存通常划分为两个部分,分别为堆内存与栈内存,栈内存主要用运行线程方法 存放本地暂时变量与线程中方法运行时候须要的引用对象地址。 JVM全部的对象信息都 存放在堆内存中。相比栈内存,堆内存能够所大的多&am…

web-vim信息泄露

(1)知识补充 vim 交换文件名 在使用vim时会创建临时缓存文件,关闭vim时缓存文件则会被删除,当vim异常退出后,因为未处理缓存文件,导致可以通过缓存文件恢复原始文件内容   以 index.php 为例&#xff1…

Windows 10, version 22H2 (updated Jul 2023) 中文版、英文版下载

Windows 10, version 22H2 (updated Jul 2023) 中文版、英文版下载 Windows 10 22H2 企业版 arm64 x64 请访问原文链接:https://sysin.org/blog/windows-10/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Window…

基于C++的QT基础教程学习笔记

文章目录: 来源 教程社区 一:QT下载安装 二:注意事项 1.在哪里写程序 2.如何看手册 3.技巧 三:常用函数 1.窗口 2.相关 3.按钮 4.信号与槽函数 5.常用栏 菜单栏 工具栏 状态栏 6.铆接部件 7.文本编辑 8…

postman接口测试实战讲解

目录 背景描述 创建一个GET请求 在pre-request scripts构建签名 脚本写在环境变量中 postman console的用法 Collection Runner 自动化API测试 创建接口的测试用例 选择并运行自动化接口测试 测试结果 有还不懂的同学可以找我拿演示视频喔 背景描述 有一个项目要使…

10分钟内入门 ArcGIS Pro

本文来源:GIS荟 大家好,这篇文章大概会花费你10分钟的时间,带你入门 ArcGIS Pro 的使用,不过前提是你有 ArcMap 使用经验。 我将从工程文件组织方式、软件界面、常用功能、编辑器、制图这5个维度给大家介绍。 演示使用的 ArcGI…

element-ui 表格没有内容点击插入数据,有内容点击删除(vue)

记录一下&#xff0c;希望能够帮到大家。 <template><div><div class"tabs" style"display: flex;line-height: 20px"><button href"javascript:;" :class"{active: dialogFormVisible3}" click"dialogForm…

[uni-app] 微信小程序 - 组件找不到/导入报错 (分包问题导致)

文章目录 问题表现问题原因 问题表现 切换了个路径下的组件, 导入失败, 尝试了清缓存\重启\删项目等一些列操作均无效 上面两个路径中, 都存在一模一样的videItem.vue Main路径是可以导入的 Main路径是无法导入的 问题原因 后来发现, 是 分包的问题导致. 我们先来假设一个场…

MySQL 主从复制的认识 2023.07.23

一、理解MySQL主从复制原理 1、概念&#xff1a;主从复制是用来建立一个和 主数据库完全一样的数据库环境称为从数据库&#xff1b;主数据库一般是准实时的业务数据库。 2、作用&#xff1a;灾备、数据分布、负载平衡、读写分离、提高并发能力 3、原理图 4、具体步骤 (1) M…

mysql(二)SQL语句

目录 一、SQL语句类型 二、数据库操作 三、数据类型 四、创建 五、查看 六、更改 七、增、删、改、查 八、查询数据 一、SQL语句类型 SQL语句类型&#xff1a; DDL DDL&#xff08;Data Definition Language&#xff0c;数据定义语言&#xff09;&#xff1a;用于…

基于深度神经网络的肺炎检测系统实现

一、说在前面 使用AI进行新冠肺炎图像诊断可以加快病例的诊断速度&#xff0c;提高诊断的准确性&#xff0c;并在大规模筛查中发挥重要作用&#xff0c;从而更好地控制和管理这一流行病。然而&#xff0c;需要强调的是&#xff0c;AI技术仅作为辅助手段&#xff0c;最终的诊断决…

kafka消费者api和分区分配和offset消费

kafka消费者 消费者的消费方式为主动从broker拉取消息&#xff0c;由于消费者的消费速度不同&#xff0c;由broker决定消息发送速度难以适应所有消费者的能力 拉取数据的问题在于&#xff0c;消费者可能会获得空数据 消费者组工作流程 Consumer Group&#xff08;CG&#x…

夯实数字化转型安全地基,华东某农商行开源安全治理经验

华东某农村商业银行是一家全国首批组建的股份制农村金融机构。近年来&#xff0c;该农商行坚持“科技强行”战略&#xff0c;进一步夯实数字化核心基础&#xff0c;积极推动金融科技与产品、服务的深度融合&#xff0c;努力拓展数字金融的包容性&#xff0c;让数字金融更有温度…

《重构的时机和方法》一本值得程序员都认真读的书

写在前面 《重构的时机和方法》是一本关于软件开发中重构技术的书籍。它以独特的风格和内容优势&#xff0c;为读者提供了全面而易于理解的指导&#xff0c;帮助他们在实际项目中应用重构技术&#xff0c;提高代码质量和开发效率。这本书由两个不同风格的部分组成&#xff0c;…

Hadoop生态体系-HDFS

目录标题 1、Apache Hadoop2、HDFS2.1 设计目标&#xff1a;2.2 特性&#xff1a;2.3 架构2.4 注意点2.5 HDFS基本操作2.5.1 shell命令选项2.5.2 shell常用命令介绍 3、HDFS基本原理3.1 NameNode 概述3.2 Datanode概述 1、Apache Hadoop Hadoop&#xff1a;允许使用简单的编程…

RocketMQ重复消费的解决方案::分布式锁直击面试!

文章目录 场景分析方法的幂等分布式锁Redis实现分布式锁抢锁的设计思路 分布式锁案例 直击面试rocketmq什么时候重复消费消息丢失的问题消息在哪里丢失发送端确保发送成功并且配合失败的业务处理消费端确保消息不丢失rocketmq 主从同步刷盘 场景分析 分布式系统架构中,队列是分…