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

解密RabbitMQ:你所不知道的端口及其重要性

解密RabbitMQ:你所不知道的端口及其重要性

  • 前言
  • 第一部分:AMQP默认端口(5672)
  • 第二部分:RabbitMQ管理界面端口(15672)
  • 第三部分:Erlang Port Mapper Daemon(epmd)端口(4369)
  • 第四部分:HTTPS端口(25672)
  • 第五部分:STOMP协议端口(61613、61614)
  • 第六部分:Web STOMP端口(15674)
  • 第七部分:自定义端口和安全性:
  • 第八部分:性能优化和最佳实践

前言

在当今互联网时代,消息中间件已成为实现分布式系统和微服务架构的关键组件之一。RabbitMQ作为最受欢迎的消息队列之一,不仅提供强大的消息传递功能,还隐藏了一系列神秘的端口。这些端口扮演着关键的角色,影响着RabbitMQ的性能和安全性。本文将深入研究RabbitMQ的不同端口,揭示它们的用途,以及如何更好地利用它们来构建可靠的消息架构。

第一部分:AMQP默认端口(5672)

AMQP(高级消息队列协议)是一种网络协议,用于在应用程序之间传递消息,通常用于消息队列系统。在RabbitMQ中,AMQP协议是消息传递的核心协议,它定义了消息的格式、传递方法和消息队列的行为。下面是您提到的问题的解答:

  1. AMQP 协议是什么以及它在RabbitMQ中的重要性:

    • AMQP(Advanced Message Queuing Protocol)是一种网络协议,用于消息传递。它定义了消息的格式和传递规则,允许不同应用程序之间进行异步通信。在RabbitMQ中,AMQP是主要的通信协议,用于生产者将消息发送到队列,消费者从队列中接收消息,以及在消息代理(如RabbitMQ)中进行消息路由和处理。AMQP的重要性在于它提供了一种标准的方法,使不同的应用程序能够可靠地交换消息,从而构建强大的分布式系统。
  2. 为什么5672端口是默认端口:

    • 5672端口是AMQP协议的默认端口,通常用于与RabbitMQ建立非加密连接。这个端口之所以成为默认端口,是因为它是AMQP协议的标准端口号,开发者可以方便地配置其应用程序来连接到此端口,而无需手动指定端口号。当您创建一个与RabbitMQ的连接时,如果没有指定端口号,客户端库通常会默认使用5672端口。
  3. 如何通过5672端口与RabbitMQ建立非加密连接:

    • 为了通过5672端口与RabbitMQ建立非加密连接,您可以使用适当的AMQP客户端库。以下是通常的步骤:
      • 安装并配置适当的AMQP客户端库(例如,pika for Python、RabbitMQ Java Client等)。
      • 在您的应用程序中,创建一个AMQP连接对象,通常需要指定RabbitMQ服务器的主机名或IP地址、端口(5672)、虚拟主机、用户名和密码。
      • 创建一个通道(channel)来进行消息的发布和订阅。
      • 使用通道来发送和接收消息。

    请注意,5672端口是非加密的,默认情况下消息在网络上传输时不会被加密。如果您需要加密连接,可以考虑使用5671端口,它通常用于AMQPS(AMQP over SSL/TLS)协议,这将提供加密的通信。加密连接需要配置证书等安全设置。

第二部分:RabbitMQ管理界面端口(15672)

RabbitMQ管理界面是一个Web应用程序,用于管理和监控RabbitMQ消息代理。下面是有关RabbitMQ管理界面(通常运行在15672端口)的信息:

  1. 管理界面的作用和重要性:

    • RabbitMQ管理界面是一个用于管理和监控RabbitMQ服务器的用户界面。它对于RabbitMQ的管理和监控是非常重要的,因为它提供了易于使用的图形化界面,允许管理员执行以下任务:
      • 创建、删除和管理消息队列。
      • 查看和管理交换机(exchanges)和绑定(bindings)。
      • 查看当前连接到RabbitMQ的客户端应用程序。
      • 监视消息传递情况,包括消息发布和消费的速率。
      • 查看节点信息、集群状态和性能指标。
      • 设置用户权限和虚拟主机(virtual host)的配置。
  2. 如何通过15672端口访问RabbitMQ管理控制台:

    • 默认情况下,RabbitMQ管理界面运行在15672端口。要通过浏览器访问管理控制台,您需要确保RabbitMQ服务器正在运行,并且已经启用了管理插件。以下是访问管理控制台的步骤:
      • 打开Web浏览器,并输入以下URL:http://your-rabbitmq-server:15672/
      • 替换"your-rabbitmq-server"为实际运行RabbitMQ服务器的主机名或IP地址。
      • 您将被重定向到登录页面,输入您的RabbitMQ用户名和密码,通常是"guest"(默认用户名和密码)。
      • 登录后,您将能够访问RabbitMQ管理控制台。
  3. 管理界面提供的功能和监控选项:

    • RabbitMQ管理控制台提供了多种功能和监控选项,包括但不限于:
      • 队列和交换机的创建和删除。
      • 查看连接到服务器的客户端。
      • 查看队列中的消息数量、消费者数量以及消息的详细信息。
      • 查看节点的性能指标,例如内存使用情况和CPU利用率。
      • 配置虚拟主机、用户、权限和策略。
      • 查看集群状态和节点信息。
      • 查看日志和错误报告,以进行故障排除。

RabbitMQ管理界面是一个强大的工具,用于轻松管理和监控RabbitMQ服务器,以确保消息队列系统的正常运行。

第三部分:Erlang Port Mapper Daemon(epmd)端口(4369)

Erlang Port Mapper Daemon(epmd)是Erlang编程语言中的一个重要组件,用于节点之间的通信。下面是有关epmd和其监听的端口4369的信息:

  1. epmd的作用,用于节点之间的通信:

    • epmd(Erlang Port Mapper Daemon)是一个独立的守护进程,它在Erlang分布式系统中扮演着关键的角色。它的主要作用是为Erlang节点提供服务发现和端口分配功能。当Erlang节点启动时,它需要在分布式系统中找到其他节点以便进行通信,epmd负责维护这些节点的注册信息。每个节点在启动时会向epmd注册,以及在需要与其他节点通信时,它会查询epmd获取目标节点的端口信息,从而建立通信连接。
  2. 这个端口为什么重要,但通常不由客户端应用程序使用:

    • 端口4369是epmd的默认监听端口。虽然它对Erlang节点之间的通信至关重要,但通常不由客户端应用程序直接使用。客户端应用程序通常通过Erlang虚拟机来与其他Erlang节点通信,而Erlang虚拟机会自动与epmd进行交互以获取目标节点的端口信息。因此,客户端应用程序通常不需要直接连接到4369端口。

总之,epmd是Erlang分布式系统中的重要组件,负责节点之间的服务发现和端口分配,从而支持分布式通信。尽管它监听着端口4369,但客户端应用程序通常不需要直接操作此端口,而是通过Erlang虚拟机来与其他节点通信,让Erlang运行时来处理与epmd的交互。

第四部分:HTTPS端口(25672)

通常情况下,RabbitMQ的管理界面使用HTTP协议在15672端口上提供服务。端口25672通常用于AMQP over TLS(AMQPS),而不是RabbitMQ管理界面的HTTPS访问。如果您希望启用RabbitMQ管理界面的HTTPS访问,您需要进行一些额外的配置,而不是使用25672端口。

以下是关于RabbitMQ管理界面的HTTPS访问的信息:

  1. 为什么RabbitMQ管理界面提供HTTPS访问:

    • 启用HTTPS访问对RabbitMQ管理界面是一个安全性增强措施。HTTPS提供了数据传输的加密和身份验证,使得管理界面更安全,特别是在生产环境中。这有助于保护敏感信息,如用户名和密码,以及管理操作的数据,免受窃听和中间人攻击的威胁。
  2. 如何通过25672端口启用管理界面的HTTPS访问:

    • 默认情况下,RabbitMQ管理界面不会使用25672端口提供HTTPS访问。要启用HTTPS访问,您需要执行以下步骤:
      1. 获得有效的SSL/TLS证书:您需要获取一个有效的SSL/TLS证书,通常从可信的证书颁发机构(CA)获得。这个证书将用于加密HTTPS连接。
      2. 配置RabbitMQ:在RabbitMQ服务器上,您需要编辑RabbitMQ配置文件,通常是rabbitmq.config,并配置HTTPS监听端口和相关SSL/TLS选项。这个配置文件可能位于不同的位置,具体取决于您的RabbitMQ安装。
      3. 启用HTTPS监听:在配置文件中,指定要使用的SSL/TLS证书和私钥的路径,以及其他必要的配置,如端口号等。
      4. 重启RabbitMQ服务器:一旦配置完成,重新启动RabbitMQ服务器,使更改生效。
      5. 使用HTTPS URL:一旦配置完成,您可以通过HTTPS URL(通常是https://your-rabbitmq-server:custom-https-port/)访问RabbitMQ管理界面。

请注意,具体的配置步骤可能因您的RabbitMQ版本和操作系统而有所不同,因此最好查阅RabbitMQ的文档以获取详细的指南和示例配置。确保您的证书和私钥也是有效的,以确保HTTPS连接的安全性。

第五部分:STOMP协议端口(61613、61614)

STOMP(Simple Text Oriented Messaging Protocol)是一种简单的文本导向的消息传递协议,通常用于与消息代理(如RabbitMQ)进行通信。它的设计目标是提供一种轻量级、易于实现的消息传递协议,适用于各种编程语言和平台。STOMP在RabbitMQ中有广泛的应用,用于支持与客户端应用程序的异步消息通信。

关于STOMP协议在RabbitMQ中的应用以及为什么有两个STOMP端口的问题,下面是详细解释:

  1. STOMP协议在RabbitMQ中的应用:

    • STOMP协议在RabbitMQ中被用作一种客户端-代理之间的轻量级消息传递协议。它使客户端能够发布消息到队列、订阅队列中的消息以及接收消息。这种协议通常在需要与RabbitMQ进行消息通信的多种客户端应用中得到广泛应用,因为它相对简单且易于实现。
  2. 为什么有两个STOMP端口,一个用于非加密通信,一个用于加密通信:

    • 通常情况下,STOMP协议使用两个端口,一个用于非加密通信,另一个用于加密通信,以满足不同的安全需求。这两个端口分别是61613和61614。
    • 61613端口:这是STOMP协议的非加密通信端口,通常用于明文传输消息。它适用于不需要加密保护的场景,通信是明文的,没有数据加密。
    • 61614端口:这是STOMP协议的加密通信端口,通常用于STOMPS(STOMP over SSL/TLS)。STOMPS通过使用SSL/TLS协议对通信数据进行加密,以确保消息的机密性和完整性。这是更安全的选项,适用于需要保护消息通信的敏感场景。

因此,有两个STOMP端口的存在是为了提供灵活的选项,以满足不同安全级别的需求。客户端可以根据其需求选择使用明文通信或通过SSL/TLS加密通信,以保护消息传输的安全性。

第六部分:Web STOMP端口(15674)

Web STOMP插件是RabbitMQ的插件,它扩展了RabbitMQ消息代理的功能,允许通过WebSocket协议来使用STOMP(Simple Text Oriented Messaging Protocol)协议。下面是关于Web STOMP插件的解释以及如何通过15674端口使用WebSocket连接来访问STOMP协议的信息:

  1. Web STOMP插件的作用:

    • Web STOMP插件的主要作用是将STOMP协议与WebSocket协议相结合,使Web浏览器和其他客户端能够通过WebSocket连接与RabbitMQ进行实时的、双向的消息通信。这对于开发Web应用程序、移动应用程序以及需要实时消息传递的场景非常有用。通过Web STOMP插件,您可以使用STOMP协议来订阅和发布消息,实现实时通信。
  2. 如何通过15674端口使用WebSocket连接访问STOMP协议:

    • 要通过15674端口使用WebSocket连接来访问STOMP协议,需要执行以下步骤:
      1. 启用Web STOMP插件:首先,确保RabbitMQ上已经启用了Web STOMP插件。您可以在RabbitMQ配置文件中启用它,或者使用RabbitMQ的插件管理工具来启用。确保Web STOMP插件已经被加载和启用。
      2. 访问WebSocket URL:一旦插件已启用,您可以通过WebSocket连接访问STOMP协议。使用WebSocket客户端库或浏览器内置的WebSocket支持,访问以下URL:
        ws://your-rabbitmq-server:15674/ws
        
        • 替换"your-rabbitmq-server"为实际运行RabbitMQ服务器的主机名或IP地址。
        • 注意,使用的协议是"ws",表示WebSocket连接。
      3. STOMP连接:一旦建立WebSocket连接,您可以使用STOMP协议命令与RabbitMQ服务器通信。您可以使用STOMP客户端库来创建STOMP连接、订阅队列、发送消息等。STOMP协议非常适合在WebSocket上进行双向通信。

通过以上步骤,您可以使用WebSocket连接通过15674端口与RabbitMQ建立STOMP协议通信,从而实现实时消息传递,这对于Web应用程序和实时通信场景非常有帮助。请注意,您需要确保客户端应用程序具有WebSocket和STOMP协议的支持,以便与RabbitMQ进行通信。

第七部分:自定义端口和安全性:

自定义RabbitMQ端口以满足特定需求并确保端口的安全性是很重要的,特别是在需要满足特定安全标准或限制访问的情况下。以下是关于如何自定义RabbitMQ端口以及确保端口安全性的步骤:

自定义RabbitMQ端口:

  1. 编辑RabbitMQ配置文件

    • 打开RabbitMQ的配置文件。配置文件通常命名为rabbitmq.config,但具体的文件名和位置可能会因您的RabbitMQ安装方式和操作系统而异。
    • 编辑配置文件以指定您想要使用的自定义端口。在配置文件中,您可以定义监听端口和协议,例如:
      {rabbit, [{tcp_listeners, [5673]}]}
      
    • 在上述示例中,RabbitMQ将使用5673端口进行TCP监听。
  2. 保存配置文件

    • 保存您所做的更改。
  3. 重启RabbitMQ服务器

    • 一旦您编辑了配置文件,您需要重启RabbitMQ服务器以应用这些更改。在大多数情况下,您可以使用以下命令重启RabbitMQ:
      rabbitmq-server restart
      

确保端口的安全性:

  1. 防火墙设置

    • 配置防火墙规则,以确保只有受信任的IP地址可以访问自定义端口。这有助于限制未经授权的访问。
  2. 访问控制

    • 在RabbitMQ中,您可以使用虚拟主机、用户、权限和策略来进行访问控制。确保只有授权的用户和客户端可以连接到自定义端口。
    • 设置用户权限,限制他们的访问范围。例如,您可以为不同的虚拟主机配置不同的用户权限,以确保只能访问其所需的资源。
  3. SSL/TLS加密

    • 对于敏感数据传输,强烈建议使用SSL/TLS加密。配置RabbitMQ以使用加密连接,确保数据在传输过程中受到保护。
    • 要配置SSL/TLS,您需要生成或获得有效的证书,然后在RabbitMQ配置文件中指定证书的路径和其他安全设置。
  4. 定期更新和监控

    • 定期更新RabbitMQ以及操作系统,以获取最新的安全修复程序和更新。
    • 进行安全审计和监控以检测潜在的威胁和异常活动。
  5. 强密码策略

    • 设置强密码策略,确保用户密码的复杂性和安全性。

通过自定义RabbitMQ端口和采取适当的安全措施,您可以保护您的消息代理,以防止未经授权的访问,并确保数据的机密性和完整性。确保定期审查和更新安全措施,以适应新的威胁和漏洞。

第八部分:性能优化和最佳实践

性能优化和确保消息中间件的高性能和可用性是关键,特别是在高负载环境中。以下是关于RabbitMQ端口的性能优化建议以及一些最佳实践,以确保消息中间件的高性能和可用性:

RabbitMQ端口的性能优化建议:

  1. 分离端口:将不同类型的流量分离到不同的端口上,以确保服务不会相互干扰。例如,将管理流量、应用程序流量和集群通信分别分配到不同的端口。

  2. 资源配置:根据您的应用程序需求,配置RabbitMQ以合理分配CPU、内存和磁盘资源。确保RabbitMQ服务器有足够的资源来处理负载。

  3. 消息队列优化:合理规划和优化消息队列的数量和大小,以确保它们能够处理您的消息流量。监视队列的深度,根据需要调整。

  4. 集群配置:使用RabbitMQ集群来分担负载和提高可用性。在多个节点之间分布消息可以提高性能和容错能力。

确保消息中间件的高性能和可用性的最佳实践:

  1. 监控和日志记录:实施全面的监控和日志记录,以实时监测性能和识别潜在问题。使用监控工具和仪表板来跟踪消息队列的深度、吞吐量和延迟。

  2. 安全性:确保消息中间件的安全性,限制对消息的访问。使用身份验证和授权机制,采用SSL/TLS进行通信加密。

  3. 负载均衡:使用负载均衡器来分发客户端请求,以确保负载在多个消息代理节点之间均匀分布。

  4. 故障容忍和灾备:设置故障容忍和灾备策略,以确保即使出现硬件故障,消息中间件仍然可用。备份、复制和冗余是实现这一目标的关键。

  5. 高可用性配置:使用主备模式或镜像队列等高可用性配置,以确保在消息代理节点故障时不会丢失消息。

  6. 消息生命周期管理:定期清理旧消息,以避免消息积压和占用大量磁盘空间。

  7. 容量规划:规划消息中间件的容量,确保它能够应对未来增长的消息流量。

  8. 定期维护:定期维护RabbitMQ服务器,包括更新操作系统、RabbitMQ版本和其他相关组件,以获取最新的安全性能修复和功能改进。

  9. 测试和基准测试:在部署之前进行性能测试和基准测试,以了解系统的极限和性能特征。这有助于确定所需的硬件资源和配置。

  10. 培训和文档:培训团队成员,提供清晰的文档,以确保他们了解如何配置、监视和维护消息中间件。

通过遵循这些性能优化建议和最佳实践,您可以确保消息中间件(如RabbitMQ)能够提供高性能、高可用性和可伸缩性,以满足您的应用程序需求。不断监控、调整和改进是确保消息中间件持续高效运行的关键。

相关文章:

解密RabbitMQ:你所不知道的端口及其重要性

解密RabbitMQ:你所不知道的端口及其重要性 前言第一部分:AMQP默认端口(5672)第二部分:RabbitMQ管理界面端口(15672)第三部分:Erlang Port Mapper Daemon(epmd)端口(4369&…...

Docker 环境搭建 (centeros)

CentOS环境下安装Docker 本文档将指导您在CentOS操作系统上安装Docker。Docker是一个开源的容器化平台,可以帮助您轻松地创建、部署和管理容器化应用程序。 步骤1:更新系统 在安装Docker之前,首先确保您的系统已经更新到最新版本。打开终端…...

服务器编程基本框架

服务器编程基本框架 虽然服务器程序种类繁多,但其基本框架都一样,不同之处在于逻辑处理。 I/O 处理单元是服务器管理客户连接的模块。它通常要完成以下工作:等待并接受新的客户连接,接收客户数据,将服务器响应数据返回…...

Leetcode——数组的遍历系列练习

485. 最大连续 1 的个数 class Solution { public:int findMaxConsecutiveOnes(vector<int>& nums) {// 记录最大连续1个数int max 0;// 记录数组中存在1个数int sum 0;// 遍历连续1个数int count 0;for (int i 0; i < nums.size() - 1; i) {if (nums[i] 1)s…...

免费的ChatGPT与StableDiffusion AI绘画 二合一 附在线地址

ChatGPT与StableDiffusion 在线地址在文末 介绍 嘿&#xff0c;大家好&#xff01;今天我要给大家介绍一个非常酷炫的技术结合——ChatGPT与StableDiffusion的合作。听起来是不是很有趣&#xff1f;那么&#xff0c;让我们一起来看看这个组合到底能带给我们什么样的奇妙体验…...

vivado FFT IP仿真(3)FFT IP选项说明

xilinx FFT IP手册PG109 1 Configuration 2 Implementation 3 Detailed Implementation IP Symbol...

正点原子嵌入式linux驱动开发——Busybox根文件系统构建

前面已经移植了TF-A、Uboot和Linux kernel&#xff0c;就剩最后一个 rootfs(根文件系统)了&#xff0c;本章就来学习一下根文件系统的组成以及如何构建根文件系统。这是Linux系统移植的最后一步&#xff0c;根文件系统构建好以后就意味着拥有了一个完整的、可以运行的最小系统 …...

React闭包

声明 本文将深入探讨React与闭包之间的关系。 我们将首先介绍React和闭包的基本概念&#xff0c;然后详细解释React组件中如何使用闭包来处理状态和作用域的问题。 通过本文的阅读&#xff0c;你将对React中闭包的概念有更深入的理解&#xff0c;并能够在开发React应用时更好地…...

【VS Code】推荐一套我非常喜欢的主题和字体样式

话不多说&#xff0c;先上样式&#xff1a; 这里我的主题是 One Dark Pro&#xff0c;也是 VS Code 里面使用非常多的主题之一。直接安装插件即可使用。 我的字体是 JetBrains Mono&#xff0c;虽然使用的是 VS Code&#xff0c;但还是喜欢 webstorm 的字体。我们可以直接去官网…...

【SQL】MySQL中的约束

1. 主键约束&#xff08;primary key&#xff09;&#xff1a; 相当于唯一约束非空约束分为单列主键&#xff0c;多列联合主键&#xff0c;一个表只有一个主键多列联合主键的每列都不能为空 2. 自增长约束&#xff08;auto_increment&#xff09;&#xff1a; 用在单列主键后…...

css div左右布局

div左右布局 htm代码 <div class"content-box"><div class"left"></div><div class"right"></div></div>css样式 .content-box{height: 100%;width: 100%;display: flex; } .left{display: block;width:…...

06_Node.js服务器开发

1 服务器开发的基本概念 1.1 为什么学习服务器开发 Node.js开发属于服务器开发&#xff0c;那么作为一名前端工程师为什么需要学习服务器开发呢&#xff1f; 为什么学习服务器开发&#xff1f; 能够和后端程序员更加紧密配合网站业务逻辑前置扩宽知识视野 1.2 服务器开发可…...

git中添加不上传的文件夹或文件的名字

在该目录.gitignore中 添加不上传的文件夹或文件的名字...

Android: edittext禁止输入空格和特殊字符代码记录

一、前言&#xff1a;这个代码也是借鉴别人写的&#xff0c;我也看不太懂。为了方便日后用到就用这篇文章记录一下。 二、代码展示 /*** 禁止EditText输入空格** param editText*/public static void setEditTextInhibitInputSpace(EditText editText) {editText.addTextChang…...

SpringMVC常用注解

SpringMVC常用注解 RequestMapping&#xff1a;用于处理请求 url 映射的注解&#xff0c;可用于类或方法上。用于类 上&#xff0c;则表示类中的所有响应请求的方法都是以该地址作为父路径。RequestBody&#xff1a;注解实现接收 http 请求的 json 数据&#xff0c;将 json 转…...

微信小程序

文章目录 一、实现步骤&#xff08;一&#xff09;创建项目&#xff08;二&#xff09;创建页面&#xff08;三&#xff09;准备图片素材&#xff08;四&#xff09;编写页面结构1、编写轮播区域页面结构2、编写九宫格区域页面结构 &#xff08;五&#xff09;编写页面样式1、编…...

Python教程——配置环境,再探IDE

文章目录 一、Python安装下载安装验证 二、第一个Python程序常见问题 三、Python解释器四、PyCharm工具安装和配置安装使用PyCharm基本使用 一、Python安装 下载 如果我们想要使用Python语言编写程序&#xff0c;我们必须下载Python安装包并配置Python环境&#xff0c;我们现…...

java BigDecimal取消科学计数法显示

...

南昌新颜|AIGC艺术之光,历史的魅力与未来的探索

在这个本来稀松平常的周一&#xff0c;我们坐在电脑前&#xff0c;回顾着刚刚过去的两天&#xff0c;仿佛经历了“反方向的钟”。前两天的上班日子&#xff0c;究竟是周几呢&#xff1f;答案不再是简单的星期几&#xff0c;而是“周负二”和“周负一”。因为&#xff0c;我们把…...

电容笔有必要买吗?电容笔牌子排行

随着越来越多用户都开始用上了电容笔&#xff0c;苹果的Pencil&#xff0c;尽管功能强大&#xff0c;但是价格昂贵&#xff0c;并非所有人都可以有预算买得起。现在市面上有许多平替电容笔&#xff0c;其成本低、操作简便&#xff0c;因而受到了广泛的关注。所以&#xff0c;我…...

SpringCloud学习笔记-Ribbon负载均衡

目录 1.负载均衡策略2.自定义负载均衡策略3.饥饿加载 SpringCloudRibbon的底层采用了一个拦截器&#xff0c;拦截了RestTemplate发出的请求&#xff0c;对地址做了修改。用一幅图来总结一下&#xff1a; 基本流程如下&#xff1a; 拦截我们的RestTemplate请求http://userserv…...

安装JAVA 依赖环境 Maven 教程

一、下载链接与Tips Maven 过去版本下载传送门&#xff1a;&#xff08; Java 8 兼容 Java 7&#xff0c;即 Java 8 的 JDK 能运行 3.8.8 以下的 Maven&#xff09; Maven Releases History Download 点击 release notes 点击 available for download. 选择 bin 的安装包 然…...

小程序A跳转小程序B并且自动登录

需求 例如有一个小程序A&#xff0c;A中有一个功能需要跳转小程序B进行查看。需要点击此功能跳转至小程序B,并且自动登录 实现方式 小程序A的跳转方法 wx.navigateToMiniProgram({appId: "目标小程序APPID",path: "目标小程序小程序页面",extraData: {use…...

【微服务部署】八、HAProxy+Keepalived高可用负载均衡集群配置

HAProxy是一种免费、快速、可靠的反向代理&#xff0c;为基于TCP和HTTP的应用程序提供高可用性、负载平衡和代理&#xff0c;它非常适合应用在高并发大流量的网站上。这些年来&#xff0c;HAProxy已成为事实上的标准开源负载均衡&#xff0c;目前HAProxy已与大多数主流Linux发行…...

机器学习(21)---召回率(recall)、精度(precision)和准确率(accuracy)

文章目录 1. 分布不平衡的数据集2. TP、TN 、FP 、FN3. 混淆矩阵4. 各自的计算公式5. 例题应用 1. 分布不平衡的数据集 1. 精度&#xff08;precision&#xff09;和召回率&#xff08;recall&#xff09;是衡量机器学习模型性能的重要指标&#xff0c;特别是数据集分布不平衡的…...

EsayExcel让不同标题有不同的颜色

今天我在github社区的时候遇见了这个issues&#xff0c;我有看了下百度发现很多人需要这个问题的解决方案&#xff0c;接下来我就写一份这个问题的解决方案。 您的需求&#xff1a; ​ 您好我了解到您的需求&#xff0c;您的需求是为每一个标题设置不同的颜色。 我的解决方案…...

Ant Design of React 创建项目及运行环境

Ant Design of React 学习笔记&#xff08;1&#xff09; 创建项目及运行环境 本文使用 create-react-app 创建一个 TypeScript 项目&#xff0c;并引入 antd。 1.命令行cd到对应的目录&#xff0c;这里是npm下回车运行&#xff0c;其他如pnpm yarn参考官网 npx create-reac…...

NoSQL之Redis 主从复制配置详解及哨兵模式

目录 1 Redis 主从复制 1.1 主从复制的作用 1.2 主从复制流程 2 搭建Redis 主从复制 2.1 安装 Redis 2.2 修改 Redis 配置文件&#xff08;Master节点操作&#xff09; 2.3 修改 Redis 配置文件&#xff08;Slave节点操作&#xff09; 2.4 验证主从效果 3 Redis 哨兵模…...

界面组件DevExpress WinForms v23.2新功能预览 - 增强MVVM相关功能

本文主要描述了DevExpress WinForms即将在几个月之后发布的v23.2中包含的新功能&#xff0c;持续关注我们获取更多最新资讯哦~ DevExpress WinForms有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。同时能完美构建流畅、美观且易于使用的应用…...

vue3前端开发-开发环境安装篇

文章目录 1.安装nvm2.设置安装源为淘宝镜像3.通过nvm安装nodejs4. 安装pnpm4.1 安装pnpm4.2 配置 5.创建vite-vue项目6. vue3demo目录结构7. 扩展插件安装8. 用户代码片段8.1 设置8.2 快速生成代码 1.安装nvm 如果本地已经安装了nodejs&#xff0c;请先卸载。 nvm主要的作用就是…...