网络协议入门 笔记一

一、服务器和客户端及java的概念

        JVM (Java Virtual Machine) : Java虚拟机,Java的跨平台:一次编译,到处运行,编译生成跟平台无关的字节码文件 (class文件),由对应平台的JVM解析字节码为机器指令 (010101)。

        如下图所示,java的项目编译时,写好java代码之后,经过编译得到“.class”后缀的文件,但是这个文件并不是可执行文件,需要依靠各种平台上安装的JVM平台才能运行。这与C/C++代码文件不同,C/C++代码是在不同平台使用不同的编译器编译成不同平台可执行的机器指令,之后在不同的平台运行。

        如下图所示,客户端会安装各种各种的软件,软件将数据发给服务器不同的或者相同的端口,服务器会监听各种端口,例如80或者8080端口,因为有不同的客户端软件发过来数据,为了处理不同软件的数据,就需要在客户端的端口监听下部署针对不同软件的项目。

        下面是服务器的部署项目的方式及依赖:

二、网络物理层知识

        下面将介绍网络中的基础知识:两计算机之间的直接通讯、集线器、网桥、交换器、路由器等。

    1.两台计算机之间可以通过交叉线直连。

    2.集线器

        连接多台计算机
        这些计算机的ip在同一个网段
        半双工通信:整体形成一个冲突域

    3.网桥:
        这些计算机的ip在同一个网段
        会记住两端计算机们的ip和MAC
        半双工通信:网桥两端的计算机们各自隔离成一个冲突域。
        两端独立的冲突域可以各自在域内独立同行

    4.交换器:
        这些计算机的ip在同一个网段
        全双工通信
        会记住连接在交换器上的所有的计算机的ip和MAC

    5.路由器:
        路由器的每个端口都配置有网关和MAC
        网关可以发出ARP广播
        路由器可以实现不同网段的通信。

ICMP协议:是ping指令的通讯协议,具体的内容参考下面文档

ICMP协议详解-CSDN博客

IAR协议:进行ping指令前需要得到对方主机的MAC地址,地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址。具体参考下面的文章。

彻底搞懂系列之:ARP协议 - 知乎 (zhihu.com)

(1)两台计算机之间的直连

         如下图所示的,电脑之间进行数据通讯,需要IP地址地同时,还是需要MAC地址(MAC地址在对应地网卡中,是全球唯一的)。计算机1向计算机2发送数据的时候,需要知道计算机2的IP地址,还需要知道对方的MAC地址。

        数据传输的过程,最终计算机中的数据是根绝MAC(网卡地址)将数据发出,接收数据的时候如果数据包中的目标MAC地址是自己网卡的地址就接收数据,如果不是自己网卡的地址就将数据包丢弃。

        两个电脑直连,要想实现两个电脑之间的通讯,两个电脑的IP地址必须在同一个网段,不在同一个网段是不能ping通的。ping过程走的是ICMP协议。

        一个主机ping另一个主机的时候,首先向自己同一个网段内发送ARP广播,获得对方的MAC地址,然后在进行ICMP协议的ping命令的发送。

一次ARP请求:(1)pc7------->:ARP请求开始

                         (2)pc7------->pc8:ARP

                         (3)pc8------->pc7:ARP

一次ICMP请求:(1)pc7------->:ICMP请求开始

                          (2)pc7------->pc8:ICMP

                          (3)pc8------->pc7:ICMP

注意:ARP和ICMP的数据报,都是要求自己和目标主机在同一个网段中,也就是ping这条指令的进行首先要发ARP广播获得目标主机的MAC地址,然后在发送ICMP数据,这两条通讯都是需要两台主机在同一个网段,不在同一个网段需要加路由器,这个后面会讲。

如上图所示的发送ARP请求的时候,目标MAC地址为“FFFF.FFFF.FFFF”说明这个信息是“广播”。

        发送数据给指定ip的主机是如何判断目标ip是否与自己是同一个网段?

        例如PC1:ip(192.168.5.10),子网掩码(255.255.255.0)

               PC2:ip(192.168.6.11),  子网掩码(255.255.255.0)

        (1)PC1给PC2发数据的时候,使用PC1的子网掩码与PC1和PC2相位与,两个网段一样,PC1才能给PC2发数据。

        (2)PC2给PC1发数据的时候,使用PC2的子网掩码与PC2和PC1相位与,两个网段一样,PC2才能给PC1发数据。

(2)集线器、同轴电缆 

        同轴电缆如上图所示,半双工通讯。

        下面是集线器,也就是多个同轴电缆的线路集合。

       集线器和同轴电缆都是没有智商的,发送APR广播的时候就会发给所有的机器,是目标地址就会回复,ICMP通讯的通讯的时候,也是发给所有的机器,目标机器接收到数据不是发给对方的,就丢弃数据。

(3)网桥

        介绍网桥是离不开集线器的弊端,因为如下图所示的两个集线器“Hub0”和“Hub1”之间连接起来,然后每个集线器之间接多个设备通讯是有弊端的。

        例如下图所示的“PC11”主机向“PC14”主机发送ping数据报,先发送ARP获取MAC地址,但是这个ARP会发送给图中的所有主机,然后在发送ICMP的数据,这时候也是发送下面的四个主机,由于集线器的半双工通讯,所以左边一个主机发送的给左边主机的之后,右边的主机也是会收到,也是不能进行通讯工作的,这时候工作效率是比较低的。

        这时候引进网桥,网桥是可以记录下来端口接的设备都是有那些MAC地址,在网桥的内部会有一个表格,记录端口和对应连接的MAC地址。

网桥端口连接的MAC地址

L1

PC15的MAC地址
L1PC12的MAC地址
L2PC13的MAC地址
L2PC14的MAC地址

        例如下图所示的网桥已经记录了如上表所示的端口和MAC地址关系。所以PC15给PC12发送ICMP数据,经过集线器,经过网桥的时候,网桥判断这个信息的目标MAC地址是在左边,就不会将信息发送到右边的集线器,这样右边的集线器是可以进行自己的工作的,比如PC13给PC14发送数据在此时,是可以的,提高了效率。

        网桥是不需要ip和MAC地址的。

(4)交换机(局域网的方案)

        交换机是不需要ip和MAC地址的。

        交换机会记录下来每个连接在交换机的端口的主机的MAC地址,交换机的内部在每次通讯的时候记录下来每个端口接的主机的MAC地址,在内部也会记录为一个表格。全部记录下来之后,再次进行源MAC到目标MAC数据发送的时候,就可以将数据从源主机发送到目标主机。

 

        注意:交换机刚开始不知道端口对应的MAC地址的时候,也需要通过ARP报文发送数据,这时候的ARP广播也是会发给连接在交换机上的所有的主机的。

(5)路由器

        前面的集线器、网桥、交换机等都是局域网之间设备进行通讯的方案,只能实现ip地址同一网段的主机之间进行通讯。路由器是局域网与局域网之间进行通讯的解决方案,可以实现不同网段之间主机的通讯。

        对路由器的描述就需要说到交换机的缺点,如果全球的机器都使用交换机连接,那么刚开始发送ARP广播的时候,将会发送给全球所有的主机,如果所有的主机都进行ARP广播,那么网络就乱套了。这时候使用交换机实现局域网内的主机之间的通讯,局域网与局域网之间通过路由器连接交换数据。

        只有通一个网段之间才能形成广播域,不同网段之间不能进行广播,路由器也是隔绝广播信号的。所以即使有了路由器也是不能进行不同网段之间直接进行广播信号的,而是一个网段的广播信号通过网段发给路由器,由路由器转发给另一个网段的交换机,这个路由器上的所有主机。

       上面使用“Packet Tracer”软件进行仿真实验的时候,需要配置的是,四个主机的IP地址、子网掩码、默认网关IP;两个交换机不需要配置,路由器要对两个口配置网关IP地址、子网掩码。

        网关的地址是网段的地址,加上主机地址为1。

        如上图所示的,交换机之间使用路由器连接,当“PC6”和“PC9”进行通讯的时候,主要由以下的几个步骤:

通过ARP获得目标PC的MAC地址:

(1)PC16向“192.168.5.1”这个局域网内发送:目标ip为网关“192.168.5.1”的ARP广播,获得路由器网关接口的MAC地址。

(2)获得网关的MAC地址之后,开始发送ICMP数据:目标ip为PC9“192.168.4.8”,MAC为路由器网关的地址。

(3)路由器接收到PC6的ICMP数据之后,通过数据中的IP地址查找时候知道这个IP地址主机的MAC地址,发现不知道,就开始发送:目标ip为网关“192.168.4.8”的ARP广播,获得PC9的MAC地址。然后将ICMP数据的MAC地址替换成PC9主机的MAC地址,将ICMP报发给PC9主机。

(4)然后PC9主机将返回一个ICMP数据,之后在发送ICMP数据的时候,就不需要在发送ARP获得MAC地址了。

(6)光猫(调制解调器)

        因为网线传输的距离比较短,所以一般使用电话线或者光纤进行网线数据的传输,所以需要将网线信号转换成电话线或者光纤信号。

二、网络地址解析

(1)MAC地址

        不同的系统显示MAC地址,有的中间用“逗号”表示,有的中间用“-”横杠表示,也有的是“:”冒号连接。

        如果目标MAC地址为“FF-FF-FF-FF-FF-FF”,则说明为广播信号。

(2)IP地址

        IP地址有两部分组成,网络标识(网络ID,也叫网段),主机表示(主机ID)。通过子网掩码可以计算出来网络标识和主机表示。

A类地址:

        A类地址的8位网络ID中,第一位必须位“0”,取值范围0~127,回环ip地址属于A类地址。

       主机全为零的IP地址为0,为网段;主机全为的IP地址,为广播地址;主机为1的时候,一般为网关IP地址。

对应的子网掩码:255.0.0.0。

B类地址:

        B类地址的前两位必须为“10”,网络部分的其他位是可以全为零的。

C类地址:

        C类网络地址的前三位必须位“110”。

D和E类地址:

子网掩码的CIDR表示方法:

        192.168.1.100/24,代表子网掩码有24个1。

(3)子网划分

        子网划分是在使用C类IP地址不够主机使用,但是使用B类IP地址又比较浪费,就使用子网划分。

  • 为了尽量避免浪费IP地址资源

    合理地进行子网划分。

  • 子网划分一般有两种:

    • 等长子网划分

    • 变长子网划分

(3.1)等长子网划分

       等长子网划分,换分出来的子网段所容纳的主机数量是一样的。

  • 将主机位取出若干位作为网络位。这时候只需要子网掩码向后增加一位1,一般在划分的一种网段资源不够适用,然后划分主机位更多的网段的时候,例如C类ip地址的主机不够,使用B类ip地址的时候,主机的数量太多了,使用不完,比较浪费,这时候可以进行子网划分。

            比如有一个C类网段:192.168.0.0/24。这个网段可用的ip数量:192.168.0.1 ~ 192.168.0.254。

            但是我只需要100个ip,所以会有154个ip被浪费掉。那么我需要再进行子网划分,且我采用等长子网划分:

            网段: 11000000 10101000 00000000 00000000 192.168.0.0/24

            原来子网掩码 11111111 11111111 11111111 00000000 255.255.255.0

            现在子网掩码 11111111 11111111 11111111 10000000 255.255.255.128

            此时网络位25位,主机位只有7位,11000000 10101000 00000000 00000000这个网段变成了两个网段:

            11000000 10101000 00000000 0.0000000 192.168.0.0/25

            11000000 10101000 00000000 1.0000000 192.168.0.128/25

            这两个网段分别有128-2 = 126个主机ip。

  • 192.168.0.0/24

    这个网段的网络位是不变的,因为C类地址默认的网络位是24位。但是如果我们进行子网划分,将从主机位取出若干位作为网络位。

    一开始只有一个网段,但是后来将这个网段划分,就变成了2个网段了。

  • 注意:子网划分之后,对应划分的子网的    网段,网关,广播地址    等都已经改变了。例如下面的例子:

/*****************************************原来网络地址****************************************************/

        原ip:        192.168.1.0                         原子网掩码:  255.255.255.0

        原网段:192.168.1.0           原网关:192.168.1.1         原广播地址:192.168.1.255

/*************************************子网划分后网络地址**********************************************/

        子网划分:192.168.1.128       子网划分的子网掩码:255.255.255.128

        划分后网段:192.168.1.128   划分后网关:192.168.1.128   划分后广播地址:192.168.1.  192   

(3.2)变长子网划分

        变长子网划分,划分的子网部分所容纳的主机是可以不一样的。

1、192.168.0.0/24 等分成: 192.168.0.0/25 和 192.168.0.128/25

                                192.168.0.0 ~ 192.168.0.127 和 192.168.0.128 ~ 192.168.0.255

2、192.168.0.0/25 等分成: 192.168.0.0/26 和 192.168.0.64/26

                                192.168.0.0 ~ 192.168.0.63 和 192.168.0.64 ~ 192.168.0.127

3、192.168.0.0/26 等分成: 192.168.0.0/27 和 192.168.0.32/27

                                192.168.0.0 ~ 192.168.0.31 和 192.168.0.32 ~ 192.168.0.63

4、192.168.0.0/27 等分成: 192.168.0.0/28 和 192.168.0.16/28

                                192.168.0.0 ~ 192.168.0.15 和 192.168.0.16 ~ 192.168.0.31

5、192.168.0.0/28 等分成: 192.168.0.0/29 和 192.168.0.8/29

                                192.168.0.0 ~ 192.168.0.7 和 192.168.0.8 ~ 192.168.0.15

6、192.168.0.0/29 等分成: 192.168.0.0/30 和 192.168.0.4/30

                                192.168.0.0 ~ 192.168.0.3 和 192.168.0.4 ~ 192.168.0.7

(4)这两台设备能通信吗?

  • 计算机发消息时要先判断目标ip是否和自己在同一网段,比如从左向右发消息,计算机0的掩码是255.255.255.0与目标地址192.168.10.10与运算得到结果是:192.168.10.0。而源ip地址192.168.0.10的网段是192.168.0.0。所以两者显然不在同一个网段。所以从左向右一开始就发布出去。

    从右向左:计算机1的网段是192.168.0.0,用自己的(不知道目的计算机的掩码)掩码判断目标地址192.168.0.10的网段是192.168.0.0。发现网段是一样的,那么从右向左能发出去。然是发出去后,还要能接收,经历一次从左向右发送消息。计算机0再判断是否同一个网段时,就会发现不在同一个网段。从左向右发布出去。一种特殊情况:

从左向右:判断目的ip192.168.0.11的网段是192.168.0.0

从右向左:判断目的ip192.168.0.10的网段是192.168.0.0

所以这两个ip能通信:192.168.0.10/24 和 192.168.0.11/16。

主要看计算机发信息时判断源ip和目的ip是否在同一个网段的结果。

(5)超网

        和子网划分相反,前面子网划分是在ip地址分配的主机的数量不够的时候,可以分配主机数量更多的类型的IP地址,这时候可能主机的数量过于多了,可以将这个网络ip进行子网划分,使用划分之后的子网。

        但是现在使用超网的方式也是一样可以解决的,就是将“多个连续网段”合并成一个更大的网段。

注意:必须是连续的网段才能合并。

网段合并的规律:

(6)判断一个网段是子网还是超网

  1. 首先判断该网段的类型:A, B, C

  2. 在判断和默认的子网掩码相比,当前的掩码是向左移还是向右移。

  3. 左移:超网;右移:子网。

比如:

25.100.0.0/16是一个A类子网

00011001 01100100 00000000 00000000

11111111 11111111 00000000 00000000 得到网段 00011001 01100100 .0.0 -- 25.100

而A类地址原本的子网掩码是:255.0.0.0,网段是25;现在掩码255.255.0.0,网段25.100

所以网段变小了,是一个A类子网。

200.100.0.0/16是一个C类超网

11011100 01100100 00000000 00000000

11111111 11111111 00000000 00000000

C类地址:主机位8位;改地址:主机位16位,所以是一个C类超网

(7)路由(静态路由、动态路由)

  • 在不同网段之间转发数据,需要有路由器的支持

  • 默认情况下,路由器只知道跟它直连的网段,非直连的网段需要通过静态路由,动态路由告诉它。

    1. 静态路由

      管理员手动添加路由信息

      适用于小规模网络

    2. 动态路由

      路由器通过路由选择协议(比如RIP,OSPF)自动获取路由信息

      适用于大规模网络

        前面已经讲了路由的作用,可以实现不同网段之间的通讯器,前提是路由器对应的网口都已经设置了对应的网关地址和子网掩码,局域网内的主机也设置了默认网关,就可以实现不同网段的局域网之间的通讯。

        但是不同的局域网之间跨两个及两个以上路由器进行通讯的时候,路由器内部是需要一个路由表的,需要知道下一跳路由器的ip及需要通讯的局域网的网关和子网掩码。并且路由器和路由器之间也是一个局域网,需要设置同一个网段的IP。

        上图中的局域网一共又5个,如下图所示。

        下面是实现跨两个路由器的不同的局域网之间的通讯,上面仿真需要的配置:

(1)PC设置ip地址和子网掩码

(2)PC设置默认网关

(3)路由器开启与交换机连接的端口,配置网关ip地址和子网掩码

(4)路由器开始两个路由器之间通讯的串口,然后配置两个路由器的串口的ip地址和子网掩码。

(5)路由器添加静态路由表的内容,包括路由器需要经过的下一跳的路由器的串口ip,与下一个路由器直连的局域网的网段及子网掩码等。

PC的ip、子网掩码、默认网关。

  

        路由器网口的:网关、子网掩码。

        路由器的:串口的ip和子网掩码。

        路由器的静态路由配置:需要通讯的子网的网关ip、子网掩码、下一跳的路由器串口的ip。

        下满是路由器的配置的路由表:

        上面配置设置好之后,主机之间就可以通讯了。

(7.1)默认路由

        跨两个路由器进行通讯的时候,静态路由需要配置下一条的路由器的串口的ip地址,以需要通讯的网段的网关ip和子网掩码。

        如果不知道需要通讯的局域网的默认网关和子网掩码,那就使用下图所示的默认路由,连载这个路由器上的局域网都可以进行通讯。

三、局域网、NAT

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

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

相关文章

lv11 嵌入式开发 ARM指令集中(汇编指令集) 6

目录 1.指令 1.1 数据处理指令:数学运算、逻辑运算 1.1.1数据搬移指令MOV 、MVN 1.1.2立即数 1.1.3 加法指令 1.1.4 减法指令 1.1.5 逆向减法指令 1.1.6 乘法指令 1.1.7 与、或、非、异或、左移、右移指令 1.1.8 位清零指令 1.1.9 格式扩展 1.1.10 数据运算指令对条件位…

Ubuntu20.0中安装Gradle

下载Gradle到temp文件夹 wget https://services.gradle.org/distributions/gradle-8.3-bin.zip -P /tmp 然后解压文件到/opt/gradle目录 sudo unzip -d /opt/gradle /tmp/gradle-8.3.zip 配置Gradle环境变量 接下来我们会创建一个gradle.sh文件来保存Gradle的环境变量 sudo…

文心一言 VS 讯飞星火 VS chatgpt (138)-- 算法导论11.4 2题

二、用go语言,试写出HASH-DELETE 的伪代码;修改 HASH-INSERT,使之能处理特殊值DELETED。 文心一言: 首先,让我们定义一个基本的哈希表数据结构。这个结构将包括一个存储键值对的哈希表和一个存储已删除键值对的队列。我们可以用…

RobotFramework进阶之自定义的python模块(十四)

引言 RobotFramework自动化框架(以下简称RF)之前文章我们讲了通过import第三方的library(RequestsLibrary等),在实际项目中第三方的包并不能满足我们的需要,此时我们可自己编写python模块(.py文…

穷举法、回溯法、分支界限法解决旅行商(TSP)问题

文章目录 一、问题描述二、穷举法解决2.1 介绍2.2 代码 三、回溯法解决四、分支界限法4.1 介绍4.2 代码 一、问题描述 有一个旅行商由某城市出发,经过所有给定的 n n n 个城市后,再回到出发的城市。除了出发的城市外,其它城市只经过一回。这…

2018年计网408

第33题 下列 TCP/P应用层协议中, 可以使用传输层无连接服务的是()A. FTPB. DNSC. SMTPD. HTTP 本题考察TCP/IP体系结构中,应用层常用协议所使用的运输层服务。 如图所示。这是TCP/IP体系结构中常见应用层协议各自所使用的运输层端口,。在这些应用层协议中&#x…

Java Web 实战 20 - HTTP PK HTTPS ? HTTPS 大获全胜 ?

HTTP VS HTTPS 一 . HTTPS1.1 臭名昭著的运营商劫持1.2 加密是什么 ?1.3 HTTPS 的加密过程对称加密非对称加密引入 "证书" 机制 1.4 HTTP VS HTTPS Hello , 大家好 , 好久没有更新 JavaWeb 模块的内容了 . 博主这篇文章主要给大家讲解一下 HTTPS 以及与 HTTP 的区别…

吐血整理,金融银行测试的“火“到底在哪里?银行测试真正实施...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 银行里的软件测试…

许多网友可能还不知道,升级到Windows 11其实没那么复杂,只要符合几个条件可以了

如果你的Windows 10电脑可以升级Windows 11,现在怎么办?有几种方法可以免费安装新的操作系统。以下是你的选择。 如果你想升级到Windows 11,你可以随时购买一台已经安装了操作系统的新电脑。然而,如果你目前的Windows 10 PC满足所有必要的升级要求,那么在Windows 11免费的…

3.6-Dockerfile语法梳理及最佳实践

WORKDIR是设置当前docker的工作目录 ADD 和 COPY 为了将本地的一些文件添加到docker image里面,ADD 和 COPY的作用特别像,但是ADD 和 COPY还有一些区别,ADD不仅可以添加本地文件到docker里面,还可以将文件在添加到docker image里面…

AIRLOOK与商汤科技强强联合,打造“实景三维与AI大模型”结合的全新盛宴

实景三维中国建设作为数字中国建设的重要内容之一,是一项涉及多方面技术支撑的综合性工程,同时作为AI技术在其中发挥着至关重要的作用,AI大模型的发展也将进一步推动实景三维建模技术的创新和发展。在此背景下,AIRLOOK与商汤科技携…

七、文件包含漏洞

一、文件包含漏洞 解释:文件包含漏洞是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行;其还能够使得服务器上的源代码被读取,在PHP里面我们把可重复使用的函数写入到单个文件中&#x…

Java Swing商品信息查询系统

内容要求 1) 本次程序设计是专门针对 Java 课程的,要求使用 Java 语言进行具有一定代码量的程序开发。程序的设计要结合一定的算法,在进行代码编写前要能够设计好自己的算法。 2)本次程序设计涉及到 Java 的基本语法,即课堂上所…

宠物信息服务预约小程序的效果如何

宠物的作用越来越重要,因此铲屎官们对自己爱宠的照顾也是加倍提升,而市场围绕宠物展开的细分服务近些年来逐渐增多,且市场规模快速增长。涉及之广,涵盖宠物衣食住行、医疗、美容、婚丧嫁娶等,各品牌争相抢夺客户及抢占…

Mysql之单行函数

Mysql之单行函数 单行函数数值类型函数字符串类型的函数日期和时间函数加密与解密函数信息函数 单行函数 函数的定义 函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来, 需要的时候直接调用即可。这…

【MySQL】insert和select单表查询详解(包含大量示例,看了必会)

insert和select 前言正式开始Create全列插入指定列插入多行插入插入失败就更新替换 Retrieveselect语法简介开始查询全列查询指定列查询select后面跟表达式对结果去重条件查询 查询的示例英语不及格的同学及英语成绩 ( < 60 )语文成绩在 [80, 90] 分的同学及语文成绩数学成绩…

《Fine-Grained Image Analysis with Deep Learning: A Survey》阅读笔记

论文标题 《Fine-Grained Image Analysis with Deep Learning: A Survey》 作者 魏秀参&#xff0c;南京理工大学 初读 摘要 与上篇综述相同&#xff1a; 细粒度图像分析&#xff08;FGIA&#xff09;的任务是分析从属类别的视觉对象。 细粒度性质引起的类间小变化和类内…

YOLOv8优化策略:轻量级Backbone改进 | 高效模型 (Efficient MOdel, EMO),现代倒残差移动模块设计 | ICCV2023

🚀🚀🚀本文改进:面向移动端的轻量化网络模型——EMO,它能够以相对较低的参数和 FLOPs 超越了基于 CNN/Transformer 的 SOTA 模型,支持四个版本EMO_1M, EMO_2M, EMO_5M, EMO_6M 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学习YOLOv8,从入门到…

JavaScript职责链模式

JavaScript职责链模式 1 什么是职责链模式2 举个例子3 用职责链模式重构代码4 灵活可拆分的职责链节点5 异步的职责链 1 什么是职责链模式 职责链模式是一种行为型设计模式&#xff0c;它允许将请求沿着处理者链进行传递&#xff0c;直到其中一个处理者能够处理该请求为止&…

C++算法入门练习——树的带权路径长度

现有一棵n个结点的树&#xff08;结点编号为从0到n-1&#xff0c;根结点为0号结点&#xff09;&#xff0c;每个结点有各自的权值w。 结点的路径长度是指&#xff0c;从根结点到该结点的边数&#xff1b;结点的带权路径长度是指&#xff0c;结点权值乘以结点的路径长度&#x…