交换机与路由器的主要区别:深入分析其工作原理与应用场景
在现代网络架构中,交换机和路由器是两种至关重要的设备。它们在网络中扮演着不同的角色,但很多人对它们的工作原理和功能特性并不十分清楚。本文将深入分析交换机与路由器的主要区别,并探讨它们的工作原理和应用场景。
一、基本定义
1. 交换机
交换机是一种网络设备,主要用于在局域网(LAN)内连接多个设备(如计算机、打印机等),并根据MAC地址将数据帧转发到正确的目标设备。交换机工作在数据链路层(OSI模型的第二层),也有一些高级交换机可以工作在网络层(第三层)。
2. 路由器
路由器是一种用于连接不同网络(如局域网与广域网)的设备。它根据IP地址来决定数据包的转发路径,工作在网络层(OSI模型的第三层)。路由器可以实现不同网络之间的通信,并提供各种网络服务,如地址分配、网络地址转换(NAT)等。
二、工作原理
1. 交换机的工作原理
交换机是局域网(LAN)中不可或缺的核心设备,负责在网络中的设备之间高效地转发数据。它的工作原理主要依赖于MAC地址(媒体访问控制地址)和MAC地址表的管理。以下是对交换机工作原理的详细扩展分析:
1.1 MAC地址和数据帧
每个网络设备在出厂时都会被赋予一个唯一的MAC地址,这个地址在局域网中用于标识设备。当一个设备(如计算机、打印机或服务器)发送数据时,它会将数据打包成数据帧,并在帧的头部包含发送方和接收方的MAC地址。这些数据帧在局域网中通过交换机进行传输。
1.2 MAC地址学习
-
学习过程:当交换机接收到来自某个端口的数据帧时,它会首先检查帧的源MAC地址。交换机会将这个MAC地址与接收数据的端口号进行关联,并将其记录在MAC地址表中。这个过程称为“MAC地址学习”。通过这种方式,交换机能够逐步了解网络中各个设备的位置,建立起MAC地址与端口的映射关系。
-
MAC地址表:MAC地址表是交换机内部维护的一张表格,包含了每个已知MAC地址及其对应的物理端口。当交换机记录到新的MAC地址时,如果表中已经存在该地址的条目,交换机会更新它的端口信息,以确保表中的数据始终是最新的。
1.3 数据帧的转发
-
查找与转发:当交换机接收到一个数据帧时,它会首先检查帧的目的MAC地址。交换机会在MAC地址表中查找这个地址,以确定它所对应的输出端口。如果找到了相应的端口,交换机只会将数据帧转发到该端口,从而避免不必要的网络拥塞。
-
未找到目的地址的处理:如果交换机在MAC地址表中没有找到目的MAC地址,交换机会进行广播操作。它会将数据帧发送到所有其他端口(除了接收该帧的端口),以确保目的设备能够接收到数据。这种操作虽然保证了数据的完整性,但会增加网络流量,因此交换机会尽量减少这种广播行为。
1.4 广播与多播处理
-
广播:当数据帧的目的MAC地址是一个广播地址(如FF:FF:FF:FF:FF:FF),交换机会将这个帧转发到所有端口。这在局域网内用于设备发现和其他需要广播的场景。
-
多播:交换机也支持多播数据帧的转发,对于多播地址(如224.0.0.0到239.255.255.255),交换机会根据需要将数据帧转发到同时连接多个设备的端口。这对于视频会议和组播等应用非常有用。
1.5 端口聚合与VLAN支持
-
端口聚合:现代交换机还支持端口聚合技术,这允许将多个物理端口组合成一个逻辑端口,以提高带宽和冗余性。这种特性在高流量环境中尤为重要。
-
虚拟局域网(VLAN):许多交换机还支持VLAN功能,允许网络管理员将同一物理交换机上的设备划分为多个逻辑子网。VLAN可以增强网络的安全性和管理性,因为不同的VLAN之间的设备不能直接通讯,除非通过路由器进行转发。
1.6 交换机的性能
-
全双工与半双工:大多数现代交换机支持全双工通信,这意味着交换机可以同时接收和发送数据帧。这种能力大大提高了网络的效率。相较之下,早期的交换机通常只支持半双工模式,设备只能在一个时间点上进行发送或接收。
-
速度与延迟:交换机通常以极高的速度进行数据帧转发,延迟时间也非常短。这使得交换机成为处理高流量网络环境的理想选择。
1.7 交换机的智能化
现代交换机还配备了各种智能功能,如流量管理、带宽控制和安全特性。这些功能可以通过软件进行配置和管理,使得交换机不仅仅是一个简单的数据转发设备,而是一个能够提供网络监控和管理的智能设备。
通过以上分析,我们可以看到交换机在局域网中的工作原理复杂而高效。它通过MAC地址学习、数据帧转发以及对广播和多播的处理,实现了设备间的高效通信。随着网络技术的不断发展,交换机的功能也在不断增强,使其在现代网络架构中发挥着越来越重要的作用。在未来的网络设计中,合理利用交换机的特性,将帮助我们构建更高效、更灵活的网络环境。
2. 路由器的工作原理
路由器是网络中连接不同网络的重要设备,承担着数据包的转发和路由选择的任务。路由器的工作原理较为复杂,涉及到多个网络协议和算法。下面,我们将详细探讨路由器的工作原理,包括其核心功能、转发过程、路由选择机制以及其他相关特性。
2.1 数据包的基本概念
在讨论路由器的工作原理之前,我们需要了解数据包的基本概念。当终端设备(如计算机或手机)发送数据时,这些数据会被打包成数据包,数据包中包含了源IP地址、目的IP地址以及其他控制信息。路由器的主要任务是根据目的IP地址将数据包转发到正确的网络。
2.2 路由器的基本组成
路由器主要由以下几个核心组件构成:
-
路由表:路由器内部维护的一个数据库,其中包含了网络中各个IP地址的路由信息。路由表是路由器进行决策的基础。
-
接口:路由器通常具有多个网络接口,用于连接不同的网络。每个接口都有一个对应的IP地址和子网掩码,以便于识别连接的网络。
-
处理器和内存:路由器内置处理器负责执行路由算法,内存用于存储路由表、缓存以及临时数据。
2.3 数据包的接收与判断
当路由器接收到一个数据包时,它会经过以下几个步骤进行处理:
-
数据包接收:路由器通过其网络接口接收到数据包。
-
数据包解析:路由器会解析数据包的IP头部,以提取源IP地址、目的IP地址和其他必要的信息。
-
查找路由表:根据数据包的目的IP地址,路由器会在其路由表中查找匹配的条目,以确定转发的下一跳地址。路由表的条目通常包含以下信息:
- 目的网络的IP地址和子网掩码
- 下一跳的IP地址
- 出口接口(用于转发数据包的物理端口)
- 路由的度量值(例如,跳数、带宽等)
2.4 路由选择机制
路由器采用多种路由选择协议来动态更新路由表并选择最佳路径。以下是一些常见的路由选择协议和机制:
-
静态路由:管理员手动配置的路由条目,适用于网络结构较简单的环境。静态路由不会随网络变化而更新,因此需要管理员定期维护。
-
动态路由:通过路由选择协议(如RIP、OSPF、BGP等)自动更新路由表。动态路由可以根据网络的变化动态调整路由,从而提高网络的可靠性和灵活性。
-
RIP(Routing Information Protocol):一种基于跳数的距离向量路由协议,使用UDP进行通信,适用于小型网络。
-
OSPF(Open Shortest Path First):一种链路状态路由协议,能够更快速地适应网络拓扑变化,适合大型企业网络。
-
BGP(Border Gateway Protocol):用于连接不同自治系统的路由协议,主要用于互联网的路由选择。
-
2.5 数据包的转发
一旦路由器找到匹配的路由条目,数据包的转发过程如下:
-
选择下一跳:根据路由表中的信息,路由器确定将数据包转发到的下一跳IP地址和出口接口。
-
数据包重封装:路由器可能需要重新封装数据包。在此过程中,路由器会更新数据包的源MAC地址和目的MAC地址,以便与下一跳设备进行通信。
-
转发数据包:路由器通过相应的接口将数据包转发到下一跳设备。如果下一跳是另一台路由器,则该路由器会重复相同的处理过程,直到数据包到达最终目的地。
2.6 NAT(网络地址转换)
路由器常常实施网络地址转换(NAT)功能,允许多个内部设备共享一个公共IP地址。这一过程一般包含以下两个步骤:
-
内部地址转换:当内部设备向外部网络发送数据包时,路由器会将数据包的源IP地址替换为路由器的公共IP地址,并记录下转换的映射关系。
-
地址回转:当外部设备向公共IP地址发送响应数据包时,路由器会根据之前的映射关系将数据包的目的IP地址替换为正确的内部设备IP地址,并将数据包转发到内部网络中。
NAT不仅节省了IP地址资源,还增加了一层安全性,因为外部设备无法直接访问内部网络中的设备。
2.7 安全与过滤
现代路由器还具备多种安全特性,例如:
-
防火墙功能:路由器可以配置访问控制列表(ACL),根据IP地址、端口号和协议对进出网络的数据包进行过滤,阻止恶意流量。
-
VPN支持:许多路由器支持虚拟专用网络(VPN),允许安全地在公共网络上建立加密连接,适合远程办公和安全通信。
2.8 路由器的性能与智能化
-
QoS(服务质量):许多现代路由器具有QoS功能,可以根据不同应用的需求优先处理流量。例如,视频会议和在线游戏可能会被赋予更高的优先级,以保证流畅性。
-
流量监控与分析:路由器能够监控网络流量,并提供实时分析,帮助管理员识别网络瓶颈和优化网络性能。
-
智能路由选择:一些高级路由器使用机器学习等智能技术,自动调整路由选择,优化网络性能。
路由器是一种复杂而强大的网络设备,它通过接收、解析、转发数据包以及动态选择路由,确保不同网络之间的有效通信。随着网络技术的发展,路由器的功能也越来越丰富,不仅承担数据转发的基本任务,还提供了安全保护、流量优化等多种附加功能。在当今互联网和企业内部网络中,路由器已经成为不可或缺的重要环节,帮助人们实现高效、安全的网络连接。了解路由器的工作原理,对于网络设计、管理和故障排除具有重要意义。
三、主要区别
在现代网络架构中,交换机和路由器是实现数据传输的两种基本设备。尽管它们在网络中都有重要的作用,但它们的功能、工作原理和应用场景存在显著的区别。以下是它们之间的主要区别,以帮助更好地理解这两种设备的特性和适用场景。
3.1 工作层级
-
交换机:交换机主要工作在OSI模型的第二层(数据链路层)。它通过MAC地址来识别设备并转发数据帧。由于交换机处理的是数据链路层的数据帧,因此它更关注局域网内部设备之间的通信。
-
路由器:路由器则工作在OSI模型的第三层(网络层),主要通过IP地址进行数据包的转发和路由选择。路由器的任务是将数据从一个网络转发到另一个网络,因此它的功能较为复杂且适用于广域网环境。
3.2 功能
-
交换机:交换机的主要功能是连接多个网络设备(如计算机、打印机和服务器),并在它们之间进行数据转发。交换机能够根据MAC地址学习和构建MAC地址表,实现高效的数据传输。其主要目标是提高局域网内的带宽利用率,减少数据碰撞。
-
路由器:路由器的功能包括连接不同的网络、选择最佳的转发路径、进行数据包转发等。路由器还提供网络地址转换(NAT)、防火墙、安全过滤等多种功能,能够在不同网络之间实现数据的安全和高效传输。
3.3 处理方式
-
交换机:大多数现代交换机都采用硬件转发技术(例如ASIC芯片),通过高效的硬件处理来实现快速的数据转发。交换机的转发延迟极低,能够在高流量环境中保持良好的性能。
-
路由器:路由器通常通过软件和算法进行数据包的处理和转发,相比之下,处理速度相对较慢。路由器需要运行复杂的路由协议并进行路径选择,因此在转发数据时可能会引入一定的延迟。
3.4 数据转发方式
-
交换机:交换机的转发是基于MAC地址的,它通过查找MAC地址表来决定将数据帧转发到哪个端口。交换机的工作方式是“根据目的MAC地址转发”,通常采用“学习-转发-过滤”的机制。
-
路由器:路由器的转发是基于IP地址的,它使用路由表来确定数据包的最佳转发路径。路由器根据目的IP地址进行查找,并选择相应的下一跳进行转发。路由器的工作方式是“根据目的IP地址选择路径”,通常使用更复杂的算法来实现。
3.5 广播与多播处理
-
交换机:交换机在处理数据时,如果目的MAC地址不在MAC地址表中,它会将数据帧广播到所有端口(除了接收该帧的端口)。这种广播机制虽然确保了数据能够被所有设备接收,但可能会导致网络拥塞。
-
路由器:路由器则通常不进行广播。它的智能在于能够根据路由表进行精准的路由选择,避免不必要的广播流量。路由器只会向确切的目的网络发送数据包,从而减轻了网络负担。
3.6 应用场景
-
交换机:交换机主要用于局域网内部,适合连接同一网络中的多个设备。在企业网络中,交换机用于创建高效的内网环境,支持大规模的设备连接和高速数据传输。
-
路由器:路由器则用于连接不同的网络,如将企业内部网络连接到互联网,或在多个分支机构之间实现数据通信。路由器适合在广域网环境中使用,能够处理复杂的网络流量和安全需求。
3.7 价格与成本
-
交换机:相对而言,交换机的成本通常较低,尤其是在大规模部署时。由于交换机的设计和功能相对简单,因此它们的设备维护和管理成本也相对较低。
-
路由器:路由器通常价格较高,尤其是那些支持先进路由协议和安全特性的高端路由器。它们的配置、管理和维护要求也更为复杂,可能需要专业的网络知识和技能。
3.8 设备智能化
-
交换机:现代交换机越来越智能,支持VLAN、链路聚合和流量管理等高级功能。这使得交换机能够在复杂的网络环境中进行有效的流量控制和管理。
-
路由器:路由器的智能化程度更高,能够实施QoS(服务质量管理)、流量分析、智能路由选择以及VPN支持等。这些功能使得路由器能够在多变的网络环境中提供更好的性能和安全性。
综上所述,交换机和路由器在网络架构中各自担任着不同的角色。交换机主要用于局域网内的设备连接和数据转发,强调的是高效、低延迟的数据传输;而路由器则负责不同网络之间的连接和路由选择,强调的是灵活、安全的网络通信。理解它们的主要区别,对于网络设计、管理和优化具有重要意义。在实际应用中,合理选择和配置这两种设备,将有助于构建高效、稳定的网络环境。
四、总结
交换机和路由器在网络中各自承担着重要的角色。交换机通过MAC地址转发数据帧,使局域网内的设备能够高效通信;而路由器则通过IP地址实现不同网络的互联,确保数据能够跨越网络边界。了解它们的工作原理和主要区别,对于网络工程师和开发人员设计和维护高效的网络架构至关重要。在实际应用中,通常会将交换机与路由器结合使用,以构建出功能强大且灵活的网络环境。
相关文章:
交换机与路由器的主要区别:深入分析其工作原理与应用场景
在现代网络架构中,交换机和路由器是两种至关重要的设备。它们在网络中扮演着不同的角色,但很多人对它们的工作原理和功能特性并不十分清楚。本文将深入分析交换机与路由器的主要区别,并探讨它们的工作原理和应用场景。 一、基本定义 1. 交换…...
uniApp小程序保存定制二维码到本地(V3)
这里的二维码组件用的 uv-ui 的二维码 可以按需引入 QRCode 二维码 | 我的资料管理-uv-ui 是全面兼容vue32、nvue、app、h5、小程序等多端的uni-app生态框架 <uv-qrcode ref"qrcode" :size"280" :value"payCodeUrl"></uv-qrcode>&l…...
手机投屏到电视方法
一、投屏软件 比如乐播投屏 二、视频软件 腾讯视频、爱奇艺 三、手机无线投屏功能 四、有线投屏 五、投屏器...
桌面应用UI开发方案
一、基于 Web 技术的跨平台方案 Electron Python/Go 特点: 技术栈:前端使用 HTML/CSS/JS,后端通过 Node.js 集成 Python/Go 模块或服务。 跨平台:支持 Windows、macOS、Linux 桌面端,适合开发桌面应用。 生态成熟&…...
FFmpeg+Nginx+VLC打造M3U8直播
一、视频直播的技术原理和架构方案 直播模型一般包括三个模块:主播方、服务器端和播放端 主播放创造视频,加美颜、水印、特效、采集后推送给直播服务器 播放端: 直播服务器端:收集主播端的视频推流,将其放大后推送给…...
山东科技大学深度学习考试回忆
目录 一、填空(五个空,十分) 二、选择题(五个,十分) 三、判断题(五个,五分) 四、论述题(四个,四十分) 五、计算题(二个ÿ…...
【Flutter动画深度解析】性能与美学的完美平衡之道
Flutter的动画系统是其UI框架中最引人注目的部分之一,它既能创造令人惊艳的视觉效果,又需要开发者对性能有深刻理解。本文将深入剖析Flutter动画的实现原理、性能优化策略以及设计美学,帮助你打造既流畅又美观的用户体验。 一、Flutter动画核…...
【嵌入式】——Linux系统远程操作和程序编译
目录 一、虚拟机配置网络设置 二、使用PuTTY登录新建的账户 1、在ubuntu下开启ssh服务 2、使用PuTTY连接 三、树莓派实现远程登录 四、树莓派使用VNC viewer登录 五、Linux使用talk聊天程序 1、使用linux自带的talk命令 2、使用c语言编写一个talk程序 一、虚拟机配置网络…...
零、HarmonyOS应用开发者基础学习总览
零、HarmonyOS应用开发者基础认证 1 整体学习内容概览 1 整体学习内容概览 通过系统化的课程学习,熟练掌握 DevEco Studio,ArkTS,ArkUI,预览器,模拟器,SDK 等 HarmonyOS 应用开发的关键概念,具…...
记录一次项目中使用pdf预览过程以及遇到问题以及如何解决
背景 项目中现有的pdf浏览解析不能正确解析展示一些pdf文件,要么内容一直在加载中展示不出来,要么展示的格式很凌乱 解决 方式一:(优点:比较无脑,缺点:不能解决遇到的一些特殊问题࿰…...
致远OA——自定义开发rest接口
文章目录 :apple: 业务流程 🍎 业务流程 代码案例: https://pan.quark.cn/s/57fa808c823f 官方文档: https://open.seeyoncloud.com/seeyonapi/781/https://open.seeyoncloud.com/v5devCTP/39/783.html 登录系统 —— 后台管理 —— 切换系…...
STL之vector基本操作
写在前面 我使用的编译器版本是 g 11.4.0 (Ubuntu 22.04 默认版本),支持C17的全部特性,支持C20的部分特性。 vector的作用 我们知道vector是动态数组(同时在堆上存储数组元素),我们在不确定数…...
dac直通线还是aoc直通线? sfp使用
"DAC直通线" 和 "AOC直通线" 都是高速互连线缆,用于数据中心、服务器、交换机等设备之间的高速互连。它们的选择主要取决于以下几个方面: 🔌 DAC(Direct Attach Cable,直连铜缆) 材质&…...
【Linux篇】探索进程间通信:如何使用匿名管道构建高效的进程池
从零开始:通过匿名管道实现进程池的基本原理 一. 进程间通信1.1 基本概念1.2 通信目的1.3 通信种类1.3.1 同步通信1.3.2 异步通信 1.4 如何通信 二. 管道2.1 什么是管道2.2 匿名管道2.2.1 pipe()2.2.2 示例代码:使用 pipe() 进行父子进程通信2.2.3 管道容…...
Mixture-of-Experts with Expert Choice Routing:专家混合模型与专家选择路由
摘要 稀疏激活的专家混合模型(MoE)允许在保持每个token或每个样本计算量不变的情况下,大幅增加参数数量。然而,糟糕的专家路由策略可能导致某些专家未被充分训练,从而使得专家在特定任务上过度或不足专业化。先前的研究通过使用top-k函数为每个token分配固定数量的专家,…...
ai学习中收藏网址【1】
https://github.com/xuwenhao/geektime-ai-course课程⾥所有的代码部分,通过 Jupyter Notebook 的形式放在了 GitHub 上 https://github.com/xuwenhao/geektime-ai-course 图片创作 https://www.midjourney.com/explore?tabtop 创建填⾊本 How to Create Midjour…...
【滑动窗口】最⼤连续 1 的个数 III(medium)
⼤连续 1 的个数 III(medium) 题⽬描述:解法(滑动窗⼝):算法思路:算法流程: C 算法代码:Java 算法代码: 题⽬链接:1004. 最⼤连续 1 的个数 III …...
ClawCloud的免费空间(github用户登录可以获得$5元/月的免费额度)
免费的空间 Welcome to ClawCloud Lets create your workspace 官网:ClawCloud | Cloud Infrastructure And Platform for Developers 区域选择新加坡 然后这个页面会变成新加坡区域,再按一次确定,就创建好了工作台。 初始界面࿰…...
sql之DML(insert、delete、truncate、update、replace))
🎯 本文专栏:MySQL深入浅出 🚀 作者主页:小度爱学习 数据库使用时,大多数情况下,开发者只会操作数据,也是就增删改查(CRUD)。 增删改查四条语句,最重要的是查…...
Spring Boot常用注解全解析:从入门到实战
🌱 Spring Boot常用注解全解析:从入门到实战 #SpringBoot核心 #注解详解 #开发技巧 #高效编程 一、核心启动与配置注解 1. SpringBootApplication 作用:标记主启动类,整合了Configuration、EnableAutoConfiguration和Component…...
Python 赋能区块链教育:打造去中心化学习平台
Python 赋能区块链教育:打造去中心化学习平台 引言 区块链技术正在重塑全球多个行业,而教育领域也不例外。传统的在线学习平台往往依赖中心化存储和管理模式,导致数据安全、用户隐私、资源共享等问题难以解决。而随着 Web 3.0 的发展,区块链在教育场景中的应用逐渐受到关…...
verilog float mult
module pipe_float_mul(input wire clk ,// 时钟信号input wire en ,// 使能信号input wire rst_n ,// 复位信号input wire round_cfg ,// 决…...
Android开发四大组件和生命周期及setFlags
文章目录 Android开发四大组件1. Activity(活动)2. Service(服务)3. BroadcastReceiver(广播接收器)4. ContentProvider(内容提供者)共同特点 Activity 生命周期详解完整的生命周期方…...
mysql的函数(第二期)
九、窗口函数(MySQL 8.0) 适用于对结果集的子集(窗口)进行计算,常用于数据分析场景。 ROW_NUMBER() 作用:为每一行生成唯一的序号。示例:按分数降序排名 SELECT n…...
MATLAB 控制系统设计与仿真 - 39
多变量系统控制器设计实例2 假如原系统对象中有位于虚轴上的极点,则不能直接应用鲁棒控制设计来设计控制器。 在这样的情况下,需引入一个新的变量p,使得 即可在对象模型中用p变量取代s变量,这样的变换称为双线性变换,…...
深入理解C++ 中的vector容器
一、引言 在C 的标准模板库(STL)中, vector 是一个极为常用且功能强大的序列容器。它就像是一个动态数组,既能享受数组随机访问元素的高效性,又能灵活地动态调整大小。在本文中,我们将深入探讨 vector …...
ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(显示输出类外设之LED)
目录 ESP-ADF外设子系统深度解析:esp_peripherals组件架构与核心设计(显示输出类外设之LED)简介模块概述功能定义架构位置核心特性 LED外设分析LED外设概述LED外设功能特点常见应用场景LED外设架构图 LED外设API和数据结构公共API事件类型配置…...
[特殊字符] Kotlin与C的类型别名终极对决:typealias vs typedef,如何让代码脱胎换骨?
在 Kotlin 中,typealias 是一个非常实用的关键字,它可以为已有的类型定义一个新的名称,起到简化代码和提升可读性的作用。比如: // 定义一个复杂函数类型的别名 typealias ClickListener (View, Int) -> Unitfun setOnClickL…...
第9期:文本条件生成(CLIP + Diffusion)详解
“让我们用一句话,让模型画出一幅画。” 在前几期中我们学习了 Denoising Diffusion Probabilistic Models(DDPM)如何在无条件情况下生成图像。而在本期,我们将跨入更具挑战性但也更酷的领域 —— 文本条件图像生成(Te…...
8 编程笔记全攻略:Markdown 语法精讲、Typora 编辑器全指南(含安装激活、基础配置、快捷键详解、使用技巧)
1 妙笔在手,编程无忧! 1.1 编程为啥要做笔记?这答案绝了! 嘿,各位键盘魔法师!学编程不记笔记,就像吃火锅不配冰可乐 —— 爽到一半直接噎住!你以为自己脑子是顶配 SSD,结…...
C#测试linq中的左连接的基本用法
使用linq联表或者连接两个对象集合查询时一般使用的是join关键字,返回结果中包含两个表或两个对象集合中连接字段相等的数据记录,如果要实现sql语句中的左连接效果,并没有现成的left join关键字,此时可以使用DefaultIfEmpty 实现左…...
【Android面试八股文】Android系统架构【一】
Android系统架构图 1.1 安卓系统启动 1.设备加电后执行第一段代码:Bootloader 系统引导分三种模式:fastboot,recovery,normal: fastboot模式:用于工厂模式的刷机。在关机状态下,按返回开机 键进…...
什么是 Stream
Stream 是对集合对象功能的增强,它不是集合,也不存储数据,而是从集合中抽象出一条数据通道,让你可以用链式方式一步步处理数据。 🔧 常见操作分类 类型方法举例创建stream(), Stream.of(), Arrays.stream()中间操作fi…...
网络编程 - 4 ( TCP )
目录 TCP 流套接字编程 API 介绍 SeverSocket Socket 用 TCP 实现一个回显服务器 服务端 客户端 运行调试 第一个问题:PrintWriter 内置的缓冲区 - flush 刷新解决 第二个问题:上述代码中,需要进行 close 操作吗? 第三…...
在STM32的定时器外设中,选择使用哪个外部时钟配置函数
在STM32的定时器外设中,选择使用哪个外部时钟配置函数主要取决于以下几个因素: 时钟源类型: TIM_ITRxExternalClockConfig:使用内部触发输入(ITRx),即来自其他定时器的时钟信号 TIM_TIxExternalClockConfig࿱…...
【Tauri2】026——Tauri+Webassembly
前言 不多废话 直言的说,笔者看到这篇文章大佬的文章 【04】Tauri 入门篇 - 集成 WebAssembly - 知乎https://zhuanlan.zhihu.com/p/533025312尝试集成一下WebAssembly,直接开始 正文 准备工作 新建一个项目 安装 vite的rsw插件和rsw pnpm instal…...
jenkins尾随命令
在访问jenkins的网址后面可以追加命令,比如访问地址是 http://10.20.0.124:8080/,常用的有以下几种方式: 1.关闭Jenkins 只要浏览器输入http://10.20.0.124:8080/exit即可退出,或者http://localhost:8080/exit 2.重启Jenkins …...
基于机器学习 LSTM 算法的豆瓣评论情感分析系统
基于机器学习 LSTM 算法的豆瓣评论情感分析系统 博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 ὄ…...
腾讯云对象存储m3u8文件使用腾讯播放器播放
参考腾讯云官方文档: 播放器 SDK Demo 体验_腾讯云 重要的一步来了: 登录腾讯云控制台,找到对象存储的存储桶。 此时,再去刷新刚才创建的播放器html文件,即可看到播放画面了。...
基于chatgpt和deepseek解答显卡的回答
当然可以!了解显卡特别是英伟达(NVIDIA)的系列,对于选购、升级或者了解游戏和创作性能都很重要。下面我帮你系统整理一下 NVIDIA 显卡的各个系列,并加点选购建议,方便你快速上手。 chatgpt 🧠 …...
2025年渗透测试面试题总结-拷打题库06(题目+回答)
网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 1. Sleep被禁用后的SQL注入 2. XSS属性控制利用 3. CSRF防护 4. 危险请求头 5. XXE高发场景 6. Ja…...
【一起学Rust】使用Thunk工具链实现Rust应用对Windows XP/7的兼容性适配实战
前言 在Rust语言快速发展的今天,开发者经常面临将现代语言特性与遗留系统兼容的挑战。特别是在工业控制、嵌入式设备等场景中,Windows XP/7等经典操作系统仍占据重要地位。本文深入解析如何通过Thunk工具链突破Rust编译器对旧版Windows系统的兼容性限制…...
leetcode 674. Longest Continuous Increasing Subsequence
目录 题目描述 第一步,明确并理解dp数组及下标的含义 第二步,分析明确并理解递推公式 第三步,理解dp数组如何初始化 第四步,理解遍历顺序 代码 题目描述 这是动态规划解决子序列问题的例子。与第300题的唯一区别就是&#…...
在VMware Workstation 17 Pro上实现Windows与UOS虚拟机之间复制粘贴文本及文件
在VMware Workstation 17 Pro上实现Windows与UOS虚拟机之间复制粘贴文本及文件 在本教程中,我们将介绍如何在VMware Workstation 17 Pro中安装UOS虚拟机,并通过安装open-vm-tools-desktop软件来实现Windows和UOS系统之间的文本和文件复制粘贴功能。 1.…...
十一、数据库day03--SQL语句02
文章目录 一、查询语句1. 基本查询2. 条件查询2.1 ⽐较运算符&逻辑运算符2.2 模糊查询2.3 范围查询2.4 判断空 3. 其他复杂查询3.1 排序3.2 聚合函数3.3 分组3.4 分页查询 二、回顾1. 使⽤ Navicat ⼯具中的命令列2.命令⾏基本操作步骤 提示:以下是本篇文章正文…...
第6章 类文件结构《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》
第6章 类文件结构 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。 6.1 概述 老师说过,计算机只认识0和1,所以我们写的程序需要被编译器翻译成由0和1构成的二进制格式才能被计算机…...
【Vue】模板语法与指令
个人主页:Guiat 归属专栏:Vue 文章目录 1. Vue 模板语法基础1.1 文本插值1.2 原始 HTML1.3 属性绑定 2. Vue 指令系统2.1 条件渲染2.2 列表渲染2.3 事件处理2.4 表单输入绑定 3. 计算属性与侦听器3.1 计算属性3.2 侦听器 4. 类与样式绑定4.1 绑定 HTML 类…...
Python语法系列博客 · 第5期[特殊字符] 模块与包的导入:构建更大的程序结构
上一期小练习解答(第4期回顾) ✅ 练习1:判断偶数函数 def is_even(num):return num % 2 0print(is_even(4)) # True print(is_even(5)) # False✅ 练习2:求平均值 def avg(*scores):return sum(scores) / len(scores)print(…...
HashMap 初步理解 put 操作流程 HashMap 的线程安全问题
一、HashMap 核心原理 HashMap 是 Java 中最常用的哈希表实现,基于 数组 链表/红黑树 的复合结构,核心特性如下: 哈希函数 键的哈希值通过 hashCode() 计算,并通过扰动函数优化分布:static final int hash(Object ke…...
服务治理-服务发现和负载均衡
第一步:引入依赖 第二步:配置地址 改写购物车服务的代码 负载均衡成功实现。 假如有一个服务挂了,比如说8081,cart-service能不能正常访问,感知到。 再重新启动8081端口。 不管服务宕机也好,还是服务刚启动…...