MySQL 主从复制搭建全流程:基于 Docker 与 Harbor 仓库
一、引言
在数据库管理中,MySQL 主从复制是一种非常重要的技术,它可以实现数据的备份、读写分离,减轻主数据库的压力。本文将详细介绍如何使用 Docker 和 Harbor 仓库来搭建 MySQL 主从复制环境,适合刚接触数据库和 Docker 的新手学习。
二、MySQL 主从复制原理
2.1 基本概念
主从复制是指一台服务器充当主数据库服务器(Master),另一台或多台服务器充当从数据库服务器(Slave),主服务器中的数据会自动复制到从服务器之中。对于多级复制,数据库服务器既可以充当主机,也可以充当从机。MySQL 主从复制的基础是主服务器对数据库修改记录二进制日志,从服务器通过主服务器的二进制日志自动执行更新。
2.2 角色职责
- 主数据库(Master):负责处理写操作和更新数据,是业务操作的主要入口。
- 从数据库(Slave):复制主数据库的数据,通常用于读操作和数据备份,以减轻主数据库的压力。
2.3 复制流程
- 主库记录并发送日志:
- 当主库发生更新事件(如
UPDATE
、INSERT
、DELETE
、CREATE
)时,这些操作会被顺序地写入二进制日志(binlog
)中。 - 主库会开启一个
binlog dump
线程,负责将binlog
日志中的事件发送给从库。
- 当主库发生更新事件(如
- 从库接收并写入中继日志:
- 从库通过
IO
线程连接到主库,并请求binlog
日志的内容。 - 主库的
binlog dump
线程将binlog
日志中的事件发送给从库的IO
线程。 - 从库的
IO
线程接收这些事件,并将其写入到从库的中继日志(relay log
)中。
- 从库通过
- 从库同步数据:
- 从库开启一个
SQL
线程,实时监控relay log
的内容是否有更新。 SQL
线程解析relay log
中的SQL
语句,并在从库上执行这些语句,从而实现数据的同步。
- 从库开启一个
三、拉取 MySQL 镜像
3.1 从 Harbor 仓库拉取镜像
可以使用以下命令从 Harbor 仓库拉取 MySQL 9.3.0 版本的镜像:
[root@mysql docker]# docker pull harbor.registry.com/library/mysql:9.3.0
参数解释:
docker pull
:用于从镜像仓库中拉取镜像。harbor.registry.com/library/mysql:9.3.0
:指定要拉取的镜像的地址和版本,harbor.registry.com
是 Harbor 仓库的地址,library/mysql
是镜像的名称,9.3.0
是镜像的版本号。
如果没有仓库,可以直接执行这个命令:
docker pull mysql:9.3.0
尝试从 Docker Hub(官方 Docker 镜像仓库)拉取 mysql
镜像的 9.3.0
版本。Docker Hub 是 Docker 官方的公共镜像仓库,当你使用 docker pull
命令并且不指定具体仓库地址时,Docker 客户端默认会从 Docker Hub 拉取镜像。
3.2 检查镜像是否拉取成功
使用以下命令查看本地镜像列表:
[root@mysql docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
harbor.registry.com/library/mysql 9.3.0 2c849dee4ca9 5 weeks ago 859MB
参数解释:
docker images
:用于列出本地所有的镜像,显示镜像的仓库名、标签、镜像 ID、创建时间和大小等信息。
3.3 处理拉取镜像时的 TLS 证书验证失败问题
如果在使用 docker pull
命令拉取镜像时,由于 TLS 证书验证失败导致报错,例如:
[root@mysql docker]# docker pull harbor.registry.com/library/mysql:9.3.0
Error response from daemon: Get "https://harbor.registry.com/v2/": tls: failed to verify certificate: x509: certificate signed by unknown authority
可以创建 /etc/docker/daemon.json
文件,并写入以下内容:
{"default-ipc-mode": "shareable","data-root": "/data/docker","exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m","max-file": "50"},"insecure-registries": ["https://harbor.registry.com"],"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com","https://docker.1ms.run","https://func.ink","https://lispy.org","https://docker.xiaogenban1993.com"]
}
参数解释:
default-ipc-mode
:设置默认的 IPC(进程间通信)模式为shareable
。data-root
:指定 Docker 数据存储的根目录为/data/docker
。exec-opts
:设置容器执行时的选项,native.cgroupdriver=systemd
表示使用systemd
作为 cgroup 驱动。log-driver
:指定日志驱动为json-file
,将容器日志以 JSON 文件的形式存储。log-opts
:设置日志的选项,max-size
表示单个日志文件的最大大小为100m
,max-file
表示最多保留50
个日志文件。insecure-registries
:添加不安全的镜像仓库地址,允许从该仓库拉取镜像,这里是https://harbor.registry.com
。registry-mirrors
:设置镜像加速地址,提高镜像拉取的速度。
3.4 添加 Harbor 仓库映射
在 /etc/hosts
文件中添加 Harbor 仓库的映射:
[root@mysql docker]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.220.20 harbor.registry.com harbor
参数解释:
/etc/hosts
:是一个本地的域名解析文件,通过添加192.168.220.20 harbor.registry.com harbor
这一行,将harbor.registry.com
域名映射到192.168.220.20
这个 IP 地址。
注意:
四、启动 MySQL 容器
4.1 启动初始容器
使用以下命令启动一个 MySQL 容器:
[root@mysql docker]# docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD="123456" harbor.registry.com/library/mysql:9.3.0
参数解释:
docker run
:用于创建并启动一个新的容器。--name mysql
:为容器指定一个名称为mysql
。-d
:表示在后台运行容器。-p 3306:3306
:将宿主机的3306
端口映射到容器内部的3306
端口,这样可以通过宿主机的3306
端口访问容器内的 MySQL 服务。-e MYSQL_ROOT_PASSWORD="123456"
:设置容器内 MySQL 的 root 用户密码为123456
。harbor.registry.com/library/mysql:9.3.0
:指定要使用的镜像。
4.2 检查容器是否启动成功
使用以下命令查看正在运行的容器:
[root@mysql docker]# docker ps
参数解释:
docker ps
:用于列出正在运行的容器,显示容器的 ID、镜像、命令、创建时间、状态、端口映射和名称等信息。
4.3 查看容器日志
如果容器启动报错,可以使用以下命令查看容器的日志,以寻找出错原因:
[root@mysql docker]# docker logs mysql
参数解释:
docker logs
:用于查看指定容器的日志信息,mysql
是容器的名称。
4.4 进入容器
使用以下命令进入正在运行的容器:
[root@mysql docker]# docker exec -it mysql /bin/bash
参数解释:
docker exec
:用于在运行的容器中执行命令。-it
:表示以交互模式进入容器,-i
保持标准输入打开,-t
分配一个伪终端。mysql
:是容器的名称。/bin/bash
:指定要执行的命令,即进入容器的bash
终端。
bash-5.1# cd etc
bash-5.1# ls
# 找到my.cnf文件
五、配置主从服务器
5.1 复制配置文件
在新的会话窗口中创建两个目录:
[root@mysql docker]# mkdir /data/master/conf -p
[root@mysql docker]# mkdir /data/slave/conf -p
参数解释:
mkdir
:用于创建目录。-p
:表示如果父目录不存在,则先创建父目录。
将刚刚找到的 my.cnf
配置文件,并将其拷贝到 /data/master/conf
目录下:
[root@mysql docker]# cd /data/master/conf/
[root@mysql conf]# docker cp mysql:/etc/my.cnf .
参数解释:
cd etc
:进入容器的etc
目录。ls
:列出当前目录下的文件和文件夹。exit
:退出容器。docker cp
:用于在宿主机和容器之间复制文件,mysql:/etc/my.cnf
表示容器mysql
内的/etc/my.cnf
文件,.
表示当前目录。
5.2 修改配置文件
编辑 /data/master/conf/my.cnf
文件,添加 server-id=1
:
[root@mysql conf]# vim /data/master/conf/my.cnf
参数解释:
vim
:是一个文本编辑器,用于编辑文件内容。server-id=1
:为 MySQL 服务器指定一个唯一的 ID,主服务器的 ID 通常为1
。
将修改后的 my.cnf
文件拷贝到 /data/slave/conf
文件夹下面,并将 server-id
的值改为 2
:
[root@mysql conf]# cp my.cnf ../../slave/conf/
[root@mysql conf]# vim /data/slave/conf/my.cnf
参数解释:
cp
:用于复制文件,my.cnf
是要复制的文件,../../slave/conf/
是目标目录。server-id=2
:从服务器的 ID 需要与主服务器不同,这里设置为2
。
5.3 停止并删除初始容器
退出容器后,停掉并删除初始容器:
bash-5.1# exit
[root@mysql docker]# docker stop mysql
[root@mysql docker]# docker rm mysql
参数解释:
docker stop
:用于停止正在运行的容器,mysql
是容器的名称。docker rm
:用于删除容器,mysql
是容器的名称。
查看发现,容器已经删除,没有任何容器了:
[root@mysql docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
六、创建主服务器
使用以下命令创建主服务器容器:
[root@mysql docker]# docker run -d \
--name mysql-master \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /data/master/conf/my.cnf:/etc/my.cnf \
-p 3306:3306 \
harbor.registry.com/library/mysql:9.3.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
参数解释:
-d
:在后台运行容器。--name mysql-master
:为容器指定名称为mysql-master
。-e MYSQL_ROOT_PASSWORD=123456
:设置容器内 MySQL 的 root 用户密码为123456
。-v /data/master/conf/my.cnf:/etc/my.cnf
:将宿主机的/data/master/conf/my.cnf
文件挂载到容器内的/etc/my.cnf
文件,实现配置文件的持久化。-p 3306:3306
:将宿主机的3306
端口映射到容器内部的3306
端口。harbor.registry.com/library/mysql:9.3.0
:指定要使用的镜像。--character-set-server=utf8mb4
:设置服务器的字符集为utf8mb4
。--collation-server=utf8mb4_unicode_ci
:设置服务器的排序规则为utf8mb4_unicode_ci
。
6.1 进入主服务器容器
使用以下命令进入主服务器容器:
[root@mysql docker]# docker exec -it mysql-master /bin/bash
bash-5.1# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 9.3.0 MySQL Community Server - GPLCopyright (c) 2000, 2025, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
参数解释:
docker exec -it mysql-master /bin/bash
:以交互模式进入mysql-master
容器的bash
终端。mysql -uroot -p123456
:使用 root 用户和密码123456
登录 MySQL。
6.2 创建用户并授权
在主服务器的 MySQL 中创建一个用于同步的用户,并授予其复制从服务器的权限:
# 创建用户:
mysql> create user 'backups'@'%' identified by '123456';
Query OK, 0 rows affected (0.021 sec)# 给权限:
mysql> grant replication slave on *.* to 'backups'@'%';
Query OK, 0 rows affected (0.003 sec)# 刷新权限:
mysql> flush privileges;
Query OK, 0 rows affected, 1 warning (0.003 sec)
参数解释:
create user 'backups'@'%' identified by '123456'
:创建一个名为backups
的用户,允许从任何主机连接,密码为123456
。grant replication slave on *.* to 'backups'@'%'
:授予backups
用户在所有数据库和所有表上的复制从服务器的权限。flush privileges
:刷新权限,使新的权限设置生效。
6.3 查看同步起始位置
使用以下命令查看主服务器的二进制日志状态,获取同步的起始位置:
mysql> show binary log status;
-- 或者
mysql> show binary log status\G;例如:
mysql> show binary log status;
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000002 | 863 | | | |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.000 sec)mysql> show binary log status\G;
*************************** 1. row ***************************File: binlog.000002Position: 863Binlog_Do_DB: Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.001 sec)ERROR:
No query specified
参数解释:
show binary log status
:显示主服务器的二进制日志状态,包括当前正在使用的二进制日志文件、位置等信息。\G
:以垂直格式显示查询结果,方便查看。
七、创建从服务器
7.1 创建从服务器容器
在新的窗口中使用以下命令创建从服务器容器:
[root@mysql conf]# docker run -d \
--name mysql-slave \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /data/slave/conf/my.cnf:/etc/my.cnf \
-p 3307:3306 \
harbor.registry.com/library/mysql:9.3.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
参数解释:
- 大部分参数与创建主服务器容器的参数相同,不同之处在于:
--name mysql-slave
:为容器指定名称为mysql-slave
。-p 3307:3306
:将宿主机的3307
端口映射到容器内部的3306
端口,避免与主服务器的端口冲突。
7.2 进入从服务器容器
使用以下命令进入从服务器容器:
[root@mysql conf]# docker exec -it mysql-slave /bin/bash
bash-5.1# mysql -uroot -p123456
参数解释:
- 与进入主服务器容器的命令和参数解释相同。
7.3 配置主从复制
在从服务器的 MySQL 中配置主从复制:
mysql> CHANGE REPLICATION SOURCE TO \
SOURCE_HOST='192.168.220.198',SOURCE_USER='backups',SOURCE_PASSWORD='123456', \
SOURCE_LOG_FILE='binlog.000002',SOURCE_LOG_POS=863,GET_SOURCE_PUBLIC_KEY=1;
参数解释:
CHANGE REPLICATION SOURCE TO
:用于配置从服务器的复制源。SOURCE_HOST='192.168.220.198'
:指定主服务器的 IP 地址。SOURCE_USER='backups'
:指定用于复制的用户。SOURCE_PASSWORD='123456'
:指定用于复制的用户的密码。SOURCE_LOG_FILE='binlog.000002'
:指定主服务器的二进制日志文件。SOURCE_LOG_POS=863
:指定主服务器二进制日志的起始位置。GET_SOURCE_PUBLIC_KEY=1
:表示获取主服务器的公钥。
7.4 启动复制并查看状态
执行以下命令启动复制,并查看复制状态:
mysql> start replica;
mysql> show replica status\G;
参数解释:
start replica
:启动从服务器的复制进程。show replica status\G
:显示从服务器的复制状态,以垂直格式显示结果,方便查看各个参数的值。
八、验证主从复制
8.1 在主服务器创建测试数据库和表
进入主服务器容器并登录 MySQL:
[root@mysql docker]# docker exec -it mysql-master /bin/bash
bash-5.1# mysql -uroot -p123456
在 MySQL 中创建一个测试数据库和表,并插入一些数据:
mysql> CREATE DATABASE test_db;
Query OK, 1 row affected (0.00 sec)mysql> USE test_db;
Database changedmysql> CREATE TABLE test_table (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255));
Query OK, 0 rows affected (0.01 sec)mysql> INSERT INTO test_table (name) VALUES ('test_value');
Query OK, 1 row affected (0.00 sec)
8.2 在从服务器验证数据同步
进入从服务器容器并登录 MySQL:
[root@mysql docker]# docker exec -it mysql-slave /bin/bash
bash-5.1# mysql -uroot -p123456
在 MySQL 中检查是否能看到主服务器创建的数据库和表,以及插入的数据:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test_db |
+--------------------+mysql> USE test_db;
Database changedmysql> SELECT * FROM test_table;
+----+------------+
| id | name |
+----+------------+
| 1 | test_value |
+----+------------+
如果能在从服务器看到主服务器创建的数据库、表和插入的数据,说明主从复制配置成功。
九、总结
通过以上步骤,我们成功地使用 Docker 和 Harbor 仓库搭建了 MySQL 主从复制环境,并完成了验证。主从复制可以提高数据库的可用性、读写性能和数据安全性,在实际的生产环境中有着广泛的应用。希望本文对刚接触 MySQL 和 Docker 的新手有所帮助。
以上就是完整的 MySQL 主从复制搭建及验证过程,每一步都有详细的命令参数解释,相信新手也能轻松理解和操作。
相关文章:
MySQL 主从复制搭建全流程:基于 Docker 与 Harbor 仓库
一、引言 在数据库管理中,MySQL 主从复制是一种非常重要的技术,它可以实现数据的备份、读写分离,减轻主数据库的压力。本文将详细介绍如何使用 Docker 和 Harbor 仓库来搭建 MySQL 主从复制环境,适合刚接触数据库和 Docker 的新手…...
网页表格转换为markdown
网页表格到Markdown:一键转换,复制即用! 在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,以便在文档、邮件或论坛中使用。然而,手动转换不仅耗时,还容易…...
MySQL字符串拼接方法全解析
目录 常用字符串处理函数 方法一:CONCAT基础拼接 方法二:CONCAT_WS带分隔符拼接 方法三:GROUP_CONCAT分组拼接 方法四:算术运算符拼接(仅限数字) 常用字符串处理函数 方法一:CONCAT基础拼接…...
零基础教程:用 Docker + pgloader 将 MySQL 数据库迁移到 PostgreSQL
在日常开发中,可能会遇到从 MySQL 迁移到 PostgreSQL 的需求。你也许是: 正在准备从传统架构转向云原生;想使用 PostgreSQL 更强的事务与 JSON 支持;想统一团队数据库技术栈;纯粹为了尝试学习不同的数据库系统。 别担…...
影刀Fun叉鸟-2048
文章目录 仅为自动化演示,实际2048判定逻辑需要更加严谨 参考代码 # 使用提醒: # 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能 # 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能 # 3. 当此模块作…...
uni-app(2):页面
1 页面简介 uni-app项目中,一个页面就是一个符合Vue SFC规范的 vue 文件。 在 uni-app js 引擎版中,后缀名是.vue文件或.nvue文件。 这些页面均全平台支持,差异在于当 uni-app 发行到App平台时,.vue文件会使用webview进行渲染&…...
【spring】spring学习系列之十一:spring的事件监听
系列文章目录 文章目录 系列文章目录前言一、使用二、整体流程三、EventListenerMethodProcessor和DefaultEventListenerFactory1.EventListenerMethodProcessor2.DefaultEventListenerFactory3.ApplicationListenerDetector4.initApplicationEventMulticaster5.registerListen…...
代码随想录打卡|Day45 图论(孤岛的总面积 、沉没孤岛、水流问题、建造最大岛屿)
图论part03 孤岛的总面积 代码随想录链接 题目链接 视频讲解链接 思路:既然某个网格在边界上的岛屿不是孤岛,那么就把非 孤岛的所有岛屿变成海洋,最后再次统计还剩余的岛屿占据的网格总数即可。 dfs: import java.util.Scanner…...
AI人工智能——Matplotlib绘制各种数据可视化图表的基础方法
一、绘制图像基础 import matplotlib.pyplot as plt# 1、创建画布 plt.figure(figsize(20, 8), dpi100) # 2、绘制图像 x [1, 2, 3, 4, 5, 6] y [3, 5, 4, 3, 6, 1] plt.plot(x, y) # 3、显示图像 plt.show() 二、图像保存 import matplotlib.pyplot as plt# 1、创建画布 p…...
亚马逊AWS跑不动了?
5月2日,亚马逊公布了2025年第一季度的财报。财报数据显示,云计算业务增速放缓以及第二季度的指引低于预期。事实上,这并不是亚马逊AWS第一次增速放缓。 亚马逊AWS作为全球第一大云计算服务公司,这些年跟微软云、谷歌云等其他云计…...
PyTorch中cdist和sum函数使用详解
torch.cdist 是 PyTorch 中用于计算**两个张量之间的成对距离(pairwise distance)**的函数,常用于点云处理、图神经网络、相似性度量等场景。 基本语法 torch.cdist(x1, x2, p2.0)参数说明: 参数说明x1一个形状为 [B, M, D] 或 …...
PyTorch的基本操作
前言 为了方便大家学习,我整理了PyTorch全套学习资料,包含配套教程讲义和源码 除此之外还有100G人工智能学习资料 包含数学与Python编程基础、深度学习机器学习入门到实战,计算机视觉自然语言处理大模型资料合集,不仅有配套教程…...
分类算法 Kmeans、KNN、Meanshift 实战
任务 1、采用 Kmeans 算法实现 2D 数据自动聚类,预测 V180,V260 数据类别; 2、计算预测准确率,完成结果矫正 3、采用 KNN、Meanshift 算法,重复步骤 1-2 代码工具:jupyter notebook 视频资料 无监督学习ÿ…...
aws平台s3存储桶夸域问题处理
当我们收到开发反馈s3存在跨域问题 解决步骤: 配置 S3 存储桶的 CORS 设置: 登录到 AWS 管理控制台。转到 S3 服务。选择你存储文件的 存储桶。点击 权限 标签页。在 跨域资源共享(CORS)配置 部分,点击 编辑。 登陆…...
在Windows上安装Pygame 2.1.3:解决常见问题
在Windows系统上安装Pygame 2.1.3时,可能会遇到各种问题,例如网络问题或依赖安装失败。本文将详细介绍如何在Windows上成功安装Pygame 2.1.3,并解决常见的安装问题。 1. 前提条件 在开始安装之前,确保你的系统中已经安装了Pytho…...
linux中安装jdk(Java环境),tomcat
安装时候选择 tomcat 软件版本要与程序开发使用的版本一致。jdk 版本要进行与 tomcat 保持一致。 1. 系统环境说明 [root@bogon ~]# getenforce Disabled [root@bogon ~]# systemctl status firewalld.service ● firewalld.service - firewalld - dynamic firewall daemon …...
DeepSeek源码解构:从MoE架构到MLA的工程化实现
文章目录 **一、代码结构全景:从模型定义到分布式训练****二、MoE架构:动态路由与稀疏激活的工程化实践****1. 专家路由机制(带负载均衡)****数学原理:负载均衡损失推导** **三、MLA注意力机制:低秩压缩与解…...
国产linux系统(银河麒麟,统信uos)使用 PageOffice实现PDF文件加盖印章和签字功能
PageOffice 国产版 :支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)、龙芯(Mips、LoogArch)芯片架构。 PageOffice支持…...
第四十三节:人脸检测与识别-人脸识别基础 (Eigenfaces, Fisherfaces, LBPH)
引言 人脸识别技术是计算机视觉领域最具应用价值的方向之一,广泛应用于安防监控、身份认证、人机交互等领域。本文将通过OpenCV框架,深入解析人脸检测与识别的核心算法(Eigenfaces/Fisherfaces/LBPH),并提供完整的代码实现。 第一部分:人脸检测基础 1.1 人脸检测原理 …...
面向恶劣条件的道路交通目标检测----大创自用(当然你也可以在里面学到很多东西)
全部内容梳理 目标检测的两个任务: 预测标签 边界框 语义分割 实力分割 一个是类别 一个是实例级别 分类任务把每个图像当作一张图片看待 所有解决方法是先生成候选区域 再进行分类 置信度: 包括对类别和边界框预测的自信程度 输出分类和IOU分数的…...
物联网相关词汇
物联网(英文:Internet of Things,缩写:IoT) specs 英[speks] 美[speks] 规格说明 topology 英[təpɒlədʒɪ] 拓扑结构 vertical 美 [ˈvɜrtɪk(ə)l] 英 [ˈvɜː(r)tɪk(ə)l] n.垂直线;垂直位…...
【net6】一文跑通前后端以及数据库,简单的天气系统管理(保姆入门)
一、前言 使用Vue3为前端,.net6为后端,连接postgreSQL数据库,连通前后端与数据库,实现最基础的天气管理系统的增删改查。 二、内容 目录 一、前言 二、内容 2.1 后端部分 2.1.1 在VS里面使用此模板创建项目 2.1.2 安装下列…...
宝塔安装的 MySQL 无法连接的情况及解决方案
宝塔安装的 MySQL 无法连接的情况及解决方案 宝塔面板是一款流行的服务器管理工具,其中集成的 MySQL 数据库有时会出现连接问题。本文详细介绍两种最常见的 MySQL 连接错误:“1130 - Host is not allowed to connect” 和 “1045 - Access denied”&…...
【iOS】分类、扩展、关联对象
分类、扩展、关联对象 前言分类扩展扩展和分类的区别关联对象key的几种用法流程 总结 前言 最近的学习中笔者发现自己对于分类、扩展相关知识并不是很熟悉,刚好看源码类的加载过程中发现有类扩展与关联对象详解。本篇我们来探索一下这部分相关知识,首先…...
计算机网络学习(一)—— OSI vs TCP/IP网络模型
一、OSI模型(开放系统互联参考模型) OSI(Open Systems Interconnection)模型由ISO(国际标准化组织)在1984年提出,用于标准化网络通信,它将网络通信分为七个层次: 层级名…...
【MySQL成神之路】MySQL查询用法总结
MySQL查询语句全面指南 一、基础查询语句 MySQL中select的基本语法形式 select 属性列表 from 表名和视图列表 [where 条件表达式] [group by 属性名[having 条件表达式]] [order by 属性名[asc|desc]] [limit <offset>,row count] 说明: where子句&…...
攻防世界——Web题 fakebook
首先测试网站的功能,当我注册一个账号时,发现这里的链接: 点进去看到URL: 感觉no这个地方可以尝试一下sql注入 推测应该是数字型注入 发现果然可以进行sql注入, 最终测得列数应该是4列,但当我尝试sql注入…...
【Java微服务组件】异步通信P2—Kafka与消息
欢迎来到啾啾的博客🐱。 记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。 欢迎评论交流,感谢您的阅读😄。 目录 引言Kafka与消息生产者发送消息到Kafka批处理发送设计消息的幂等信息确保消息送达acks配置…...
AI数字人一体机和智慧屏方案:开启智能交互新纪元
在当今这个信息化飞速发展的时代,AI技术正以前所未有的速度改变着我们的生活方式和工作模式。特别是在人机交互领域,AI数字人的出现不仅极大地丰富了用户体验,也为各行各业提供了前所未有的创新解决方案。本文将重点介绍由广州深声科技有限公…...
10-码蹄集600题基础python篇
题目如上: 这题就是ASCII的转换,直接使用ord就可以 下面是代码: def main():#code here# a1,a2input().split(",")# print(f"The ASCII code of {a1} is {ord(a1)}")# print(f"The ASCII code of {a2} is {ord(a2…...
给几张图片和一段文字,怎么制作成带有语音的视频---php
想用PHP将图片和文字转换成带有语音的视频,想做自动化的视频生成,比如用于广告、演示或者其他需要多媒体处理的场景。 接下来考虑PHP本身的能力。PHP主要是用于服务器端的脚本语言,不太擅长处理多媒体内容,比如视频和语音合成。所…...
vue3中RouterView配合KeepAlive实现组件缓存
KeepAlive组件缓存 为什么需要组件缓存代码展示缓存效果为什么不用v-if 为什么需要组件缓存 业务需求:一般是列表页面通过路由跳转到详情页,跳转回来时,需要列表页面展示上次展示的内容 代码展示 App.vue入口 <script setup lang"…...
NIFI的处理器:ExecuteGroovyScript 2.4.0
ExecuteGroovyScript是常用的处理器之一,用于执行GroovyScript脚本。该脚本负责处理传入的流文件(例如传输到SUCCESS或删除)以及由该脚本创建的任何流文件。如果处理不完整或不正确,会话将被回滚。 属性值-失败处理策略 Failure …...
安全可控的AI底座:灯塔大模型应用开发平台全面实现国产信创兼容适配认证
国产信创产品兼容适配认证是为了支持和推动国产信息技术产品和服务的发展而设立的一种质量标准和管理体系。适配认证旨在确保相关产品在安全性、可靠性、兼容性等方面达到一定的标准,以满足政府和关键行业对信息安全和自主可控的需求。 北京中烟创新科技有限公司&a…...
.NET外挂系列:5. harmony 中补丁参数的有趣玩法(下)
一:背景 1. 讲故事 开局一张表,故事全靠编,为了能够承上启下,先把参数列表放出来。 参数名说明__instance访问非静态方法的实例(类似 this)。__result获取/修改返回值,要想修改用 ref。__res…...
Spring Boot 登录实现:JWT 与 Session 全面对比与实战讲解
Spring Boot 登录实现:JWT 与 Session 全面对比与实战讲解 2025.5.21-23:11今天在学习黑马点评时突然发现用的是与苍穹外卖jwt不一样的登录方式-Session,于是就想记录一下这两种方式有什么不同 在实际开发中,登录认证是后端最基础也是最重要…...
vscode离线安装组件工具vsix
1.外网下载vsix 网址为:Open VSX Registry 2.输入需要下载的组件 3.下载组件 4.安装 5.选择安装文件 6.安装完成...
Vue大数据量前端性能优化策略
文章目录 前言Vue大数据量前端性能优化策略1. 虚拟列表的使用方式及优势2. 列表和图表的懒加载技术3. Web Worker 在图表数据预处理中的应用4. 图表渲染优化技巧5. 分批渲染技术实现方法(如 requestIdleCallback)6. 其他可行的 Vue 层优化策略 前言 Vue…...
Hass-Panel - 开源智能家居控制面板
文章目录 ▎项目介绍:预览图▎主要特性安装部署Docker方式 正式版Home Assistant Addon方式详细安装方式1. Home Assistant 插件安装(推荐)2. Docker 安装命令功能说明 :3. Docker Compose 安装升级说明Docker Compose 版本升级 功…...
iPaaS集成平台技术选型关注哪些指标?
在数字化转型进程中,企业系统间的数据孤岛问题日益凸显。根据IDC调研,85%的IT决策者将“系统集成效率”列为业务创新的关键瓶颈。iPaaS(集成平台即服务)凭借其敏捷性、低代码特性和智能化能力,已成为企业构建数字生态的…...
JavaScript性能优化实战(14):跨端JavaScript性能优化
在当今多端开发的时代,JavaScript已经突破了浏览器的界限,广泛应用于移动应用、桌面应用、小程序等各类环境。然而,不同平台的运行时环境存在差异,为JavaScript性能优化带来了新的挑战和思考维度。 目录 React Native性能优化最佳实践Electron应用性能优化策略混合应用中J…...
多通道经颅直流电刺激器产品及解决方案特色解析
前记 团队在多通道经颅直流电刺激这个技术方向,一路深耕。在服务了不少客户之后,为了方便后续的产品和方案推广。我们弄出来了产品和方案两种形态。标准产品是为了给用户演示以及一些常规的实验使用。方案则是为了满足不同方向的科研用户的需求。这两者相…...
Quasar 使用 Pinia 进行状态管理
官方文档:使用 Pinia 进行状态管理 |Quasar 框架 视频教程:quasar框架store-状态管理库pinia介绍_哔哩哔哩_bilibili 使用 Quasar CLI 创建一个新的store quasar new store date --format jsPinia存储模板详解解 基本结构解析 import { defineStore,…...
计算机网络--第一章(下)
1.计算机网络的分层结构 1.1 分层结构 网络体系结构描述的是,计算机网络有几层,有什么功能,用的什么协议。 水平方向的关系, 协议,说的是对等实体间通信需要遵守的规则。用于约束,这个约束的方向是水平的。…...
Veo 3 可以生成视频,并附带配乐
谷歌最新的视频生成 AI 模型 Veo 3 可以创建与其生成的剪辑相配的音频。 周二,在谷歌 I/O 2025 开发者大会上,谷歌发布了 Veo 3。该公司声称,这款产品可以生成音效、背景噪音,甚至对话,为其制作的视频增添配乐。谷歌表…...
数据结构核心知识总结:从基础到应用
数据结构核心知识总结:从基础到应用 数据结构是计算机科学中组织和存储数据的核心方式,直接影响程序的性能和资源利用率。本文系统梳理常见数据结构及其应用场景,帮助读者构建清晰的知识体系。 一、数据结构基础概念 数据结构是数据元素之间…...
Flannel后端为UDP模式下,分析数据包的发送方式(二)
发往 10.244.2.5 的数据包最终会经过物理网卡 enp0s3,尽管路由表直接指定通过 flannel.1 发出。以下以 Markdown 格式详细解释为什么会经过 enp0s3,结合 Kubernetes 和 Flannel UDP 模式的背景。 问题分析 在 Kubernetes 环境中,使用 Flanne…...
超低延迟音视频直播技术的未来发展与创新
引言 音视频直播技术正在深刻改变着我们的生活和工作方式,尤其是在教育、医疗、安防、娱乐等行业。无论是全球性的体育赛事、远程医疗、在线教育,还是智慧安防、智能家居等应用场景,都离不开音视频技术的支持。为了应对越来越高的需求&#x…...
改写视频生产流程!快手SketchVideo开源:通过线稿精准控制动态分镜的AI视频生成方案
Sketch Video 的核心特点 Sketch Video 通过手绘生成动画的形式,将复杂的信息以简洁、有趣的方式展现出来。其核心特点包括: 超强吸引力 Sketch Video 的手绘风格赋予了视频一种质朴而真实的质感,与常见的精致特效视频形成鲜明对比。这种独…...
Circle宣布Circle Payments Network主网上线
据 Circle 官方消息,Circle Payments Network 主网正式上线。该网络是一个基于区块链的支付协调协议,允许银行和支付服务提供商使用公共区块链上的 USDC 进行实时结算。 Circle Payments Network 支持企业对企业供应商支付、跨境汇款、资金管理、企业定期…...