云计算-特殊机制(Specialsed Mechanisms)

自动扩展监听器 (Automated Scaling Listener)

        自动扩展监听器是一种特定类型的服务代理。它运行在云提供商的网络中,监控云消费者和云服务之间的网络流量。通过分析消费者和服务之间的消息量和类型,它可以测量云服务的负载。

                自动扩展监听器对变化的负载有两种一般响应:

  1. 自动调整资源(缩小或扩大)以满足负载。扩展的参数通常是预定义的,并依赖于客户的约定定价模型。
  2. 通知客户,例如通过客户的远程控制台。客户随后做出资源分配决策。

记住,我们可以考虑两种类型的扩展,通过移动资源到更高或更低容量的设备进行垂直扩展,或通过添加或删除相同的IT服务进行水平扩展。

活动10

        自动扩展监听器根据收集的信息进行扩展和收缩。

        它多长时间扩展一次资源? 自动扩展监听器通常根据实时监控的数据来决定是否扩展资源。这意味着扩展的频率取决于监控到的负载变化情况。具体的时间间隔可能会根据配置和服务需求而有所不同,一些系统可能是每几分钟检查一次,而其他系统可能会更加频繁或不那么频繁。

        它是如何做到的? 自动扩展监听器通过分析消费者与云服务之间的网络流量,确定当前的负载情况。根据预先设定的扩展策略和参数,它可以自动触发扩展或收缩操作。这些操作可以包括增加或减少虚拟机实例的数量,调整资源的分配,如CPU、内存或存储等。

        扩展和收缩是否有极限? 是的,扩展和收缩通常都有一定的限制。这些限制可能包括:

  1. 硬件资源限制:物理服务器的容量是有限的,不能无限扩展。
  2. 预定义的配置参数:根据客户的定价模型和合同约定,扩展和收缩的范围会受到限制。
  3. 服务质量要求:为了保持服务质量,可能会设定一个最小和最大的资源限制,以避免过度扩展或过度收缩影响服务稳定性。

负载均衡器 (Load Balancer)

        负载均衡器是一种有助于水平扩展(横向扩展)的机制。如前所述,物理设备的扩展容量存在物理限制。一旦达到这个限制,我们只能通过添加更多的物理设备来扩展(水平扩展)。负载均衡器拦截服务流量,并根据预定策略将请求分配给多个相同的服务,并根据流量调整响应服务的数量。

        重定向请求到可用服务的策略有几种:

  1. 非对称策略——请求被分配给最有能力处理它的服务。这可能基于服务当前处理能力的反馈,或者不同服务的处理能力不同,导致请求可以定向。
  2. 优先级策略——不同请求可能有不同的优先级,因此可以根据请求的优先级做出重定向决策。
  3. 内容感知策略——负载均衡器检查请求类型,并将其重定向到适当的服务。

        负载均衡器可以在多种设备中实现。网络交换机可以配置为平衡负载。还有专门用于负载均衡的硬件设备和安装在普通操作系统(如Unix)中的专用软件负载均衡器。最后,还有专门为云提供商设计的服务代理,这些代理接口到云管理软件,允许动态重新配置云服务流量。

        负载均衡器的重要特征之一是对云服务用户是不可见的。这意味着云消费者不会意识到有多个服务在响应他们的请求。这也意味着数据同步会被彻底考虑。从用户的角度来看,无论哪个服务响应,数据都必须保持一致。

活动11

        服务如何能够通知负载均衡器其当前负载状态? 服务可以通过以下几种方式通知负载均衡器其当前负载状态:

  1. 健康检查:负载均衡器定期对服务进行健康检查,获取服务的当前负载和运行状态。这些检查可以包括HTTP请求、TCP连接或其他协议。
  2. 负载报告:服务可以主动发送负载报告给负载均衡器,报告当前的CPU使用率、内存使用率、请求数等关键指标。
  3. 反馈机制:服务可以通过反馈机制向负载均衡器发送当前的处理能力和负载信息。例如,服务在响应负载均衡器的请求时附加负载信息。
  4. API接口:负载均衡器提供API接口,服务可以通过调用这些API接口报告其负载状态。

        在案例研究中,负载均衡器如何确定将传入请求发送到哪个服务? 在案例研究中,负载均衡器可以通过以下几种策略来确定将传入请求发送到哪个服务:

  1. 非对称策略(Asymmetric):负载均衡器根据服务当前的处理能力分配请求。它可能基于服务反馈的当前处理能力信息,将请求发送给最有能力处理该请求的服务。
  2. 优先级策略(Priorities):负载均衡器根据请求的优先级来分配请求。优先级较高的请求可能会被分配给响应速度较快或处理能力较强的服务。
  3. 内容感知策略(Content-aware):负载均衡器检查请求的类型,并将其重定向到适当的服务。比如,根据请求的内容类型,将视频请求分配给专门处理视频的服务。
  4. 轮询策略(Round-robin):负载均衡器以轮询的方式将请求依次分配给各个服务,确保负载均匀分布。

        通过以上这些策略,负载均衡器能够智能地分配请求,优化服务性能并确保高可用性。

SLA监控器 (SLA Monitor)

        SLA监控器顾名思义是用于监控云服务性能以确保其满足客户的SLA要求。SLA监控器向SLA管理系统报告统计数据(在前一主题中讨论过)。它们还可以动态接口到资源管理系统(在前一主题中讨论过),以调整当前的云配置。

        对于SLA的监控,可以考虑两种类型:

  1. 运行系统的服务级别。这包括响应时间和吞吐量的数据。这可以通过作为监控代理来实现,查看用户和服务之间的流量而不改变它。
  2. 正常运行时间。这包括系统是否可用的数据。这可以通过轮询数据来实现。
活动12

        阅读文章(https://obkio.com/blog/sla-monitoring-and-reporting/),然后回答以下问题:

        在SLA中考虑哪些因素?
        可用性:服务的正常运行时间和停机时间,即服务在多大程度上可以被客户访问。
        性能:包括响应时间、处理速度和吞吐量等服务质量指标。
        可靠性:服务的稳定性和错误率,以及在出现问题时的恢复能力。
        支持和维护:包括技术支持的响应时间、解决问题的时间,以及维护窗口和计划停机时间。
        安全性:服务的安全措施,包括数据保护、访问控制和合规性要求。
        计费和费用:明确服务费用、计费模式和任何可能的额外费用。
        服务范围:定义服务的具体功能和能力,明确服务的边界。
        可扩展性:服务在需求变化时能够扩展或收缩的能力。
        数据管理:包括数据备份、恢复和数据存储的位置等方面。
        监控和报告:服务提供商如何监控服务并向客户报告服务状态和性能。
        SLA的好处
        明确期望:SLA明确了服务提供商和客户之间的期望,减少了误解和冲突。
        质量保证:通过定义服务标准和性能指标,确保服务质量。
        问题解决:SLA包含问题处理和解决的时间框架,确保问题得到及时处理。
        成本管理:明确的计费模式和费用结构帮助客户更好地管理成本。
        客户满意度:通过提供一致和可靠的服务,提高客户满意度和信任度。
        风险管理:通过定义服务的可靠性和安全性措施,降低运营风险。
        合规性:确保服务符合相关法律和行业标准,保护客户和服务提供商的权益。
        持续改进:通过监控和报告服务绩效,服务提供商可以识别改进机会,提升服务质量。
        竞争优势:提供高质量的SLA可以成为服务提供商的竞争优势,吸引更多客户。
        契约保障:作为合同的一部分,SLA为客户提供法律保障,确保服务提供商履行承诺。

按使用付费监控器 (Pay-Per-Use Monitor)

        按使用付费监控器对云提供商至关重要,以便向客户收费。按使用付费监控器收集与客户财务合同直接相关的统计数据。这意味着如果提供商改变定价安排,按使用付费监控器必须进行修改或配置,以保存正确的信息。

        有多种方式来定价云服务:

  1. 请求和后续响应消息的数量,
  2. 数据量(消息大小),
  3. 带宽消耗(例如,每天的兆字节),
  4. IT资源消耗,例如占用的存储空间。

        按使用付费监控器收集的信息被保存到日志文件中,并由计费管理系统处理(见前一主题)。

活动13

        阅读这些文章(CloudWatch usage metrics - Amazon CloudWatch, https://www.togai.com/blog/pay-per-usage-and-benefits/),然后回答以下问题:

        什么是 "CallCount",它与云计算支付和成本系统有什么关系?

        "CallCount" 是指在一定时间段内发出的请求数量。在云计算中,"CallCount" 通常用来衡量和记录用户对某一特定服务或API的调用次数。这一指标在云计算支付和成本系统中具有重要作用,因为它可以直接反映出服务的使用频率和负载情况。

        在基于 "CallCount" 的计费模型中,云服务提供商会根据客户发送的请求次数进行计费。这种计费方式的优点是透明且容易理解,客户可以清楚地知道自己使用了多少次服务,每次调用的成本是多少。这种方式特别适用于以下情况:

  • 服务调用频率较高且难以预估。
  • 需要按需扩展和缩减资源。
  • 需要根据实际使用量进行精确计费,避免资源浪费。
        如果你拥有一家软件公司并正在寻找租赁云平台供你的开发人员使用,PAYG(按使用付费)是否是合适的定价模型,为什么?

        PAYG(按使用付费) 是一种按实际使用量进行计费的定价模型。对于一家软件公司来说,使用PAYG模型租赁云平台具有以下优点:

  1. 成本控制:按使用付费意味着公司只需为实际使用的资源付费,这可以避免不必要的资源浪费和高昂的固定成本。
  2. 灵活性:PAYG模型提供了极大的灵活性,能够根据需求动态调整资源分配。这对于开发和测试阶段的资源需求波动特别有利。
  3. 可扩展性:随着项目的进展和用户需求的变化,公司可以方便地扩展或缩减资源,而无需提前购买或租赁大量的硬件设备。
  4. 预算管理:PAYG模型使公司能够更好地预测和管理IT预算,因为成本是基于实际使用量计算的,透明且可预测。
  5. 初期投资低:对于初创公司或小型企业,PAYG模型无需大量前期投资,可以降低进入门槛,快速启动项目。

        综上所述,如果你的软件公司需要灵活、可扩展的云服务,同时希望严格控制成本和预算,那么PAYG模型是一个非常合适的定价模型。它不仅能够提供按需扩展的能力,还能确保你只为实际使用的资源付费,从而优化成本效益。

审计监控器 (Audit Monitor)

        审计监控器是一种收集合同或政府法规所需信息的代理。此类信息可能因合同和客户及提供商的各种监管环境而异。

        例如,某些部署到云提供商虚拟机的软件可能有许可限制。例如,云用户可能只被授权将软件提供给澳大利亚用户。审计监控器可以配置为记录传入的IP地址,以便提供一份传入请求的位置报告给云用户。

        还有关于访问健康、儿童和财务数据的法律,可能要求记录对标识数据或存储在云资源中的应用程序的访问日志。当怀疑存在违规行为时,这些日志可能需要提供给执法机构。

参考:

  1. https://cloud.google.com/monitoring/audit-logging
  2. https://cloud.google.com/logging/docs/audit
  3. Cloud Audits - AWS Audit Manager - AWS

故障转移系统 (Failover System)

        故障转移系统机制用于在不影响系统操作的情况下(通常用户不会察觉到)自动从IT资源故障中恢复。它们依赖于存在备份的重复系统,并能够检测主系统的故障,并在必要时切换到备份。这需要备份系统具有与运行系统相同的数据和软件。

        显然,故障转移系统更昂贵,因为资源在某种程度上是重复的。维护备份系统的相同状态也存在开销。这意味着故障转移系统通常应用于关键任务应用程序。能够承受偶尔延迟的系统不需要实现故障转移系统。

        教科书识别了两种类型的故障转移:

  1. 主动-主动故障转移。这是指相关的IT资源是活动的,并通过某种负载均衡机制共享负载。当其中一个资源失败时,剩余的重复资源接管负载,因为负载均衡器仅将流量定向到它们。
  2. 主动-被动故障转移。这是指一个非活动的备用系统接管失败的IT资源。这需要将所有请求重定向到备用系统。
活动14
        主动-主动故障转移和主动-被动故障转移的区别

        主动-主动故障转移: 在主动-主动故障转移(Active-Active Failover)中,所有的IT资源都是同时在线并处理请求的。负载均衡器将流量分配给多个活动节点,从而确保每个节点都在分享负载。如果一个节点发生故障,其他节点会自动接管其负载,继续提供服务。这种方式的优点是资源利用率高,故障转移无缝,用户通常不会察觉到服务中断。

        主动-被动故障转移: 在主动-被动故障转移(Active-Passive Failover)中,只有一个IT资源节点是活动的,处理所有请求,而其他节点处于待机状态,不处理请求。当活动节点发生故障时,待机节点会被激活并接管工作。这种方式的优点是实现简单,但资源利用率低,因为待机节点在正常情况下不处理任何请求。

        案例研究中的主动-被动故障转移

        当SLA监控器检测到不同数据中心之间的虚拟服务器发生故障时,以下步骤会发生:

  1. 检测故障:SLA监控器持续监控虚拟服务器的状态。当检测到某个虚拟服务器发生故障时,立即触发故障转移机制。
  2. 通知负载均衡器:SLA监控器通知负载均衡器,将流量从发生故障的虚拟服务器重定向到备用的虚拟服务器。
  3. 激活备用服务器:位于另一个数据中心的备用虚拟服务器被激活,开始接收和处理所有新的请求。
  4. 恢复服务:用户请求被无缝地转移到备用服务器,确保服务的连续性和可用性。
  5. 修复故障服务器
    • 诊断问题:技术团队或自动化系统开始诊断故障虚拟服务器的问题,找出故障原因。
    • 修复问题:根据诊断结果,修复硬件或软件问题。这可能包括更换硬件组件、修复软件错误或重新启动服务器。
    • 验证修复:修复完成后,对虚拟服务器进行全面测试,确保其恢复正常并且稳定运行。
  6. 重新加入集群:修复后的虚拟服务器重新加入到集群中,作为新的备用节点,准备在下一次故障时接管工作。

        通过这些步骤,主动-被动故障转移机制确保在一个虚拟服务器发生故障时,能够迅速恢复服务,同时保持数据完整性和系统稳定性。

管理程序 (Hypervisor)

        管理程序机制是启动虚拟服务器实例的组件,这些实例在软件上看起来像物理服务器。我们在讨论虚拟服务器(VM)时讨论了管理程序的作用。管理程序在云提供商的网络中至关重要,因为它提供了可以由其他组件管理的虚拟服务器。它为其管理的虚拟服务器提供了一个看起来像真实硬件的接口,并确保虚拟机之间不会相互干扰。

        云提供商通常有许多实际的物理服务器。这意味着VIM(虚拟基础设施管理器)管理许多运行在每个可共享物理服务器上的管理程序。VIM将虚拟服务器分配给消费者,并在必要时在管理程序之间移动虚拟服务器。当自动扩展监听器指示时,VIM还可以指示管理程序扩展或缩减虚拟服务器,以便它们可以访问更多的物理服务器资源。

资源集群 (Resource Cluster)

        资源集群是一组通常相同的IT资源,旨在使其看起来比任何单个组件更强大。资源集群需要同步和负载均衡机制,以便多个资源看起来像一个资源。资源集群通常具有更好的可用性统计数据,因为它可以实现故障转移机制来检测和恢复单个组件故障。

        资源集群的属性包括:

  1. 资源之间的高速数据连接。这可以使用高速LAN技术,但也可以是更高速度的专用集群通信,如光纤通道(FC)和其他短距离/高速通道,例如SCSI。
  2. 管理软件通常分布在集群资源之间,但也可能有单独的管理资源组件。管理软件使集群看起来像一个设备。
  3. 数据同步使用高速数据连接来维护集群资源之间的一致状态。请注意,此活动对用户是不可见的,并形成集群中的单独内部通信层。
  4. 集群的组件通常具有相同的容量,以便更容易管理集群。

        资源集群的三个示例:

  1. 服务器集群。这可以在物理或虚拟级别实现。管理程序可以配置为自动执行我们在上一节中讨论的虚拟服务器管理操作,而无需外部组件(如VIM)的参与(因为集群看起来像一个设备对VIM)。
  2. 数据库集群。数据库集群用于提高数据的可用性。数据在多个存储设备上同步。当设备故障时,它将包括一个故障转移系统,切换到运行设备上的重复数据。
  3. 大数据集集群。这是一个允许数据分布在多个设备上的数据集群,通常是由于数据量大。

        你可以将常见的RAID技术视为早期的集群技术。

       两种类型的资源集群:

  1. 负载均衡集群——工作在节点之间分配,使集群看起来比单个组件具有更高的容量。
  2. 高可用性(HA)集群——此集群维护多个相同的资源,并实现故障转移机制以从集群节点故障中恢复。这种类型的集群提供了与其每个组件类似的资源容量。

        这两种类型的集群比具有类似容量的未集群资源更昂贵。它们的优势在于不限于物理资源容量和/或为关键任务应用程序提供更高的可用性。

参考:

  1. Resource Cluster in Cloud Computing - GeeksforGeeks
  2. IBM Documentation
  3. https://outtechno.com/resource-cluster-cloud-computing/
活动15
        管理程序集群技术与云提供商的VIM(虚拟基础设施管理器)之间的关系

        管理程序(Hypervisor)负责创建和运行虚拟机(VM),它在物理服务器上提供了一个虚拟化层,使多个虚拟机可以共享同一个物理硬件资源。管理程序集群技术涉及多个管理程序的协调工作,使虚拟机可以在集群中的不同物理服务器之间迁移和扩展,从而提高资源利用率和系统的可用性。

        **虚拟基础设施管理器(VIM)**是云提供商用来管理整个虚拟化环境的工具。它与管理程序集群技术紧密相关,主要负责以下几个方面:

  1. 资源分配:VIM负责在不同的管理程序之间分配虚拟机资源,确保每个虚拟机都能获得所需的计算、存储和网络资源。
  2. 监控与管理:VIM监控管理程序集群的健康状态和性能,能够实时检测和处理故障,确保集群的高可用性。
  3. 自动扩展:VIM可以根据负载情况自动指示管理程序扩展或缩减虚拟机实例,实现资源的动态调整。
  4. 负载均衡:VIM通过在集群中的多个管理程序之间平衡负载,优化资源使用并提高系统性能。
  5. 迁移管理:VIM支持虚拟机的实时迁移(如vMotion),使虚拟机可以在不同的物理服务器之间无缝移动,维护系统的连续性和可靠性。

        简而言之,管理程序集群技术为虚拟化提供了基础设施,而VIM则通过集中管理和协调这些管理程序,实现云环境的高效运作。

        数据库集群和大数据集集群之间的区别

        数据库集群大数据集集群是两种不同类型的集群,尽管它们都有助于提高数据处理和存储的能力,但它们的设计目标和实现方式有所不同。

        数据库集群

  1. 目的:主要用于提高数据库系统的可用性、性能和可靠性。它通过将数据复制到多个数据库实例中,实现负载均衡和故障转移。
  2. 数据同步:数据库集群要求高精度的数据同步,确保所有数据库实例中的数据保持一致。这通常通过实时复制(如主从复制、双活复制)实现。
  3. 故障转移:在一个数据库实例发生故障时,集群中的其他实例可以立即接管,保证服务的连续性。
  4. 应用场景:适用于需要高可用性和高一致性的事务处理系统,如金融交易系统、在线业务系统等。

        大数据集集群

  1. 目的:主要用于处理和存储大规模数据集,适用于大数据分析和处理任务。它通过将数据分布在多个节点上,提高数据处理能力和存储容量。
  2. 数据分布:大数据集集群通过将大数据集切分成小块,并分布在不同的节点上来实现并行处理。这种方式不需要严格的数据同步,而是关注数据的分布和并行计算。
  3. 容错性:大数据集集群通常实现数据冗余和容错能力,即使某个节点失败,数据也不会丢失,集群可以继续运行。
  4. 应用场景:适用于大规模数据分析、机器学习、数据挖掘等任务,如Hadoop集群、Spark集群等。

        总结来说,数据库集群注重数据的一致性和高可用性,适用于需要频繁事务处理的应用;而大数据集集群则注重数据的分布式处理和存储,适用于大规模数据分析和处理的应用。

多设备代理 (Multi-Device Broker)

        多设备代理位于云服务和其用户之间。它将云服务的响应转换为与用户使用的设备兼容的格式。这对于具有不同设备或不同操作系统的用户访问服务是必要的,例如Windows 10、Windows 7、MacOS、Android、iOS等。对于在浏览器中运行的应用程序,它可能还需要对不同的浏览器提供不同的响应,例如Chrome、Safari、Internet Explorer、Firefox等。还可能需要在更高级别上转换响应。

        多设备代理通常实现为独立的网关或并入网关组件。教科书中有三个示例:

  1. XML网关——验证XML数据
  2. 云存储网关——将云存储API(例如REST或SOAP)转换为块存储协议(例如光纤通道、NFS、SMB)。
  3. 移动设备网关——将移动设备协议转换为与云服务兼容的协议。

        这些网关可以在任何协议级别上操作。

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

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

相关文章

常见 JVM 面试题补充

原文地址 : 26 福利:常见 JVM 面试题补充 (lianglianglee.com) CMS 是老年代垃圾回收器? 初步印象是,但实际上不是。根据 CMS 的各个收集过程,它其实是一个涉及年轻代和老年代的综合性垃圾回收器。在很多文章和书籍的划分中&…

SpringCloud Alibaba的相关组件的简介及其使用

Spring Cloud Alibaba是阿里巴巴为开发者提供的一套微服务解决方案,它基于Spring Cloud项目,提供了一系列功能强大的组件,包括服务注册与发现、配置中心、熔断与限流、消息队列等。 本文将对Spring Cloud Alibaba的相关组件进行简介&#xff…

React Native 之 动画Animated(十二)

react-native 的 Animated API提供了一种声明式的方式来创建平滑的动画效果。它允许你编写动画逻辑,并将动画值直接绑定到组件的样式或布局属性上。 react-native 的 Animated 库通过以下方式工作: 创建动画值:首先,你需要使用 A…

ROCm上运行预训练BERT

14.10. 预训练BERT — 动手学深度学习 2.0.0 documentation (d2l.ai) 下载数据集 在d2l-zh/pytorch/data目录解压: ~/d2l-zh/pytorch/data$ unzip wikitext-2-v1.zip Archive: wikitext-2-v1.zipcreating: wikitext-2/inflating: wikitext-2/wiki.test.tokens …

【第17章】MyBatis-Spring之注入映射器

文章目录 前言一、注册映射器1. XML 配置2. Java 配置 二、发现映射器1. <mybatis:scan/>2.MapperScan ( 建议 ) \color{#00FF00}{(建议)} (建议) 三、MapperScannerConfigurer总结 前言 与其在数据访问对象&#xff08;DAO&#xff09;中手工编写使用 SqlSessionDaoSu…

数据库--数据库基础(一)

目录 第一章 绪论 一.数据库的基本概念 1. 数据库的4个基本概念 2、数据库系统的特点 二.数据库和文件 三.数据模型 1.概念模型 2.逻辑模型(物理模型) 2.1关系模型 四.数据库系统的三级模式结构&#xff1a; 五数据库的二级映像功能与数据独立性 第二章 关系数据库…

WEBPACK开发|生产环境配置(抽离公共部分)

这是webpack4演示&#xff0c;webpack5有些插件不在推荐&#xff0c; 1. webpack.base.config.js文件的配置说明 const path require(path); const webpack require(webpack); const ExtractTextPlugin require(extract-text-webpack-plugin); // 该插件的主要是为了抽离c…

【LeetCode面试经典150题】100. 相同的树

一、题目 100. 相同的树 - 力扣&#xff08;LeetCode&#xff09; 给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 二、思路 二叉树的题&#…

C++的lambda函数、bind函数、类函数绑定参数,学习测试用例

在C中&#xff0c;Lambda函数、std::bind 和类函数绑定参数提供了灵活的方式来处理函数调用。 Lambda函数是一种匿名函数&#xff0c;可以捕获外部变量并在函数体内使用。它们提供了简洁而强大的方式来定义内联函数。std::bind 用于创建一个新的函数对象&#xff0c;其中部分参…

2024电工杯数学建模B题高质量成品论文,包括代码数据

2024电工杯数学建模B题高质量成品论文&#xff0c;包括代码数据 完整内容见文末名片 摘要 大学时期是学生们知识学习和身体成长的重要阶段&#xff0c;良好的饮食习惯对于促进生长发育和保证身体健康具有重要意义。针对当前大学生中存在的饮食结构不合理及不良饮食习惯的问题…

为了性能,放弃tft_eSPI,选择arduino_gfx吧

本来对于tft_espi和arduino_gfx没啥特别的感觉&#xff0c;都是tft屏幕驱动,arduino_gfx的好处就是除了支持tft外还支持一些oled屏幕。 谁知道在探寻我那个在单片机项目上显示中文方案 https://github.com/StarCompute/tftziku 时候&#xff0c;寻求极致性能测了一些东西。 t…

23种设计模式之一————工厂模式详细讲解

工厂模式介绍 定义分类工厂模式核心角色&#xff1a;简单工厂模式定义特点优点缺点应用场景代码实现 工厂方法模式&#xff08;别名&#xff1a;虚拟构造&#xff09;定义特点优点缺点应用场景代码实现 抽象工厂模式定义特点优点缺点应用场景代码实现工厂模式小结 定义 工厂模…

算法之背包问题

可分的背包问题是可以用贪心法来解决&#xff0c;而0-1背包问题通常使用动态规划方法来解决。 可分背包问题&#xff1a; 在可分背包问题中&#xff0c;物品可以被分割&#xff0c;您可以取走物品的一部分以适应背包的容量。这里的关键是物品的价值密度&#xff0c;即单…

最小产品价格差值

题目描述 给定某产品多少天的价格&#xff0c;记录于prices中&#xff0c;请找出任意两天之间的最小价格差&#xff08;即abs(prices[i] - prices[j])&#xff09;的最小值&#xff0c;i!j&#xff09;并计算最小介个差组合的个数 样例1 输入 [1,3,7,5,12] 输出 3 样例2…

VTK9.2.0+QT5.14.0绘制三维显示背景

背景 上一篇绘制点云的博文中&#xff0c;使用的vtkCameraOrientationWidget来绘制的坐标轴&#xff0c;最近又学习到两种新的坐标轴绘制形式。 vtkOrientationMarkerWidget vtkAxesActor 单独使用vtkAxesActor能够绘制出坐标轴&#xff0c;但是会随着鼠标操作旋转和平移时…

微服务中使用Maven BOM来管理你的版本依赖

摘要: 原创出处 sf.gg/a/1190000021198564 「飘渺Jam」欢迎转载&#xff0c;保留摘要&#xff0c;谢谢&#xff01; 为什么要使用BOM? 如何定义BOM? 项目使用方法? BOM&#xff08;Bill of Materials&#xff09;是由Maven提供的功能,它通过定义一整套相互兼容的jar包版…

通过 NIO + 多线程 提升硬件设备与系统的数据传输性能

一、项目展示 下图&#xff08;模拟的数据可视化大屏&#xff09;中数据是动态显示的 二、项目简介 描述&#xff1a;使用Client模拟了硬件设备&#xff0c;比如可燃气体浓度检测器。Client通过Socket与Server建立连接&#xff0c;Server保存数据到txt文件&#xff0c;并使用W…

结构体(位段)内存分配

结构体由多个数据类型的成员组成。那编译器分配的内存是不是所有成员的字节数总和呢&#xff1f; 首先&#xff0c;stu的内存大小并不为29个字节&#xff0c;即证明结构体内存不是所有成员的字节数和。   其次&#xff0c;stu成员中sex的内存位置不在21&#xff0c;即可推测…

Swift 请求用户授权以跟踪其跨应用或网站的活动

步骤1:导入框架 首先,需要在Swift文件中导入AppTrackingTransparency框架。 import AppTrackingTransparency import AdSupport步骤2:请求跟踪许可 在适当的地方请求用户的跟踪许可。通常,这个请求会在应用启动时或者在用户执行某些操作(例如,访问应用中的广告相关功能…

Linux服务器安装docker,基于Linux(openEuler、CentOS8)

本实验环境为openEuler系统(以server方式安装)&#xff08;CentOS8基本一致&#xff0c;可参考本文) 目录 知识点实验 知识点 Docker 是一个开源的应用容器引擎。它允许开发者将应用及其所有依赖项打包到一个可移植的容器中&#xff0c;并发布到任何支持Docker的流行Linux或Wi…