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

【计网速通】计算机网络核心知识点与高频考点——数据链路层(二)


数据链路层核心知识点(二)

涵盖局域网、广域网、介质访问控制(MAC层)及数据链路层设备

上文链接:https://blog.csdn.net/weixin_73492487/article/details/146571476


一、局域网(LAN,Loacl Area Network)

地位
最流行的有线局域网技术,甚至由于局域网市场中的垄断地位,以太网几乎成为局域网的代名词。

三要素

  • 介质访问控制(决定局域网的技术特性):CSMA/CD(载波监听多点接入/碰撞检测),令牌总线协议,令牌环协议
  • 拓扑结构:总线型,星型(现代交换式以太网),环形 , 星型与总线复合型
  • 传输介质: 铜缆,双绞线,光纤
1.以太网(Ethernet)

核心特点:

  • 介质访问控制: CSMA/CD(载波监听多点接入/碰撞检测)

  • 拓扑结构: 逻辑总线型,物理星型(现代交换式以太网)

  • 通信: 采用无连接的工作方式,不编号、不确认,提供不可靠服务;发送的数据都使用曼彻斯特编码;通过网卡NIC与计算机交互连接

  • 帧格式(IEEE 802.3标准):

| 前导码 (7B) | SFD(帧定界符) (1B) | 目的地址 (6B) | 源地址 (6B) | 长度/类型 (2B) | 数据 (46-1500B) | FCS (检验码)(4B) |
|           前导码                    |                                              MAC帧                             |           
  • 最小帧长:64字节(确保碰撞检测)

    最小帧长 = 带宽*争用期(如10Mbps以太网:64B=512bit)

MAC地址
在以太网中,MAC地址是数据链路层用来标识网络设备的唯一地址。每个以太网设备都有一个唯一的MAC地址,通常为48位(6字节)的地址。MAC地址有以下特点:

  • 唯一性:每个网络接口卡(NIC)都分配有唯一的MAC地址。
  • 格式:MAC地址由6个字节组成,通常以十六进制表示,例如 00:1A:2B:3C:4D:5E。

以太网技术

  • 传统以太网/共享式以太网(10BASE-T):
    使用 CSMA/CD 来访问网络,网络中设备(集线器)通过同一根共享电缆连接,数据传输发生时,所有设备都能看到该数据帧。
  • 交换以太网(Switched Ethernet)
    在现代以太网中,大多数网络设备都通过交换机连接,交换机会根据目标MAC地址转发数据帧。交换机通过 MAC地址表 来决定数据帧的转发路径,从而减少了数据帧在网络中的传播范围,也避免了不同设备间的数据碰撞。由于交换机将流量分离到不同的端口上,每个端口都可以独立工作,因此交换以太网中没有数据碰撞发生(交换机隔离冲突域)。
  • 全双工以太网(Full-Duplex Ethernet)
    在全双工模式下,设备可以同时发送和接收数据,不再需要使用CSMA/CD协议来避免碰撞。网络中的数据传输不再发生冲突,因此提高了网络的吞吐量。

关键协议

  • ARP协议:IP地址 → MAC地址映射
  • VLAN(虚拟局域网)
    • 作用:逻辑隔离广播域
    • 实现方式:基于端口/MAC地址/IP子网
    • 帧标记:IEEE 802.1Q标准(插入4B VLAN标签)

2.无线局域网(WLAN)

定义:
无线局域网(WLAN,Wireless Local Area Network)是通过无线电波而非物理连接方式将设备连接在一起的网络。无线局域网常见的标准是IEEE 802.11系列标准。

1. IEEE 802.11标准

IEEE 802.11是无线局域网的基本标准,采用了星形拓扑,涵盖了不同频段、不同传输速率、不同通信方式等。它定义了物理层(PHY)和媒体访问控制层(MAC)(CSMA/CA)的规范。

  • IEEE 802.11a:在5 GHz频段工作,最高传输速率为54 Mbps。
  • IEEE 802.11b:在2.4 GHz频段工作,最高传输速率为11 Mbps。
  • IEEE 802.11g:在2.4 GHz频段工作,最高传输速率为54 Mbps。
  • IEEE 802.11n:在2.4 GHz和5 GHz频段工作,支持更高的传输速率(最高可达600 Mbps)。
  • IEEE 802.11ac:在5 GHz频段工作,支持更高的速率(最高可达1.3 Gbps以上)。
  • IEEE 802.11ax (Wi-Fi 6):在2.4 GHz和5 GHz频段工作,支持更高的传输速率,并提高了网络的效率和容量,支持多用户MU-MIMO。
2. 无线局域网的工作模式

无线局域网主要有两种工作模式:

  • 基础设施模式:设备通过接入点(AP,Access Point)进行通信。所有设备必须通过接入点才能进行数据交换。
  • Ad-Hoc模式(自组网络):设备之间直接通信,无需接入点。它是一种点对点通信方式。
3. 无线局域网的拓扑结构

无线局域网通常采用星型拓扑结构,即所有设备通过无线连接到一个接入点(AP)。接入点是无线局域网的核心,它负责设备之间的数据转发和连接管理。

4. 频谱与信道管理

无线局域网的通信通常在2.4 GHz和5 GHz的频段上进行。每个频段被划分为多个信道,设备之间通过不同的信道进行通信,避免频繁干扰。

  • 2.4 GHz频段:具有较好的覆盖范围,但信道较少,容易干扰。
  • 5 GHz频段:提供更高的带宽和更少的干扰,但其覆盖范围较小。
5. 安全性

无线局域网的安全性问题非常重要。常见的无线安全协议包括:

  • WEP(Wired Equivalent Privacy):早期的加密标准,但已被破解。
  • WPA(Wi-Fi Protected Access):对WEP进行改进,提供更强的加密。
  • WPA2:基于AES加密算法,提供更强的安全性。
  • WPA3:最新的安全标准,提供更强的加密与防护。
6. 802.11的MAC帧结构

IEEE 802.11标准中的媒体访问控制(MAC)层负责处理数据传输中的介质访问问题,确保在共享无线信道中实现高效的通信。MAC帧是802.11协议中数据传输的基本单元。

802.11 MAC帧结构

  • 帧控制(Frame Control):占2字节,包含了帧类型、子类型、协议版本等信息。
  • 持续时间/ID(Duration/ID):占2字节,表示该帧的持续时间(即该帧对信道的占用时长)或某些管理帧的ID。
  • 地址字段(Address Fields):包含4个地址字段,每个地址字段占6字节,通常包括:
    • 地址1:目标地址。
    • 地址2:源地址。
    • 地址3:接入点或中继设备的地址。
    • 地址4(可选):某些特殊的传输模式下可能需要此字段(例如Ad-Hoc模式)。
  • 序列控制(Sequence Control):占2字节,包含帧的序列号和序列号扩展,确保数据的顺序和完整性。
  • 有效载荷(Frame Body):数据部分,包含实际的数据内容(如IP包)。
  • 帧校验序列(FCS):占4字节,用于错误检测和数据完整性验证。

帧结构图解

| 帧控制 (2B) | 持续时间 (2B) | 地址1-4 (各6B) | 序列控制 (2B) | 数据 | FCS (4B) |

(1)帧控制字段
帧控制字段是802.11 MAC帧中非常重要的部分,它占用2字节并包含以下信息:

  • 协议版本(Protocol Version):指明协议的版本,通常为“0”表示当前版本。
  • 类型(Type):指明该帧是管理帧、控制帧还是数据帧(Management, Control, Data)。
  • 子类型(Subtype):针对帧类型,指明具体的操作,如探测请求/响应、认证、数据传输等。
  • 更多信息(More Data):指示是否还有后续数据帧。
  • PWR MGT:指示是否为省电模式。
  • WEP(Wired Equivalent Privacy):标记该帧是否经过加密。

常见的802.11帧类型

  • 管理帧(Management Frames):用于设备的连接、断开、认证、同步等管理操作。例如,Beacon帧(由接入点定期广播,包含网络名称(SSID)、支持的传输速率、信道等信息,帮助客户端设备发现和连接到无线网络。)、Authentication帧(用于设备在加入网络时进行身份验证)、Association Request/Response帧(用于设备请求连接到接入点,以及接入点回复是否允许连接。)。
  • 控制帧(Control Frames):用于控制数据帧的传输,例如,Request to Send (RTS)Clear to Send (CTS)Acknowledgment (ACK)帧。
  • 数据帧(Data Frames):用于传输实际的数据包,承载IP数据包或其他类型的负载。

(2)持续期字段
允许发送数据的站点对信道使用时间的预约,将时间写入这个字段。
(3)三个地址

  • 取决于帧控制字段中 "去往AP "和 “来自AP” 这两个字段的数值
  • "去往AP"表示发送至AP站点,地址一接收地址即AP地址,地址二发送地址为源地址,地址三为目的站点的目的地址
  • "来自AP"表示从AP站点发出,地址一接收地址即目的站点的目的地址,地址二发送地址为AP地址,地址三为源站点的源地址

介质访问控制:CSMA/CA(碰撞避免)

隐藏站问题:通过RTS/CTS握手解决


3.VLAN (Virtual Local Area Network)

基本概念

VLAN(虚拟局域网)是一种将较大的(物理)网络划分(基于接口、MAC地址、IP地址)为多个小的逻辑网络的技术。通过VLAN,可以在同一物理网络基础设施上,将不同的设备或端口分配到不同的虚拟网络中,从而实现流量隔离、管理优化、提高网络安全性和简化管理。

VLAN技术能够使得同一物理网络中,基于逻辑分组的设备在一个广播域内进行通信,而互不干扰,类似于不同的物理网络环境,尽管它们可能在同一交换机上或者通过同一条物理链路进行连接。

特点

  • 逻辑隔离:VLAN允许网络管理员在不增加额外硬件的情况下,将网络设备分为多个逻辑子网,实现流量隔离。
  • 广播控制:VLAN通过限制广播的范围,减少广播风暴的影响,提高网络的整体性能。
  • 安全性增强:通过将不同的用户或设备分配到不同的VLAN,可以有效地控制数据访问权限,增加网络安全性。
  • 简化管理:通过VLAN,网络管理员可以按照部门、功能、物理位置等划分网络,不必依赖物理拓扑。
  • 灵活的网络结构:VLAN可以根据需要灵活地划分,跨越多个交换机,实现跨交换机的虚拟局域网功能。

工作原理

VLAN的工作原理主要基于 “帧标记”“广播域隔离” 两个方面。通过对交换机和路由器的配置,VLAN可以在物理网络上实现逻辑隔离和管理。

  • VLAN标识(VLAN ID):每个VLAN都有一个唯一的标识符,称为VLAN ID。VLAN ID是一个12位的字段(值从1到4095),用于标识不同的虚拟局域网。
  • 数据帧的标记:在VLAN中,交换机会对经过的帧进行“标记”。这种标记是指在以太网帧中插入VLAN ID,以标识该帧属于哪个VLAN。最常见的VLAN标记方法是IEEE 802.1Q标准。
    • 802.1Q帧标记:在数据帧的以太网头部插入4字节的VLAN标记字段,其中包括VLAN的ID信息。这个标记字段会告诉接收端设备该帧属于哪个VLAN。

基本类型

  • 静态VLAN(Static VLAN):静态VLAN是最常见的类型。网络管理员手动为每个交换机端口分配VLAN。这种方式配置简单且可控,但缺乏灵活性。
  • 动态VLAN(Dynamic VLAN):动态VLAN根据设备的MAC地址、IP地址或其他身份信息动态分配VLAN。使用动态VLAN时,设备的VLAN划分依赖于身份验证服务器或协议(如IEEE 802.1X)。

VLAN的配置与管理

  • VLAN创建与配置:大多数交换机支持VLAN的创建与管理。在交换机上,可以通过CLI(命令行界面)或图形界面配置VLAN。例如,可以为不同的端口分配不同的VLAN ID。

    Switch(config)# vlan 10
    Switch(config-vlan)# name HR
    Switch(config-vlan)# exit
    Switch(config)# interface fastEthernet 0/1
    Switch(config-if)# switchport mode access
    Switch(config-if)# switchport access vlan 10
    
  • VLAN间路由:不同VLAN之间的通信需要通过路由器或三层交换机来完成。通常,通过“路由器-on-a-stick”方式来实现VLAN间路由。即在一台路由器上配置多个子接口,每个子接口对应一个VLAN,通过虚拟子接口实现VLAN间的路由。

  • VLAN Trunking(VLAN中继):当多个交换机之间需要传输VLAN流量时,使用VLAN Trunk连接。通过Trunk链路,可以在一条物理链路上传输多个VLAN的流量。VLAN Trunk常使用IEEE 802.1Q协议,允许多个VLAN的流量通过一根链路进行传输。

VLAN间通信

VLAN之间默认是不能直接通信的,必须借助路由器或三层交换机来实现。通过配置“子接口”(subinterface)或使用多层交换机的VLAN接口,可以实现不同VLAN之间的路由功能。

例如,假设VLAN 10和VLAN 20需要互通,配置路由器时可以创建如下接口:

Router(config)# interface gigabitEthernet 0/0.10
Router(config-if)# encapsulation dot1Q 10
Router(config-if)# ip address 192.168.10.1 255.255.255.0
Router(config-if)# exitRouter(config)# interface gigabitEthernet 0/0.20
Router(config-if)# encapsulation dot1Q 20
Router(config-if)# ip address 192.168.20.1 255.255.255.0
Router(config-if)# exit

此时,VLAN 10与VLAN 20之间的通信就可以通过路由器实现。


二、广域网(WAN)

定义:
连接不同地区局域网或城域网(路由器)计算机通信的远程网。通常跨接很大的物理范围

1. PPP协议(Point-to-Point Protocol)

应用:

  • 用户计算机与ISP(互联网接入服务商)通信时所使用的数据链路层规则

  • 两台网络设备之间的直连专用线路
    特点

  • 点对点链路(非广播)

  • 支持身份验证(PAP/CHAP)

  • 帧格式

    | 标志 (0x7E) | 地址 (0xFF) | 控制 (0x03) | 协议 (2B) | 数据(不超过1500B) | FCS (2B) | 标志 (0x7E) |
    

    协议段:表示数据段运载的是什么种类的分组(IP数据报、LCP的数据)
    数据段:ppp点对点的,不是总线型,无需使用CSMA/CD协议,自然没有最短帧长的限制

  • 透明传输:字节填充法(0x7E → 0x7D 0x5E)

2. HDLC协议(高级数据链路控制)

特点

  • 面向比特的同步协议
  • 帧格式
    | 标志 (01111110) | 地址 (1B) | 控制 (1B) | 数据 | FCS (2B) | 标志 (01111110) |
    
  • 透明传输:比特填充法(5个1后插0)

PPP vs HDLC对比

特性PPPHDLC
应用场景拨号/ADSL专线/帧中继
认证支持支持不支持
数据压缩可选不支持

三、介质访问控制(MAC层)

1. 信道划分协议
  • 频分复用(FDM):不同频率并行传输
  • 时分复用(TDM):固定时隙循环分配
  • 码分复用(CDMA):正交码区分信号
时分多址(TDMA,Time Division Multiple Access)

时分多址协议通过将信道划分为不同的时间片来实现多用户共享信道的目的。在每个时间片中,只有一个用户可以使用信道进行通信,其他用户必须等待下一个时间片。

工作原理

  • 信道被划分为多个固定的时间段,每个时间段称为时隙(timeslot)。
  • 每个时隙分配给一个用户,用户在自己的时隙内发送数据。
  • 如果网络中有多个用户,需要通过协调来确保每个用户在自己的时隙内发送数据,避免重叠。
  • 如果某个用户没有数据要发送,它的时隙可以空闲,其他用户不能占用该时隙。

优点

  • 避免冲突:每个用户在独立的时间段内发送数据,避免了用户之间的冲突。
  • 简单高效:当用户数量固定且数据流量相对均匀时,TDMA非常高效。

缺点

  • 时隙利用率低:如果某个用户没有数据要发送,时隙就会浪费。
  • 时延问题:如果某个用户的数据量较大,需要等待较长的时隙周期,导致延迟增加。
  • 同步问题:所有用户需要保持严格的同步,以确保在各自的时隙内发送数据。

应用场景

  • 蜂窝通信系统(如2G、3G移动通信)
  • 卫星通信系统
频分多址(FDMA,Frequency Division Multiple Access)

频分多址协议通过将总的频谱带宽划分为多个较小的频段(子频带),每个用户占用一个独立的频段进行通信。用户之间通过分配不同的频率来避免干扰。

工作原理

  • 总频带被划分为多个独立的子频带,每个用户分配到一个子频带。
  • 用户在分配的频带上进行数据传输,其他用户的频带不受影响。
  • 由于每个用户有独立的频段,因此用户之间的通信不会发生冲突。

优点

  • 无需同步:与TDMA不同,FDMA不要求用户严格同步,因此系统实现较为简单。
  • 适合高负载系统:当多个用户同时需要发送数据时,FDMA可以有效避免冲突。

缺点

  • 频谱利用率低:如果某个用户没有数据要发送,其占用的频带资源会被浪费。
  • 频谱带宽限制:总的频带宽度是有限的,因此可以分配给用户的频段数量也有限。
  • 干扰问题:如果频带的划分不合理,可能会出现相邻频段的干扰(互调干扰)。

应用场景

  • 广播电视:如传统的无线电和电视广播系统。
  • 早期的蜂窝通信系统(如1G)
码分多址(CDMA,Code Division Multiple Access)

码分多址协议通过为每个用户分配一个独特的码字(code),使得不同用户的数据能够在同一频带上同时传输。每个用户的数据通过其专用的码字进行编码,接收端通过相应的码字进行解码,从而分离出不同用户的信号。

工作原理

  • 每个用户都被分配一个唯一的伪随机码(PRN码),用户的数据通过与该码进行按位异或操作来加密。
  • 所有用户的信号可以同时在同一频带上传输,接收端使用相应的码字解码以区分不同用户的信号。
  • 扩频技术(如直接序列扩频 DSSS 或频率跳跃扩频 FHSS)用于使用户的信号占据比其原始带宽更宽的频谱,从而提高抗干扰能力。

优点

  • 频谱利用率高:CDMA允许多个用户同时使用相同的频带,极大提高了频谱的利用效率。
  • 抗干扰能力强:由于使用了扩频技术,CDMA对信号干扰具有较强的抵抗能力。
  • 灵活性:用户的数量和带宽需求不需要严格划分,可以根据实际情况动态调整。

缺点

  • 复杂度高:CDMA系统要求设备能够进行复杂的编码和解码操作。
  • 近远效应:如果某个用户的信号过强,可能会干扰到其他用户的通信。
  • 同步问题:尽管CDMA不需要固定的时间或频率划分,但系统依然需要一定的同步机制,以确保信号的正确解码。

应用场景

  • 现代蜂窝通信系统(如3G、4G、5G)
  • 卫星通信
  • Wi-Fi和蓝牙等无线通信技术

2. 随机访问协议
  • ALOHA协议
    • 纯ALOHA:不进行检测随时发送,未收到确认则认为冲突,就随机退避
    • 时隙ALOHA:将时间分为一段段等长的时隙,仅在时隙开始时发送,避免了随意性
  • CSMA协议
    类型特点应用场景
    1-坚持CSMA信道空闲立即发送以太网(结合CD)
    非坚持CSMA信道忙则随机等待无线网络
    p-坚持CSMA信道空闲以概率p发送 ,以1-p概率在下个时隙继续监听卫星通信

CSMA/CD协议

应用领域:
CSMA/CD协议主要应用于有线局域网,尤其是以太网中,(总线型网络或半双工网络环境)依赖碰撞检测来控制网络流量,但在网络负载较高时,碰撞会影响性能

争用期
(发送帧后若内没有检测到冲突就认为发送成功)

最短帧长:
最大单向传播时延*数据传输速率*2=2τ*带宽
工作原理:

  • 载波监听:每个节点在发送数据之前,会先“监听”信道,检查信道上是否有其他设备正在传输数据。如果信道空闲,则节点可以开始发送数据;如果信道被占用,则节点会等待。
  • 数据发送:当信道空闲时,设备就开始发送数据。
  • 碰撞检测:在数据发送过程中,设备会继续监听信道,检查是否发生了碰撞(collision)。如果发生碰撞,设备会立即停止发送数据,并发送一个“干扰信号”来通知网络中的其他设备发生了碰撞。
  • 碰撞重试: 当发生碰撞时,每个设备会等待一个随机的时间段(通常是通过退避算法来控制)后重新发送数据。该过程称为退避算法(Backoff Algorithm),其目的是减少后续碰撞的概率。

退避算法:

T=*n,n∈[0,1,2,…2k-1],k=min{碰撞/冲突次数,10}
超过16次冲突/碰撞,就丢弃该帧

CSMA/CD 协议

应用领域
CSMA/CA协议是用于无线局域网(WLAN)中的一种访问控制协议,尤其是在基于IEEE 802.11标准的无线网络(链路层采用ARQ方案)中,如Wi-Fi。由于无线网络的传输信道不可见,设备无法像有线网络中那样监听信道上的“载波”状态,碰撞的可能性更高,因此CSMA/CA采用了一种避免碰撞的策略。

工作原理

  • 载波监听:与CSMA/CD类似,设备在传输数据前会监听信道,判断信道是否空闲。如果信道空闲,则设备可以进行发送;如果信道繁忙,则设备会等待。
  • 随机退避:为了避免多个设备在同一时间发送数据,CSMA/CA在信道空闲时不会立即发送数据,而是会等待一个随机的时间段。这段时间通常由退避计时器控制。
  • 冲突避免机制:
    RTS/CTS机制:为了避免碰撞,CSMA/CA引入了 请求发送(RTS)和清除发送(CTS) 机制。在开始数据传输之前,设备首先发送一个RTS请求信号,告知网络中的其他设备其即将进行数据传输。如果没有碰撞,接收端设备(AP)会发送一个CTS信号作为应答,告知发送端可以开始传输数据。
    数据传输与确认:设备在收到CTS信号后,开始数据传输。数据传输完成后,接收端设备发送确认(ACK)信号,通知发送端数据成功接收。
3. 轮询访问协议
  • 令牌传递协议
    令牌是一个特殊的控制帧,仅控制信道的使用,确保同一时刻只有一个站点独占信道
    • 令牌环网(IEEE 802.5)
    • 令牌总线网(IEEE 802.4)

四、数据链路层设备

1. 网桥(Bridge)
  • 功能:连接不同物理层/数据链路层的网络段 ,具有识别帧和转发帧的能力
  • 工作原理
    1. 学习MAC地址表(源地址+端口)
    2. 转发帧时查询目标地址对应端口
  • 类型
    • 透明网桥(IEEE 802.1D标准)
    • 源路由网桥(Token Ring网络)
2. 交换机(Switch)
  • 本质:多端口网桥
  • 转发方式
    方式特点延迟资源消耗
    直通交换检查目标地址即转发
    存储转发缓存完整帧后转发
    无碎片交换检查前64字节后转发

交换机 vs 网桥对比

对比项交换机网桥
端口数多(24/48口)少(通常2口)
处理速度硬件ASIC加速软件处理
应用场景现代局域网核心旧式网络互联

五、高频考点与真题解析

1. CSMA/CD过程(2019年-35题)

题目
以太网中,A、B两站相距200m,信号传播速率2×108 m/s,带宽100Mbps,求最小帧长。
解析

  1. 争用期 = 2×传播时延 = 2×200/(2×10^8) = 2μs
  2. 最小帧长 = 带宽×争用期 = 100×106 × 2×10-6 = 200bit = 25字节
    注意:实际以太网规定最小帧长为64字节(需补填充字段)
2. VLAN划分(2021年-37题)

题目
交换机端口1-4属于VLAN2,端口5-8属于VLAN3,以下描述正确的是?
A. 端口1和5属于同一广播域
B. 端口2和3可以直连通信
C. 端口5和6需路由器通信
答案:B


六、总结图表

技术/设备核心功能典型协议/标准考研重点
以太网CSMA/CD + MAC帧IEEE 802.3最小帧长
无线局域网CSMA/CA + 隐藏站处理IEEE 802.11RTS/CTS
PPP协议点对点链路 + 身份验证RFC 1661帧格式
交换机多端口网桥 + VLAN支持IEEE 802.1Q转发方式

附:数据链路层思维导图要点

数据链路层  
├─ 局域网(以太网、WLAN)  
├─ 广域网(PPP、HDLC)  
├─ MAC协议(CSMA/CD、CSMA/CA)  
└─ 设备(网桥、交换机)  

相关文章:

【计网速通】计算机网络核心知识点与高频考点——数据链路层(二)

数据链路层核心知识点(二) 涵盖局域网、广域网、介质访问控制(MAC层)及数据链路层设备 上文链接:https://blog.csdn.net/weixin_73492487/article/details/146571476 一、局域网(LAN,Loacl Area Network&am…...

STM32单片机入门学习——第3-4节: [2-1、2]软件安装和新建工程

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.01 STM32开发板学习——第一节: [1-1]课程简介 前言开发板说明引用解答和…...

W3C XML Schema 活动

W3C XML Schema 活动 概述 W3C XML Schema(XML Schema)是万维网联盟(W3C)定义的一种数据描述语言,用于定义XML文档的结构和约束。XML Schema为XML文档提供了一种结构化的方式,确保数据的一致性和有效性。本文将详细介绍W3C XML Schema的活动,包括其发展历程、主要特点…...

爬虫【Scrapy-redis分布式爬虫】

Scrapy-redis分布式爬虫 1.Scrapy-redis实现增量爬虫 增量爬虫的含义 就是前面所说的的暂停、恢复爬取 安装 # 使用scrapy-redis之前最好将scrapy版本保持在2.8.0版本, 因为2.11.0版本有兼容性问题 pip install scrapy==2.8.0 pip install scrapy-redis -i https://pypi.tun…...

intellij Idea 和 dataGrip下载和安装教程

亲测有效 第一步:卸载老版本idea/Datagrip (没有安装过的可跳过此步骤) 第二步:下载idea/dataGrip安装包 建议选择2022以后的版本 官网: https://www.jetbrains.com/datagrip/download/other.html 选择dataGrip 的…...

轻量级搜索接口技术解析:快速实现关键词检索的Java/Python实践

Hi,你好! 轻量级搜索接口技术解析:快速实现关键词检索的Java/Python实践 接口特性与适用场景 本接口适用于需要快速集成搜索能力的开发场景,支持通过关键词获取结构化搜索结果。典型应用场景包括: 垂直领域信息检索…...

架构设计基础系列:事件溯源模式浅析

图片来源网络,侵权删 ‌1. 引言‌ ‌1.1 研究背景‌ 传统CRUD模型的局限性:状态覆盖导致审计困难、无法追溯历史。分布式系统复杂性的提升:微服务架构下数据一致性、回滚与调试的需求激增。监管合规性要求:金融、医疗等领域对数…...

ResNet系列和ViT系列预训练模型权重文件下载

一、简单介绍 OpenAI CLIP项目提供的预训练模型权重文件列表,主要包含两种架构系列和不同规模配置: ResNet系列 (RN) 基础版本:RN50(ResNet-50)扩展版本:RN50x4、RN50x16、RN50x64(宽度扩展&am…...

【力扣hot100题】(035)二叉树的中序遍历

正常方法递归很简单,于是又学了一种栈的方法。 原理如下:每次循环先尽量将目前节点入栈并左移,没有左节点时回到栈首节点将目前节点放入结果容器中并移出栈外,目前节点变为该节点的右节点,循环结束条件是目前节点为nu…...

《数字图像处理》教材寻找合作者

Rafael Gonzalez和Richard Woods所著的《数字图像处理》关于滤波器的部分几乎全错,完全从零开始写,困难重重。关于他的问题已经描述在《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》。 现寻找能够共同讨论、切磋、…...

批量删除 txt/html/json/xml/csv 等文本文件中的重复行

在文本文件中,可能会存在一些重复的数据行,这可能不是我们期望的,因此我们会碰到需要删除文本文件中重复行的情况。如果是人工删除,当文件较大或者数量较多的时候,处理的难度会较大。今天就给大家介绍一下批量删除文本…...

LangChain 使用向量数据库介绍与使用

LangChain 是一个用于构建大语言模型(LLM)应用的框架,而向量数据库在 LangChain 中主要用于实现检索增强生成(RAG, Retrieval-Augmented Generation),即通过向量搜索从外部知识库中快速检索相关信息,辅助大模型生成更准确的回答。以下是具体的使用方法: 1. 核心流程 L…...

基于微信小程序的智慧乡村旅游服务平台【附源码】

基于微信小程序的智慧乡村旅游服务平台(源码L文说明文档) 目录 4系统设计 4.1系统功能设计 4.2系统结构 4.3.数据库设计 4.3.1数据库实体 4.3.2数据库设计表 5系统详细实现 5.1 管理员模块的实现 5.1.1旅游景点管理…...

d202542

一、142.环形链表I 142. 环形链表 II - 力扣&#xff08;LeetCode&#xff09; 用set统计一下 如果再次出现那么就环的第一个return返回就行 public ListNode detectCycle(ListNode head) {Set<ListNode> set new HashSet<>();ListNode cur head;while(cur ! …...

NodeTextFileCollectorScrapeError 报警原因及解决方法

现象 prometheus 经常有告警 NodeTextFileCollectorScrapeError 查看 node-exporter 日志出现如下报错 time2025-04-01T06:43:18.266Z levelERROR sourcetextfile.go:248 msg"failed to collect textfile data" collectortextfile fileipmitool.prom err"fail…...

RapidJSON 处理 JSON(高性能 C++ 库)(四)

第四部分:RapidJSON 处理 JSON(高性能 C++ 库) 📢 快速掌握 JSON!文章 + 视频双管齐下 🚀 如果你觉得阅读文章太慢,或者更喜欢 边看边学 的方式,不妨直接观看我录制的 RapidJSON 课程视频!🎬 视频里会用更直观的方式讲解 RapidJSON 的核心概念、实战技巧,并配有…...

80. Linux内核定时器实验

一、Linux内核定时器原理 1.1、内核时间管理 1、Cortex-M内核使用systick作为系统定时器。 2、硬件定时器、软件定时器&#xff0c;原理是依靠系统定时器来驱动。 3、linux内核频率可以配置&#xff0c;图形化界面配置。 4、重点&#xff0c;HZ表示系统节拍率&#xff0c; 1.…...

Java 可变参数全解析:动态参数传递的实践指南

Java 可变参数全解析&#xff1a;动态参数传递的实践指南 一、可变参数&#xff1a;Java 方法的灵活扩展 在狂神说 Java 第 49 集课程中&#xff0c;我们系统学习了 Java 可变参数的核心原理。作为 Java SE 5 引入的重要特性&#xff0c;可变参数允许方法接受动态数量的输入&…...

C++类与对象(上):从入门到实践

目录 一、引言 二、面向过程和面向对象初步认识 2.1 面向过程编程 2.2 面向对象编程 三、类的引入 四、类的定义 4.1 定义格式 4.2 定义方式 4.3 成员变量命名规则建议 五、类的访问限定符及封装 5.1 访问限定符 5.2 封装 六、类的作用域 七、类的实例化 7.1 概念…...

Lumerical ------ Edge coupler design

Lumerical ------ Edge coupler design 引言正文无 Si Substrate 的仿真步骤有 Si Substrate 的仿真步骤引言 本文,我们将使用官方提供的 Edge coupler 设计教程,但是中间会带有作者本人的设计的感悟。 正文 无 Si Substrate 的仿真步骤 打开 Edge_Coupler_No_Substrate.l…...

大语言模型本质上还是自动化,而不是智能化

大语言模型本质上仍然是自动化或高级自动化&#xff0c;而非真正的智能化&#xff0c;原因可以从以下几个方面进行分析&#xff1a;1、自动化与智能化的本质区别自动化&#xff1a;大语言模型通过预训练和微调&#xff0c;基于大量数据和规则生成输出。它的行为是基于输入数据的…...

cmake 中的命令

命令描述示例capabilities报告 CMake 内置的功能&#xff0c;以 JSON 格式输出cmake -E capabilitiescat连接文件并将其内容打印到标准输出cmake -E cat file1.txt file2.txtchdir在指定目录中运行命令cmake -E chdir /path/to/dir commandcompare_files比较两个文件是否相同cm…...

python数据结构——链表、栈、队列

一、思维梳理&#xff1a; 二、双向循环链表&#xff1a; class Node:def __init__(self,data):self.data dataself.next Noneself.prev Noneclass DoubleLink:def __init__(self):self.size 0self.head Nonedef is_empty(self):return self.size 0def add_end(self,dat…...

centos操作系统如何更换yum镜像源

CentOS Linux 是一个免费提供的、社区支持的Linux发行版,由CentOS项目社区贡献者开发、分发和维护。2020年CentOS项目宣布将把全部投资转移到CentOS Stream,作为即将发布的 Red Hat Enterprise Linux版本的上游开发平台。因此,CentOS Linux更新和发布将在2021年至2024年期间…...

【Linux篇】自主Shell命令行解释器

&#x1f4cc; 个人主页&#xff1a; 孙同学_ &#x1f527; 文章专栏&#xff1a;Liunx &#x1f4a1; 关注我&#xff0c;分享经验&#xff0c;助你少走弯路&#xff01; 文章目录 1. 获取用户名的接口2. 等待用户输入接口3. 将上述代码进行面向对象式的封装4. 命令行解析5.…...

Tomcat 部署 Jenkins.war 详细教程(含常见问题解决)

在Tomcat中部署Jenkins.war文件是一个相对简单的过程&#xff0c;以下是详细步骤&#xff1a; 1. 准备工作 确保已安装JDK&#xff1a;Jenkins需要Java环境&#xff0c;建议安装JDK 8或更高版本。 下载Jenkins.war&#xff1a;https://pan.quark.cn/s/c4fd7711a1b3 下载Tomc…...

我的创作纪念日-一周年

目录 机缘 收获 日常 成就 憧憬 机缘 时光荏苒&#xff0c;转行计算机已经是第5个年头了。从Python入门&#xff0c;到C入土&#xff0c;兜兜转转&#xff0c;发现自己也只是初窥门径&#xff0c;习得皮毛。我从6年前开始潜水CSDN&#xff0c;学习各路大佬的技术经验&…...

多线程代码案例 - 1

目录 单例模式 1. 饿汉模式 2. 懒汉模式 单例模式与多线程 问题1 问题2 问题3 完&#xff01; 单例模式 单例模式是一种设计模式。 设计模式&#xff0c;是我们在编写代码时候的一种软性的规定&#xff0c;也就是说&#xff0c;我们遵守设计模式&#xff0c;代码的下限…...

display:none与visibility的区别

1. 是否占据空间 display: none&#xff1a;元素完全从文档流中移除&#xff0c;不占据任何布局空间。后续元素会“填补”它的位置。visibility:hidden&#xff1a;元素仍占据布局空间&#xff0c;但内容不可见&#xff08;类似透明占位符&#xff09;。 2.渲染与性能 displ…...

算法 | 基于蜣螂优化算法求解带时间窗的车辆路径问题(VRPTW)研究(附matlab代码)

基于蜣螂优化算法求解带时间窗的车辆路径问题(VRPTW)研究 🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏🍏 摘要 带时间窗的车辆路径问题(VRPTW)是物流配送中的核心优化难题。本文提出一种基于蜣螂优化算法(Dung Beetle Optimizer, DBO)的求解方法,通过…...