环境搭建——Mysql、Redis、Rocket MQ部署

前言

        在搭建分布式系统时,MySQL、Redis 和 RocketMQ 是常用的基础服务。每个服务各自的功能不同,但它们在数据存储、缓存、消息队列等方面不可或缺。如果你是初学者,别担心,本文会一步步详细教你如何在服务器上通过 Docker 部署这些服务。

为什么使用 Docker?

  1. 统一部署环境
    Docker 可以在不同的操作系统上提供一致的运行环境,避免因为环境差异导致的问题。

  2. 快速部署和管理
    使用 Docker,只需配置简单的 docker-compose.yml 文件,就能快速启动或停止服务。

  3. 轻松实现数据持久化
    借助挂载功能,你可以把重要的数据保存到服务器磁盘,即使容器被销毁,数据依然安全。

开始之前的准备

在开始部署之前,我们需要完成以下准备工作:

  1. 购买服务器
    如果还没有服务器,可以选择腾讯云、阿里云等平台购买一个服务器。服务器的推荐配置:

    • 操作系统:CentOS 7(或更高版本)
    • CPU和内存:根据项目需求选择,一般 2 核 4GB 足够。
  2. 设置登录方式:密钥登录
    密钥登录比密码登录更加安全且便捷,以下是具体操作:

    • 在本地生成公钥和私钥,私钥会保存在你的电脑上。
    • 在云服务商的管理页面,上传公钥到服务器。
    • 使用工具(如 Xshell)通过私钥登录服务器。
  3. 安装 Docker 和 Docker Compose
    确保服务器上已经安装了 Docker 和 Docker Compose。它们是部署服务容器的核心工具。如果还没安装,可以参考之前的教程。

第一部分:部署前的准备工作

        在正式部署 MySQL、Redis 和 RocketMQ 之前,我们需要完成一些准备工作,以确保后续操作顺利进行。以下是详细步骤和原因说明。

1. 购买服务器

操作步骤:

  1. 打开云服务提供商(例如腾讯云、阿里云)官网。
  2. 注册或登录你的账号。
  3. 按需选择服务器配置,例如:
    • 操作系统:推荐 CentOS 7 或更高版本。
    • 配置:2 核 4GB 内存即可满足初学者的需求,存储大小视项目需求选择。
  4. 支付完成后,记录服务器的 公网 IP 地址,稍后需要用到。

为什么需要服务器?
本地电脑虽然也能运行 Docker,但外部设备无法直接访问。而服务器提供公网 IP,能让其他设备通过网络访问我们的服务。

2. 配置密钥登录(推荐)

为了安全起见,我们使用 密钥对 登录服务器,而不是传统的用户名和密码方式。

操作步骤:

  1. 在本地生成密钥对:

    • 打开命令行工具(Windows 用户可使用 Git Bash 或 PowerShell)。
    • 输入以下命令生成密钥对:
      ssh-keygen -t rsa -b 2048 -C "your_email@example.com"
      
    • 按提示选择保存路径,默认会保存在 ~/.ssh/id_rsa
    • 密钥对生成后,会得到两个文件:
      • id_rsa:这是私钥,请保存在本地,不能泄露。
      • id_rsa.pub:这是公钥,用于上传到服务器。
  2. 将公钥上传到云服务商:

    • 在云服务商管理控制台找到密钥管理安全组设置
    • id_rsa.pub 文件内容复制并上传。
    • 保存设置。
  3. 使用密钥登录服务器:

    • 打开 Xshell 或类似的远程连接工具。
    • 新建会话,输入服务器的公网 IP。
    • 登录方式选择“密钥”,导入生成的私钥 id_rsa
    • 点击连接,成功后即可进入服务器。

为什么使用密钥登录?
密钥登录比用户名密码更安全,因为即使别人知道你的用户名,也无法登录服务器,没有私钥就没法通过验证。

3. 安装 Docker 和 Docker Compose

我们使用 Docker 来运行服务容器,Docker Compose 用于批量管理多个容器。

操作步骤:

  1. 安装 Docker:

    • 运行以下命令安装 Docker:
      yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
      yum install -y docker-ce
      
    • 启动 Docker 服务并设置开机自启:
      service docker start
      chkconfig docker on
      
  2. 测试 Docker 是否安装成功:

    • 执行以下命令,查看 Docker 版本信息:
      docker version
      
    • 如果显示 Docker 的客户端和服务端信息,则说明安装成功。
  3. 安装 Docker Compose:

    • 下载 Docker Compose 二进制文件:
      curl -L "https://github.com/docker/compose/releases/download/2.12.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
      
    • 为文件赋予可执行权限:
      chmod +x /usr/local/bin/docker-compose
      
    • 测试安装是否成功:
      docker-compose --version
      
    • 如果显示版本信息,说明安装完成。

为什么需要安装 Docker 和 Docker Compose?
Docker 提供了轻量级虚拟化,用来运行独立的服务容器,而 Docker Compose 则能更方便地管理和编排多个容器。

4. 配置国内镜像加速

由于网络原因,直接使用官方镜像下载可能会很慢。我们通过配置国内镜像加速来提升速度。

操作步骤:

  1. 编辑 Docker 配置文件:
    vi /etc/docker/daemon.json
    
  2. 添加以下内容:
    {"registry-mirrors": ["https://mirror.ccs.tencentyun.com"],"live-restore": true
    }
    
  3. 重启 Docker 服务使配置生效:
    systemctl daemon-reload
    service docker restart
    
  4. 验证镜像加速是否生效:
    docker info
    
    检查输出中是否有 "Registry Mirrors" 一项,包含腾讯云的加速地址。

为什么要配置镜像加速?
国内网络环境可能导致从国外服务器下载镜像非常慢,配置国内镜像后速度会更快。

第二部分:MySQL 部署

        MySQL 是一个常用的关系型数据库管理系统,用于存储和管理项目中的核心数据。接下来,我们一步步在服务器上部署 MySQL,并确保可以通过客户端工具进行连接测试。

1. 创建挂载目录

在 Docker 中运行 MySQL 时,数据存储默认在容器内部。为了避免容器删除后数据丢失,我们需要将数据文件挂载到服务器的本地目录。

操作步骤:

  1. 登录到服务器。
  2. 创建一个用于存储 MySQL 数据的目录:
    mkdir -p /data/mysql/data
    mkdir -p /data/mysql/conf
    mkdir -p /data/mysql/logs
    
    • /data/mysql/data:存储数据库的数据文件。
    • /data/mysql/conf:存放 MySQL 的配置文件。
    • /data/mysql/logs:存储 MySQL 的日志文件。

为什么要创建这些目录?
挂载本地目录可以保证 MySQL 数据持久化,即使容器被删除,数据也不会丢失。

2. 创建 Docker Compose 配置文件

我们通过 Docker Compose 来管理 MySQL 容器。首先,我们需要编写 docker-compose.yml 文件。

操作步骤:

  1. /data/mysql 目录下创建 docker-compose.yml 文件:
    vi /data/mysql/docker-compose.yml
    
  2. 在文件中填写以下内容:
    version: '3.8'
    services:mysql:image: mysql:8.0container_name: mysqlports:- "3306:3306"  # 将服务器的3306端口映射到容器的3306端口environment:MYSQL_ROOT_PASSWORD: root  # 设置MySQL的root用户密码volumes:- /data/mysql/data:/var/lib/mysql  # 挂载数据目录- /data/mysql/conf:/etc/mysql/conf.d  # 挂载配置目录- /data/mysql/logs:/var/log/mysql  # 挂载日志目录restart: always
    
    • image:指定使用的 MySQL 镜像版本。
    • ports:将容器的端口映射到服务器。
    • environment:设置环境变量,例如数据库的 root 用户密码。
    • volumes:挂载本地目录到容器内部的路径。

为什么需要 docker-compose.yml 文件?
这个文件定义了 MySQL 容器的运行配置,便于后续通过 Docker Compose 管理和维护。

3. 启动 MySQL 容器

完成配置文件后,我们可以启动 MySQL 服务。

操作步骤:

  1. 进入 /data/mysql 目录:

    cd /data/mysql
    
  2. 使用 Docker Compose 启动 MySQL 容器:

    docker-compose up -d
    
    • -d 参数表示以后台模式运行容器。
  3. 查看运行状态:

    docker ps
    

    如果看到 mysql 容器正在运行,说明 MySQL 启动成功。

为什么需要使用 docker-compose up 命令?
这个命令根据 docker-compose.yml 文件的配置,启动 MySQL 容器并保持后台运行。

4. 配置防火墙规则

为了使本地客户端可以连接到 MySQL,需要在云服务器控制台中配置防火墙规则,允许 3306 端口访问。

操作步骤:

  1. 登录云服务商控制台,找到 安全组 设置。
  2. 添加一条规则,允许 3306 端口的 TCP 流量访问。
  3. 保存设置。

为什么要配置防火墙规则?
防火墙默认禁止外部访问服务器的端口。通过添加规则,我们允许本地电脑通过网络连接到 MySQL。

5. 测试 MySQL 连接

我们使用数据库管理工具(如 Navicat Premium)来测试连接。

操作步骤:

  1. 打开 Navicat,新建一个连接:
    • 类型:MySQL
    • 主机:服务器公网 IP
    • 端口:3306
    • 用户名:root
    • 密码:root(与 docker-compose.yml 中的配置一致)
  2. 点击“测试连接”,如果显示连接成功,说明配置无误。
  3. 连接成功后,右键连接,新建一个数据库(例如 test_db),以确保 MySQL 可以正常使用。

为什么要测试连接?
通过客户端工具测试连接,可以确认 MySQL 是否正常运行,并验证网络连接是否配置正确。

第三部分:Redis 部署

        Redis 是一个高性能的键值对存储数据库,常用作缓存、消息队列或者会话存储。我们将逐步部署 Redis 并进行连接测试。

1. 创建挂载目录

和 MySQL 一样,Redis 运行时的数据默认存储在容器内部。为了保证数据持久化,我们需要创建挂载目录。

操作步骤:

  1. 登录到服务器。
  2. 创建用于 Redis 的数据和配置目录:
    mkdir -p /data/redis/data
    mkdir -p /data/redis/conf
    
    • /data/redis/data:存储 Redis 的数据文件。
    • /data/redis/conf:存放 Redis 的配置文件。

为什么要创建挂载目录?
挂载本地目录可以避免容器删除后丢失数据,方便迁移或备份。

2. 创建 Redis 配置文件

Redis 启动时需要一个配置文件,我们手动创建并配置。

操作步骤:

  1. /data/redis/conf 目录下创建配置文件:
    vi /data/redis/conf/redis.conf
    
  2. 添加以下配置内容:
    bind 0.0.0.0       # 允许所有 IP 访问 Redis
    protected-mode no  # 关闭保护模式,允许外部访问
    port 6379          # Redis 默认端口
    dir /data/redis/data # 数据存储目录
    appendonly yes     # 启用 AOF 持久化机制
    
    • bind:设置允许访问 Redis 的 IP 地址。
    • protected-mode:关闭保护模式以便外部设备访问。
    • appendonly:开启持久化,保证数据在服务重启后不会丢失。

为什么需要 Redis 配置文件?
Redis 配置文件定义了服务的运行参数,如端口、存储路径等,确保服务运行符合需求。

3. 创建 Docker Compose 配置文件

接下来,我们编写 docker-compose.yml 文件,定义 Redis 容器的运行环境。

操作步骤:

  1. /data/redis 目录下创建 docker-compose.yml 文件:
    vi /data/redis/docker-compose.yml
    
  2. 添加以下内容:
    version: '3.8'
    services:redis:image: redis:6.2container_name: redisports:- "6379:6379"  # 将 Redis 容器的6379端口映射到服务器volumes:- /data/redis/data:/data  # 挂载数据目录- /data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf  # 挂载配置文件command: ["redis-server", "/usr/local/etc/redis/redis.conf"]restart: always
    
    • image:指定 Redis 的镜像版本。
    • volumes:挂载本地目录到容器内部路径。
    • command:指定 Redis 启动时加载配置文件。

为什么需要 docker-compose.yml 文件?
它定义了 Redis 容器的运行环境和挂载目录,方便管理和维护。

4. 启动 Redis 容器

完成配置后,我们启动 Redis 服务。

操作步骤:

  1. 进入 /data/redis 目录:

    cd /data/redis
    
  2. 启动 Redis 容器:

    docker-compose up -d
    
    • -d 参数让容器在后台运行。
  3. 查看 Redis 容器状态:

    docker ps
    

    如果看到 redis 容器正在运行,说明启动成功。

为什么需要 docker-compose up 命令?
它根据 docker-compose.yml 文件配置启动 Redis 容器,并使其运行在后台。

5. 配置防火墙规则

为了让外部客户端能够连接 Redis,需要开放服务器的 6379 端口。

操作步骤:

  1. 登录云服务商控制台,找到 安全组
  2. 添加一条规则,允许 6379 端口的 TCP 流量访问。
  3. 保存设置。

为什么需要配置防火墙?
默认情况下,云服务器的端口是关闭的。通过配置防火墙规则,我们允许外部设备访问 Redis。

6. 测试 Redis 连接

我们使用客户端工具(如 Another Redis Desktop Manager)测试 Redis 的连接。

操作步骤:

  1. 打开客户端工具,新建一个 Redis 连接:
    • 地址:服务器公网 IP
    • 端口:6379
    • 密码:无(默认不设置密码)
  2. 点击“测试连接”,如果显示成功,说明 Redis 已正确运行。
  3. 在客户端中,尝试执行以下命令测试读写功能:
    set test_key "Hello Redis"
    get test_key
    
    如果返回值为 "Hello Redis",说明 Redis 功能正常。

为什么要测试 Redis 连接?
通过测试连接和执行命令,可以验证 Redis 是否部署成功,并确保网络配置无误。

第四部分:RocketMQ 部署

        RocketMQ 是一款高性能的分布式消息队列系统,常用于异步通信、流处理和事件驱动架构中。接下来我们将分步部署 RocketMQ 服务。

1. 创建挂载目录

为了确保数据和配置的持久化,第一步是创建 RocketMQ 所需的挂载目录。

操作步骤:

  1. 登录服务器。
  2. 执行以下命令创建挂载目录:
    mkdir -p /data/rocketmq/{logs,store,conf}
    
    • /data/rocketmq/logs:存储 RocketMQ 的日志文件。
    • /data/rocketmq/store:存储消息数据。
    • /data/rocketmq/conf:存储 RocketMQ 的配置文件。

为什么要创建挂载目录?
挂载目录可以防止容器停止或删除后丢失重要数据,方便后续迁移或恢复。

2. 创建 RocketMQ 配置文件

RocketMQ 服务由两个主要组件组成:

  • NameServer:管理和路由消息队列。
  • Broker:负责消息的存储和传递。

我们需要分别为 NameServer 和 Broker 创建配置文件。

操作步骤:

  1. /data/rocketmq/conf 目录下创建 broker.conf 文件:
    vi /data/rocketmq/conf/broker.conf
    
  2. 添加以下内容:
    brokerClusterName = DefaultCluster
    brokerName = broker-a
    brokerId = 0
    deleteWhen = 04
    fileReservedTime = 48
    flushDiskType = ASYNC_FLUSH
    storePathRootDir = /data/rocketmq/store
    storePathCommitLog = /data/rocketmq/store/commitlog
    namesrvAddr = localhost:9876
    
    • brokerClusterName:指定集群名称。
    • brokerId:0 表示主节点,非 0 表示从节点。
    • deleteWhen:指定日志删除时间,默认每天凌晨 4 点。
    • flushDiskType:异步刷盘,提升性能。
    • namesrvAddr:NameServer 地址。

为什么需要配置文件?
RocketMQ 的配置文件定义了服务的关键参数,包括集群信息、存储路径和刷盘策略,确保服务正常运行。

3. 创建 Docker Compose 配置文件

使用 Docker Compose 管理 RocketMQ 的服务部署,包括 NameServer 和 Broker。

操作步骤:

  1. /data/rocketmq 目录下创建 docker-compose.yml 文件:
    vi /data/rocketmq/docker-compose.yml
    
  2. 添加以下内容:
    version: '3.8'
    services:namesrv:image: apache/rocketmq:4.9.4container_name: rmq-namesrvports:- "9876:9876"volumes:- /data/rocketmq/logs:/home/rocketmq/logs- /data/rocketmq/store:/home/rocketmq/storecommand: ["sh", "-c", "cd /home/rocketmq && bin/mqnamesrv"]restart: alwaysbroker:image: apache/rocketmq:4.9.4container_name: rmq-brokerports:- "10911:10911"- "10909:10909"volumes:- /data/rocketmq/logs:/home/rocketmq/logs- /data/rocketmq/store:/home/rocketmq/store- /data/rocketmq/conf/broker.conf:/home/rocketmq/conf/broker.confcommand: ["sh", "-c", "cd /home/rocketmq && bin/mqbroker -c /home/rocketmq/conf/broker.conf"]depends_on:- namesrvrestart: always
    
    • NameServer 映射端口 9876,负责路由和管理。
    • Broker 映射端口 10911(数据传输)和 10909(管理)。

为什么使用 Docker Compose?
通过 Docker Compose,可以一键启动 NameServer 和 Broker,并且管理起来更加方便。

4. 授权挂载目录权限

RocketMQ 容器需要访问挂载目录,因此必须确保正确的权限。

操作步骤:

  1. 为挂载目录授权:
    chmod -R 777 /data/rocketmq
    
  2. 确保 RocketMQ 容器能正常读取和写入这些目录。

为什么要设置权限?
挂载目录权限不足会导致容器无法读写数据,从而导致服务无法正常运行。

5. 启动 RocketMQ 服务

完成所有配置后,我们可以启动 RocketMQ 的 NameServer 和 Broker 服务。

操作步骤:

  1. 进入 RocketMQ 的目录:
    cd /data/rocketmq
    
  2. 启动容器:
    docker-compose up -d
    
  3. 查看容器运行状态:
    docker ps
    
    • 确认 rmq-namesrvrmq-broker 容器都在运行。

为什么需要检查容器状态?
确认服务启动正常,避免配置错误导致服务异常。

6. 配置防火墙规则

为了让外部客户端能够访问 RocketMQ 服务,需要开放以下端口:

  • NameServer:9876
  • Broker:1091110909

操作步骤:

  1. 登录云服务商控制台,找到 安全组
  2. 添加以下规则:
    • TCP 端口98761091110909
    • 源 IP:允许所有或指定 IP。

为什么需要配置防火墙?
防火墙规则允许外部客户端访问服务,确保消息队列正常通信。

7. 测试 RocketMQ 服务

我们通过 RocketMQ Console 或客户端工具测试服务是否部署成功。

操作步骤:

  1. 启动 RocketMQ Console:
    • 配置 Console 的用户名密码和 NameServer 地址。
    • 浏览器访问 http://<服务器IP>:8080
  2. 使用客户端测试消息发布与消费:
    • 发布消息到某个主题。
    • 消费者订阅该主题并接收消息。

为什么要测试服务?
通过测试验证 RocketMQ 是否正常运行,并确保服务能满足实际业务需求。

第五部分:总结

1. 部署完成的验证

        在完成 MySQL、Redis 和 RocketMQ 的部署后,确保每个服务都能正常运行是至关重要的。以下是验证步骤:

  • MySQL:通过 Navicat Premium 或其他数据库客户端连接到 MySQL 服务,测试能否正常建立连接并进行操作,如创建数据库、插入数据等。
  • Redis:使用 Another Redis 或直接通过命令行工具进行连接测试,确保能执行 SETGET 操作。也可以通过浏览器访问指定端口来验证服务是否正常。
  • RocketMQ:通过 RocketMQ Console 或客户端工具连接到 RocketMQ 服务,测试消息发布和消费功能是否正常,确保消息队列能够正常工作。

同时,防火墙配置要确保外部访问能够顺利连接服务:

  • 在腾讯云等云平台上,需要为 MySQL、Redis 和 RocketMQ 所需的端口设置正确的安全组规则,允许外部 IP 进行访问。

挂载目录配置的合理性也是一个关键:

  • 确保容器挂载目录的配置正确,并且具有足够的权限来确保数据的持久化。这不仅有助于保证服务的稳定性,也能在需要迁移时简化操作。

2. 经验分享与问题处理

在部署过程中,可能会遇到一些常见问题,以下是一些问题及其解决方法:

  • 端口冲突:如果在启动容器时遇到端口冲突,确保没有其他服务占用了相同端口。可以通过更改 Docker Compose 配置文件中的端口映射来解决。

    解决方法:修改 docker-compose.yml 文件中的端口映射(例如,修改 MySQL 的端口为其他未占用的端口)。

  • 权限不足:如果出现容器无法访问挂载目录的情况,可能是由于权限不足导致的。确保目录的读写权限已正确设置。

    解决方法:执行 chmod -R 777 /data/rocketmq 等命令来赋予相应的权限,确保容器能够访问目录。

  • 容器无法启动:容器启动失败通常是由于配置错误或资源不足引起的。可以通过查看容器日志来排查问题。

    解决方法:使用 docker logs <container_name> 查看容器日志,分析错误信息,并根据错误提示调整配置文件或资源设置。

通过日志分析和容器状态检查,可以快速定位问题的根本原因并进行修复。

3. 总结

通过本次教程,我们完成了 MySQL、Redis 和 RocketMQ 的部署,并确保它们能在 Docker 环境中稳定运行。部署完成后,确保:

  • 服务能够正常连接和操作。
  • 防火墙和挂载目录设置合理,确保数据的持久化和服务的外部可访问性。

        在实际部署过程中,可能会遇到一些常见问题,如端口冲突、权限不足等,通过日志分析和容器状态检查,我们能够有效定位并解决这些问题,确保服务能够平稳运行。

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

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

相关文章

JVM虚拟机的组成 笼统理解 六大部分 类加载子系统 运行时数据区 执行引擎 本地接口 垃圾回收器 线程工具

目录 JVM虚拟机的组成&#xff1a;概述 JVM虚拟机的组成&#xff1a;详细解析 1. 类加载子系统 2. 运行时数据区 3. 执行引擎 4. 本地接口 5. 垃圾回收器 6. 线程管理与调试工具 概述 JVM&#xff08;Java Virtual Machine&#xff09;是一个虚拟计算机&#xff0c;执行…

2025 年 UI 大屏设计新风向

在科技日新月异的 2025 年&#xff0c;UI 大屏设计领域正经历着深刻的变革。随着技术的不断进步和用户需求的日益多样化&#xff0c;新的设计风向逐渐显现。了解并掌握这些趋势&#xff0c;对于设计师打造出更具吸引力和实用性的 UI 大屏作品至关重要。 一、沉浸式体验设计 如…

虚拟拨号技术(GOIP|VOIP)【基于IP的语音传输转换给不法分子的境外来电披上一层外衣】: Voice over Internet Protocol

文章目录 引言I 虚拟拨号技术(GOIP|VOIP)原理特性:隐蔽性和欺骗性II “GOIP”设备原理主要功能III 基于IP的语音传输 “VOIP” (Voice over Internet Protocol)IV “断卡行动”“断卡行动”目的电信运营商为打击电诈的工作V 知识扩展虚拟号保护隐私虚拟运营商被用于拨打骚扰…

算法-查找数组对角线上最大的质数

力扣题目&#xff1a;2614. 对角线上的质数 - 力扣&#xff08;LeetCode&#xff09; 给你一个下标从 0 开始的二维整数数组 nums 。 返回位于 nums 至少一条 对角线 上的最大 质数 。如果任一对角线上均不存在质数&#xff0c;返回 0 。 注意&#xff1a; 如果某个整数大于…

js:正则表达式

目录 正则表达式的语法 定义 检测 检索 元字符 边界符 量词 字符类 表单判断案例 修饰符 过滤敏感词 正则表达式是一种用于匹配和操作文本的强大工具&#xff0c;它是由一系列字符和特殊字符组成的模式&#xff0c;用于描述要匹配的文本字符组合模式 正则表达式是一…

Excel数据叠加生成新DataFrame:操作指南与案例

目录 一、准备工作 二、读取Excel文件 三、数据叠加 四、处理重复数据&#xff08;可选&#xff09; 五、保存新DataFrame到Excel文件 六、案例演示 七、注意事项 八、总结 在日常数据处理工作中&#xff0c;我们经常需要将不同Excel文档中的数据整合到一个新的DataFra…

HarmonyOS NEXT开发进阶(六):HarmonyOS NEXT实现嵌套 H5 及双向通信

文章目录 一、前言二、鸿蒙应用加载Web页面2.1 加载网络地址页面2.2 加载本地H5页面 三、实现Web组件 H5 层与鸿蒙应用层进行相互通讯3.1 鸿蒙应用向 H5 页面发送数据3.2 H5页面向鸿蒙应用发送数据 四、拓展阅读 一、前言 随着HarmonyOS NEXT的快速发展&#xff0c;越来越多的…

Linux Top 命令 load average 指标解读

前言 作为平台开发的同学&#xff0c;维护平台稳定性是我们最基本的工作职责&#xff0c;下面主要介绍下top 命令里 &#xff0c;load average 这个指标如何去衡量机器负载程度。 概念介绍 load average 是系统在过去 1 分钟、5 分钟、15 分钟 的平均负载&#xff0c;它表示运…

uni-app编写微信小程序使用uni-popup搭配uni-popup-dialog组件在ios自动弹出键盘。

uni-popup-dialog 对话框 将 uni-popup 的type属性改为 dialog&#xff0c;并引入对应组件即可使用对话框 &#xff0c;该组件不支持单独使用 示例 <button click"open">打开弹窗</button> <uni-popup ref"popup" type"dialog"…

国产编辑器EverEdit - 扩展脚本:新建同类型文件(避免编程学习者反复新建保存练习文件)

1 扩展脚本&#xff1a;在当前文件目录下新建同类型文件 1.1 应用场景 用户在进行编程语言学习时&#xff0c;比如&#xff1a;Python&#xff0c;经常做完一个小练习后&#xff0c;又需要新建一个文件&#xff0c;在新建文件的时候&#xff0c;不但要选择文件类型&#xff0c…

C#使用OpenTK绘制3D可拖动旋转图形三棱锥

接上篇,绘制着色矩形 C#使用OpenTK绘制一个着色矩形-CSDN博客 上一篇安装OpenTK.GLControl后,这里可以直接拖动控件GLControl 我们会发现GLControl继承于UserControl //// 摘要:// OpenGL-aware WinForms control. The WinForms designer will always call the default//…

【Vue】点击侧边导航栏,右侧main对应显示

需求&#xff1a;点击侧边导航栏&#xff0c;右侧main对应显示 通过v-if或v-show等指令来控制不同内容的显示隐藏来实现 注意&#xff1a; 使用v-if时候进行导航栏切换&#xff0c;右侧显示区域可能会出现样式错乱&#xff1b;使用v-show则不会出现此错误 <template>&…

JAVA:利用 RabbitMQ 死信队列实现支付超时场景的技术指南

1、简述 在支付系统中&#xff0c;订单支付的超时自动撤销是一个非常常见的业务场景。通常用户未在规定时间内完成支付&#xff0c;系统会自动取消订单&#xff0c;释放相应的资源。本文将通过利用 RabbitMQ 的 死信队列&#xff08;Dead Letter Queue, DLQ&#xff09;来实现…

特制一个自己的UI库,只用CSS、图标、emoji图 第二版

图&#xff1a; 代码&#xff1a; index.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>M…

1.14 互斥与同步

1.思维导图 2.有一个隧道&#xff0c;长1000m&#xff0c;有一辆高铁&#xff0c;每秒100米&#xff1b;有一辆快车&#xff0c;每秒50米&#xff1b;要求模拟这两列火车通过隧道的场景。 1>程序代码&#xff1a; #include <stdio.h> #include <string.h> #i…

14.STM32F407ZGT6-SPI

参考&#xff1a; 1.正点原子 前言&#xff1a; SPI一般用在中高速的外围器件上&#xff0c;如FLASH, GPS模块等。很常用的一种通信方式&#xff0c;学习总结很有必要。 1.SPI的概念及时序。 2.通过SPI操作Flash芯片。 37.1 SPI 及 NOR Flash 介绍 37.1.1 SPI 介绍 我们将从…

基于SpringBoot的中华诗词赏析文化交流平台

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

GPU算力平台|在GPU算力平台部署Qwen-2通义千问大模型的教程

文章目录 一、GPU平台介绍算力平台概述 二、人工智能应用开发需要GPU算力平台GPU算力原理账号注册流程Qwen-2通义千问大模型的部署登录/注册选择SettingsURL配置选择模型部署完成进行问答 一、GPU平台介绍 算力平台概述 GPU算力平台是一个专注于GPU加速计算的专业云服务平台&…

微信小程序集成Vant Weapp移动端开发的框架

什么是Vant Weapp Vant 是一个轻量、可靠的移动端组件库&#xff0c;于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本&#xff0c;并由社区团队维护 React 版本和支付宝小程序版本。 官网地睛&#xff1a;介绍 - Vant Weapp (vant-ui.gith…

图形和动画本地化

图形和动画本地化是多媒体改编的一个关键方面&#xff0c;需要对技术技能和文化细微差别有深入的理解。当由母语人士和设计师进行时&#xff0c;这一过程达到了自动化系统通常无法复制的真实性和相关性水平。 本土专业人士对文化偏好、象征主义和视觉美学有着固有的理解&#…