当前位置: 首页 > news >正文

计算机网络--网络层

一、网络层的服务和功能

网络层主要为应用层提供端对端的数据传输服务

  1. 网络层接受运输层的报文段,添加自己的首部,形成网络层分组。分组是网络层的传输单元。
  2. 网络层分组在各个站点的网络层之间传输,最终到达接收方的网络层。
  3. 接收方网络层将运输层报文段上传给本地运输层。

二、IP(Internet Protocol)协议

2.1、定义

        IP协议是TCP/IP体系网络层的主要协议,为上层的TCP、UDP协议提供服务,在TCP/IP体系的网络层中,除了IP协议,还有ICMP、IGMP协议。它负责将数据包从源主机传输到目标主机,是整个互联网通信的基础。

        IP协议是TCP/IP协议体系的核心协议,通过IP协议可以连接各种不同的网络,使整个Internet统一为一个巨大的IP网络。

2.2、特点

  1. 无连接性:IP协议是一种无连接的协议,即在发送数据之前不需要建立连接。每个数据包都是独立发送的,没有建立持久的连接。
  2. 不可靠性:IP协议不提供数据包的可靠传输。当数据包在传输过程中丢失、损坏或重复时,IP协议没有机制来修复或重新传输这些数据包。
  3. 分组交换:IP协议使用分组交换的方式传输数据。数据被分成较小的数据包,每个数据包都带有源地址和目标地址。
  4. 网络独立性:IP协议可以在不同类型的网络上运行,包括以太网、无线网络等。它允许不同类型的设备可以互相通信。
  5. 简单性:IP协议被设计为简单的协议,只提供了数据包的路由功能,不提供数据的校验、确认等功能。
  6. 封装性:IP协议使用分层的封装方式来传输数据。它将应用层的数据进行封装,然后添加IP头部信息,形成一个IP数据包。
  7. 弹性和可扩展性:IP协议是一种弹性和可扩展的协议,可以适应不同的网络环境和需求。

2.3、IP地址

2.3.1、概念

        IP地址是一个32比特(4字节)的二进制数字,采用点分十进制。如下图:

2.3.2、特点

  1. IP地址是一个逻辑地址,与具体的网络技术和硬件无关,可以人为设定或通过DHCP服务器动态获取。
  2. IP地址需要分配给网络接口,与网络接口相关联,一个接口一个IP地址。
  3. 每个IP地址分为两部分:网络号和主机号。网络号代表主机或路由器所处的物理网络,主机号代表所处物理网络中的编号。
  4. 同一个物理网络中的IP地址,它们的网络号相同,主机号不同。

2.3.2、分类

2.3.2.1、五类IP地址

  1. A类网络:网络位占8个比特,第一位固定为0,所以最小的网络号为0(0000 0000),最大的网络号为127(0111 1111)。
  2. B类网络:网络位占16个比特,前两位固定为10。
  3. C类网络:网络位占24个比特,前三位固定为110。
  4. D类网络:以224~239之间的数字开头,作为组播地址预留。因特网上A、B、C类网络都是单播地址,D类网络为组播地址,常用于电话会议或视频会议等。
  5. E类网络:以240~254之间的数字开头,作为保留地址。

注:D、E类网络都不会用来分配给主机或路由器。

2.3.2.2、特殊IP地址
全0和全1地址

全0和全1地址有特殊含义,不分配给主机和路由器。如下图:

环回地址

网络号为127的地址作为环回地址,保留作为本地软件测试,不分配。最常用的环回地址为127.0.0.1,代表本机,即无论网络接口分配的IP地址是多少,127.0.0.1总是代表主机或路由器本身。

私有IP地址

私有IP地址(Private IP Addresses)是专门为内部网络使用的IP地址范围。这些地址在公共互联网上不可路由,意味着它们不会与全球范围内的其他网络上的IP地址冲突。私有IP地址主要用于企业、组织或家庭网络中的设备,如计算机、打印机、路由器等。

以下是三个主要的私有IP地址范围:

  1. 10.0.0.0/8:此范围包括从10.0.0.0到10.255.255.255的所有IP地址。
  2. 172.16.0.0/12:此范围包括从172.16.0.0到172.31.255.255的所有IP地址。不过,有时这个范围会被细分为更小的子网(例如,172.16.0.0/16, 172.17.0.0/16等)。
  3. 192.168.0.0/16:此范围包括从192.168.0.0到192.168.255.255的所有IP地址。这个范围是家庭和小型办公室网络中最常见的。

当内部网络中的设备需要访问公共互联网时,通常会使用网络地址转换(NAT)技术。NAT允许私有IP地址与公共IP地址之间进行映射,这样内部网络中的设备就可以通过公共IP地址与外部网络进行通信,同时保持其私有IP地址的隐私性。

2.4、IP子网

2.4.1、定义

  • 子网(Subnet)或子网络是指在一个更大的网络中划分出来的较小的、相对独立的网络单元。
  • 子网允许将一个给定的网络分为若干个更小的部分,这些更小的部分被称为子网。

2.4.2、作用

2.4.2.1、充分利用IP地址
  1. IP地址由网络号和主机号组成,但并非所有的网络号和主机号都会被使用,尤其在大型网络中。
  2. 子网划分可以把一个大的网络地址分配给更多较小的网络,更有效地使用IP地址空间。
2.4.2.2、限定广播的传播
  1. 子网划分将原有的同处于同一个网段上的主机分成了不同的网段或子网,同时也将原来的一个广播域划分成了若干个较小的广播域。
  2. 广播数据包只能在它特定的广播域中传播,减少广播风暴对网络的影响。
2.4.2.3、更安全的管理网络
  1. 网络中处于同一个子网内的主机才能直接互通,不同子网之间不能直接通信(但可通过路由器或网关进行)。
  2. 这种划分方式增加了网络的安全性,尤其对于人事、财务等敏感性部门。

2.4.3、子网掩码

  • 不能单独存在,必须结合IP地址一起使用。
  • 作用:区分IP地址中的 网络地址 和 主机地址 。
  • 32位的子网掩码由前面连续的若干个1和后面连续的0组成,1的个数就是对应IP地址网络前缀的长度。

 IP地址和子网掩码 按位与 操作,得到地址对应的网络地址。  1 & ? = ? ,  0 & ? = 0

2.4.4、子网划分

2.4.4.1、固定长度子网划分

每个子网包含相同数量的主机地址,适用于小型网络或对IP地址规划要求不太复杂的场景。

特点:子网大小固定,简化管理。

示例:

有一个C类IP地址(如192.168.1.0/24),并且你希望将其划分为4个子网,每个子网包含62台主机(减去网络地址和广播地址),可以使用/26的子网掩码(255.255.255.192)。使用/26的子网掩码,你可以将192.168.1.0/24网络划分为以下四个子网:

  • 子网1:192.168.1.0/26(地址范围:192.168.1.1-192.168.1.62)
  • 子网2:192.168.1.64/26(地址范围:192.168.1.65-192.168.1.126)
  • 子网3:192.168.1.128/26(地址范围:192.168.1.129-192.168.1.190)
  • 子网4:192.168.1.192/26(地址范围:192.168.1.193-192.168.1.254)
2.4.4.2、可变长度子网划分(VLSM)

允许每个子网包含不同数量的主机地址,更适用于大型网络。

特点:子网大小不固定,更高效的地址利用。

示例:

假设一个组织拥有一个C类IP地址段192.168.1.0/24,并希望将其划分为以下子网:

  • 子网1:需要50台主机
  • 子网2:需要100台主机
  • 子网3:需要20台主机

可以使用VLSM进行如下划分:

  • 子网1:使用/25的子网掩码(255.255.255.128),子网地址为192.168.1.0/25,可分配主机地址为192.168.1.1-192.168.1.126。
  • 子网2:同样使用/25的子网掩码,子网地址为192.168.1.128/25,可分配主机地址为192.168.1.129-192.168.1.254。
  • 子网3:由于只需要20台主机,可以使用更长的子网掩码来节省IP地址。这里可以使用/27的子网掩码(255.255.255.224),子网地址为192.168.1.192/27,可分配主机地址为192.168.1.193-192.168.1.222。

2.5、无分类编址CIDR

2.5.1、定义

无分类编址(CIDR):这是一种IP地址分配方案,它消除了传统的IP地址分类(A类、B类、C类)的概念,并通过使用可变长度的子网掩码(VLSM)来定义网络地址和主机地址的边界。

2.5.2、特点:

  1. 灵活性:CIDR允许根据实际需求分配不同大小的IP地址块,从而提高了IP地址的利用率。
  2. 可扩展性:由于CIDR不再受限于固定的IP地址分类,因此它可以更好地适应网络规模的扩展。
  3. 简化路由:CIDR使用路由聚合技术,将多个小的IP地址块合并为一个大的IP地址块,从而减少了路由器中的路由表项,提高了路由效率。

2.5.3、工作原理

  • 子网掩码:CIDR使用可变长度的子网掩码(VLSM)来定义网络地址和主机地址的边界。子网掩码的长度决定了网络地址部分和主机地址部分的位数。
  • 前缀表示法:CIDR使用前缀表示法来表示IP地址和子网掩码。例如,/24表示子网掩码为255.255.255.0,/16表示子网掩码为255.255.0.0。
  • 地址块计算:通过指定前缀长度,可以计算出子网内的可用IP地址数量。例如,/24表示的子网有256个IP地址(包括网络地址和广播地址),其中254个可用于主机。

2.5.4、应用

  • 网络设计:CIDR在网络设计中被广泛应用,用于规划和分配IP地址空间。通过CIDR,可以更容易地实现网络的层次化设计和路由聚合。
  • IP地址分配:服务提供商(ISP)使用CIDR来分配IP地址给其客户。由于CIDR的灵活性,ISP可以根据客户的需求分配适当大小的IP地址块。

2.5.5、示例

假设一个ISP拥有一个C类IP地址段192.168.1.0/24,并希望将其划分为两个子网,每个子网包含128个主机地址。使用CIDR,ISP可以将该地址段划分为两个/25的子网:

  • 子网1:192.168.1.0/25(地址范围:192.168.1.1-192.168.1.126)
  • 子网2:192.168.1.128/25(地址范围:192.168.1.129-192.168.1.254)

2.6、IP数据报

2.6.1、组成

  • IP数据报由首部和数据两部分组成。
  • 首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。
  • 在首部的固定部分的后面是一些可选字段,其长度是可变的。

2.6.2、首部字段

  • 版本号(Version):占4比特,表示IP协议的版本。接收方会首先检查这个字段,如果不支持其中声明的版本,就会拒绝该数据报。广泛使用的版本号为4(即IPv4)该字段值为0100。
  • 首部长度(Header Length):占4比特,表示IP数据报首部的长度,最大十进制数值是15,单位为32位字长(即4字节)。因此,当首部长度为15时,首部长度就达到60字节。
  • 区分服务(Type of Service, TOS):占8比特,用于获取更好的服务,但在实际中较少使用,多数为全0。
  • 总长度(Total Length):指首部和数据之和的长度,单位为字节。总长度字段为16比特,因此数据报的最大长度为2^16-1=65535字节。但实际上,很少有超过1500字节的IP数据报。
  • 标识(Identification):占16比特,用于标识一个数据报。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。
  • 标志(Flags):占3比特,包含以下标志位:最低位是MF(More Fragments):用于指示是否还有后续的分片。中间位是DF(Don't Fragment):用于指示路由器是否可以对数据报进行分片。最高位保留,必须为0。
  • 片偏移(Fragment Offset):占13比特,当数据报被分片时,此字段表示该片在原始数据报中的相对位置(以8字节为单位)。
  • 生存时间(Time to Live, TTL):占8比特,用于限制数据报在因特网上的生存时间,防止数据报在网络中无限循环。每经过一个路由器,TTL值减1,当TTL值为0时,数据报将被丢弃。
  • 协议(Protocol):占8比特,用于指示数据报所携带的数据所使用的协议,如TCP、UDP、ICMP等。
  • 首部校验和(Header Checksum):占16比特,用于校验IP数据报首部的完整性。
  • 源地址(Source Address):占32比特(4字节),表示发送数据报的设备的IP地址。
  • 目的地址(Destination Address):占32比特(4字节),表示接收数据报的设备的IP地址。
  • 选项(Options):可变长度,用于携带额外的控制信息。在标准IPv4中,选项字段很少使用,但在某些特殊情况下(如源路由)可能会被用到。
  • 数据(Data):包含IP数据报的有效载荷,即上层协议(如TCP、UDP)的数据。

2.6.3、特点

  • 无连接:IP协议不维护网络单元(即路由器)中数据报相关的任何链接状态信息。
  • 不可靠:IP协议不保证数据能准确地到达接收端,只是尽自己最大努力传送。
  • 无状态:通信双方不同步传输数据的状态信息,发送、传输、接收都是相互独立的、没有上下文关系的。

2.6.4、作用

IP数据报可以携带各种类型的信息,如文本、音频和视频等,实现互联网上的连接功能。

它对数据包传输进行监测和确认,有助于保证数据传输的完整性和可靠性。

IP数据报还可以用于管理和监测网络性能,以及网络安全方面的追踪和防御。

2.6.5、IPv4与IPv6的区别

IPv4数据报头部大小为20字节(固定部分),除非存在选项(少见)。

IPv6数据报头部长度固定为40字节,不存在选项,但可以有扩展头部。

2.6.6、应用

所有TCP、UDP、ICMP和IGMP数据都通过IP数据报传输。

IP数据报提供了一种尽力而为、无连接的数据报交付服务。

三、路由协议

3.1、定义

        路由协议(Routing Protocol)是一种在路由器之间共享路由信息,以支持可路由协议的机制。它通过创建路由表来描述网络拓扑结构,并与路由器协同工作,执行路由选择和数据包转发功能。

3.2、作用

路由协议的主要作用包括:

  1. 寻找最佳路径:路由协议通过建立和更新路由表,寻找到达目标节点的最佳路径。它考虑了各种因素,如距离、带宽、拥塞状况等,以确保数据包能够快速、可靠地传输。
  2. 转发数据包:根据路由表信息,路由协议将数据包从源节点转发到目标节点。它负责选择适当的路径,并在网络中的各个节点上进行转发操作,以确保数据包按照正确的路径到达目标。

3.3、分类

路由协议可以根据不同的标准进行分类,包括:

  1. 根据作用范围:
    1. 内部网关协议(IGP):在一个自治系统(AS)内部运行,常见的IGP协议包括RIP、OSPF和IS-IS。
    2. 外部网关协议(EGP):运行于不同自治系统之间,BGP是目前最常用的EGP。
  2. 根据使用算法:
    • 距离矢量(Distance-Vector)协议:包括RIP和BGP(BGP也被称为路径矢量协议)。
    • 链路状态(Link-State)协议:包括OSPF和IS-IS。
  3. 根据目的地址类型:
    • 单播路由协议:包括RIP、OSPF、BGP和IS-IS等。
    • 组播路由协议:包括PIM-SM、PIM-DM等。
  4. 根据IP协议版本:
    • IPv4路由协议:包括RIP、OSPF、BGP和IS-IS等。
    • IPv6路由协议:包括RIPng、OSPFv3、IPv6BGP和IPv6IS-IS等。

3.4、路由表

        路由表是计算机网络中的一个关键组件,特别是在互联网协议(IP)网络中。它用于决定数据包从源地址到目的地址的最佳路径。简单来说,路由表就是路由器用来选择数据包传输路径的决策表。通过路由表才能精确定位网络,传输信息。

        路由表的基本信息和重点:

  1. 目的网络/子网:这是路由表中最关键的一列,它表示了数据包的目标IP地址或子网。路由器会检查数据包的目的IP地址,并在路由表中查找匹配项。
  2. 子网掩码:子网掩码用于确定目的IP地址的网络部分。路由器将目的IP地址与子网掩码进行逻辑与操作,然后与路由表中的网络部分进行比较。
  3. 下一跳地址:这是数据包应该发送到的下一个路由器的IP地址。在某些情况下,下一跳可能是直接连接的设备(如主机),但在大多数情况下,它是另一个路由器。
  4. 输出接口:这是数据包应该离开路由器的物理或逻辑接口。它可以是特定的以太网端口、Wi-Fi接入点或其他任何网络接口。
  5. 度量值(或称为“成本”或“距离”):这是一个可选字段,用于表示到达目的网络的成本或距离。路由器可以使用这个字段来选择最佳路径(例如,使用最短路径优先算法)。
  6. 管理距离:这也是一个可选字段,用于确定路由来源的可信度。不同的路由协议(如RIP、OSPF、BGP等)有不同的管理距离值。当路由器有多个可用的路由时,它将选择具有最低管理距离的路由。
  7. 路由类型:这表示路由是如何被学习或发现的。路由可以是静态的(手动配置的)或动态的(通过路由协议自动学习的)。

3.5、路由类型

3.5.1、静态路由

3.5.1.1、定义

        路由表可以手动配置。

        当网络管理员配置了路由器接口的IP地址、子网掩码,启动接口后,路由表中就会出现直连网络的路由。

        网络管理员还可以手动配置到达其他网络的路由,创建路由表项。这样的网络就是静态路由。配置静态路由要求管理员对网络拓扑结构和网络状态有清晰的了解,并且当网络变化时,要手动配置。

3.5.1.2、特点
  1. 手动配置:静态路由需要网络管理员根据实际网络拓扑结构和需求进行手动配置。管理员需要指定目标网络的IP地址、子网掩码、下一跳地址(如果有的话)以及数据包离开路由器的接口。
  2. 路由路径相对固定:由于静态路由是手动配置的,因此每个配置的静态路由在本地路由器上的路径基本上是不变的,除非管理员自己修改。
  3. 永久存在:一旦静态路由被配置,它会永久地存在于路由表中,除非管理员手动删除或相关接口关闭、下一跳IP地址不可达。
  4. 不可通告性:静态路由信息在默认情况下是私有的,不会向其他路由器通告。但管理员可以通过其他手段(如重发布静态路由)来使其他路由器获知这些信息。
  5. 单向性:静态路由只提供单向的路由信息,即只指定了数据包从当前路由器到达目标网络的路径。为了实现双向通信,需要在相关路由器上配置回程静态路由。
  6. 接力性:如果某条静态路由需要经过多个路由器(跳数大于1),则必须在每个中间路由器上配置到达相同目标网络或节点的静态路由。

3.5.1.3、适用范围

        静态路由适用于中小型网络,尤其是网络拓扑结构相对固定、不需要频繁变动的场景。它的优点包括配置简单网络安全保密性高(因为不需要路由器之间频繁交换路由信息)、不占用网络带宽(因为不会产生更新流量)。然而,在大型和复杂的网络环境中,静态路由可能难以适应网络拓扑结构和链路状态的变化,需要大范围地调整路由信息,因此不太适用。

3.5.2、动态路由

3.5.2.1、定义

        路由器之间可以通过路由协议,自主学习来获得的路由信息,这样的路由被称为动态路由。使用路由协议动态构建路由表不需要人工参与,并能自动适应网络状态的变化更新路由表,大型网络或状态变化频繁的网络通常会采用动态路由协议。

3.5.2.2、特点
  1. 自动计算与调整:动态路由允许路由器之间通过交换路由信息来自动计算路由,并根据网络状态的变化实时调整路由表。这种机制使得路由器能够自动适应网络拓扑结构的变化,无需人工干预。
  2. 基于路由协议:动态路由的实现依赖于特定的路由协议,如RIP、OSPF、IS-IS、BGP等。这些协议定义了路由器之间如何交换路由信息以及如何计算路由。
  3. 占用网络带宽:由于动态路由需要路由器之间频繁地交换路由信息,因此会占用一定的网络带宽。但是,这种占用通常是可接受的,因为动态路由能够带来更高的网络灵活性和可用性。
  4. 灵活性高:动态路由能够自动适应网络状态的变化,因此具有很高的灵活性。当网络拓扑结构发生变化时,动态路由能够迅速调整路由表,确保数据包的正常传输。

3.5.2.3、原理
  1. 路由信息交换:路由器之间通过特定的路由协议交换路由信息,包括目标网络的IP地址、子网掩码、下一跳地址等。这些信息被用于计算路由表。
  2. 路由表计算:路由器根据收集到的路由信息,使用特定的路由算法(如距离向量算法、链路状态算法等)计算路由表。这些算法会考虑多个因素,如路径长度、带宽、延迟等,以确定最佳路径。
  3. 路由表更新:当网络状态发生变化时(如链路故障、路由器宕机等),路由器会重新计算路由表并更新相应的路由信息。这种更新过程是自动的,无需人工干预。

3.5.2.4、优缺点

优点

  • 自动适应网络状态变化,无需人工干预。
  • 能够迅速响应网络拓扑结构的变化,确保数据包的正常传输。
  • 提高了网络的灵活性和可用性。

缺点

  • 需要占用一定的网络带宽来交换路由信息。
  • 在某些情况下,可能会产生路由环路等问题,需要采取相应的措施来解决。

3.5.2.5、常见的动态路由协议
  • RIP(路由信息协议):基于距离向量的路由协议,实现简单,开销较小。但是,它只支持小型网络,并且存在路由环路的风险。(RIP配置博客链接)
  • OSPF(开放式最短路径优先):基于链路状态的路由协议,适用于大型网络。它使用Dijkstra算法来计算最短路径,并且具有较高的收敛速度。
  • BGP(边界网关协议):用于在自治系统之间交换路由信息的协议。它是唯一一个用来处理像因特网大小的网络的协议。

相关文章:

计算机网络--网络层

一、网络层的服务和功能 网络层主要为应用层提供端对端的数据传输服务 网络层接受运输层的报文段,添加自己的首部,形成网络层分组。分组是网络层的传输单元。网络层分组在各个站点的网络层之间传输,最终到达接收方的网络层。接收方网络层将运…...

【CSS】如何实现分栏布局

在CSS分栏布局中,设置宽度和样式是一个基本且重要的步骤。这可以通过直接应用样式到列元素(通常是div元素)上来实现。以下是一些常用的方法来设置分栏布局的宽度和样式: 1. 使用百分比宽度 使用百分比宽度可以使列的大小相对于其…...

2025湖北武汉智慧教育装备信息化展/智慧校园展/湖北高博会

2025武汉教育装备展,2025武汉智慧教育展,2025武汉智慧校园展,2025武汉教育信息化展,2025武汉智慧教室展,湖北智慧校园展,湖北智慧教室展,武汉教学设备展,湖北高教会,湖北高博会 2025湖北武汉智慧教育装备信息化展/智慧校园展/湖北高博会 2025第10届武汉国际教育装备及智慧校园…...

Android Studio Run窗口中文乱码解决办法

Android Studio Run窗口中文乱码解决办法 问题描述: AndroidStudio 编译项目时Run窗口中文乱码,如图: 解决方法: 依次打开菜单:Help--Edit Custom VM Options,打开studio64.exe.vmoptions编辑框&#xf…...

代码随想录——划分字母区间(Leetcode763)

题目链接 贪心 class Solution {public List<Integer> partitionLabels(String s) {int[] count new int[27];Arrays.fill(count,0);// 统计元素最后一次出现的位置for(int i 0; i < s.length(); i){count[s.charAt(i) - a] i;}List<Integer> res new Ar…...

SQL注入方法

文章目录 前言如何测试与利用注入点手工注入思路工具sqlmap-r-u-m--level--risk-v-p--threads-batch-smart--os-shell--mobiletamper插件获取数据的相关参数 前言 记录一些注入思路和经常使用的工具&#xff0c;后续有用到新的工具和总结新的方法再继续补充。 如何测试与利用注…...

Vue表单输入绑定v-model

表单输入绑定 在前端处理表单时&#xff0c;我们常常需要将表单输入框的内容同步给Javascript中相应的变量。手动连接绑定和更改事件监听器可能会很麻&#xff0c;v-model 指令帮我们简化了这一步骤。 <template><h3>表单输入绑定</h3><hr> <inpu…...

【分布式系统】ELK 企业级日志分析系统

目录 一.ELK概述 1.简介 1.1.可以添加的其他组件 1.2.filebeat 结合 logstash 带来好处 2.为什么使用ELK 3.完整日志系统基本特征 4.工作原理 二.部署ELK日志分析系统 1.初始化环境 2.完成JAVA部署 三. ELK Elasticsearch 集群部署 1.安装 2.修改配置文件 3.es 性…...

vs2019 无法打开项目文件

vs2019 无法打开项目文件&#xff0c;无法找到 .NET SDK。请检查确保已安装此项且 global.json 中指定的版本(如有)与所安装的版本相匹配 原因&#xff1a;缺少组件 解决方案&#xff1a;选择需要的组件进行安装完成...

Elasticsearch:Painless scripting 语言(一)

Painless 是一种高性能、安全的脚本语言&#xff0c;专为 Elasticsearch 设计。你可以使用 Painless 在 Elasticsearch 支持脚本的任何地方安全地编写内联和存储脚本。 Painless 提供众多功能&#xff0c;这些功能围绕以下核心原则&#xff1a; 安全性&#xff1a;确保集群的…...

SpringBoot项目练习

文章目录 SpringBootVue后台管理系统所需软件下载、安装、版本查询Vue搭建一个简单的Vue项目 Spring项目1项目架构 SpringBootVue后台管理系统 学习视频&#xff1a; https://www.bilibili.com/video/BV1U44y1W77D/?spm_id_from333.337.search-card.all.click&vd_sourcec…...

Android Gradle 开发与应用 (七): Gradle 插件开发与发布

目录 一、概述 二、Gradle插件的基础知识 2.1 Gradle插件的定义 2.2 Gradle插件的种类 2.3 Gradle插件的生命周期 三、开发一个Gradle插件 3.1 创建Gradle插件项目 3.2 编写插件实现 3.3 配置插件元数据 3.4 构建和测试插件 3.5 在项目中应用插件 四、发布Gradle插…...

方法引用详解

什么是方法引用&#xff1f;&#xff1a;针对于函数式接口中的抽象方法 为什么用方法引用&#xff1f;&#xff1a;避免代码的重复&#xff0c;简便书写&#xff0c;提高效率 在使用Lambda表达式的时候&#xff0c;我们实际上传递进去的代码就是一种解决方案&#xff1a;拿参数…...

Apache Seata 高可用部署实践

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 Apache Seata 高可用部署实践 Seata 高可用部署实践 使用配置中心和数据库来实现 Seata 的高…...

nginx配置尝试

from fastapi import FastAPI, File, UploadFile, HTTPException from fastapi.responses import JSONResponse, FileResponse, HTMLResponse import logging import os from datetime import datetime import uvicorn# 初始化日志 logging.basicConfig(filenamefile_server.lo…...

SAR目标检测

Multi-Stage with Filter Augmentation 多阶段滤波器增强(MSFA) 对SAR合成孔径雷达目标检测性能的改善 MSFA ON SAR 传统方法: 预训练:传统方法开始于在通用数据集上预训练一个基础模型。 微调:这个预训练的模型会被微调以适应特定的SAR图像&#xff0c;试图缩小域间的差距 …...

创新配置,秒级采集,火爆短视频评论抓取

快速采集评论数据的好处 快速采集评论数据是在当今数字信息时代的市场趋势分析和用户反馈分析中至关重要的环节。通过准确获取并分析大量用户评论&#xff0c;您将能够更好地了解消费者的需求、情感和偏好。集蜂云采集平台提供了一种简单配置的方法&#xff0c;使您能够快速采…...

STL—容器—string类【对其结构和使用的了解】【对oj相关练习的训练】

STL—容器—string类 其实string类准确来说并不是容器&#xff0c;因为他出现的时间比STL要早&#xff0c;但是也可以说是容器吧。 1.为什么要学习string类&#xff1f; 1.1C语言当中的字符串 C语言中&#xff0c;字符串是以’\0’结尾的一些字符的集合&#xff0c;为了操作…...

讲个SystemVerilog随机约束小坑

正文 记录个在写SystemVerilog随机约束时遇到的一个小坑&#xff0c;如果没有认真去查看随机结果是否符合预期&#xff0c;还真不容易发现。 为了方便讲述&#xff0c;写了如下示例代码。类cl_a里有个随机变量aa&#xff0c;初始值为222。在module top里对类cl_a例化并进行约…...

mysql在windows下的安装

软件安装 配置环境变量 测试...

uniapp 在手机上导出excel

1.创建excelDev.js文件 export default {exportExcel(fileData, documentName excel) {plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, function(fs) {let rootObj fs.rootlet fullPath rootObj.fullPathconsole.log("开始导出数据")// 创建文件夹rootObj…...

收银系统源码-收银台副屏广告

1. 功能描述 门店广告&#xff1a;双屏收银机&#xff0c;副屏广告&#xff0c;主屏和副屏同步&#xff0c;总部可统一控制广告位&#xff0c;也可以给门店开放权限&#xff0c;门店独立上传广告位&#xff1b; 2.适用场景 新店开业、门店周年庆、节假日门店活动宣传&#x…...

【TORCH】torch.normal()中的size参数

在 torch.normal() 函数中&#xff0c;size 参数用于指定生成张量的形状。torch.normal() 函数用于从正态&#xff08;高斯&#xff09;分布中生成随机数。函数的基本形式是&#xff1a; torch.normal(mean, std, size)mean&#xff1a;均值&#xff0c;可以是标量或张量。如果…...

【第20章】MyBatis-Plus逻辑删除支持

文章目录 前言一、逻辑删除的工作原理二、支持的数据类型三、使用方法1.配置全局逻辑删除属性2.在实体类中使用 TableLogic 注解 四、常见问题解答1. 如何处理插入操作&#xff1f;2. 删除接口自动填充功能失效怎么办&#xff1f; 五、实战1. 全局配置2. 添加TableLogic3. 自动…...

【IT领域新生必看】 Java编程中的重载(Overloading):初学者轻松掌握的全方位指南

文章目录 引言什么是方法重载&#xff08;Overloading&#xff09;&#xff1f;方法重载的基本示例 方法重载的规则1. 参数列表必须不同示例&#xff1a; 2. 返回类型可以相同也可以不同示例&#xff1a; 3. 访问修饰符可以相同也可以不同示例&#xff1a; 4. 可以抛出不同的异…...

python转文本为语音并播放

python转文本为语音并播放 1、导入库 pip install pyttsx3==2.902、流程 1、初始化tts引擎 2、设置音量(0到1之间) 3、设置语速 4、 设置声音对象,voices[0].id代表男生,voices[1].id代表女生 5、转换文本并播放 6、挂起声音引擎3、代码 # -*- coding: utf-8 -*-"…...

解锁高效软件测试:虚拟机助力提升测试流程的秘诀

众所周知&#xff0c;软件测试在软件开发生命周期中至关重要。它确保软件符合要求&#xff0c;没有漏洞&#xff0c;并帮助开发人员优化性能&#xff0c;验证项目功能。 然而&#xff0c;测试可能既耗时又耗费资源&#xff0c;特别是当需要在不同操作系统和配置上测试软件组件…...

创建vue3项目

npm create vuelatest 编译打包生成报告 yarn add rollup-plugin-visualizer vite.config.ts: import { fileURLToPath, URL } from node:urlimport { defineConfig } from vite import vue from vitejs/plugin-vue import vueJsx from vitejs/plugin-vue-jsx import vueDevTo…...

中国网络安全审查认证和市场监管大数据中心数据合规官CCRC-DCO

关于CCRC-DCO证书的颁发机构&#xff0c;它是由中国网络安全审查认证与市场监管大数据中心&#xff08;简称CCRC&#xff09;负责。 该中心在2006年得到中央机构编制委员会办公室的批准成立&#xff0c;隶属于国家市场监督管理总局&#xff0c;是其直辖的事业单位。 依据《网络…...

Web漏洞扫描工具AppScan与AWVS测评及使用体验

AppScan和AWVS业界知名的Web漏洞扫描工具&#xff0c;你是否也好奇到底哪一个能力更胜一筹呢&#xff1f;接下来跟随博主一探究竟吧。 1. 方案概览 第一步&#xff1a;安装一个用于评测的Web漏洞靶场&#xff08;本文采用最知名和最广泛使用的靶场&#xff0c;即OWASP Benchma…...

瞰景Smart3D使用体验分享

引言 作为一名建筑设计师&#xff0c;我一直在寻找能够提升工作效率和设计质量的软件工具。瞰景Smart3D&#xff08;Smart3D&#xff09;是一款备受推崇的3D建模和设计软件&#xff0c;广泛应用于建筑、工程和施工&#xff08;AEC&#xff09;行业。经过一段时间的使用&#x…...

Android系统adb shell dumpsys activity processes

在Android系统中&#xff0c;adb shell dumpsys activity processes 命令是一个非常强大的工具&#xff0c;用于获取当前系统中所有运行进程的详细信息&#xff0c;包括它们的状态、内存使用情况、任务栈等。这对于开发者来说非常有用&#xff0c;尤其是在调试应用、分析系统性…...

vue侦听器watch()

侦听器watch&#xff08;&#xff09; 侦听器侦听数据变化&#xff0c;我们可以使用watch 选项在每次响应式属性变化时触发一个函数。 <template><h3>侦听器watch</h3><hr> <p>{{nessage}}</p> <button click"exchage">…...

如何用Python向PPT中批量插入图片

办公自动化办公中&#xff0c;Python最大的优势是可以批量操作&#xff0c;省去了用户粘贴、复制、插入等繁琐的操作。经常做PPT的朋友都知道&#xff0c;把图片插入到PPT当中的固定位置是一个非常繁琐的操作&#xff0c;往往调整图片时耗费大量的时间和精力。如何能省时省力插…...

C# Socket

Socket命名空间&#xff1a;创建 Socket&#xff1a;连接到服务器&#xff08;客户端&#xff09;&#xff1a;绑定和监听&#xff08;服务器端&#xff09;&#xff1a;接受连接&#xff08;服务器端&#xff09;&#xff1a;发送和接收数据&#xff1a;关闭 Socket&#xff1…...

node的下载、安装、配置和使用(node.js下载安装和配置、npm命令汇总、cnpm的使用)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 愿将腰下剑,直为斩楼兰。 ——《塞下曲》 文章目录 一、node.js的下载、安装和配置1. node.js下…...

深度卷积神经网络 AlexNet

一、机器学习深度学习的发展 1、机器学习SVM方法 &#xff08;1&#xff09;20世纪90年代&#xff0c;基于统计学习理论的结果&#xff0c;开发了一种新型的学习算法——支持向量机&#xff08;SVM&#xff09;。这就产生了一类新的理论上优雅的学习机器&#xff0c;它们将SVM…...

【刷题汇总--大数加法、 链表相加(二)、大数乘法】

C日常刷题积累 今日刷题汇总 - day0061、大数加法1.1、题目1.2、思路1.3、程序实现 2、 链表相加(二)2.1、题目2.2、思路2.3、程序实现 3、大数乘法3.1、题目3.2、思路3.3、程序实现 4、题目链接 今日刷题汇总 - day006 1、大数加法 1.1、题目 1.2、思路 读完题,明白大数相加…...

基于Java的网上花店系统

目 录 1 网上花店商品销售网站概述 1.1 课题简介 1.2 设计目的 1.3 系统开发所采用的技术 1.4 系统功能模块 2 数据库设计 2.1 建立的数据库名称 2.2 所使用的表 3 网上花店商品销售网站设计与实现 1. 用户注册模块 2. 用户登录模块 3. 鲜花列表模块 4. 用户购物车…...

uniApp 封装VUEX

Vuex Store (index.js) import Vue from vue; import Vuex from vuex; import Cookies from js-cookie;Vue.use(Vuex);const saveStateKeys [vuex_user, vuex_token, vuex_demo];const initialState {vuex_user: { name: 用户信息 },vuex_token: Cookies.get(token) || ,vue…...

最长公共子序列求长度和输出子序列C代码

求两个字符串的公共子序列我们都知道需要使用用动态规划思想 用res[i][j]表示截止到字符串A的第i个字符串和截止到字符串B的第j个字符的最长公共子序列。如两个字符串helloworld和loop&#xff0c;res[5][3]表示子串hello和子串loo的最长公共子序列&#xff0c;为lo&#xff0…...

安卓Framework开发快速分析日志及定位源码

文章目录 如何区分源码中 main system events 日志查看 Activity 生命周期日志分析 events 日志在源码中位置应用进程ID助分析具体应用ProtoLog 动态开关日志如何快速定位相关流程的代码位置 本文首发地址 https://h89.cn/archives/285.html 最新更新地址 https://gitee.com/ch…...

数据结构算法之B树

一、绪论 1.1 数据结构的概念和作用 1.2 B树的起源和应用领域 二、B树的基本原理 2.1 B树的定义和特点 2.2 B树的结构和节点组成 2.3 B树的插入 2.4 B树的删除操作 三、B树的优势和应用 3.1 B树在数据库系统中的应用 3.2 B树在文件系统中的应用 3.3 B树在内存管理中…...

【图卷积网络】GCN基础原理简单python实现

基础原理讲解 应用路径 卷积网络最经典的就是CNN&#xff0c;其 可以提取图片中的有效信息&#xff0c;而生活中存在大量拓扑结构的数据。图卷积网络主要特点就是在于其输入数据是图结构数据&#xff0c;即 G ( V , E ) G(V,E) G(V,E)&#xff0c;其中V是节点&#xff0c;E是…...

【话题】AI是在帮助开发者还是取代他们

大家好&#xff0c;我是全栈小5&#xff0c;欢迎阅读小5的系列文章&#xff0c;这是《话题》系列文章 目录 引言AI在代码生成中的应用AI在错误检测和自动化测试中的作用对开发者职业前景的影响技能需求的变化与适应策略结论文章推荐 引言 随着人工智能&#xff08;AI&#xff…...

精通Perl正则表达式修饰符:提升文本处理能力的艺术

Perl语言以其强大的文本处理能力而闻名&#xff0c;其中正则表达式是其核心特性之一。正则表达式本身非常强大&#xff0c;但Perl提供的修饰符&#xff08;Modifiers&#xff09;进一步扩展了正则表达式的灵活性和表达能力。本文将深入探讨Perl中正则表达式修饰符的使用&#x…...

【web前端HTML+CSS+JS】--- HTML学习笔记01

学习链接&#xff1a;黑马程序员pink老师前端入门教程&#xff0c;零基础必看的h5(html5)css3移动端前端视频教程_哔哩哔哩_bilibili 学习文档&#xff1a; Web 开发技术 | MDN (mozilla.org) 一、前后端工作流程 WEB模型&#xff1a;前端用于采集和展示信息&#xff0c;中…...

Go 语言入门(一)

Go Modules依赖包查找机制 下载的第三方的依赖存储在 $GOPATH/pkg/mod 下go install 生成的可执行文件存储在 $GOPATH/bin下依赖查找顺序&#xff1a; 工作目录$GOPATH/pkg/mod$GOPATH/src 一、Go语言基础 1.标识符与关键字 1.1 命名方式 ​ go变量、常量、自定义类型、包…...

爬虫笔记20——票星球抢票脚本的实现

以下内容仅供交流学习使用&#xff01;&#xff01;&#xff01; 思路分析 前面的爬虫笔记一步一步走过来我们的技术水平也有了较大的提升了&#xff0c;现在我们来进行一下票星球抢票实战项目&#xff0c;实现票星球的自动抢票。 我们打开票星球的移动端页面&#xff0c;分…...

DDR3(三)

目录 1 预取1.1 什么是预取1.2 预取有哪些好处1.3 结构框图1.4 总结 2 突发2.1 什么是突发2.2 突发与预取 本文讲解DDR中常见的两个术语&#xff1a;预取和突发&#xff0c;对这两个概念理解的关键在于地址线的低位是否参与译码&#xff0c;具体内容请继续往下看。 1 预取 1.1…...