万字长文深入浅出负载均衡器

前言

本篇博客主要分享Load Balancing(负载均衡),将从以下方面循序渐进地全面展开阐述:

  • 介绍什么是负载均衡
  • 介绍常见的负载均衡算法

负载均衡简介

初识负载均衡

负载均衡是系统设计中的一个关键组成部分,它有助于将传入的请求和流量均匀分布到多个服务器上。负载均衡的主要目标是通过避免单个服务器过载和减少停机时间来确保高可用性、可靠性和性能。

通常,负载均衡器位于客户端和服务器之间,接收传入的网络和应用程序流量,并使用各种算法将流量分布到多个后端服务器上。通过将应用程序请求分散到多个服务器上,负载均衡器减轻了单个服务器的负载,并防止任何一个服务器成为单点故障,从而提高了整体应用程序的可用性和响应速度。

image-20250201112433805

为了充分利用可扩展性和冗余性,我们可以尝试在系统的每一层进行负载均衡。我们可以在三个地方添加负载均衡器(LB):

image-20250201112942381

  1. 在用户和Web服务器之间:这有助于在多个Web服务器之间分配用户请求,以防单个服务器过载并提高网站的响应速度和可用性。
  2. 在Web服务器和内部平台层之间:如应用服务器或缓存服务器。这一层的负载均衡可以进一步提高处理效率,优化资源的使用,并确保应用层的稳定性和效率。
  3. 在内部平台层和数据库之间:通过在多个数据库或数据库服务器之间分配请求,可以提高数据库查询的效率和速度,同时也增强数据存储的可靠性。

通过在这些关键点设置负载均衡,系统可以在多个层面上实现高效运行,避免任何单一组件的故障影响整个系统的稳定性和性能。

关键术语和概念

下面是一些关键术语和概念:

  • 负载均衡器:一种设备或软件,根据预定义的规则或算法将网络流量分配到多个服务器上。

  • 后端服务器:接收并处理由负载均衡器转发的请求的服务器。也被称为服务器池或服务器群。

  • 负载均衡算法:负载均衡器用来决定如何在后端服务器之间分配进来的流量的方法。

  • 健康检查:负载均衡器执行的定期测试,用以确定后端服务器的可用性和性能。不健康的服务器会被从服务器池中移除,直到它们恢复正常。

  • 会话持久性:一种技术,用来确保来自同一客户端的后续请求被引导到同一后端服务器,维护会话状态并提供一致的用户体验。

  • SSL/TLS终止:在负载均衡器层级对SSL/TLS加密流量进行解密的过程,从后端服务器上卸载解密负担,并允许集中管理SSL/TLS。

负载均衡器的工作流程

负载均衡器通过将传入的网络流量分配到多个服务器或资源上来工作,以确保计算资源的高效利用并防止过载。以下是负载均衡器分配流量的一般步骤:

  1. 接收请求:负载均衡器从客户端或用户那里接收到一个请求。
  2. 评估请求:负载均衡器评估传入的请求,并根据预定义的负载均衡算法确定哪个服务器或资源应处理该请求。这一算法会考虑服务器容量、服务器响应时间、活跃连接数和地理位置等因素。
  3. 转发流量:负载均衡器将传入的流量转发给选定的服务器或资源。
  4. 处理请求:服务器或资源处理请求并将响应发送回负载均衡器。
  5. 发送响应:负载均衡器接收来自服务器或资源的响应,并将其发送给发起请求的客户端或用户。

通过这些步骤,负载均衡器能够有效管理网络流量,提高资源利用率,增强应用的可用性和性能。

负载均衡算法

负载均衡算法是负载均衡器用来将传入流量和请求分配到多个服务器或资源上的方法。负载均衡算法的主要目的是确保有效利用可用资源,提高整体系统性能,并维持高可用性和可靠性。

负载均衡算法有助于防止任何单一服务器或资源过载,这可能导致性能下降或失败。通过分散工作负载,负载均衡算法可以优化响应时间,最大化吞吐量,并提升用户体验。这些算法可以考虑服务器容量、活动连接数、响应时间和服务器健康状况等因素,以做出关于如何最佳分配传入请求的明智决策。

下面将依次介绍一些最著名的负载均衡算法:

  • Round Robin(轮询法)
  • Least Connections(最少连接数法)
  • Weighted Round Robin(加权轮询)
  • Weighted Least Connections(加权最少连接数法)
  • IP Hash(IP哈希法)
  • Least Response Time(最短响应时间法)
  • Random(随机法)
  • Least Bandwidth(最小带宽法)
  • Custom Load(自定义负载均衡算法)

1. Round Robin

轮询法(Round Robin)它以周期性顺序将传入的请求分发到服务器。该算法先将请求分配给第一个服务器,然后依次转移到第二个、第三个等服务器,当到达列表末尾后,再次从第一个服务器开始分配。

优点:

  • 平等分配请求:确保请求在服务器之间平均分配,因为每个服务器按固定顺序轮流处理请求。

  • 易于实现和理解:这种方法结构简单,容易编程实现。

  • 适用于服务器能力相近:当所有服务器的处理能力相近时,这种方法工作得很好。

缺点:

  • 无负载意识:不考虑每个服务器当前的负载或容量。无论其当前状态如何,所有服务器都被平等对待。

  • 无会话亲和性:来自同一客户端的后续请求可能被引导到不同的服务器,这对于需要状态维持的应用程序可能造成问题。

  • 不同容量的性能问题:当服务器容量或工作负载有差异时,可能无法达到最佳性能。

  • 可预测的分配模式:轮询法在请求分配模式上是可预测的,这可能被攻击者利用,他们可以观察流量模式并可能通过预测哪个服务器将处理他们的请求来找到特定服务器的漏洞。

适用场景:

  • 同质环境:适用于所有服务器具有相似容量和性能的环境。在这种环境下,每台服务器都具备相似的处理能力,因此使用轮询法分配请求可以保证比较公平和均匀的负载分配。

  • 无状态应用:适用于无状态的应用程序,这类应用程序的每个请求都可以独立处理,不需要维持客户端的会话状态。由于轮询法不保持会话亲和性,即后续请求可能被发送到不同的服务器,所以它特别适合于无状态的场景,其中每个请求都是自包含的,不依赖于之前的任何请求状态。

在这里插入图片描述

2. Least Connections

最少连接数算法(Least Connections),这是一种动态负载均衡技术,它将传入请求分配给当前活跃连接数最少的服务器。该方法确保了服务器之间负载分配更加均衡,尤其是在流量模式不可预测且请求处理时间不同的环境中。

优点:

  • 负载意识:通过考虑每个服务器的活跃连接数,考虑到每台服务器当前的负载,从而更好地利用服务器资源。
  • 动态分配:适应不断变化的流量模式和服务器负载,确保没有单个服务器成为瓶颈。
  • 异质环境中的效率:在服务器容量和工作负载不同的情况下表现良好,因为它能动态地将请求分配给较不繁忙的服务器。

缺点:

  • 更高的复杂性:与简单的算法(如轮询法)相比,实现起来更复杂,因为它需要实时监控活动连接。
  • 状态维护:负载均衡器需要维持活动连接的状态,这可能增加开销。
  • 连接峰值潜在问题:在连接持续时间短的情况下,服务器可能会经历迅速的连接数量增加,导致需要频繁重新平衡。

适用场景:

  • 异质环境:适合于服务器容量和工作负载不同的环境,需要动态地分配负载。

  • 变化多端的流量模式:适合于流量模式不可预测或高度变化的应用程序,确保没有单个服务器被压垮。

  • 有状态应用:对于需要维护会话状态的应用程序来说,这种技术非常有效,因为它有助于更均匀地分配活动会话。

Comparison to Round Robin

轮询法(Round Robin)和最少连接数算法(Least Connections)的区别:

  • 轮询法:按固定的循环顺序分配请求,不考虑每个服务器当前的负载。这意味着每个服务器轮流接收一个请求,不管它的当前工作量如何。这种方法简单、易于实现,但可能不适合服务器性能差异大的环境,或者在处理负载较重的应用时可能导致某些服务器过载。

  • 最少连接数算法:根据当前的负载分配请求,将新请求指向活跃连接数最少的服务器。这种方法考虑了各服务器的实时负载情况,通过将请求导向负载较轻的服务器,帮助平衡服务器间的工作量,提高资源的整体利用率。这种算法尤其适合于服务器性能不均或流量波动大的环境。

在这里插入图片描述

3. Weighted Round Robin

加权轮询法(Weighted Round Robin, WRR)是轮询法的增强版本。它根据每个服务器的容量或性能分配权重,并按照这些权重比例分配传入请求。这样可以确保性能更强的服务器处理更大份额的负载,而性能较弱的服务器处理较小份额的负载。

优点:

  • 根据容量分配负载:容量更大的服务器处理更多请求,从而更好地利用资源。
  • 灵活性:可以轻松调整以适应服务器容量的变化或新服务器的添加。
  • 提升性能:通过防止性能较弱的服务器过载,帮助优化整体系统性能。

缺点:

  • 权重分配的复杂性:为每个服务器确定适当的权重可能具有挑战性,需要准确的性能指标。
  • 增加的开销:管理和更新权重可能引入额外的开销,尤其是在服务器性能波动的动态环境中。
  • 对高度变化的负载不理想:在负载模式高度变化的环境中,加权轮询法可能无法始终提供最优的负载均衡,因为它不考虑实时服务器负载。

适用场景:

  • 异质服务器环境:非常适合服务器处理能力不同的环境,确保资源的有效使用。
  • 可扩展的网络应用:适用于不同服务器可能具有不同性能特征的网络应用。
  • 数据库集群:在一些节点具有更高处理能力并能处理更多查询的数据库集群中非常有用。

在这里插入图片描述

4. Weighted Least Connections

加权最少连接数算法是一种高级的负载均衡算法,结合了最少连接数算法和加权轮询法的原则。它考虑了每个服务器上的当前负载(活跃连接数)以及每个服务器的相对容量(权重)。这种方法确保性能更强的服务器处理比例更大的负载,同时也能动态调整以适应每个服务器的实时负载。

优点:

  • 动态负载均衡:根据每个服务器的实时负载调整,确保请求分配更均衡。
  • 容量意识:考虑到每个服务器的相对容量,从而更好地利用资源。
  • 灵活性:能有效处理服务器异质性和负载模式变化的环境。

缺点:

  • 复杂性:相比如轮询法和最少连接数算法等简单算法,实现更复杂。
  • 状态维护:负载均衡器需要跟踪活动连接和服务器权重,这增加了开销。
  • 权重分配:为每个服务器确定适当的权重可能具有挑战性,需要准确的性能指标。

适用场景:

  • 异质服务器环境:非常适合服务器处理能力和工作负载不同的环境。
  • 高流量网络应用:适用于流量模式变化的网络应用,确保没有单一服务器成为瓶颈。
  • 数据库集群:在节点性能能力和查询负载各不相同的数据库集群中非常有用。

在这里插入图片描述

5. IP Hash

IP 哈希负载均衡是一种根据客户端的 IP 地址将客户请求分配给服务器的技术。负载均衡器使用哈希函数将客户端的 IP 地址转换成哈希值,然后用这个哈希值来确定哪个服务器应该处理请求。这种方法确保来自同一客户端 IP 地址的请求始终被路由到同一台服务器,从而提供会话持久性。

示例:

假设有三台服务器(服务器 A、服务器 B 和服务器 C)以及一个客户端 IP 地址为 192.168.1.10。负载均衡器对这个 IP 地址应用哈希函数,得到一个哈希值。如果哈希值为 2,并且有三个服务器,负载均衡器会将请求路由到服务器 C(2 % 3 = 2)。

优点:

  • 会话持久性:确保来自同一客户端 IP 地址的请求始终被路由到同一服务器,这对于需要状态维护的应用程序非常有益。
  • 简单性:易于实现,不需要负载均衡器维护连接状态。
  • 确定性:基于客户端 IP 地址的可预测和一致的路由。

缺点:

  • 分配不均:如果客户端 IP 地址分布不均,某些服务器可能会接收到比其他服务器更多的请求,导致负载不均。
  • 动态变化:增加或移除服务器可能会打乱哈希映射,导致某些客户被路由到不同的服务器。
  • 灵活性有限:不考虑服务器的当前负载或容量,可能导致效率低下。

适用场景:

  • 有状态应用:适合需要维护会话持久性的应用,如在线购物车或用户会话。
  • 地理分布的客户端:当客户分布在不同地区并且需要一致的路由时,此方法非常有用。

在这里插入图片描述

6. Least Response Time

最小响应时间负载均衡是一种动态算法,它将传入请求分配给响应时间最短的服务器,从而确保服务器资源的有效利用和优化客户体验。这种方法旨在将流量引导至基于最近性能指标能最快处理请求的服务器。

最小响应时间负载均衡的工作原理:

  1. 监控响应时间:负载均衡器持续监控每个服务器的响应时间。响应时间通常从请求发送到服务器到收到响应的时间计算。
  2. 分配请求:当新请求到达时,负载均衡器将其分配给平均响应时间最低的服务器。
  3. 动态调整:负载均衡器根据实时性能数据动态调整请求的分配,确保最快的服务器处理下一个请求。

优点:

  • 优化性能:确保请求由最快的可用服务器处理,降低延迟并改善客户体验。
  • 动态负载均衡:持续适应服务器性能的变化,确保负载的最优分配。
  • 有效资源利用:通过将流量引导至能快速响应的服务器,帮助更好地利用服务器资源。

缺点:

  • 复杂性:相比如轮询法这类简单算法,实现更复杂,因为需要持续监控服务器性能。
  • 开销:监控响应时间和动态调整负载可能引入额外的开销。
  • 短期变化性:由于网络波动或服务器的临时问题,响应时间可能在短期内变化,可能导致频繁的重新平衡。

适用场景:

  • 实时应用:非常适合需要低延迟和快速响应时间的应用,如在线游戏、视频流媒体或金融交易平台。
  • Web服务:对于需要快速响应用户请求的Web服务和API非常有用。
  • 动态环境:适合负载和服务器性能波动的环境。

在这里插入图片描述

7. Random

随机负载均衡是一种简单的算法,它随机地将传入请求分配给服务器。与遵循固定序列或使用性能指标不同,负载均衡器随机选择一个服务器来处理每个请求。在负载相对均匀且服务器容量相似的场景中,这种方法可能非常有效。

例如,如果你有三台服务器:服务器A、服务器B和服务器C。当一个新请求到达时,负载均衡器随机选择这些服务器中的一个来处理请求。如果随机性是均匀的,那么随着时间的推移,每个服务器应该接收到大致相同数量的请求。

优点:

  • 简单性:非常易于实现和理解,需要的配置很少。
  • 无需维护状态:负载均衡器不需要跟踪服务器的状态或性能,从而减少了开销。
  • 长期均匀分配:如果随机选择是均匀的,负载将在长时间内在服务器之间均匀分配。

缺点:

  • 无负载意识:不考虑服务器的当前负载或容量,如果服务器性能有差异,可能导致分配不均。
  • 可能的不平衡:短期内,随机选择可能导致请求分配不均。
  • 无会话亲和性:来自同一客户的请求可能被引导到不同的服务器,这对于需要状态维护的应用程序可能会造成问题。
  • 安全系统挑战:如果使用随机算法,由于请求分配的不可预测性,依赖于检测异常的安全系统(例如,用于缓解DDoS攻击的系统)可能会发现识别恶意模式更具挑战性,这可能会削弱对攻击模式的可见性。

适用场景:

  • 同质环境:适用于服务器容量和性能相似的环境。
  • 无状态应用:适合于每个请求都可以独立处理的无状态应用。
  • 简单部署:对于不需要其他负载均衡算法的复杂性的简单部署来说,理想的选择。

在这里插入图片描述

8. Least Bandwidth

最小带宽负载均衡算法根据当前的带宽使用情况分配传入请求。它将每个新请求路由到此时正在使用最少带宽的服务器。这种方法通过确保没有单个服务器因数据流量过大而负载过重,帮助更有效地平衡网络负载。

优点:

  • 动态负载均衡:持续调整以适应当前的网络负载,确保流量的最佳分配。
  • 防止过载:帮助防止任何单个服务器因数据流量过大而过载,从而提高性能和稳定性。
  • 高效资源利用:通过平衡带宽使用,确保所有服务器更有效地利用。

缺点:

  • 复杂性:与如轮询法这样的简单算法相比,实现更复杂,因为需要持续监控带宽使用。
  • 开销:监控带宽并动态调整负载可能引入额外的开销。
  • 短期变动性:带宽使用可能会在短期内波动,可能导致频繁重新平衡。

适用场景:

  • 高带宽应用:非常适合带宽使用高的应用,如视频流媒体、文件下载和大数据传输。
  • 内容分发网络(CDN):对于需要有效平衡流量以快速交付内容的CDN非常有用。
  • 实时应用:适合于需要保持低延迟的实时应用。

在这里插入图片描述

9. Custom Load

自定义负载均衡是一种灵活且高度可配置的方法,允许您根据自己的特定需求和条件定义用于跨服务器池分配传入流量的指标和规则。与使用预定义标准(如连接数或响应时间)的标准负载均衡算法不同,自定义负载均衡使您能够根据应用程序或基础设施的独特要求定制分配策略。

自定义负载均衡的工作方式:

  • 定义自定义指标:确定最能代表与您的应用相关的负载或性能特征的指标。这些指标可以包括CPU使用率、内存使用量、磁盘I/O、应用程序特定指标或几种指标的组合。
  • 实施监控:持续监控池中每个服务器上定义的指标。这可能涉及集成监控工具或自定义脚本,收集和报告必要的数据。
  • 创建负载均衡规则:建立使用监控指标来做出负载均衡决策的规则和算法。这可以是指标的简单加权和,或者是优先考虑某些指标的更复杂逻辑。
  • 动态调整:使用收集的数据和规则动态调整传入请求的分配,确保流量按照自定义负载标准进行平衡。

优点:

  • 灵活性:允许为应用的具体需求和性能特征量身定制高度定制的负载均衡策略。
  • 优化资源利用:通过考虑一套全面的指标,可以更有效地利用服务器资源。
  • 适应性:易于适应变化的条件和要求,适用于复杂和动态的环境。

缺点:

  • 复杂性:相比标准负载均衡算法,实现和配置更为复杂。
  • 监控开销:需要持续监控多个指标,可能带来额外的开销。
  • 配置错误的潜在风险:如果指标或规则定义不正确,可能导致负载均衡和性能问题。

适用场景:

  • 复杂应用:非常适合性能特性复杂且资源需求多变的应用。
  • 高度动态环境:适合工作负载和服务器性能可能迅速且不可预测地变化的环境。
  • 自定义需求:在标准负载均衡算法无法满足应用的特定需求时非常有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/11712.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT-4o和ChatGPT-4o mini的差异点

在人工智能领域,OpenAI再次引领创新潮流,近日正式发布了其最新模型——ChatGPT-4o及其经济实惠的小型版本ChatGPT-4o Mini。这两款模型虽同属于ChatGPT系列,但在性能、应用场景及成本上展现出显著的差异。本文将通过图文并茂的方式&#xff0…

双指针算法思想——OJ例题扩展算法解析思路

大家好!上一期我发布了关于双指针的OJ平台上的典型例题思路解析,基于上一期的内容,我们这一期从其中内容扩展出来相似例题进行剖析和运用,一起来试一下吧! 目录 一、 基于移动零的举一反三 题一:27. 移除…

WSL2中安装的ubuntu开启与关闭探讨

1. PC开机后,查询wsl状态 在cmd或者powersell中输入 wsl -l -vNAME STATE VERSION * Ubuntu Stopped 22. 从windows访问WSL2 wsl -l -vNAME STATE VERSION * Ubuntu Stopped 23. 在ubuntu中打开一个工作区后…

git笔记-简单入门

git笔记 git是一个分布式版本控制系统,它的优点有哪些呢?分为以下几个部分 与集中式的版本控制系统比起来,不用担心单点故障问题,只需要互相同步一下进度即可。支持离线编辑,每一个人都有一个完整的版本库。跨平台支持…

Chapter2 Amplifiers, Source followers Cascodes

Chapter2 Amplifiers, Source followers & Cascodes MOS单管根据输入输出, 可分为CS放大器, source follower和cascode 三种结构. Single-transistor amplifiers 这一章学习模拟电路基本单元-单管放大器 单管运放由Common-Source加上DC电流源组成. Avgm*Rds, gm和rds和…

LabVIEW透镜多参数自动检测系统

在现代制造业中,提升产品质量检测的自动化水平是提高生产效率和准确性的关键。本文介绍了一个基于LabVIEW的透镜多参数自动检测系统,该系统能够在单一工位上完成透镜的多项质量参数检测,并实现透镜的自动搬运与分选,极大地提升了检…

K8S集群部署--亲测好用

最近在自学K8S,花了三天最后终于成功部署一套K8S Cluster集群(masternode1node2) 在这里先分享一下具体的步骤,后续再更新其他的内容:例如部署期间遇到的问题及其解决办法。 部署步骤是英文写的,最近想练…

PHP实现混合加密方式,提高加密的安全性(代码解密)

代码1&#xff1a; <?php // 需要加密的内容 $plaintext 授权服务器拒绝连接;// 1. AES加密部分 $aesKey openssl_random_pseudo_bytes(32); // 生成256位AES密钥 $iv openssl_random_pseudo_bytes(16); // 生成128位IV// AES加密&#xff08;CBC模式&#xff09…

Linux - 进程间通信(3)

目录 3、解决遗留BUG -- 边关闭信道边回收进程 1&#xff09;解决方案 2&#xff09;两种方法相比较 4、命名管道 1&#xff09;理解命名管道 2&#xff09;创建命名管道 a. 命令行指令 b. 系统调用方法 3&#xff09;代码实现命名管道 构建类进行封装命名管道&#…

C语言 --- 分支

C语言 --- 分支 语句分支语句含义if...else语句单分支if语句语法形式 双分支 if-else 语句语法形式 悬空else含义问题描述 多分支 if-else 语句语法形式 switch...case语句含义语法形式 总结 &#x1f4bb;作者简介&#xff1a;曾与你一样迷茫&#xff0c;现以经验助你入门 C 语…

SSRF 漏洞利用 Redis 实战全解析:原理、攻击与防范

目录 前言 SSRF 漏洞深度剖析 Redis&#xff1a;强大的内存数据库 Redis 产生漏洞的原因 SSRF 漏洞利用 Redis 实战步骤 准备环境 下载安装 Redis 配置漏洞环境 启动 Redis 攻击机远程连接 Redis 利用 Redis 写 Webshell 防范措施 前言 在网络安全领域&#xff0…

Spring Boot - 数据库集成06 - 集成ElasticSearch

Spring boot 集成 ElasticSearch 文章目录 Spring boot 集成 ElasticSearch一&#xff1a;前置工作1&#xff1a;项目搭建和依赖导入2&#xff1a;客户端连接相关构建3&#xff1a;实体类相关注解配置说明 二&#xff1a;客户端client相关操作说明1&#xff1a;检索流程1.1&…

深度学习之“线性代数”

线性代数在深度学习中是解决多维数学对象计算问题的核心工具。这些数学对象包括标量、向量、矩阵和张量&#xff0c;借助它们可以高效地对数据进行操作和建模。以下将详细介绍这些数学对象及其在深度学习中的典型用途。 数学对象概述 标量 标量是最简单的数学对象&#xff0…

使用PyQt5绘制带有刻度的温度计控件

前言&#xff1a;进入学习Python开发上位机界面的第二阶段&#xff0c;学习如何开发自定义控件&#xff0c;从常用的控件入手学习&#xff0c;本期主要学习如何使用PyQt5绘制带有刻度的温度计控件。 1. 先找到一篇参考文章 参考文章&#xff1a;Qt编写自定义控件5-柱状温度计…

问deepseek,如何看待ai降低学习成本而导致软件开发岗位需求降低,和工资下降。 软件从业人员何去何从?

它给我的回答是这样的&#xff1a; 思考逻辑 嗯&#xff0c;用户问的是AI如何降低学习成本&#xff0c;进而导致软件开发岗位需求减少和工资下降&#xff0c;以及软件从业人员该怎么办。这个问题挺复杂的&#xff0c;我得先理清楚各个部分。首先&#xff0c;AI确实在改变很多行…

Error: Expected a mutable image

你的函数用了不支持的图片格式比如我的人脸检测&#xff0c;本来要RGB565我却用JPEG所以报错

海思ISP开发说明

1、概述 ISP&#xff08;Image Signal Processor&#xff09;图像信号处理器是专门用于处理图像信号的硬件或处理单元&#xff0c;广泛应用于图像传感器&#xff08;如 CMOS 或 CCD 传感器&#xff09;与显示设备之间的信号转换过程中。ISP通过一系列数字图像处理算法完成对数字…

2.攻防世界PHP2及知识点

进入题目页面如下 意思是你能访问这个网站吗&#xff1f; ctrlu、F12查看源码&#xff0c;什么都没有发现 用kali中的dirsearch扫描根目录 命令如下&#xff0c;根据题目提示以及需要查看源码&#xff0c;扫描以php、phps、html为后缀的文件 dirsearch -u http://61.147.17…

线性数据结构:单向链表

放弃眼高手低&#xff0c;你真正投入学习&#xff0c;会因为找到一个新方法产生成就感&#xff0c;学习不仅是片面的记单词、学高数......只要是提升自己的过程&#xff0c;探索到了未知&#xff0c;就是学习。 目录 一.链表的理解 二.链表的分类&#xff08;重点理解&#xf…

【AI】探索自然语言处理(NLP):从基础到前沿技术及代码实践

Hi &#xff01; 云边有个稻草人-CSDN博客 必须有为成功付出代价的决心&#xff0c;然后想办法付出这个代价。 目录 引言 1. 什么是自然语言处理&#xff08;NLP&#xff09;&#xff1f; 2. NLP的基础技术 2.1 词袋模型&#xff08;Bag-of-Words&#xff0c;BoW&#xff…