计算机网络之链路层
本文章目录结构出自于《王道计算机考研 计算机网络_哔哩哔哩_bilibili》
02 数据链路层
在网上看到其他人做了详细的笔记,就不再多余写了,直接参考着学习吧。
1
详解数据链路层-数据链路层的功能【王道计算机网络笔记】_wx63088f6683f8f的技术博客_51CTO博客
2
详解数据链路层-介质访问控制【王道计算机网络笔记】_wx63088f6683f8f的技术博客_51CTO博客
3
详解数据链路层-局域网&广域网【王道计算机网络笔记】_wx63088f6683f8f的技术博客_51CTO博客
4
详解数据链路层-数据链路层设备【王道计算机网络笔记】_wx63088f6683f8f的技术博客_51CTO博客
相关补充
数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报。
数据链路层的数据单元是数据帧。
数据链路层在物理层提供服务的基础上向网络层提供服务,其主要作用是加强物理层传输原始比特流的功能, 将物理层提供的可能出错的物理连接改造成为逻辑上无差错的数据链路, 使之对网络层表现为一 一条无差错的链路。
物理层容易把数据弄丢,数据链路层就需要把可能要发生的差错预知好,然后进行一定的差错控制,给网络层提供一个无差错的服务
ps:如何理解物理层和链路层的关系呢?
之前做STM32开发时,会编写外设的驱动,比如一个spi外设,然后让外设发送和接收高低电平,这个最底层的硬件外设就相当于物理层,spi外设只负责把比特流发出去;但是调用spi发送接口时,我们要传递进入要发送的数据,这些数据在发送前就要加上帧头帧尾被封装成帧,然后接收方在接收数据时就能进行帧头帧尾以及校验码等的检测,以此来保证数据的正确性,这些工作,就相当于链路层要干的活。
一般在常规的通信方式比如i2c/spi/串口中,有这两层就OK了,但是因为网络传输的复杂性,所以仅用两层很难搞定,所以,才有了上面的更多层次:网络层、运输层、应用层,让不同的层次来实现不同的功能。
关于链路层提供的无差错服务,一般有三种可配置:
1、无连接也无确认,不可靠;
2、无连接但是有确认,一定程度上可靠;
3、面向连接的,可靠;
这里三种服务并不都是可靠的,但是我们肯定要求网路传输的整个过程是可靠的,所以,如果链路层选择了不可靠的服务,那么这种可靠性肯定就要其他层来实现。
链路层的主要功能
关于流量控制
我们来考虑下,发送方和接收方,谁更需要控制流量速率?很容易明白的道理,发送方是主动方,想怎么发就怎么发,想发多快就发多快,但是接收方不一样,接收方需要处理接收到的数据,如果发送方发太快,接收方来不及处理,那么数据就会被覆盖,所以,接收方更需要流量控制。
其实,流量控制就是接收方来控制发送方的发送速率。
较高的发送速度和较低的接受能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
另外,除了链路层有流量控制,运输层也有流量控制,其实,流量控制可以出现在网络的任何一层,只不过,我们把流量控制的功能分配给了链路层和运输层而已。链路层和运输层的流量控制目的和机制是不太一样的,要有所区分,数据链路层的流量控制是点到点的(直接连接的两个设备),传输层的流量控制是端到端的(两个逻辑上通信的终端)。
根据上面的图我们也能知道,链路层实现流量控制的三大机制就是:停止-等待协议、后退N帧协议以及选择重传协议。
停止-等待协议
每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。
正常情况下,如果接收方收到的数据经校验后没有问题就会返回一个ACK,发送方在接收到ACK之后,才会发下一帧数据,但是,如果数据传输出现差错,发送方把数据发送出去,接收方接收到的数据因为出错所以不会返回ACK,这时候,发送方要如何处理呢?发送方会设置一个定时时间,叫做重传时间,如果在重传时间内没有收到ACK,那就会将上一帧数据进行重传。每次发送一个帧就启动一个计时器。超时计时器设置的重传时间应当比帧传输的平均RTT(往返时延)更长一些。所以,发送发需要注意,每次发完一个帧后,必须保留它的副本,要不然重传时就没有原数据可传了,一般在收到ACK之后才会将数据删除以释放这部分的内存空间。
隔离冲突域,只会将冲突限制在一个交换机内,如果有两台交换机,那么这台交换机的冲突并不会影响其他交换机;
隔离广播域,只会将广播限制在一个路由器内,如果有两台路由器,那么这台路由器的广播并不会送到其他路由器;路由器和交换机有什么区别?
交换机的作用与功能
局域网(Local Area Network):简称LAN,是指在某一区域内由多态计算机互联成的计算机组,使用广播信道。
特点
覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内;
只用专门铺设的传输介质(双绞线、同轴电缆)进行联网,数据传输速率高(10Mb/s~10Gb/s);
通信延迟时间短,误码率低,可靠性较高;
各站为平等关系,共享传输信道;
多采用分布式控制和广播式信道,能进行广播和组播。
以太网
以太网是应用最为广泛的局域网,包括标准以太网(10Mbps)、快速以太网(100Mbps)、千兆以太网(1000Mbps)和10G以太网,它们都符合IEEE802.3系列标准规范。逻辑拓扑总线型,物理拓扑是星型或拓展星型。
以太网是一种基带总线局域网规范,使用CSMA/CD技术
以太网在局域网各种技术中站统治性地位
造价低廉(以太网网卡不到100块)
是应用最广泛的局域网技术
比令牌环网、ATM网便宜,简单
满足网络速率的要求10Mb/s~10Gb/s
以太网的两个标准
DIX Ethernet V2:第一个局域网产品(以太网)规约
IEEE 802.3:IEEE 802.3委员会802.3工作组制定的第一个IEEE的以太网标准(帧的格式有一点变动)
因此以太网也可以叫做802.3局域网
以太网提供无连接、不可靠的服务
无连接:发送方和接收方之间无握手过程
不可靠:不对发送方的数据帧编号,接收方不向发送方进行确认,差错帧直接丢弃,差错纠正由高层负责。
以太网只实现无差错接收,不实现可靠传输。
以太网协议介绍(ARP、UDP、ICMP、IP)_以太网传输协议是哪个协议-CSDN博客
适配器与MAC地址
计算机与外界局域网的连接通过通信适配器,是在主机箱内的网络接口板/网络接口卡(网卡),现在不再使用单独网卡,已经嵌入好了。
适配器上装有处理器和储存器(包括RAM和ROM),ROM上会有计算机硬件地址MAC地址。
在局域网中,硬件地址又称为物理地址或MAC地址(实际上是标识符)。
MAC地址:每个适配器有一个全球唯一的48位二进制地址,前24位代表厂家(由IEEE规定),后24位厂家自己指定。常用6个十六进制数表示,如02-60-8c-e4-b1-21
广域网
广域网(WAN,Wide Area Network),通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性远程网络。
广域网的通信子网主要使用分组交换技术(属于网络层)。广域网的通信子网可以利用公用分组交换网、卫星通信和无线分组交换技术,它将分布在不同地区的局域网或计算机系统互连起来,达到资源共享的目的。如因特网是世界范围内最大的广域网。
结点交换机的功能是用于转发分组,但是相比于路由器,结点交换机只能在单个网络中转发分组,路由器可以在多个网络之间转发分组。
广域网中可以有交换机、集线器、路由器等设备,广域网覆盖的网络体系结构层次包含物理层、链路层、网络层,局域网只覆盖物理层、链路层。广域网普遍采用点对点技术,局域网普遍采用多点接入技术,即逻辑上是总线型。广域网强调资源共享,局域网强调数据传输。
疑惑点:
局域网用MAC通讯为什么还要IP?_局域网内部是通过mac地址来转发,而不是通过ip地址-CSDN博客
网络是分层的,从应用层到物理层各层有各层的功能,如果一个层次没有配置就没法调用下一层的功能。因此,如果你没有配置网络层的IP地址,就没法调用数据链路层的MAC地址进行通信。
LAN中是采用MAC通信,但是上层协议没法直接调用MAC协议,必须使用ARP协议将IP地址转换为MAC地址才能通信。如果你自己写程序,可以直接调用MAC,这时就不需要配置IP地址了。
二层交换机之间通信是直接使用MAC地址通信的(通信原理是“转发已知帧,广播未知帧,丢弃同端口帧”),不需要进行转换。
在主机或路由器上要使用ARP协议进行IP到MAC的转换。两台电脑通讯的全过程为:1.根据子网掩码判断源IP与目标IP是属于同一网络;2.使用ARP协议找到相应IP的MAC地址;3.使用MAC地址在LAN内进行通信。
简单来说,局域网不直接用Mac地址是为了局域网广域网统一,不用单独写用局域网通信的协议。
局域网都在同一个网段下,广域网就是把局域网都连接起来形成互联网。
在局域网内,广播是一个很重要的特征,主要体现在以下几个方面:
信息快速传播:
当一台设备发送广播消息时,该消息会迅速被局域网内的所有其他设备接收到,无需逐个指定接收对象,从而实现了信息的快速扩散,这在网络管理、资源发现等场景中非常重要。例如,当新设备接入局域网时,可以通过广播来通知其他设备自己的存在;服务器也可以通过广播来发布自身提供的服务信息,方便客户端快速发现并连接。
设备发现与通信:在局域网中,设备之间需要进行相互通信和交互,广播提供了一种简单有效的设备发现机制。通过发送广播消息,设备可以快速找到局域网内的其他设备,并建立连接。这对于一些需要动态发现设备的应用场景,如打印机共享、文件共享等,非常方便。
简化网络配置:
由于广播可以将消息发送给所有设备,因此在一些网络配置和管理任务中,使用广播可以减少手动配置的工作量。例如,在设置网络参数、更新软件版本等操作时,管理员可以通过广播向局域网内的所有设备发送统一的配置信息或更新指令,提高网络管理的效率。
支持多种网络协议:
许多网络协议都依赖于广播来实现其功能,如 ARP(地址解析协议)和 DHCP(动态主机配置协议)。ARP 用于将 IP 地址解析为 MAC 地址,当设备需要与其他设备通信时,首先会通过广播发送 ARP 请求,以获取目标设备的 MAC 地址。DHCP 则用于自动分配 IP 地址等网络配置信息,客户端通过广播向 DHCP 服务器请求 IP 地址,服务器再通过广播进行响应和分配。
便于网络故障排查:
广播还可以用于网络故障排查和管理。网络管理员可以通过发送特定的广播消息来测试网络的连通性和性能,检测是否存在网络故障或拥塞等问题。例如,使用 Ping 命令发送广播数据包可以检查局域网内所有设备的可达性,帮助管理员快速定位和解决网络问题。
实现冗余和可靠性:
在一些对可靠性要求较高的应用中,广播可以作为一种冗余机制,确保重要信息能够被所有设备接收到。即使个别设备出现故障或网络连接中断,通过广播发送的信息仍然可以被其他正常设备接收和处理,从而提高了整个网络系统的可靠性和容错能力。
综上所述,局域网内的广播特征在多个方面发挥着重要作用。它不仅提高了信息的传播效率和设备的发现速度,还简化了网络配置和管理,支持了多种网络协议的运行,并为网络故障排查和系统的可靠性提供了有力保障。
广域网是由一个一个的局域网连接而成的,不同的局域网处于不同的网段,但是在同一个局域网内,所有的主机都处在同一网段,也就是说,每个局域网都有唯一的一个网络号,每个局域网内部的每个主机都有相同的网络号,但是都有唯一的主机号。
局域网是广播域,通常,如果局域网内的一个主机向另一个主机发送消息时,可以采用广播的形式;两个网络之间通常不使用广播。广播是指在 IP 子网内广播数据包,所有在子网内部的主机都将收到这些数据包。而两个不同的网络之间一般通过路由器进行连接和通信,路由器具有隔离广播域的功能,它会阻止广播数据包从一个网络传播到另一个网络,以避免对其他网络中的设备造成不必要的干扰和影响。
地址解析协议ARP
ARP协议:Address Resolution Protocol(地址解析协议),完成主机或路由器IP地址到MAC地址的映射。解决链路层和物理层下一跳走哪的问题。
具体参考:ARP协议详解-CSDN博客
ARP属于哪一层的协议?
ARP(地址解析协议)属于网络层和数据链路层的协议。
在OSI参考模型中,ARP工作在数据链路层。这是因为ARP的主要功能是在同一局域网内解析出设备的物理地址,这个过程涉及到数据链路层的帧和物理层的硬件地址。在TCP/IP模型中,ARP被视为网络层的一部分。这是因为ARP为IP地址到物理地址的映射提供服务,而IP地址是网络层的概念。
总的来说,ARP作为网络层协议,其数据在实际传输时是封装在数据链路层的,以便能够在局域网内进行有效的通信。
集线器和交换机的区别?
集线器和交换机在网络中都起着连接设备的作用,但它们在工作方式、性能和应用场景等方面存在明显的区别。以下是对两者的详细比较:
一、工作原理
集线器:工作在OSI参考模型的第一层(物理层),主要功能是信号放大和再生。它采用广播的方式将接收到的信号从所有端口转发出去,即当一个端口收到数据后,会将数据发送到除源端口外的所有其他端口,因此同一时间只能有一台设备进行数据传输,若有两个端口同时传输数据就会产生冲突。
交换机:工作在数据链路层,通过记录设备的MAC地址表,能够识别数据包中的目标MAC地址,并将数据直接发送到对应的端口,从而实现了数据的定向传输,不同端口之间可以同时进行数据传输,提高了网络的利用率。
二、数据传输方式
集线器:共享式带宽,所有连接到集线器的设备共享同一带宽,例如,如果总带宽为10Mbps,连接了5台设备,那么每台设备平均可用带宽约为2Mbps。
交换机:独享式带宽,每个端口都有独立的带宽,如一台24口的100Mbps交换机,每个端口都可以同时达到100Mbps的传输速率,不会相互干扰。
三、安全性
集线器:由于其广播式的数据传输方式,数据容易被其他设备监听和窃取,安全性较差。
交换机:数据只在特定的端口之间传输,其他端口无法获取不相关的数据,具有一定的数据隔离性和安全性。
四、应用场景
集线器:适用于小型的局域网,如家庭网络、小型办公室等,对网络性能要求不高且设备数量较少的场景;也常用于一些对成本敏感的场合,如监控摄像头网络等。
交换机:广泛应用于各种规模的局域网,包括企业网络、校园网络、数据中心等,能够满足大量设备同时进行高速数据传输的需求。
五、管理性
集线器:通常没有复杂的管理功能,基本无需配置即可使用,管理较为简单。
交换机:一般具有丰富的管理功能,如VLAN划分、端口配置、流量控制等,可以根据实际需求进行灵活的配置和管理。
六、外观及接口类型
集线器:普通集线器的外部板面结构相对简单,一般有交流电源插座和开关、AUI接口和BNC接口等,正面主要是RJ-45接口,高档集线器可能与现代路由器或交换式路由器外观相似。
交换机:外观多样,常见的有桌面型、机架型等。接口类型丰富,除了RJ-45接口外,还可能有光纤接口等,以满足不同的网络连接需求。
七、发展趋势
集线器:随着网络技术的发展,集线器由于其自身的局限性,在局域网中的应用越来越少,逐渐被交换机所取代。
交换机:不断向更高性能、更多功能、更智能化的方向发展,如支持更高的传输速率、更多的端口类型、更强的安全防护等。
总的来说,集线器和交换机在多个方面存在显著的差异。在选择使用时,应根据实际的网络规模、性能要求、安全需求以及预算等因素综合考虑,以确定最适合的网络连接设备。
这里的冲突怎么理解呢?如果一个设备发送数据了,因为是广播,所以其他所有的端口都会收到数据,也就是说,所有的端口都要进行数据处理,要么正在发送,要么正在接收,没有空闲的端口了。
虽然局域网只覆盖链路层和物理层,但是这并不意味着,在局域网内通信只需要走这两层,不管是在局域网内还是局域网之间,因为应用是最上层,所以只要是应用之间的通信,都需要走完所有的层。局域网内和局域网之间通信的不同之处在于,局域网内可以不用寻找路由。
我们通过网络数据的传输过程来深入理解下,消息从应用层开始,经过运输层、网络层、链路层以及物理层,到达交换机时,从下到上经过物理层,再到链路层,此时,交换机将链路层数据拆包,从里面拿出目标MAC地址,然后根据MAC表将数据从对应端口转发出去,可以看到,这一过程中,交换机都没必要到网络层,所以说,交换机属于二层设备;如果这个数据要发出去,也就是离开当前局域网,那么,该数据就会被发往路由器,路由器从下到上,经过物理层、链路层,此时还就算获取到了目标MAC地址也没用,因为此时已经不在局域网内了,需要做的是根据路由表去找到下一跳,所以,还需要上升到网络层,去寻找路由表,可以看到,路由器需要走到第三层,才能进行下一步转发,因此,路由器属于三层设备。这些都是转发的设备,不需要再往上了,通常,交换机只用实现物理层和链路层的功能,路由器只用实现物理层、链路层以及网络层的功能,到了主机,就需要实现每一层的功能了,因为主机通常都需要部署各种应用的,应用层是最高层,需要经过所有的层次才能实现完整的数据交互。
物理层和链路层解决的是局域网内的数据传输问题,再往上的网络层要解决的就是各局域网之间的数据传输问题。
相关文章:

计算机网络之链路层
本文章目录结构出自于《王道计算机考研 计算机网络_哔哩哔哩_bilibili》 02 数据链路层 在网上看到其他人做了详细的笔记,就不再多余写了,直接参考着学习吧。 1 详解数据链路层-数据链路层的功能【王道计算机网络笔记】_wx63088f6683f8f的技术博客_51C…...

Arduino大师练成手册 -- 读取红外接收数据
硬件连接 连接引脚: 将红外接收器的 VCC 引脚连接到 Arduino 的 5V 引脚。 将红外接收器的 GND 引脚连接到 Arduino 的 GND 引脚。 将红外接收器的 OUT 引脚连接到 Arduino 的数字引脚(例如 D11)。 安装必要的库 在 Arduino IDE 中&#…...

【Efficient AIGC】SiTo: Similarity-based Token Pruning (AAAI-2025)
文章目录 SiTo: Training-Free and Hardware-Friendly Acceleration for Diffusion Models via Similarity-based Token Pruning背景介绍方法结果消融 文章目录 SiTo: Training-Free and Hardware-Friendly Acceleration for Diffusion Models via Similarity-based Token Prun…...

数据标注开源框架 Label Studio
数据标注开源框架 Label Studio Label Studio 是一个开源的、灵活的数据标注平台,旨在帮助开发者和数据科学家轻松创建高质量的训练数据集。它支持多种类型的数据(如文本、图像、音频、视频等)以及复杂的标注任务(如分类、命名实体…...

MyBatis最佳实践:MyBatis 框架的缓存
缓存的概念: 在内存中临时存储数据,速度快,可以减少数据库的访问次数经常需要查询,不经常修改的数据,不是特别重要的数据都适合存储到缓存中 缓存的级别: 一级缓存(默认开启):SqlSession 级别 …...

基于LangGraph、Groq和Tavily打造可以调用外部搜索引擎工具的对话机器人(核心代码 万字详解)
一、python环境 & 相关库版本信息 代码运行在 conda 创建的python环境下,python和相关库的版本信息如下: $ python --version Python 3.12.3$ pip list | grep langchain langchain 0.3.15 langchain-community 0.3.15 lang…...

衡量算法性能的量级标准:算法复杂度
今天开始数据结构的学习!作为一大重点,拿出态度很重要,想要真实掌握,博客笔记自然少不了!重点全部上色!避免疏忽 下面我们从0基础开始学习今天的第一节!不用担心看不懂,拒绝枯燥的理…...

PHP校园助手系统小程序
🔑 校园助手系统 —— 智慧校园生活 📱一款基于ThinkPHPUniapp框架深度定制的校园助手系统,犹如一把智慧之钥,专为校园团队精心打造,解锁智慧校园生活的无限精彩。它独家适配微信小程序,无需繁琐的下载与安…...

如何在Spring Boot项目中高效集成Spring Security
1 Spring Security 介绍 Spring Security 是一个功能强大且高度可定制的安全框架,专为保护基于Java的应用程序而设计。它不仅提供了认证(Authentication)和授权(Authorization)的功能,还支持防止各种常见的安全攻击模式。本文将详细介绍Spring Security的主要特点、功能…...

【PostgreSQL内核学习 —— (WindowAgg(一))】
WindowAgg 窗口函数介绍WindowAgg理论层面源码层面WindowObjectData 结构体WindowStatePerFuncData 结构体WindowStatePerAggData 结构体eval_windowaggregates 函数update_frameheadpos 函数 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊…...

PAT甲级-1020 Tree Traversals
题目 题目大意 给出一棵树的后序遍历和中序遍历,要求输出该树的层序遍历。 思路 非常典型的树的构建与遍历问题。后序遍历和中序遍历可以得出一个树的结构,用递归锁定根节点,然后再遍历左右子树,我之前发过类似题目的博客&…...

LVGL+FreeRTOS实战项目:智能健康助手(Max30102篇)
MAX30102 心率血氧模块简介 功能:用于检测心率和血氧饱和度,集成了红外和红光 LED 以及光电二极管。 接口:支持 I2C 通信,默认 I2C 地址为 0x57。 应用:广泛用于健康监测设备中,如智能手环、手表等。 硬…...

人脸识别【python-基于OpenCV】
1. 导入并显示图片 #导入模块 import cv2 as cv#读取图片 imgcv.imread(img/wx(1).jpg) #路径名为全英文,出现中文 图片加载失败,"D:\picture\wx.jpg" #显示图片 (显示标题,显示图片对象) cv.imshow(read_picture,im…...

redis常用命令和内部编码
文章目录 redis 为什么快redis中的Stringsetsetnxsetex getmsetmget计数操作incr、incrby、decr、decrby、incrbyfloatincrincrbyincrbyfloat 拼接(append)、获取(getrange)、修改字符串(setrange)、获取字符串长度(strlen)操作appendgetrangesetrangest…...

UI操作总结
该类 SolarWebx 继承自 Webx 和 IUixLikeMixin,主要用于扩展 giraffe.EasyUILibrary 的功能,提供了一系列与网页操作、元素定位、截图、图片处理等相关的方法。以下是对该类中每个方法的简要总结: __init__ 方法 作用:初始化 Sola…...

数据结构——实验八·学生管理系统
嗨~~欢迎来到Tubishu的博客🌸如果你也是一名在校大学生,正在寻找各种编程资源,那么你就来对地方啦🌟 Tubishu是一名计算机本科生,会不定期整理和分享学习中的优质资源,希望能为你的编程之路添砖加瓦⭐&…...

力扣hot100-->滑动窗口、贪心
你好呀,欢迎来到 Dong雨 的技术小栈 🌱 在这里,我们一同探索代码的奥秘,感受技术的魅力 ✨。 👉 我的小世界:Dong雨 📌 分享我的学习旅程 🛠️ 提供贴心的实用工具 💡 记…...

Linux 内核中的高效并发处理:深入理解 hlist_add_head_rcu 与 NAPI 接口
在 Linux 内核的开发中,高效处理并发任务和数据结构的管理是提升系统性能的关键。特别是在网络子系统中,处理大量数据包的任务对性能和并发性提出了极高的要求。本文将深入探讨 Linux 内核中的 hlist_add_head_rcu 函数及其在 NAPI(网络接收处理接口)中的应用,揭示这些机制…...

centos哪个版本建站好?centos最稳定好用的版本
在信息化飞速发展的今天,服务器操作系统作为构建网络架构的基石,其稳定性和易用性成为企业和个人用户关注的重点。CentOS作为一款广受欢迎的开源服务器操作系统,凭借其强大的性能、出色的稳定性和丰富的软件包资源,成为众多用户建…...

软件越跑越慢的原因分析
如果是qt软件,可以用Qt Creator Profiler 作性能监控如果是通过web请求,可以用JMeter监控。 软件运行过程中逐渐变慢的现象,通常是因为系统资源(如 CPU、内存、磁盘 I/O 等)逐渐被消耗或软件中存在性能瓶颈。这个问题…...

LeetCode 力扣热题100 二叉树的直径
class Solution { public:// 定义一个变量 maxd,用于存储当前二叉树的最大直径。int maxd 0; // 主函数,计算二叉树的直径。int diameterOfBinaryTree(TreeNode* root) {// 调用 maxDepth 函数进行递归计算,并更新 maxd。maxDepth(root);// …...

【图文详解】lnmp架构搭建Discuz论坛
安装部署LNMP 系统及软件版本信息 软件名称版本nginx1.24.0mysql5.7.41php5.6.27安装nginx 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 关闭防火墙 systemctl stop firewalld &&a…...

小哆啦解题记:整数转罗马数字
小哆啦解题记:整数转罗马数字 小哆啦开始力扣每日一题的第十四天 https://leetcode.cn/problems/integer-to-roman/submissions/595220508/ 第一章:神秘的任务 一天,哆啦A梦接到了一项任务——将一个整数转换为罗马数字。他心想:…...

【Java数据结构】排序
【Java数据结构】排序 一、排序1.1 排序的概念1.2 排序的稳定性1.3 内部排序和外部排序1.3.1 内部排序1.3.2 外部排序 二、插入排序2.1 直接插入排序2.2 希尔排序 三、选择排序3.1 选择排序3.2 堆排序 四、交换排序4.1 冒泡排序4.2 快速排序Hoare法:挖坑法ÿ…...

我的求职之路合集
我把我秋招和春招的一些笔面试经验在这里发一下,网友们也可以参考一下。 我的求职之路:(1)如何谈自己的缺点 我的求职之路:(2)找工作时看重的点 我的求职之路:(3&…...

数据结构(四) B树/跳表
目录 1. LRU 2. B树 3. 跳表 1. LRU: 1.1 概念: 最近最少使用算法, 就是cache缓存的算法. 因为cache(位于内存和cpu之间的存储设备)是一种容量有限的缓存, 有新的数据进入就需要将原本的数据进行排出. 1.2 LRU cache实现: #include <iostream> #include <list>…...

Arcgis国产化替代:Bigemap Pro正式发布
在数字化时代,数据如同新时代的石油,蕴含着巨大的价值。从商业决策到科研探索,从城市规划到环境监测,海量数据的高效处理、精准分析与直观可视化,已成为各行业突破发展瓶颈、实现转型升级的关键所在。历经十年精心打磨…...

LBS 开发微课堂|AI向导接口服务:重塑用户的出行体验
为了让广大开发者 更深入地了解 百度地图开放平台的 技术能力 轻松掌握满满的 技术干货 更加简单地接入 位置服务 我们特别推出了 “位置服务(LBS)开发微课堂” 系列技术案例 第六期的主题是 《AI向导接口服务的能力与接入方案》 随着地图应…...

AI导航工具我开源了利用node爬取了几百条数据
序言 别因今天的懒惰,让明天的您后悔。输出文章的本意并不是为了得到赞美,而是为了让自己能够学会总结思考;当然,如果有幸能够给到你一点点灵感或者思考,那么我这篇文章的意义将无限放大。 背景 随着AI的发展市面上…...

openstack单机安装
openstack单机安装 网卡配置安装依赖开启虚拟环境修改配置文件 部署openstack部署openstack客户端访问可视化界面Horizon补充 本篇主要讲述Ubuntu2204单机安装openstackstable/2024.2。其他版本的Linux系统或者openstack版本,请参考openstack官网。 网卡配置 需要配…...