RabbitMQ 教程 | 第11章 RabbitMQ 扩展
👨🏻💻 热爱摄影的程序员
👨🏻🎨 喜欢编码的设计师
🧕🏻 擅长设计的剪辑师
🧑🏻🏫 一位高冷无情的编码爱好者
大家好,我是 DevOps 工程师
欢迎分享 / 收藏 / 赞 / 在看!
这篇 RabbitMQ 教程为学习者提供了全面的内容,从 RabbitMQ 的简介开始,涵盖了消息中间件的概念、RabbitMQ 的安装与使用,以及交换机、队列、路由键等相关概念的介绍。进一步深入,教程探讨了 AMQP 协议、客户端开发向导,以及消息的发送和消费方式。同时,学习者还可以了解消息传输保障、高级特性如死信队列、延迟队列、优先级队列、RPC 实现等。此外,教程还涵盖了 RabbitMQ 的管理、配置、运维、监控和集群管理等重要主题,帮助学习者充分掌握 RabbitMQ 的应用。整篇教程丰富内容详实,适合初学者和有经验的开发者参考学习。
全篇共 11 章,9 万余字。本文:第11章 RabbitMQ 扩展。
第11章 RabbitMQ 扩展
11.1 消息追踪
了解如何对 RabbitMQ 中的消息进行追踪和监控,以便进行可靠性检测和问题排查。
11.1.1 Firehose
Firehose 插件是 RabbitMQ 提供的一个插件,它允许将消息传递日志导出到外部系统进行分析和监控。通过 Firehose,您可以将消息传递过程中的各种事件、指标和数据导出到指定的外部系统,如 Elasticsearch、Logstash 等,以便进行实时监控、数据分析和性能优化。
使用 Firehose 插件的步骤:
- 安装 Firehose 插件: 首先需要在 RabbitMQ 服务器上安装 Firehose 插件。可以通过 RabbitMQ 的插件管理工具来安装插件,或者手动下载插件文件进行安装。
- 配置 Firehose 插件: 安装完插件后,需要对 Firehose 进行配置,以指定数据的输出目的地。通常需要配置导出数据的外部系统的连接信息,如 Elasticsearch 的地址、用户名、密码等。
- 启用 Firehose 插件: 配置完成后,需要在 RabbitMQ 中启用 Firehose 插件。通过启用插件,RabbitMQ 将会把消息传递日志数据导出到配置的外部系统。
- 监控和分析: 一旦 Firehose 插件启用成功,RabbitMQ 将开始将消息传递日志数据导出到指定的外部系统。在外部系统中,您可以使用各种监控和分析工具来实时监控消息的传递状态、性能指标等,并进行数据分析和优化。
Firehose 插件的优势:
- 实时监控: Firehose 允许实时地将消息传递日志导出到外部系统,使您能够及时监控 RabbitMQ 集群的运行状态和性能。
- 灵活性: 通过配置 Firehose 插件,您可以选择导出的日志内容和指标,以满足特定的监控和分析需求。
- 集成性: Firehose 插件支持导出数据到多种外部系统,如 Elasticsearch、Logstash 等,使其与现有的监控和分析平台无缝集成。
- 性能优化: 通过监控和分析导出的日志数据,您可以发现潜在的性能瓶颈和问题,并对 RabbitMQ 进行优化。
注意事项:
- 在配置 Firehose 插件时,需要确保外部系统的连接信息正确,以保证数据能够正确地导出到指定的目的地。
- 导出的日志数据可能会产生较大的数据量,因此需要确保外部系统的存储和性能能够满足需求。
- 在使用 Firehose 插件时,需要谨慎处理敏感信息,以确保数据的安全性。
总的来说,Firehose 插件是 RabbitMQ 提供的一个强大的工具,通过它可以将消息传递日志导出到外部系统,帮助您实时监控和分析 RabbitMQ 集群的性能,从而优化消息传递过程和提高系统的稳定性和可靠性。
11.1.2 rabbitmq_tracing 插件
rabbitmq_tracing 插件是 RabbitMQ 提供的一个插件,它允许您在 RabbitMQ 中对消息进行追踪和监控。通过 rabbitmq_tracing 插件,您可以捕获消息在 RabbitMQ 中的生命周期事件,包括消息的发布、路由、投递等过程,以及在不同组件之间的传递情况。这些追踪数据可以帮助您了解消息传递的整个流程,诊断潜在的问题,并优化系统性能。
使用 rabbitmq_tracing 插件的步骤:
- 安装 rabbitmq_tracing 插件: 首先需要在 RabbitMQ 服务器上安装 rabbitmq_tracing 插件。可以通过 RabbitMQ 的插件管理工具来安装插件,或者手动下载插件文件进行安装。
- 配置 rabbitmq_tracing 插件: 安装完插件后,您可以通过 RabbitMQ 的管理界面或命令行来配置 rabbitmq_tracing 插件。可以设置追踪规则,即指定哪些消息或者组件需要进行追踪。
- 启用 rabbitmq_tracing 插件: 配置完成后,需要在 RabbitMQ 中启用 rabbitmq_tracing 插件。通过启用插件,RabbitMQ 将会开始对指定的消息和组件进行追踪。
- 监控和分析: 一旦 rabbitmq_tracing 插件启用成功,RabbitMQ 将开始捕获指定消息的追踪数据。您可以通过 RabbitMQ 的管理界面或命令行来查看这些追踪数据,或者将数据导出到外部系统进行进一步的监控和分析。
rabbitmq_tracing 插件的优势:
- 全面追踪: rabbitmq_tracing 插件可以对消息传递的各个环节进行追踪,包括消息的发布、路由、投递等过程,帮助您全面了解消息在 RabbitMQ 中的行为。
- 细粒度控制: 您可以通过配置追踪规则,指定哪些消息或者组件需要进行追踪,使得您可以根据需求对追踪的数据进行细粒度的控制。
- 诊断问题: 通过查看追踪数据,您可以发现潜在的问题和瓶颈,帮助您更快地诊断和解决消息传递中的问题。
- 性能优化: 追踪数据可以帮助您了解系统的性能状况,从而优化消息传递过程,提高系统的吞吐量和稳定性。
注意事项:
- 在配置 rabbitmq_tracing 插件时,需要谨慎选择追踪规则,避免过多的追踪数据导致性能下降。
- 追踪数据可能会产生较大的数据量,因此需要确保外部系统的存储和性能能够满足需求。
- 在使用 rabbitmq_tracing 插件时,需要考虑数据的隐私和安全性,避免敏感信息被泄露。
总的来说,rabbitmq_tracing 插件是一个强大的工具,可以帮助您实现对消息的追踪和监控,从而更好地了解消息传递的整个过程,诊断问题,优化系统性能,提高 RabbitMQ 集群的稳定性和可靠性。
11.1.3 案例:可靠性检测
假设我们有一个使用 RabbitMQ 的分布式系统,其中包含多个服务,这些服务之间通过 RabbitMQ 进行消息通信。我们希望使用消息追踪特性来检测系统的可靠性,确保消息在系统中的传递是稳定和可靠的。
在这个案例中,我们将使用 rabbitmq_tracing 插件来追踪消息,并对消息传递过程中的一些关键事件进行监控和分析。具体步骤如下:
- 安装和配置 rabbitmq_tracing 插件: 首先,我们需要在 RabbitMQ 服务器上安装 rabbitmq_tracing 插件,并配置追踪规则。我们可以设置追踪规则,对特定的消息和组件进行追踪。
- 启用 rabbitmq_tracing 插件: 配置完成后,需要在 RabbitMQ 中启用 rabbitmq_tracing 插件,使其开始对指定的消息和组件进行追踪。
- 定义监控指标: 我们可以定义一些监控指标,用来衡量系统的可靠性。例如,可以监控消息的投递成功率、消息的投递时间、队列中消息的积压情况等。
- 收集追踪数据: 一旦 rabbitmq_tracing 插件启用成功,RabbitMQ 将开始捕获指定消息的追踪数据。我们可以定期收集这些数据,并将其存储到外部系统中,用于后续的分析和监控。
- 分析追踪数据: 收集到的追踪数据可以帮助我们了解消息传递的整个流程。我们可以通过分析追踪数据,发现潜在的问题和瓶颈,比如消息投递失败、消息堆积、消息丢失等。
- 发现并解决问题: 通过分析追踪数据,我们可以发现系统的可靠性问题,并采取相应的措施来解决这些问题。例如,可以增加消息的重试机制、增加队列的容量、优化消息的路由等。
- 持续监控: 可靠性检测是一个持续的过程,我们需要定期收集和分析追踪数据,不断优化系统,以确保系统的可靠性和稳定性。
总结:通过使用消息追踪特性,我们可以对消息在 RabbitMQ 中的传递过程进行全面的监控和分析,从而确保系统的可靠性。追踪数据可以帮助我们发现潜在的问题,并采取措施来优化系统性能和稳定性。通过持续监控和优化,我们可以不断提高系统的可靠性,确保消息在系统中的传递是稳定和可靠的。
11.2 负载均衡
了解如何在 RabbitMQ 集群中实现负载均衡,以确保集群的高可用性和稳定性。
11.2.1 客户端内部实现负载均衡
在 RabbitMQ 客户端内部实现负载均衡可以帮助分摊消息处理的压力,从而提高消息处理的效率和性能。负载均衡的目标是将消息均匀地分发给多个消费者,确保每个消费者都能处理大致相同数量的消息,从而避免出现消息处理的不均衡现象。
下面介绍如何在 RabbitMQ 客户端内部实现负载均衡:
- 创建多个消费者: 首先,我们需要创建多个消费者实例,每个消费者实例对应一个消费者。这些消费者实例可以运行在不同的线程或进程中,也可以部署在不同的服务器上。
- 使用订阅模式: 在 RabbitMQ 中,可以使用订阅模式(Subscription Model)来实现负载均衡。订阅模式中,每个消费者都会订阅一个队列,并通过消费者标签(Consumer Tag)进行标识。
- 设置消费者数量限制: 可以通过配置参数来设置每个队列允许的最大消费者数量。这样可以确保每个队列的消息能够被均匀地分发给多个消费者。
- 使用轮询算法: 在实现负载均衡时,常用的方法是使用轮询算法(Round-Robin)来决定消息分发的顺序。轮询算法简单高效,每次将消息依次分发给不同的消费者,实现了基本的负载均衡。
- 消费者优先级: 在一些特殊情况下,我们可以为消费者设置优先级,让某些消费者处理更重要的消息,从而实现更细粒度的负载均衡。
- 消息预取(Prefetch): RabbitMQ 支持预取(Prefetch)机制,可以设置每个消费者能够预取(Prefetch)的消息数量。通过合理设置预取数量,可以避免某个消费者在处理过程中堆积过多的消息,从而保持负载均衡。
总结:通过在 RabbitMQ 客户端内部创建多个消费者,并使用订阅模式和轮询算法,我们可以实现负载均衡,将消息均匀地分发给多个消费者,从而分摊消息处理的压力,提高消息处理的效率和性能。负载均衡是一个重要的技术,特别是在大规模的分布式系统中,通过合理配置和优化,可以实现高吞吐量和低延迟的消息处理。
11.2.2 使用 HAProxy 实现负载均衡
通过 HAProxy 可以实现 RabbitMQ 集群的负载均衡,将客户端的请求均匀地分发给不同的 RabbitMQ 节点,从而实现高可用和高吞吐量的消息处理。下面介绍如何通过 HAProxy 实现 RabbitMQ 集群的负载均衡:
- 安装和配置 HAProxy: 首先需要在一台服务器上安装和配置 HAProxy。可以使用适合自己操作系统的包管理工具进行安装,并修改 HAProxy 的配置文件(一般是位于 /etc/haproxy/haproxy.cfg)。
- 配置后端 RabbitMQ 节点: 在 HAProxy 的配置文件中,配置后端 RabbitMQ 节点的信息。指定每个节点的 IP 地址和端口号,以及使用的协议。可以使用 server 关键字来定义每个节点,例如:
backend rabbitmq_nodesserver node1 192.168.1.101:5672 checkserver node2 192.168.1.102:5672 checkserver node3 192.168.1.103:5672 check...
在上面的配置中,我们定义了三个后端节点,分别是 node1、node2 和 node3,它们的 IP 地址和端口号分别是 192.168.1.101:5672、192.168.1.102:5672 和 192.168.1.103:5672。check 参数表示 HAProxy 会定期检查这些节点的健康状态,确保它们正常运行。
- 配置前端监听: 在 HAProxy 的配置文件中,配置前端监听,指定客户端连接 HAProxy 的 IP 地址和端口号,并将请求转发到后端 RabbitMQ 节点。例如:
frontend rabbitmq_frontendbind *:5672mode tcpdefault_backend rabbitmq_nodes
在上面的配置中,我们配置了一个前端监听,监听在 5672 端口上,并将请求转发到名为 rabbitmq_nodes 的后端节点。
- 启动 HAProxy: 配置完成后,保存并退出配置文件。然后启动 HAProxy 服务,确保它正常运行。
- 连接 RabbitMQ 集群: 现在,客户端可以通过连接到 HAProxy 的 IP 地址和端口号(即 192.168.1.100:5672)来访问 RabbitMQ 集群。HAProxy 会根据负载均衡算法将请求转发到不同的后端 RabbitMQ 节点,实现消息处理的负载均衡。
总结:通过配置 HAProxy,我们可以实现 RabbitMQ 集群的负载均衡,提高消息处理的效率和可用性。HAProxy 是一个强大的负载均衡工具,可以用于各种分布式系统的负载均衡场景。注意在配置时,需要确保 RabbitMQ 节点正常运行,并且 HAProxy 与 RabbitMQ 节点之间的网络连接畅通,以确保负载均衡的顺利进行。
11.2.3 使用 Keepalived 实现高可靠负载均衡
使用 Keepalived 可以实现 RabbitMQ 集群的高可用负载均衡,保证 RabbitMQ 服务的高可用性和可靠性。Keepalived 是一个用于实现高可用性的软件,它可以通过虚拟 IP(VIP)实现在多台服务器之间的故障转移,从而确保服务的连续性。下面介绍如何使用 Keepalived 实现 RabbitMQ 集群的高可用负载均衡:
- 安装和配置 Keepalived: 首先需要在每个 RabbitMQ 节点上安装 Keepalived。可以使用适合自己操作系统的包管理工具进行安装,并修改 Keepalived 的配置文件(一般是位于 /etc/keepalived/keepalived.conf)。
- 配置虚拟 IP(VIP): 在 Keepalived 的配置文件中,配置虚拟 IP(VIP),这个 IP 地址将用于客户端连接 RabbitMQ 集群。指定 VIP 的 IP 地址和网络接口,例如:
vrrp_instance rabbitmq_vip {state MASTERinterface eth0virtual_router_id 51priority 101advert_int 1authentication {auth_type PASSauth_pass your_password}virtual_ipaddress {192.168.1.100}
}
在上面的配置中,我们配置了一个 VIP 地址为 192.168.1.100,它将绑定到 eth0 网络接口。state MASTER 表示该节点为主节点,其他节点可以配置为 state BACKUP,以实现主备节点的故障转移。
- 配置 RabbitMQ 节点信息: 在 Keepalived 的配置文件中,配置 RabbitMQ 节点的信息。指定每个节点的 IP 地址和端口号,以及使用的协议。例如:
real_server rabbitmq_node1 {192.168.1.101 5672weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 5672}
}real_server rabbitmq_node2 {192.168.1.102 5672weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 5672}
}...
在上面的配置中,我们配置了两个 RabbitMQ 节点,分别是 rabbitmq_node1 和 rabbitmq_node2,它们的 IP 地址和端口号分别是 192.168.1.101:5672 和 192.168.1.102:5672。
- 启动 Keepalived: 配置完成后,保存并退出配置文件。然后启动 Keepalived 服务,确保它正常运行。
- 连接 RabbitMQ 集群: 现在,客户端可以通过连接到 VIP 地址(即 192.168.1.100:5672)来访问 RabbitMQ 集群。Keepalived 会自动将客户端的请求转发到当前主节点(具有 VIP)的 RabbitMQ 节点上,实现负载均衡和高可用。
总结:通过配置 Keepalived,我们可以实现 RabbitMQ 集群的高可用负载均衡,保证 RabbitMQ 服务的高可用性和可靠性。Keepalived 提供了一种简单且可靠的方式来实现主备节点的故障转移,从而确保 RabbitMQ 服务的连续性。注意在配置时,需要确保 RabbitMQ 节点正常运行,并且 Keepalived 与 RabbitMQ 节点之间的网络连接畅通,以确保高可用负载均衡的顺利进行。
11.2.4 使用 Keepalived+LVS 实现负载均衡
通过 Keepalived 和 LVS(Linux Virtual Server)可以实现 RabbitMQ 集群的负载均衡,保证 RabbitMQ 服务的高可用性和性能优化。Keepalived 用于实现高可用性,而 LVS 则用于实现负载均衡。下面介绍如何使用 Keepalived 和 LVS 来实现 RabbitMQ 集群的负载均衡:
- 安装和配置 Keepalived: 首先需要在每个 RabbitMQ 节点上安装 Keepalived。可以使用适合自己操作系统的包管理工具进行安装,并修改 Keepalived 的配置文件(一般是位于 /etc/keepalived/keepalived.conf)。
- 配置虚拟 IP(VIP): 在 Keepalived 的配置文件中,配置虚拟 IP(VIP),这个 IP 地址将用于客户端连接 RabbitMQ 集群。指定 VIP 的 IP 地址和网络接口,例如:
vrrp_instance rabbitmq_vip {state MASTERinterface eth0virtual_router_id 51priority 101advert_int 1authentication {auth_type PASSauth_pass your_password}virtual_ipaddress {192.168.1.100}
}
在上面的配置中,我们配置了一个 VIP 地址为 192.168.1.100,它将绑定到 eth0 网络接口。state MASTER 表示该节点为主节点,其他节点可以配置为 state BACKUP,以实现主备节点的故障转移。
- 配置 LVS 策略: 在 RabbitMQ 集群之前的一个节点上配置 LVS 策略,用于将客户端请求均衡地转发到 RabbitMQ 节点上。LVS 提供了多种负载均衡算法,如 Round Robin、Least Connections 等,可以根据实际需求选择合适的算法。配置示例如下:
virtual_server 192.168.1.100 5672 {delay_loop 10lb_algo rrlb_kind DRpersistence_timeout 50protocol TCPreal_server 192.168.1.101 5672 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 5672}}real_server 192.168.1.102 5672 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port 5672}}
}
在上面的配置中,我们配置了一个 LVS 策略,将 VIP 地址 192.168.1.100:5672 转发到两个 RabbitMQ 节点 192.168.1.101:5672 和 192.168.1.102:5672 上,使用的负载均衡算法是 Round Robin(lb_algo rr)。
- 启动 Keepalived 和 LVS: 配置完成后,保存并退出配置文件。然后启动 Keepalived 和 LVS 服务,确保它们正常运行。
- 连接 RabbitMQ 集群: 现在,客户端可以通过连接到 VIP 地址(即 192.168.1.100:5672)来访问 RabbitMQ 集群。LVS 会根据负载均衡策略将客户端的请求转发到合适的 RabbitMQ 节点上,实现负载均衡和高可用。
总结:通过配置 Keepalived 和 LVS,我们可以实现 RabbitMQ 集群的负载均衡和高可用性,提高消息处理的性能和可靠性。Keepalived 提供了故障转移机制,保证 RabbitMQ 服务的高可用性;而 LVS 提供了负载均衡机制,将客户端请求均衡地转发到 RabbitMQ 节点上,实现消息的负载均衡。注意在配置时,需要确保 RabbitMQ 节点正常运行,并且 Keepalived 和 LVS 与 RabbitMQ 节点之间的网络连接畅通,以确保负载均衡和高可用性的顺利进行。
11.3 小结
本章介绍了 RabbitMQ 的扩展特性,包括消息追踪、负载均衡等内容。通过学习这些高级特性,您可以更好地应对复杂的消息传递场景。在附录中,我们提供了集群元数据信息示例、HTTP API 接口详细内容以及网络分区图谱等供参考。在学习完这些内容后,您将对 RabbitMQ 有一个全面而深入的了解,并能够灵活应用 RabbitMQ 来构建高性能、可靠的消息传递系统。
相关文章:

RabbitMQ 教程 | 第11章 RabbitMQ 扩展
👨🏻💻 热爱摄影的程序员 👨🏻🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻🏫 一位高冷无情的编码爱好者 大家好,我是 DevO…...

一分钟完成centos7安装docker
action: 1、下载安装包2、安装docker 1、背景 使用CentOS / Redhat 7 版本的应该偏多。但是,Docker CE在系统中安装的时候,往往会出现一堆依赖包的报错,解决依赖包需要耗费不短的时间。 经验证,目前已找到兼容能力强的版本&am…...
NativePHP:使用PHP构建跨平台桌面应用的新框架
NativePHP是一个用于使用PHP构建桌面应用的框架。它允许PHP开发人员使用熟悉的工具和技术创建跨平台的原生应用。NativePHP具有一系列易于使用的类,一套用于构建和打包应用程序的工具以及一个静态跨平台PHP运行时。 官网地址:https://nativephp.comNati…...

删除这4个文件夹,流畅使用手机无忧
在现代社会中,手机已经成为我们生活中不可或缺的一部分。然而,随着使用时间的增长,我们可能会遇到手机卡顿和内存不足的问题,让我们感到十分困扰。手机卡顿不仅影响使用体验,还可能导致应用程序运行缓慢,甚…...
使用Bert预训练模型处理序列推荐任务
最近的工作有涉及该任务,整理一下思路以及代码细节。 流程 总体来说思路就是首先用预训练的bert模型,在训练集的序列上进行CLS任务。对序列内容(这里默认是token id的sequence)以0.3左右的概率进行随机mask,然后将相…...

将word每页页眉单独设置
在进行论文排版的时候,总是会出现页眉的页码设置问题,比如出现奇数或偶数页码一致,尝试将前面页码改掉,后面再修改前面也进行了变动,将每页页眉单独设置: (1)在第一页的最后一行输入…...
rust怎么生成随机数?
关注我,学习Rust不迷路!! 在 Rust 中,有几种不同的方法可以实现随机数生成。以下是其中几种常见的方法,以及它们的优缺点: 1. 使用 rand crate: 优点: rand crate 是 Rust 中最常…...

python-Excel数据模型文档转为MySQL数据库建表语句(需要连接数据库)-工作小记
将指定Excel文档转为create table 建表语句。该脚本适用于单一且简单的建表语句 呈现效果 代码 # -*- coding:utf-8 -*- # Time : 2023/8/2 17:50 # Author: 水兵没月 # File : excel_2_mysql建表语句.py import reimport pandas as pd import mysql.connectordb 库名mydb m…...

406 · 和大于S的最小子数组
链接:LintCode 炼码 - ChatGPT!更高效的学习体验! 题解:同向双指针 九章算法 - 帮助更多程序员找到好工作,硅谷顶尖IT企业工程师实时在线授课为你传授面试技巧 class Solution { public:/*** param nums: an array …...
xray的 webhook如何把它Hook住?^(* ̄(oo) ̄)^
xray webhook xray可以通过webhook传递扫描信息,官方文档也是一笔带过,可能大多数人都不清楚,或者仅仅知道有这么个东西,但是不知道怎么使用,webhook是xray被动监听模式下的一种输出结构和方式。相比输出Json和txt格式…...

浅析RabbitMQ死信队列
原文首发于公众号【CSJerry】 在现代分布式系统中,消息队列扮演着至关重要的角色。它们可以实现应用程序之间的异步通信,并确保数据的可靠传输和处理。而在这个领域中,RabbitMQ作为一种强大而受欢迎的消息队列解决方案,具备了高…...

ELK 企业级日志分析系统(ElasticSearch、Logstash 和 Kiabana 详解)
目录 一.ELK简介 1.1ELK的概述 1.2ELK的组成 1.2.1 ElasticSearch 1.2.2 Logstash 1.2.3 Kibana 1.2.4 小总结 1.3可以添加其他组件 1.4filebeat 结合 logstash 带来好处 1.5日志处理的步骤 二.Elasticsearch 2.1Elasticsearch概述 2.2Elasticsearch核心概念 2.2.1接近…...

数学建模—多元线性回归分析
第一部分:回归分析的介绍 定义:回归分析是数据分析中最基础也是最重要的分析工具,绝大多数的数据分析问题,都可以使用回归的思想来解决。回归分析的人数就是,通过研究自变量X和因变量Y的相关关系,尝试去解释…...

win10 64位 vs2017 qt5.12.6 pcl1.9.1 vtk8.1.1配置安装步骤
由于我电脑中有 QT5.12.6 VS2017,就不介绍怎么安装了,只介绍cmake,pcl及vtk的配置步骤 为了便于后续QT的调用,以下所有安装路径中均不能出现中文及空格等 PCL自带VTK是不完整的,所以需要下载VTK源码进行重新编译使其…...

【项目 计网1】4.1 网络结构模式 4.2MAC地址、IP地址、端口
文章目录 第四章 Linux网络编程4.1 网络结构模式C/S结构(client-server)B/S结构(Browser/Server,浏览器/服务器模式) 4.2 4.3MAC地址、IP地址、端口(1)(2)MAC地址IP地址(…...

uni-app:分页实现多选功能
效果 代码解析 一、标签-列表 <view class"item_all" v-for"(item, index) in info" :key"index"><view class"position parameter-info text-over" :class"{checked_parameter: item.checked}" :data-id"i…...

问道管理:沪指窄幅震荡跌0.18%,有色、汽车等板块走低
3日早盘,沪指盘中窄幅震动下探,创业板逆市上扬;两市半日成交不足5000亿元,北向资金净卖出超15亿元。 到午间收盘,沪指跌0.18%报3255.88点,深成指跌0.23%,创业板指涨0.2%;两市算计成交…...
Kotlin 协程与 Flow
简介 Kotlin的Flow 是 Kotlin 在异步编程方面的一个重要组件,它提供了一种声明式的、可组合的、基于协程的异步编程模型。Flow 的设计灵感来自于 Reactive Streams、RxJava、Flux 和其他异步编程库,但它与 Kotlin 协程无缝集成,并提供了一种更…...

设备管理系统与物联网的融合:实现智能化设备监控和维护
在数字化时代,设备管理系统和物联网技术的融合为工业企业带来了巨大的变革和创新。本文将探讨设备管理系统与物联网的融合,重点介绍设备健康管理平台在实现智能化设备监控和维护方面的关键作用和优势。 一、设备管理系统与物联网的融合 随着物联网技术的…...

三、从官方源码精简出第1个FreeRTOS
1、官方源码下载 (1)进入FreeRTOS官网:FreeRTOS官网 (2)点击下载FreeRTOS。 (3)选择待示例的项目进行下载。 2、删减目录 (1)下载后解压的FreeRTOS文件如下图所示。 (2)删除下图中红框勾选的文件。 (3)删除"FreeRTOSv202212.01\FreeRTOS\Demo"目录下用…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...

(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL
ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...