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

RabbitMQ 教程 | 第5章 RabbitMQ 管理

👨🏻‍💻 热爱摄影的程序员
👨🏻‍🎨 喜欢编码的设计师
🧕🏻 擅长设计的剪辑师
🧑🏻‍🏫 一位高冷无情的编码爱好者
大家好,我是 DevOps 工程师
欢迎分享 / 收藏 / 赞 / 在看!

这篇 RabbitMQ 教程为学习者提供了全面的内容,从 RabbitMQ 的简介开始,涵盖了消息中间件的概念、RabbitMQ 的安装与使用,以及交换机、队列、路由键等相关概念的介绍。进一步深入,教程探讨了 AMQP 协议、客户端开发向导,以及消息的发送和消费方式。同时,学习者还可以了解消息传输保障、高级特性如死信队列、延迟队列、优先级队列、RPC 实现等。此外,教程还涵盖了 RabbitMQ 的管理、配置、运维、监控和集群管理等重要主题,帮助学习者充分掌握 RabbitMQ 的应用。整篇教程丰富内容详实,适合初学者和有经验的开发者参考学习。

全篇共 11 章,9 万余字。本文:第5章 RabbitMQ 管理。

第5章 RabbitMQ 管理

5.1 多租户与权限

RabbitMQ 提供了多租户特性,允许在单个 RabbitMQ 实例上创建多个独立的虚拟主机(vhost)。每个虚拟主机相当于一个独立的消息代理,拥有自己的交换机、队列、绑定、用户权限等,从而实现了逻辑上的隔离。这样可以让不同的应用或用户组在同一个 RabbitMQ 实例上拥有独立的消息环境,彼此之间不会相互影响。

使用 RabbitMQ 的多租户特性,需要以下步骤:

  1. 创建虚拟主机: 在 RabbitMQ 管理界面或使用 RabbitMQ 命令行工具,可以创建一个新的虚拟主机。每个虚拟主机都有一个唯一的名称,用于标识和区分不同的租户。
  2. 为虚拟主机设置权限: 在 RabbitMQ 中,可以为不同的用户设置不同的权限。可以创建多个用户,并将其分配到不同的虚拟主机上,从而实现对不同租户的访问控制。可以为每个用户指定对虚拟主机的读、写、管理等权限。
  3. 访问控制策略: RabbitMQ 还提供了访问控制策略来限制对虚拟主机的访问。可以通过策略设置,对某个虚拟主机的访问进行控制,如限制最大连接数、最大队列数、最大内存使用等。

以下是使用 RabbitMQ 的多租户特性的示例代码:

public class RabbitMQMultiTenancyExample {private static final String VIRTUAL_HOST = "my_vhost";private static final String USERNAME = "my_user";private static final String PASSWORD = "my_password";public static void main(String[] args) throws Exception {// 创建连接工厂ConnectionFactory factory = new ConnectionFactory();factory.setHost("localhost");factory.setVirtualHost(VIRTUAL_HOST);factory.setUsername(USERNAME);factory.setPassword(PASSWORD);// 创建连接和通道try (Connection connection = factory.newConnection();Channel channel = connection.createChannel()) {// 在指定的虚拟主机中声明交换机、队列等操作// ...// 发布消息到指定的虚拟主机中// ...}}
}

在上面的示例中,我们创建了一个虚拟主机 my_vhost,并为该虚拟主机创建了一个名为 my_user 的用户,并设置了相应的密码。然后在代码中,我们使用这个虚拟主机和用户连接到 RabbitMQ,并进行了相应的消息发布等操作。

总结来说,通过 RabbitMQ 的多租户特性,可以在单个 RabbitMQ 实例上实现消息的逻辑隔离,为不同的应用或用户组提供独立的消息环境,并可以通过设置不同用户的权限和访问控制策略来实现对虚拟主机的访问控制。

5.2 用户管理

在 RabbitMQ 中,可以通过管理界面或者使用 RabbitMQ 命令行工具来创建和管理用户,包括设置用户角色和权限。以下是通过 RabbitMQ 管理界面和命令行工具创建和管理用户的步骤:

使用 RabbitMQ 管理界面:

  1. 打开 RabbitMQ 的管理界面,通常是通过浏览器访问 http://localhost:15672。
  2. 使用管理员账号登录管理界面。默认情况下,管理员用户名为 guest,密码也为 guest,但是建议在生产环境中修改默认管理员密码。
  3. 在管理界面中,点击"Admin"标签页,然后点击"Add a user"按钮。
  4. 输入用户名和密码,然后点击"Add user"按钮创建新用户。
  5. 点击"Back to users"链接,找到刚创建的用户,然后点击"Set permission"按钮。
  6. 在设置用户权限的界面,可以为用户分配虚拟主机和角色。RabbitMQ 预定义了几种角色,如"administrator"、"monitoring"、"policymaker"和"management"。可以根据需求选择相应的角色,也可以自定义角色并分配相应的权限。
  7. 点击"Set permission"按钮保存设置。

使用 RabbitMQ 命令行工具:

在命令行中使用 rabbitmqctl 命令行工具可以创建和管理 RabbitMQ 的用户,以下是一些常用的命令:

  1. 创建用户:

rabbitmqctl add_user <username> <password>

示例:rabbitmqctl add_user myuser mypassword

  1. 设置用户角色:

rabbitmqctl set_user_tags <username> <tag>

示例:rabbitmqctl set_user_tags myuser administrator

  1. 设置用户权限:

rabbitmqctl set_permissions -p <vhost> <username> <conf> <write> <read>

示例:rabbitmqctl set_permissions -p my_vhost myuser "." "." ".*"

注意事项:

  • 管理员用户通常具有最高权限,可以创建/删除虚拟主机、用户、角色等,并且有对所有虚拟主机的完全访问权限。
  • 非管理员用户通常只能在其所属虚拟主机中进行操作。
  • 可以通过 rabbitmqctl list_users 命令查看当前所有用户和其角色。
  • 在生产环境中,建议对用户进行合理的权限划分,限制其权限范围,以确保安全性和隔离性。

总结来说,可以通过 RabbitMQ 管理界面或命令行工具来创建和管理用户,包括设置用户角色和权限。管理员用户具有最高权限,可以创建和管理其他用户和角色,非管理员用户可以在其所属虚拟主机中进行操作。在设置用户权限时,建议进行合理的权限划分,以确保系统的安全性和隔离性。

5.3 Web端管理

RabbitMQ 提供了一个强大且易用的 Web 管理界面,也称为 RabbitMQ Management Plugin。通过该界面,管理员和开发人员可以方便地进行队列、交换机、连接等管理操作,监控消息队列的状态,以及查看集群的健康状态。以下是 Web 管理界面的主要功能和优势:

  1. 可视化管理:Web 管理界面以直观的图表和表格形式展示了消息队列的状态和指标,使得管理和监控变得更加直观和易于理解。
  2. 队列和交换机管理:通过 Web 界面可以轻松地创建、删除、查看队列和交换机的信息,包括名称、类型、绑定等。管理员可以直接在界面上执行这些操作,无需使用命令行工具。
  3. 连接和通道管理:Web 管理界面提供了连接和通道的详细信息,管理员可以查看当前连接和通道的状态、消费者数、所属虚拟主机等。
  4. 虚拟主机管理:管理员可以管理虚拟主机的创建和删除,并对虚拟主机进行权限设置,以实现多租户的隔离和访问控制。
  5. 用户管理:Web 管理界面允许管理员创建、删除和管理用户,同时可以为用户设置角色和权限。
  6. 监控和性能分析:Web 管理界面提供了丰富的监控指标和性能分析信息,包括队列的消息数、消费者数、吞吐量等,可以帮助管理员实时了解系统的状态。
  7. 插件管理:RabbitMQ 支持插件机制,通过 Web 管理界面可以方便地查看和启用各种插件,拓展 RabbitMQ的功能。
  8. 集群管理:对于部署了 RabbitMQ 集群的情况,Web 管理界面可以方便地查看集群的状态、节点信息和健康状态。

使用 Web 管理界面,不仅可以简化 RabbitMQ 的管理和监控工作,还提供了直观的数据可视化,帮助管理员更好地了解消息队列的状态和性能表现。同时,Web 管理界面还支持多语言,方便了全球范围内的使用。建议在生产环境中启用 Web 管理界面,并设置合适的访问控制,以确保系统的安全性。

5.4 应用与集群管理

管理 RabbitMQ 的应用和集群包括应用的启动和关闭,以及集群节点的配置和管理。下面分别介绍这些方面的操作:

应用的启动和关闭:

  1. 启动应用:在启动 RabbitMQ 应用之前,需要先启动 Erlang 节点。然后可以通过命令行工具或脚本启动 RabbitMQ 应用。
    • 使用命令行工具启动:在命令行中输入 rabbitmq-server 命令即可启动 RabbitMQ 应用。
    • 使用脚本启动:不同操作系统可能使用不同的启动脚本。通常,Linux 系统使用 service rabbitmq-server start 命令,而 Windows 系统可以通过服务面板启动。
  1. 关闭应用:要停止 RabbitMQ 应用,可以使用以下方法:
    • 使用命令行工具:在命令行中输入 rabbitmqctl stop 命令即可停止 RabbitMQ 应用。
    • 使用脚本:在 Linux 系统上,可以使用 service rabbitmq-server stop 命令来停止 RabbitMQ 应用。在 Windows 系统上,也可以通过服务面板停止。

集群节点的配置和管理:

  1. 集群配置:要配置 RabbitMQ 集群,需要在每个节点上设置相同的 /etc/rabbitmq/rabbitmq.config 配置文件。配置文件中包含了节点名称、集群节点信息、网络端口、认证等配置。确保所有节点的配置文件保持一致,然后启动所有节点。
  2. 集群节点的加入和离开:要加入集群,需要在节点配置文件中指定其他节点的名称。节点启动后,它会自动连接到其他节点并加入集群。要离开集群,可以通过命令行工具或脚本禁用集群插件,然后重启节点。
  3. 集群健康状态监控:可以使用 RabbitMQ 的 Web 管理界面或命令行工具来监控集群的健康状态。通过查看节点状态、队列状态和消息状态等指标,可以确保集群正常运行。
  4. 集群节点的升级和维护:在集群中,如果需要对某个节点进行升级或维护,可以先将该节点从集群中移除,然后进行相应操作,完成后再加入集群。

注意事项:

  • 在设置集群时,要确保所有节点的时间同步,以避免由于时间不一致导致的问题。
  • 确保所有节点都能够相互访问,通信端口没有被防火墙阻止。
  • 在修改配置文件或执行操作时,务必备份相关数据,以防止数据丢失。

总结来说,管理 RabbitMQ 的应用和集群包括启动和关闭应用,配置集群节点,加入和离开集群,监控集群健康状态,以及节点的升级和维护。确保节点的配置一致性和正常运行,以保障 RabbitMQ 集群的稳定性和可靠性。

5.4.1 应用管理

启动和关闭 RabbitMQ 应用可以使用命令行工具或者脚本来执行。同时,RabbitMQ 提供了 Web 管理界面,可以进行应用管理的一些常见操作。以下是详细介绍:

启动和关闭 RabbitMQ 应用:

  1. 启动 RabbitMQ 应用:
    • 在 Linux 系统上,打开终端,输入以下命令启动 RabbitMQ 应用:
    • 在 Windows 系统上,打开命令提示符,输入以下命令启动 RabbitMQ 应用:
  1. 如果一切正常,RabbitMQ 应用将会启动并监听默认端口 5672。在启动 RabbitMQ 应用之前,确保已经安装并正确配置了 Erlang/OTP 环境。
rabbitmq-server
rabbitmq-server
  1. 关闭 RabbitMQ 应用:
    • 在 Linux 系统上,可以通过 Ctrl + C 来终止 RabbitMQ 应用的运行。
    • 在 Windows 系统上,可以通过在命令提示符中输入 Ctrl + C 或者关闭命令行窗口来终止 RabbitMQ 应用。

应用管理中的一些常见操作:

RabbitMQ 提供了 Web 管理界面,通过该界面可以进行应用管理的一些常见操作,包括:

  1. 队列管理:在 Web 界面中,可以创建、删除和查看队列。也可以查看队列的消息数、消费者数等指标。
  2. 交换机管理:可以创建、删除和查看交换机,并设置交换机的类型和属性。
  3. 虚拟主机管理:可以创建、删除和查看虚拟主机,并设置虚拟主机的权限和访问控制策略。
  4. 用户管理:可以创建、删除和管理用户,并设置用户角色和权限。
  5. 连接和通道管理:可以查看当前连接和通道的状态、消费者数等信息。
  6. 监控和性能分析:Web 管理界面提供了丰富的监控指标和性能分析信息,帮助管理员实时了解系统的状态和性能。
  7. 插件管理:可以查看和启用各种插件,拓展 RabbitMQ 的功能。

以上操作都可以通过 Web 管理界面直观地进行,而无需使用命令行工具。通过 Web 管理界面,管理员可以更方便地进行应用管理和监控工作,提高工作效率。

总结来说,可以使用命令行工具或脚本来启动和关闭 RabbitMQ 应用。而在应用管理方面,RabbitMQ 的 Web 管理界面提供了一系列功能,包括队列、交换机、虚拟主机、用户等的创建、删除、查看、设置等操作,同时提供监控和性能分析信息,帮助管理员更好地管理和监控 RabbitMQ 应用。

5.4.2 集群管理

配置和管理 RabbitMQ 的集群可以通过多机多节点配置和单机多节点配置来实现。下面分别介绍这两种配置方式的步骤:

多机多节点配置:

在多机多节点配置中,RabbitMQ 的不同节点运行在不同的机器上,构成一个分布式集群。这样可以实现更高的可靠性和容错性。

  1. 确保节点间的网络互通:首先确保所有节点之间的网络是互通的,即节点之间可以相互通信。确保网络端口没有被防火墙阻止。
  2. 安装并配置 Erlang/OTP:在每台机器上安装并配置相同版本的 Erlang/OTP。RabbitMQ 是基于 Erlang 开发的,因此所有节点必须使用相同版本的 Erlang/OTP。
  3. 配置节点名称:在每个节点的配置文件中,设置相同的节点名称。配置文件通常位于 /etc/rabbitmq/rabbitmq.config 或 /etc/rabbitmq/rabbitmq-env.conf。
  4. 启动 RabbitMQ 节点:在每个节点上分别启动 RabbitMQ 应用。在命令行中输入 rabbitmq-server 命令启动 RabbitMQ 应用。
  5. 加入集群:在每个节点上设置相同的 rabbitmq.conf 配置文件,包含其他节点的名称。在每个节点启动后,它们会自动连接到其他节点并加入集群。

单机多节点配置:

在单机多节点配置中,多个 RabbitMQ 节点运行在同一台机器上,这些节点可以共享相同的 Erlang/OTP 虚拟机,但是各节点的端口号必须不同。

  1. 安装并配置 Erlang/OTP:在机器上安装并配置 Erlang/OTP。确保 Erlang/OTP 环境能够支持多节点运行。
  2. 配置节点名称和端口号:在每个节点的配置文件中,设置不同的节点名称和端口号。配置文件通常位于 /etc/rabbitmq/rabbitmq.config 或 /etc/rabbitmq/rabbitmq-env.conf。
  3. 启动 RabbitMQ 节点:在每个节点上分别启动 RabbitMQ 应用。在命令行中输入 rabbitmq-server -detached 命令启动 RabbitMQ 应用。
  4. 加入集群:在每个节点上设置相同的 rabbitmq.conf 配置文件,包含其他节点的名称和端口号。在每个节点启动后,它们会自动连接到其他节点并加入集群。

无论是多机多节点配置还是单机多节点配置,集群中的节点之间要确保网络互通和配置一致性。配置完毕后,可以通过 RabbitMQ 的 Web 管理界面或命令行工具来监控和管理集群状态。集群可以提供更高的可用性和性能,保障消息的高可靠性和分布式处理能力。在进行集群配置时,务必注意备份相关数据,以防止数据丢失。

5.5 服务端状态

RabbitMQ 提供了多种方式来查看服务器的状态信息,包括队列、交换机、连接等统计数据。以下是一些常见的查看服务器状态信息的方法:

  1. Web 管理界面: RabbitMQ 的 Web 管理界面是最直观和常用的查看服务器状态信息的方式。通过浏览器访问 http://localhost:15672/(默认地址)或您配置的管理界面地址,在登录后,可以在界面上看到多个选项卡,每个选项卡显示了不同的统计数据,如:
    • Overview(总览):显示了整个 RabbitMQ 服务器的概览信息,包括活动连接、队列数、消息发布率等。
    • Queues(队列):显示了所有队列的详细信息,包括队列的名称、消息数、消费者数等。
    • Exchanges(交换机):显示了所有交换机的详细信息,包括交换机的名称、类型、绑定信息等。
    • Connections(连接):显示了当前所有连接的详细信息,包括连接的名称、客户端地址、虚拟主机等。
    • Channels(通道):显示了当前所有通道的详细信息,包括通道的编号、消费者数等。
  1. 命令行工具: RabbitMQ 提供了命令行工具 rabbitmqctl 来查看服务器状态信息。您可以在终端或命令提示符中输入以下命令来获取相应的统计数据:
    • 查看队列信息:rabbitmqctl list_queues
    • 查看交换机信息:rabbitmqctl list_exchanges
    • 查看连接信息:rabbitmqctl list_connections
    • 查看通道信息:rabbitmqctl list_channels
    • 查看节点状态:rabbitmqctl status
  1. HTTP API 接口: RabbitMQ 提供了 HTTP API 接口,可以通过发送 HTTP 请求获取服务器的状态信息。API 接口的地址通常为 http://localhost:15672/api/(默认地址),您可以使用 curl 命令或任何 HTTP 客户端库来访问 API 接口,获取各种统计数据。
  2. 插件: RabbitMQ 支持各种插件,这些插件可以提供额外的功能和统计信息。您可以查看 RabbitMQ 官方文档,了解更多关于插件的信息。

总的来说,RabbitMQ 提供了丰富的方式来查看服务器的状态信息,包括 Web 管理界面、命令行工具、HTTP API 接口等。通过监控服务器的状态信息,您可以更好地了解 RabbitMQ 的运行状态,帮助调优和排查问题。

5.6 HTTP API 接口管理

RabbitMQ 提供了 HTTP API 接口,通过这些接口可以方便地对 RabbitMQ 进行管理和监控。API 接口的地址通常为 http://localhost:15672/api/(默认地址),您可以使用 curl 命令或任何 HTTP 客户端库来访问 API 接口。以下是一些常用的 HTTP API 接口和其用法:

  1. 获取队列列表:

GET /api/queues

这个接口用于获取所有队列的列表。返回的 JSON 数据中包含队列的名称、消息数量、消费者数量等信息。

  1. 获取交换机列表:

GET /api/exchanges

这个接口用于获取所有交换机的列表。返回的 JSON 数据中包含交换机的名称、类型、是否持久化等信息。

  1. 获取连接列表:

GET /api/connections

这个接口用于获取当前所有连接的列表。返回的 JSON 数据中包含连接的名称、客户端地址、虚拟主机等信息。

  1. 获取通道列表:

GET /api/channels

这个接口用于获取当前所有通道的列表。返回的 JSON 数据中包含通道的编号、是否活跃、消费者数量等信息。

  1. 获取节点信息:

GET /api/nodes

这个接口用于获取所有节点的信息。返回的 JSON 数据中包含节点的名称、内存使用情况、磁盘使用情况等信息。

  1. 获取队列的消息数量:

GET /api/queues/vhost/queue-name

这个接口用于获取特定队列的消息数量。其中 vhost 是虚拟主机名称,queue-name 是队列名称。

  1. 获取队列的消息详情:

GET /api/queues/vhost/queue-name/get

这个接口用于从队列中获取消息的详细信息。其中 vhost 是虚拟主机名称,queue-name 是队列名称。

通过 HTTP API 接口,您可以通过编程的方式访问 RabbitMQ 的状态信息,并根据需要进行监控和管理。请注意,为了安全性考虑,API 接口需要进行身份验证。您需要使用 RabbitMQ 的用户名和密码进行认证,可以通过添加 HTTP 头信息 Authorization: Basic base64encode(username:password) 来实现认证。

同时,使用 API 接口时需谨慎处理敏感信息,避免泄露敏感数据,建议仅在受信任的环境中使用 API 接口。在编程时,您可以使用脚本、HTTP 客户端库或 REST 客户端库来访问 API 接口,以便更方便地进行监控和管理 RabbitMQ。

5.7 小结

本章介绍了 RabbitMQ 的管理特性,包括多租户与权限、用户管理、Web 端管理、应用与集群管理、服务端状态和 HTTP API 接口管理等内容。在下一章中,我们将学习 RabbitMQ 的配置,包括环境变量、配置文件、参数及策略等内容。

相关文章:

RabbitMQ 教程 | 第5章 RabbitMQ 管理

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…...

LLM微调 | Adapter: Parameter-Efficient Transfer Learning for NLP

目的:大模型预训练+微调范式,微调成本高。adapter只只微调新增的小部分参数【但adapter增加了模型层数,引入了额外的推理延迟。】 Adapters最初来源于CV领域的《Learning multiple visual domains with residual adapters》一文,其核心思想是在神经网络模块基础上添加一些残…...

在idea中添加try/catch的快捷键

在idea中添加try/catch的快捷键 在idea中添加try/catch的快捷键 ctrlaltt 选中想被try/catch包围的语句&#xff0c;同时按下ctrlaltt&#xff0c; 出现下图 选择try/catch即可。...

企业级开发中协同开发与持续集成持续部署

文章目录 1 创建代码仓库2 使用git协同开发2.1 独立团队开发2.2 多团队开发git工作流 2 持续集成和持续部署2.1 创建docker镜像2.2 使用coding构建 1 创建代码仓库 每个项目有唯一的代码仓库&#xff0c;所以不是每个开发者都需要创建一个代码仓库&#xff0c;一般都是项目负责…...

九五从零开始的运维之路(其二十八)

文章目录 前言一、概述二、用户权限类型三、用户赋权四、权限删除五、用户删除六、刷新权限&#xff1a;七、修改用户密码总结 前言 本篇将简述的内容&#xff1a;Linux系统下的MySQL服务用户权限管理 一、概述 数据库用户权限管理是数据库系统中非常重要的一个方面&#xff…...

iOS--Runloop

Runloop概述 一般来说&#xff0c;一个线程一次只能执行一个任务&#xff0c;执行完成后线程就会退出。就比如之前学OC时使用的命令行程序&#xff0c;执行完程序就结束了。 而runloop目的就是使线程在执行完一次代码之后不会结束程序&#xff0c;而是使该线程处于一种休眠的状…...

Doccano工具安装教程/文本标注工具/文本标注自己的项目/NLP分词器工具/自然语言处理必备工具/如何使用文本标注工具

这篇文章是专门的安装教程&#xff0c;后续的项目创建&#xff0c;如何使用&#xff0c;以及代码部分可以参考这篇文章&#xff1a; NER实战&#xff1a;(NLP实战/命名实体识别/文本标注/Doccano工具使用/关键信息抽取/Token分类/源码解读/代码逐行解读)_会害羞的杨卓越的博客-…...

windows系统之WSL 安装 Ubuntu

WSL windows10 以上才有这个wsl功能 WSL&#xff1a; windows Subsystem for Linux 是应用于Windows系统之上的Linux子系统 作用很简单&#xff0c;可以在Windows系统中获取Linux系统环境&#xff0c;并完全直连计算机硬件&#xff0c;无需要通过虚拟机虚拟硬件 Windows10的W…...

洛谷题解 | P1046 陶陶摘苹果

目录 题目描述 输入格式 输出格式 输入输出样例 说明/提示 AC代码 题目描述 陶陶家的院子里有一棵苹果树&#xff0c;每到秋天树上就会结出 1010 个苹果。苹果成熟的时候&#xff0c;陶陶就会跑去摘苹果。陶陶有个 3030 厘米高的板凳&#xff0c;当她不能直接用手摘到苹果…...

记一次Apache HTTP Client问题排查

现象 通过日志查看&#xff0c;存在两种异常情况。第一种&#xff1a;开始的时候HTTP请求会报超时异常。 762663363 [2023-07-21 06:04:25] [executor-64] ERROR - com.xxl.CucmTool - CucmTool|sendRisPortSoap error,url:https://xxxxxx/realtimeservice/services/RisPort o…...

Linux获取文件属性

以-rw-rw-r-- 1 ubuntu ubuntu 56 八月 1 19:37 1.txt 为例 一、stat函数 功能&#xff1a;获取文件的属性 函数原型&#xff1a; #include <sys/types.h> #include <sys/stat.h> #include <unistd.h>int stat(const char *pathname, struct stat *stat…...

String字符串拼接

String字符串拼接 1.简介2.StringBuilder2.1StringBuilder介绍2.2使用说明 3.StringBuffer4.StringJoiner5.String.Join() 1.简介 对于String来说是不可变的&#xff0c;使用修改字符串是在不断地创建新的字符串对象&#xff0c;而不是在原有的对象上修改的。并且对于字符串的…...

在矩池云使用Llama2-7B的具体方法

今天给大家分享如何在矩池云服务器使用 Llama2-7b模型。 硬件要求 矩池云已经配置好了 Llama 2 Web UI 环境&#xff0c;显存需要大于 8G&#xff0c;可以选择 A4000、P100、3090 以及更高配置的等显卡。 租用机器 在矩池云主机市场&#xff1a;https://matpool.com/host-m…...

API教程:轻松上手HTTP代理服务!

作为HTTP代理产品供应商&#xff0c;我们为您带来一份详细的教程&#xff0c;帮助您轻松上手使用API&#xff0c;并充分利用HTTP代理服务。无论您是开发人员、网络管理员还是普通用户&#xff0c;本教程将为您提供操作指南和代码模板&#xff0c;确保您能够顺利使用API并享受HT…...

脑网络通信:概念、模型与应用——Brain network communication: concepts, models and applications

脑网络通信:概念、模型与应用 介绍神经系统是通信网络从图论到大脑网络通信大脑网络通信模型和测量的分类法路由协议最短路径路由导航扩散过程广播(可通信性)参数模型线性阈值模型偏向性随机游走最短路径集合当前和新兴的应用将大脑结构与功能关联起来认知和临床表型的个体间…...

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

oracle数据库dbLink的使用

Oracle的数据库链路&#xff08;dbLink&#xff09;是一种允许在两个不同的数据库实例之间进行通信和数据交换的功能。它可以让你在一个数据库中访问另一个数据库的对象和数据&#xff0c;就像它们属于同一个数据库一样。 创建一个link: CREATE public DATABASE LINK link_sco…...

Coremail中睿天下|2023年第二季度企业邮箱安全态势观察

7月24日&#xff0c;Coremail邮件安全联合中睿天下发布《2023第二季度企业邮箱安全性研究报告》&#xff0c;对2023第二季度和2023上半年的企业邮箱的安全风险进行了分析。 一、垃圾邮件同比下降16.38% 根据Coremail邮件安全人工智能实验室&#xff08;以下简称AI实验室&#…...

ZooKeeper分布式锁、配置管理、服务发现在Java开发中的应用

ZooKeeper提供了多种功能&#xff0c;包括分布式锁、配置管理、服务发现、领导选举等。 下面是一些常见的ZooKeeper功能及其在Java中的应用示例代码。 分布式锁 import org.apache.zookeeper.*; import java.io.IOException; import java.util.concurrent.CountDownLatch;pu…...

openGauss学习笔记-27 openGauss 高级数据管理- JOIN

文章目录 openGauss学习笔记-27 openGauss 高级数据管理- JOIN27.1 交叉连接27.2 内连接27.3 左外连接27.4 右外连接27.5 全外连接 openGauss学习笔记-27 openGauss 高级数据管理- JOIN JOIN子句用于把来自两个或多个表的行结合起来&#xff0c;基于这些表之间的共同字段。 在…...

域名解析优先级

浏览器访问过程解析 访问网址——>首先在本地电脑看看hosts里面是否有域名对应IP地址&#xff0c;如何有直接访问对应IP&#xff0c; 如果没有&#xff0c;则联网询问DNS服务器&#xff08;一般网卡那边都配置了DNS服务器IP&#xff09; linux hosts 路径&#xff1a; w…...

【Opencv】视频跟踪算法KCF

目录 KCF算法简介opencv实现代码copencv实现代码python KCF算法简介 KCF&#xff08;Kernelized Correlation Filter&#xff09;是一种基于核相关滤波器的目标跟踪算法。它通过学习目标的外观特征和使用核相关滤波器进行目标定位。KCF属于传统算法的单目标跟踪器。下面是对KC…...

后端整理(集合框架、IO流、多线程)

1. 集合框架 Java集合类主要有两个根接口Collection和Map派生出来 Collection派生两个子接口 List List代表了有序可重复集合&#xff0c;可以直接根据元素的索引进行访问Set Set代表无序不可重复集合&#xff0c;只能根据元素本身进行访问 Map接口派生 Map代表的是存储key…...

C++ 类和对象篇(二) this指针

目录 一、this指针概念 二、this指针的特性 三、this指针存在哪里&#xff1f; 四、this指针可以为空吗&#xff1f; 一、this指针概念 1.是什么&#xff1f; 它是类内非静态成员函数的隐含形参&#xff0c;this指针指向调用该函数的对象。 this指针是C编译器给每个“非静态…...

Excel快捷键F1-F9详解:掌握实用快捷操作,提升工作效率

Excel是广泛应用于办公场景的优质电子表格软件&#xff0c;然而&#xff0c;许多人只是使用鼠标点击菜单和工具栏来完成操作&#xff0c;而忽略了快捷键的威力。在本文中&#xff0c;我们将详解Excel中的F1-F9快捷键&#xff0c;帮助您掌握实用的快捷操作&#xff0c;提升工作效…...

Webpack 安装教程

Webpack 是一个前端资源加载/打包工具。 安装 Webpack 使用 cnpm 安装 webpack&#xff1a; cnpm install webpack -g 创建项目 接下来我们创建一个目录 app&#xff1a; mkdir app 在 app 目录下添加 runoob1.js 文件&#xff0c;代码如下&#xff1a; app/runoob1.js 文件…...

移远通信首批加入“5G+eSIM计算终端产业合作计划”,助力大屏移动终端全时在线

7月29日&#xff0c;在全球数字娱乐产业盛会 ChinaJoy上&#xff0c;中国联通携手高通公司、GSMA发布了“5GeSIM 计算终端产业合作计划”。 作为全球领先的物联网整体解决方案供应商&#xff0c;移远通信首批加入该计划&#xff0c;副总经理刘明辉受邀参加5GeSIM 计算终端产业合…...

全网最强大的工具箱—utools介绍及分享

今天来介绍一个相见恨晚的PC端工具——utools&#xff0c;什么是utools&#xff1f;用其自身的话来说&#xff1a;“uTools是一个极简、插件化、跨平台的现代化桌面软件。通过自由选配丰富的插件&#xff0c;打造你得心应手的工具集合。”,体验了下&#xff0c;好用且强大&…...

Linux常用基础命令❀

文章目录❀ ❀ls命令 ❀cd命令 ❀pwd命令 ❀date命令 ❀创建、删除文件和目录命令 ❀alias命令 ❀复制、移动、重命名、查看&#xff08;文件、目录&#xff09;命令 ❀find查找、wc统计命令 ❀vi/vim命令 1、打开文件 2、工作模式 vi与vim的四个模式 进入编辑模式…...

SQL-进阶

mysql --local-infile -u root -pset global local_infile 1;load data local infile 目录 into able 表名 fields terminated by , lines terminated by \n;...