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

计算机网络之链路层

本文章目录结构出自于《王道计算机考研 计算机网络_哔哩哔哩_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…...

随笔十七、eth0单网卡绑定双ip的问题

在调试语音对讲过程中遇到过一个“奇怪”问题:泰山派作为一端,可以收到对方发来的语音,而对方不能收到泰山派发出的语音。 用wireshark抓包UDP发现,泰山派发送的地址是192.168.1.30,而给泰山派实际设置的静态地址是19…...

coffee销售数据集分析:基于时间趋势分析的实操练习

**文章说明:**对coffee销售数据集的简单分析练习(时间趋势分析练习),主要是为了强化利用python进行数据分析的实操能力。属于个人的练习文章。 **注:**这是我第一次使用md格式编辑博客文章,排版上还是不是很…...

在 Vue 3 中,怎么管理环境变量

在 Vue 3 中,环境变量管理是通过 .env 文件来进行的,利用这些文件可以让开发者根据不同的环境(开发、生产、测试等)配置不同的变量。这一机制由 Vite 构建工具支持,它帮助开发者根据不同的环境需求做出相应配置。 1. …...

shallowRef和shallowReactive的用法以及使用场景和ref和reactive的区别

Vue3 浅层响应式 API 1. ref vs shallowRef 1.1 基本概念 ref: 深层响应式,会递归地将对象的所有属性转换为响应式shallowRef: 浅层响应式,只有 .value 的改变会触发更新,不会递归转换对象的属性 1.2 使用对比 // ref 示例 const deepRe…...

mantisbt添加修改用户密码

文章目录 问题当前版本安装流程创建用户修改密码老的方式探索阶段 问题 不太好改密码啊。貌似必须要域名要发邮件。公司太穷,看不见的东西不关心,只能改源码了。 当前版本 当前mantisbt版本 2.27 php版本 7.4.3 安装流程 (下面流程不是…...

mysql 学习6 DQL语句,对数据库中的表进行 查询 操作

前期准备数据 重新create 一张表 create table emp(id int comment 编号,workno varchar(10) comment 工号,name varchar(10) comment 姓名,gender char comment 性别,ager tinyint unsigned comment 年龄,idcard char(18) comment 身份证号,workaddress varchar(10) c…...

零售业革命:改变行业的顶级物联网用例

mpro5 产品负责人Ruby Whipp表示,技术进步持续重塑零售业,其中物联网(IoT)正引领这一变革潮流。 研究表明,零售商们正在采用物联网解决方案,以提升运营效率并改善顾客体验。这些技术能够监控运营的各个方面…...

云计算的概念与特点:开启数字化时代的新篇章

在当今数字化时代,云计算(Cloud Computing)已经成为推动技术创新和业务转型的核心力量。无论是大型企业、中小型企业,还是个人用户,云计算都为其提供了高效、灵活和经济的解决方案。本文将深入探讨云计算的概念及其核心特点,帮助读者全面了解这一革命性技术。 © ivw…...

第二十一周:Mask R-CNN

Mask R-CNN 摘要Abstract文章信息研究动机Mask RCNNRoIPool与RoIAlign 双线性插值Mask Branch(FCN)其他细节Mask RCNN损失Mask分支预测 网络搭建创新点与不足总结 摘要 本篇博客介绍了Mask R-CNN,这是一种用于实例分割的模型,能够在目标检测的基础上实现…...

特朗普政府将开展新网络攻击

近日,特朗普政府已表态:减少物理战争,网络战将代替,以实现美国的全球优势。 特朗普也指示美国网络司令部可以在没有总统批准的情况下开展更广泛行动,尤其是应对一些突发事件,这其实成为了后续美国通过网络…...

Android Studio:视图绑定的岁月变迁(2/100)

一、博文导读 本文是基于Android Studio真实项目,通过解析源码了解真实应用场景,写文的视角和读者是同步的,想到看到写到,没有上帝视角。 前期回顾,本文是第二期。 private Unbinder mUnbinder; 只是声明了一个 接口…...

【已解决】黑马点评项目Redis版本替换过程的数据迁移

黑马点评项目Redis版本替换过程的数据迁移 【哭哭哭】附近商户中需要用到的GEO功能只在Redis 6.2以上版本生效 如果用的是老版本,美食/KTV的主页能正常返回,但无法显示内容 上次好不容易升到了5.0以上版本,现在又用不了了 Redis 6.2的windo…...

Maven运行任何命令都报错“Internal error: java.lang.ArrayIndexOutOfBoundsException”

今天遇到一个奇怪的问题,在maven工程下运行任何mvn命令都报“Internal error: java.lang.ArrayIndexOutOfBoundsException”错误,具体错误如下: $ mvn install [INFO] Scanning for projects... [ERROR] Internal error: java.lang.ArrayInd…...

电商平台爬虫开发技术分享:多年的实战经验总结

在当今数字化时代,电商平台的数据蕴含着巨大的商业价值。作为一名从事电商平台爬虫开发的工程师,我深知数据抓取的重要性及其技术挑战。经过多年的实践,我积累了一些宝贵的经验,愿意在这里与大家分享,希望能为同行们提…...

大模型训练策略与架构优化实践指南

标题:大模型训练策略与架构优化实践指南 文章信息摘要: 该分析全面探讨了大语言模型训练、架构选择、部署维护等关键环节的优化策略。在训练方面,强调了pre-training、mid-training和post-training的不同定位与目标;在架构选择上…...

DeepSeek-R1 蒸馏模型及如何用 Ollama 在本地运行DeepSeek-R1

在人工智能飞速发展的领域中,大型语言模型(LLMs)的出现可谓是一项重大变革。在这些模型里,DeepSeek - R1 及其蒸馏模型备受瞩目,它们融合了独特的能力与高可用性。今天我们一起聊一下 DeepSeek - R1 蒸馏模型究竟是什么…...

机器学习 ---逻辑回归

逻辑回归是属于机器学习里面的监督学习,它是以回归的思想来解决分类问题的一种非常经典的二分类分类器。由于其训练后的参数有较强的可解释性,在诸多领域中,逻辑回归通常用作 baseline 模型,以方便后期更好的挖掘业务相关信息或提…...

虚幻浏览器插件 UE与JS通信

温馨提示:本节内容需要结合插件Content下的2_Communication和Resources下的sample.html 一起阅读。 1. UE调用JS 1.1 JS脚本实现 该部分共两步: 导入jstote.js脚本实现响应函数并保存到 ue.interface 中 jsfunc 通过json对象传递参数,仅支持函数名小…...

KVM/ARM——基于ARM虚拟化扩展的VMM

1. 前言 ARM架构为了支持虚拟化做了些扩展,称为虚拟化扩展(Virtualization Extensions)。原先为VT-x创建的KVM(Linux-based Kernel Virtual Machine)适配了ARM体系结构,引入了KVM/ARM (the Linux ARM hypervisor)。KVM/ARM没有在hypervisor中引入复杂的…...

池化层Pooling Layer

1. 定义 池化是对特征图进行的一种压缩操作,通过在一个小的局部区域内进行汇总统计,用一个值来代表这个区域的特征信息,常用于卷积神经网络(CNN)中。 2. 作用 提取代表性信息的同时降低特征维度,具有平移…...

为AI聊天工具添加一个知识系统 之63 详细设计 之4:AI操作系统 之2 智能合约

本文要点 要点 AI操作系统处理的是 疑问(信念问题)、缺省(逻辑问题)和异常(不可控因素 ) 而 内核 的三大功能 (资源分配/进程管理/任务调度)以及外围的三类接口( CLI、GUI和表面模型的 运行时…...

代码随想录——二叉树(二)

文章目录 前言二叉树最大深度二叉树的最小深度翻转二叉树对称二叉树完全二叉树的节点个数平衡二叉树二叉树的所有路径左叶子之和找左下角的值路径总和从中序与后序序列构造二叉树最大二叉树合并二叉树二叉搜索树中的搜索验证二叉搜索树二叉搜索树的最小绝对差二叉树中的众数二叉…...

一个基于Python+Appium的手机自动化项目~~

本项目通过PythonAppium实现了抖音手机店铺的自动化询价,可以直接输出excel,并带有详细的LOG输出。 1.excel输出效果: 2. LOG效果: 具体文件内容见GitCode: 项目首页 - douyingoods:一个基于Pythonappium的手机自动化项目,实现了…...

深入剖析SpringBoot启动机制:run()方法详尽解读

摘要 本文深入解析SpringBoot的启动机制,以run()方法为核心,逐步追踪并详细解释其关键步骤。首先探讨run()方法的工作原理,然后深入代码层面分析各个关键环节。文章提供刷新后钩子和启动后任务的代码示例,帮助读者理解SpringBoot源…...

deepseek v1手机端部署

在iPhone上部署DeepSeekR1 1. 安装快捷指令: 打开iPhone上的Safari浏览器,访问[这个链接](https://www.icloud.com/shortcuts/e0bc5445c39d45a78b90e1dc896cd010)下载快捷指令。 下载后,按照提示完成安装。 2. 获取并配置API Key&a…...

idea对jar包内容进行反编译

1.先安装一下这个插件java Bytecode Decompiler 2.找到这个插件的路径,在idea的plugins下面的lib文件夹内:java-decompiler.jar。下面是我自己本地的插件路径,以作参考: D:\dev\utils\idea\IntelliJ IDEA 2020.1.3\plugins\java-d…...

KMP算法原理 JAVA实现

KMP算法原理 JAVA实现 一、什么是KMP算法二、为什么需要KMP算法1. 算法背景1.1 暴力匹配过程1.2 暴力匹配的优劣 2. KMP算法的诞生3. next数组3.1 kmp算法的关键 三、求解KMP 一、什么是KMP算法 实际上KMP只是发明这个算法的三个人的英文名首字母短称,KMP本身无意义…...

利用Redis实现数据缓存

目录 1 为啥要缓存捏? 2 基本流程(以查询商铺信息为例) 3 实现数据库与缓存双写一致 3.1 内存淘汰 3.2 超时剔除(半自动) 3.3 主动更新(手动) 3.3.1 双写方案 3.3.2 读写穿透方案 3.3.…...

基于 RAMS 的数据驱动建模与应用实践:从理论到具体操作

基于 RAMS 的数据驱动建模与应用实践:从理论到具体操作 RAMS(区域大气建模系统)因其模块化设计、高分辨率模拟能力和广泛的应用领域,成为区域大气建模的强大工具。而数据驱动建模技术的崛起,使得 RAMS 的能力得到进一…...

计算机图形学实验练习(实验1.2-4.1AND补充实验12)

实验1.2 OpenGL与着色器编程 1.理论知识 1.1 OpenGL的含义 OpenGL是一种应用程序编程接口(Application Programming Interface,API),它是一种可以对图形硬件设备特性进行访问的软件库。OpenGL最新的4.3版本包含了超过500个不同的命令,可以用于设置所需的对象、图像和操…...

javascript-es6 (一)

作用域(scope) 规定了变量能够被访问的“范围”,离开了这个“范围”变量便不能被访问 局部作用域 函数作用域: 在函数内部声明的变量只能在函数内部被访问,外部无法直接访问 function getSum(){ //函数内部是函数作用…...

uni-app 程序打包 Android apk、安卓夜神模拟器调试运行

1、打包思路 云端打包方案(每天免费次数限制5,最简单,可以先打包尝试一下你的程序打包后是否能用): HBuilderX 发行App-Android云打包 选择Android、使用云端证书、快速安心打包本地打包: HBuilderX …...

yolov11 解读简记

1 文章详细介绍了YOLOv11的架构设计,包括以下几个关键组件: C3k2块:这是YOLOv11引入的一种新型卷积块,替代了之前版本中的C2f块。C3k2块通过使用两个较小的卷积核代替一个大的卷积核,提高了计算效率,同时保…...

CommonAPI学习笔记-1

CommonAPI学习笔记-1 一. 整体结构 CommonAPI分为两层:核心层和绑定层,使用了Franca来描述服务接口的定义和部署,而Franca是一个用于定义和转换接口的框架(https://franca.github.io/franca/)。 ​ 核心层和通信中间…...

从入门到精通:RabbitMQ的深度探索与实战应用

目录 一、RabbitMQ 初相识 二、基础概念速览 (一)消息队列是什么 (二)RabbitMQ 核心组件 三、RabbitMQ 基本使用 (一)安装与环境搭建 (二)简单示例 (三)…...

深入理解若依RuoYi-Vue数据字典设计与实现

深入理解若依数据字典设计与实现 一、Vue2版本主要文件目录 组件目录src/components:数据字典组件、字典标签组件 工具目录src/utils:字典工具类 store目录src/store:字典数据 main.js:字典数据初始化 页面使用字典例子&#xf…...

Cursor 帮你写一个小程序

Cursor注册地址 首先下载客户端 点击链接下载 1 打开微信开发者工具创建一个小程序项目 选择TS-基础模版 官方 2 然后使用Cursor打开小程序创建的项目 3 在CHAT聊天框输入自己的需求 比如 小程序功能描述:吃什么助手 项目名称: 吃什么小程序 功能目标…...

进程控制的学习

目录 1.进程创建 1.1 fork函数 1.2 fork函数返回值 1.3 写时拷贝 1.4 fork 常规用法 1.5 fork 调用失败的原因 2. 进程终止 2.1 进程退出场景 2.2 进程常见退出方法 2.2.1 从main 返回 2.2.2 echo $? 查看进程退出码 2.2.2.1 我们如何得到退出码代表的含…...

一文讲解Java中的接口和抽象类

抽象类和接口有什么区别? 一个类只能继承一个抽象类;但一个类可以实现多个接口。所以我们在新建线程类的时候,一般推荐使用Runnable接口的方式,这样线程类还可以继承其他类,而不单单是Thread类;抽象类符合…...

Vue 3 30天精进之旅:Day 05 - 事件处理

引言 在前几天的学习中,我们探讨了Vue实例、计算属性和侦听器。这些概念为我们搭建了Vue应用的基础。今天,我们将专注于事件处理,这是交互式Web应用的核心部分。通过学习如何在Vue中处理事件,你将能够更好地与用户进行交互&#…...

STM32完全学习——RT-thread在STM32F407上移植

一、写在前面 关于源码的下载,以及在KEIL工程里面添加操作系统的源代码,这里就不再赘述了。需要注意的是RT-thread默认里面是会使用串口的,因此需要额外的进行串口的初始化,有些人可能会问,为什么不直接使用CubMAX直接…...

Shodan Dorks安装指南,通过Shodan搜索漏洞

Shodan Dorks是一种基于Shodan的工具,不知道Shodan是什么的不必阅读下面的内容。简单的说就是,利用预定义的查询(dorks),通过Shodan轻松搜索漏洞和机密信息。 推荐渗透测试人员自行测试。 安装方法: 1.确…...

poi在word中打开本地文件

poi版本 5.2.0 方法1:使用XWPFFieldRun(推荐) 比如打开当前相对路径的aaaaa.docx XWPFFieldRun run paragraph.createFieldRun();CTRPr ctrPr run.getCTR().addNewRPr();CTFonts font ctrPr.addNewRFonts();// 设置字体font.setAscii(&quo…...

Linux查看服务器的内外网地址

目录: 1、内网地址2、外网地址3、ping时显示地址与真实不一致 1、内网地址 ifconfig2、外网地址 curl ifconfig.me3、ping时显示地址与真实不一致 原因是dns缓存导致的,ping这种方法也是不准确的,有弊端不建议使用,只适用于测试…...

OAuth1和OAuth2授权协议

OAuth 1 授权协议 1. 概述 OAuth1 是 OAuth 标准的第一个正式版本,它通过 签名和令牌 的方式,实现用户授权第三方访问其资源的功能。在 OAuth1 中,安全性依赖于签名机制,无需传递用户密码。 2. 核心特性 使用 签名&#xff08…...

DeepSeek学术题目选择效果怎么样?

论文选题 一篇出色的论文背后,必定有一个“智慧的选题”在撑腰。选题足够好文章就能顺利登上高水平期刊;选题不行再精彩的写作也只能“当花瓶”。然而许多宝子们常常忽视这个环节,把大量时间花在写作上,选题时却像抓阄一样随便挑一…...

数据结构(一)顺序表和链表

目录 1. 时间复杂度和空间复杂度 2. 顺序表 3. 链表 1. 时间复杂度和空间复杂度 如何估算一个算法的效率高低一般就是使用到时间复杂度和空间复杂度; 时间复杂度是评价一个算法运行快慢的, 而空间复杂度是算法额外需要空间大小. 1.1 时间复杂度的计算: 准确来说时间复杂度是…...

单相可控整流电路——单相桥式全控整流电路

以下是关于单相桥式整流电路的介绍: 电路构成(带阻性负载的工作情况) - 二极管:是电路0的核心元件,通常采用四个同型号或根据需求选择不同型号的二极管,如1N4001、1N4007等,如图Vt1和Vt4是一对…...

DeepSeek-R1:性能对标 OpenAI,开源助力 AI 生态发展

DeepSeek-R1:性能对标 OpenAI,开源助力 AI 生态发展 在人工智能领域,大模型的竞争一直备受关注。最近,DeepSeek 团队发布了 DeepSeek-R1 模型,并开源了模型权重,这一举动无疑为 AI 领域带来了新的活力。今…...