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

基于 Docker 的高可用 WordPress 集群部署:分布式 Nginx + Keepalived、MySQL 主从复制与 ProxySQL 读写分离

本教程指导您在 Docker 环境中部署一个高可用、高性能的 WordPress 网站,包含以下组件:

  • 负载均衡服务器(192.168.0.119 及 192.168.0.120):运行 Nginx,负责请求分发,通过 Keepalived 实现高可用,通过虚拟 IP(192.168.0.100)绑定域名 wordpress.mxdx.com
  • 主服务器(192.168.0.118):运行 MySQL 主库、ProxySQL、WordPress 和 Nginx。
  • 从服务器(192.168.0.117):运行 MySQL 从库、WordPress 和 Nginx。

架构图

正常状态

images

VIP漂移后

images

1. 架构特点

  1. MySQL 主从复制:主库(192.168.0.118)与从库(192.168.0.117)实现数据同步。
  2. ProxySQL 读写分离:部署在主库服务器,优化数据库查询性能。
  3. Nginx 负载均衡:分发请求到主库和从库的 WordPress 服务,通过分布式 Nginx 和 Keepalived 实现高可用。
  4. WordPress 文件共享:通过 NFS 共享 /data/wordpress/uploads 和 /data/nginx/ssl 目录,新增 /data/nginx/conf 共享以支持分布式 Nginx 配置一致性。
  5. 高可用设计:Nginx Master 宕机时,Keepalived 将服务切换到 Nginx Slave,确保业务连续性。
  6. 域名绑定:通过域名 wordpress.mxdx.com 访问站点,解析到虚拟 IP(192.168.0.100)。

2. 准备工作

2.1 所有服务器通用配置

确保所有服务器(192.168.0.117、192.168.0.118、192.168.0.119、192.168.0.120)已安装 Docker 和 Docker Compose。若未安装,请参考官方文档安装。

# 创建必要目录
sudo mkdir -p /data/{mysql/{data,conf},wordpress/{html,uploads},nginx/{conf,logs,ssl},proxysql/{conf,data}}
# 新增 Nginx Slave 配置目录(192.168.0.120)
sudo mkdir -p /data/nginx/{conf,logs,ssl}  # 在 192.168.0.120 上执行# 设置 WordPress 目录权限(通常无需手动设置)
sudo chown -R 1000:1000 /data/wordpress/{html,uploads}

提示:目录权限需与容器内用户(通常 UID/GID 为 1000)匹配。

2.2 安装 Keepalived(192.168.0.119 和 192.168.0.120)

在负载均衡服务器上安装 Keepalived:

sudo apt update
sudo apt install -y keepalived

2.3 域名解析配置

将域名 wordpress.mxdx.com 解析到虚拟 IP(192.168.0.100)。在你的 DNS 服务商处添加以下记录

记录类型主机记录解析线路记录值TTL
Awordpress默认192.168.0.100600

提示:若使用本地测试,可在 /etc/hosts 文件中添加:

192.168.0.100 wordpress.mxdx.com

3. 主服务器配置 (192.168.0.118)

3.1 创建 Docker Compose 文件

在主库服务器上创建 /Docker/docker-compose.yml

mkdir -p /Docker
cd /Docker
vim docker-compose.yml

写入以下内容:

version: '3.8'
services:mysql:image: hub.yumesakura.com/library/mysql:8.0container_name: docker-mysql-masterenvironment:MYSQL_ROOT_PASSWORD: 12345678MYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: 12345678volumes:- /data/mysql/data:/var/lib/mysql- /data/mysql/conf:/etc/mysql/conf.dports:- "3306:3306"restart: unless-stoppedcommand:- --server-id=1- --log-bin=mysql-bin- --binlog-format=ROW- --bind-address=0.0.0.0networks:- wp_networkproxysql:image: proxysql/proxysql:latestcontainer_name: proxysqlports:- "6032:6032"- "6033:6033"volumes:- /data/proxysql/conf/proxysql.cnf:/etc/proxysql.cnf- /data/proxysql/data:/var/lib/proxysqldepends_on:- mysqlnetworks:- wp_networkwordpress:image: hub.yumesakura.com/library/wordpress:php8.2-fpmenvironment:WORDPRESS_DB_HOST: proxysqlWORDPRESS_DB_PORT: 6033WORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: 12345678WORDPRESS_DB_NAME: wordpressvolumes:- /data/wordpress/html:/var/www/html- /data/wordpress/uploads:/var/www/html/wp-content/uploads- /data/wordpress/php.ini:/usr/local/etc/php/conf.d/custom.inidepends_on:- proxysqlnetworks:- wp_networknginx:image: hub.yumesakura.com/library/nginx:alpineports:- "80:80"- "443:443"volumes:- /data/nginx/conf:/etc/nginx/conf.d- /data/nginx/logs:/var/log/nginx- /data/wordpress/html:/var/www/html- /data/nginx/ssl:/etc/ssldepends_on:- wordpressnetworks:- wp_networknetworks:wp_network:driver: bridge

3.2 配置 ProxySQL 读写分离

创建 ProxySQL 配置文件 /data/proxysql/conf/proxysql.cnf

vim /data/proxysql/conf/proxysql.cnf

写入以下内容:

datadir="/var/lib/proxysql"
admin_variables=
{admin_credentials="admin:admin"mysql_ifaces="0.0.0.0:6032"
}
mysql_variables=
{threads=4max_connections=2048default_query_timeout=36000000interfaces="0.0.0.0:6033"monitor_username="monitor"monitor_password="12345678"
}
mysql_servers=
({ hostgroup_id=10, hostname="192.168.0.118", port=3306, status="ONLINE", weight=1000 },{ hostgroup_id=20, hostname="192.168.0.117", port=3306, status="ONLINE", weight=1000 }
)
mysql_replication_hostgroups=
({ writer_hostgroup=10, reader_hostgroup=20 }
)
mysql_query_rules=
({ rule_id=1, active=1, match_pattern="^SELECT.*FOR UPDATE", destination_hostgroup=10, apply=1 },{ rule_id=2, active=1, match_pattern="^SELECT", destination_hostgroup=20, apply=1 },{ rule_id=3, active=1, match_pattern="^INSERT", destination_hostgroup=10, apply=1 },{ rule_id=4, active=1, match_pattern="^UPDATE", destination_hostgroup=10, apply=1 },{ rule_id=5, active=1, match_pattern="^DELETE", destination_hostgroup=10, apply=1 }
)
mysql_users=
({ username="wordpress", password="12345678", active=1, default_hostgroup=10, default_schema="wordpress" }
)

3.3 配置主服务器 Nginx

创建 Nginx 配置文件 /data/nginx/conf/wordpress.conf

server {listen 80;server_name default_server;root /var/www/html;index index.php;access_log /var/log/nginx/wordpress.access.log;error_log /var/log/nginx/wordpress.error.log;location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {expires 30d;access_log off;try_files $uri =404;}location / {try_files $uri $uri/ /index.php?$args;}location ~ \.php$ {try_files $uri =404;fastcgi_split_path_info ^(.+\.php)(/.+)$;fastcgi_pass wordpress:9000;fastcgi_index index.php;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param PATH_INFO $fastcgi_path_info;}add_header X-Frame-Options "SAMEORIGIN";add_header X-Content-Type-Options "nosniff";add_header X-XSS-Protection "1; mode=block";
}

3.4 启动服务

docker-compose up -d

3.5 配置 MySQL 主从复制

进入 MySQL 容器:

docker exec -it docker-mysql-master mysql -uroot -p12345678

执行以下 SQL 创建复制用户(使用 copy 用户,密码 12345678):

CREATE USER 'copy'@'%' IDENTIFIED BY '12345678';
GRANT REPLICATION SLAVE ON *.* TO 'copy'@'%';
FLUSH PRIVILEGES;
SHOW MASTER STATUS;

记录输出的 File 和 Position 值,用于从库配置。

image

 

image

3.6 创建 ProxySQL 监控账户

在主库 MySQL 中执行:

CREATE USER 'monitor'@'%' IDENTIFIED BY '12345678';
GRANT REPLICATION SLAVE ON *.* TO 'monitor'@'%';
FLUSH PRIVILEGES;

提示:监控账户用于 ProxySQL 检查 MySQL 服务器状态和复制延迟。

4. 从服务器配置 (192.168.0.117)

4.1 创建 Docker Compose 文件

在 /Docker 目录下创建 docker-compose.yml

version: '3.8'
services:mysql:image: hub.yumesakura.com/library/mysql:8.0container_name: docker-mysql-slaveenvironment:MYSQL_ROOT_PASSWORD: 12345678MYSQL_DATABASE: wordpressMYSQL_USER: wordpressMYSQL_PASSWORD: 12345678volumes:- /data/mysql/data:/var/lib/mysql- /data/mysql/conf:/etc/mysql/conf.dports:- "3306:3306"restart: unless-stoppedcommand:- --server-id=2- --relay-log=mysql-relay-bin- --read-only=1- --skip-slave-startnetworks:- wp_networkwordpress:image: hub.yumesakura.com/library/wordpress:php8.2-fpmenvironment:WORDPRESS_DB_HOST: 192.168.0.118WORDPRESS_DB_PORT: 6033WORDPRESS_DB_USER: wordpressWORDPRESS_DB_PASSWORD: 12345678WORDPRESS_DB_NAME: wordpressvolumes:- /data/wordpress/html:/var/www/html- /data/wordpress/uploads:/var/www/html/wp-content/uploads- /data/wordpress/php.ini:/usr/local/etc/php/conf.d/custom.inidepends_on:- mysqlnetworks:- wp_networknginx:image: hub.yumesakura.com/library/nginx:alpineports:- "80:80"- "443:443"volumes:- /data/nginx/conf:/etc/nginx/conf.d- /data/nginx/logs:/var/log/nginx- /data/wordpress/html:/var/www/html- /data/nginx/ssl:/etc/ssldepends_on:- wordpressnetworks:- wp_networknetworks:wp_network:driver: bridge

4.2 配置从服务器 Nginx

创建 Nginx 配置文件 /data/nginx/conf/wordpress.conf

server {listen 80;server_name default_server;root /var/www/html;index index.php;access_log /var/log/nginx/wordpress.access.log;error_log /var/log/nginx/wordpress.error.log;location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {expires 30d;access_log off;try_files $uri =404;}location / {try_files $uri $uri/ /index.php?$args;}location ~ \.php$ {try_files $uri =404;fastcgi_split_path_info ^(.+\.php)(/.+)$;fastcgi_pass wordpress:9000;fastcgi_index index.php;include fastcgi_params;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param PATH_INFO $fastcgi_path_info;}add_header X-Frame-Options "SAMEORIGIN";add_header X-Content-Type-Options "nosniff";add_header X-XSS-Protection "1; mode=block";
}

4.3 启动服务

docker-compose up -d

4.4 配置 MySQL 从库复制

进入从库 MySQL 容器:

docker exec -it docker-mysql-slave mysql -uroot -p12345678

执行以下 SQL(替换 MASTER_LOG_FILE 和 MASTER_LOG_POS 为 3.5 节记录的值):

CHANGE MASTER TOMASTER_HOST='192.168.0.118',MASTER_USER='copy',MASTER_PASSWORD='12345678',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1234;
START SLAVE;
SHOW SLAVE STATUS\G

确认 Slave_IO_Running 和 Slave_SQL_Running 均为 Yes.

5. 负载均衡服务器配置 (192.168.0.119 及 192.168.0.120)

5.1 创建 Docker Compose 文件

5.1.1 Nginx Master(192.168.0.119)

在 /Docker 目录下创建 docker-compose.yml

version: '3.8'
services:nginx:image: nginx:alpinecontainer_name: load-balancerports:- "80:80"- "443:443"volumes:- /data/nginx/conf:/etc/nginx/conf.d- /data/nginx/logs:/var/log/nginx- /data/nginx/ssl:/etc/sslnetworks:- wp_networknetworks:wp_network:driver: bridge

5.1.2 Nginx Slave(192.168.0.120)

在 /Docker 目录下创建 docker-compose.yml

version: '3.8'
services:nginx:image: nginx:alpinecontainer_name: load-balancer-slaveports:- "80:80"- "443:443"volumes:- /data/nginx/conf:/etc/nginx/conf.d- /data/nginx/logs:/var/log/nginx- /data/nginx/ssl:/etc/sslnetworks:- wp_networknetworks:wp_network:driver: bridge

5.2 配置 Nginx 负载均衡

两个Nginx负载均衡节点(Nginx Master和Nginx Slave)均创建 /data/nginx/conf/load-balancer.conf

upstream wordpress_backend {server 192.168.0.118:80 weight=1 max_fails=3 fail_timeout=30s;server 192.168.0.117:80 weight=1 max_fails=3 fail_timeout=30s;keepalive 64;
}server {listen 80;server_name wordpress.mxdx.com;access_log /var/log/nginx/lb.access.log;error_log /var/log/nginx/lb.error.log;location / {proxy_pass http://wordpress_backend;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_http_version 1.1;proxy_redirect off;proxy_buffering off;proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;proxy_connect_timeout 5s;proxy_read_timeout 10s;}
}

重载 Nginx 配置(在 192.168.0.119 和 192.168.0.120 上执行):

docker exec load-balancer nginx -s reload
docker exec load-balancer-slave nginx -s reload

5.3 配置 Keepalived

Keepalived 同时部署在两台负载均衡服务器(192.168.0.119 和 192.168.0.120)上,每台服务器运行 Nginx 和 Keepalived,形成主备关系,通过虚拟 IP(VIP,192.168.0.100)实现高可用。

5.3.1 Nginx Master(192.168.0.119)负载均衡节点

创建 Keepalived 配置文件:

sudo vim /etc/keepalived/keepalived.conf

写入以下内容:

global_defs {router_id NGINX_MASTER
}
vrrp_script check_nginx {script "pidof nginx"interval 2weight -20
}
vrrp_instance VI_1 {state MASTERinterface eth0  # 替换为实际网卡名称(如 ens33,可用 `ip link` 查看)virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 12345678}virtual_ipaddress {192.168.0.100/24  # 虚拟 IP(VIP)}track_script {check_nginx}
}

5.3.2 Nginx Slave(192.168.0.120)负载均衡节点

创建 Keepalived 配置文件:

sudo vim /etc/keepalived/keepalived.conf

写入以下内容:

global_defs {router_id NGINX_SLAVE
}
vrrp_script check_nginx {script "pidof nginx"interval 2weight -20
}
vrrp_instance VI_1 {state BACKUPinterface eth0  # 替换为实际网卡名称virtual_router_id 51priority 50advert_int 1authentication {auth_type PASSauth_pass 12345678}virtual_ipaddress {192.168.0.100/24  # 虚拟 IP(VIP)}track_script {check_nginx}
}

启动 Keepalived(在 Nginx Master(192.168.0.119) 和 Nginx Slave(192.168.0.120) 上执行):

sudo systemctl enable keepalived
sudo systemctl start keepalived

5.4 启动服务

在 Nginx Master(192.168.0.119) 和 Nginx Slave(192.168.0.120) 上执行:

docker-compose up -d

6. 文件共享配置 (NFS)

为确保 WordPress 文件和 Nginx 配置一致性,通过 NFS 共享以下目录:

  • /data/wordpress/uploads:WordPress 上传文件
  • /data/nginx/ssl:SSL 证书
  • /data/nginx/conf:Nginx 配置文件

6.1 NFS 服务端配置(主库服务器 192.168.0.118)

# 安装 NFS 服务
sudo apt install -y nfs-kernel-server# 配置 NFS 共享
sudo vim /etc/exports

添加以下内容:

/data/wordpress/uploads  *(rw,sync,no_subtree_check,no_root_squash)
/data/nginx/ssl          *(rw,sync,no_subtree_check,no_root_squash)
/data/nginx/conf         *(rw,sync,no_subtree_check,no_root_squash)

生效配置:

sudo exportfs -a
sudo systemctl restart nfs-kernel-server

6.2 NFS 客户端配置(从库服务器 192.168.0.117 及 Nginx Slave 192.168.0.120)

# 安装 NFS 客户端
sudo apt install -y nfs-common# 挂载 NFS 共享(192.168.0.117)
sudo mount -t nfs 192.168.0.118:/data/wordpress/uploads /data/wordpress/uploads
sudo mount -t nfs 192.168.0.118:/data/nginx/ssl /data/nginx/ssl# 挂载 NFS 共享(192.168.0.120)
sudo mount -t nfs 192.168.0.118:/data/nginx/conf /data/nginx/conf
sudo mount -t nfs 192.168.0.118:/data/nginx/ssl /data/nginx/ssl# 验证挂载
df -h | grep nfs

6.3 配置开机自动挂载

在 192.168.0.117 和 192.168.0.120 上编辑 /etc/fstab

sudo vim /etc/fstab

192.168.0.117 添加

192.168.0.118:/data/wordpress/uploads  /data/wordpress/uploads  nfs  defaults,_netdev,noatime  0  0
192.168.0.118:/data/nginx/ssl          /data/nginx/ssl          nfs  defaults,_netdev,noatime  0  0

192.168.0.120 添加

192.168.0.118:/data/nginx/conf  /data/nginx/conf  nfs  defaults,_netdev,noatime  0  0
192.168.0.118:/data/nginx/ssl  /data/nginx/ssl  nfs  defaults,_netdev,noatime  0  0

测试挂载:

sudo mount -a
df -h | grep -E 'uploads|ssl|conf'

提示:若挂载失败,检查 NFS 服务器状态或添加 x-systemd.automount 选项。

7. 验证配置

7.1 验证 MySQL 主从复制

在主库服务器:

docker exec -it docker-mysql-master mysql -uroot -p12345678 -e "SHOW MASTER STATUS;"

在从库服务器:

docker exec -it docker-mysql-slave mysql -uroot -p12345678 -e "SHOW SLAVE STATUS\G"

7.2 验证 ProxySQL 读写分离

进入 ProxySQL 管理界面:

docker exec -it proxysql mysql -uadmin -padmin -h127.0.0.1 -P6032

执行以下命令检查配置:

SELECT * FROM mysql_servers;
SELECT * FROM mysql_replication_hostgroups;
SELECT * FROM mysql_query_rules;
SELECT * FROM stats_mysql_connection_pool;

7.3 验证负载均衡

访问域名 wordpress.mxdx.com,多次刷新页面,检查日志确认请求分发:

tail -f /data/nginx/logs/wordpress.access.log  # 在 192.168.0.118 和 192.168.0.117 上
tail -f /data/nginx/logs/lb.access.log         # 在 192.168.0.119 和 192.168.0.120 上

7.4 验证 Nginx 高可用

  1. 检查 VIP 绑定: 在 192.168.0.119 上:

    ip addr show
    

    确认 VIP(192.168.0.100)绑定到网卡。

  2. 测试故障切换

    • 停止 Nginx Master(192.168.0.119):
      docker stop load-balancer
      
    • 在 192.168.0.120 上检查 VIP 是否接管:
      ip addr show
      
    • 通过浏览器访问 wordpress.mxdx.com,确认 WordPress 正常响应。
  3. 验证 NFS 同步

    • 在 192.168.0.118 更新 /data/nginx/conf/load-balancer.conf 或 /data/nginx/ssl
    • 在 192.168.0.119 和 192.168.0.120 检查同步:
      ls -l /data/nginx/conf
      ls -l /data/nginx/ssl
      

7.5 验证 NFS 共享

  1. 在 WordPress 后台上传图片,检查所有节点的 /data/wordpress/uploads 是否同步。
  2. 更新主库服务器的 /data/nginx/ssl 证书,确认所有 Nginx 容器可访问最新证书。

8. 常见 ProxySQL 命令

进入 ProxySQL 命令行:

docker exec -it proxysql mysql -uadmin -padmin -h127.0.0.1 -P6032

常用命令:

SELECT * FROM mysql_query_rules;  -- 查看查询规则
SELECT * FROM mysql_servers;      -- 查看后端服务器
SELECT * FROM mysql_replication_hostgroups;  -- 查看主从配置
SELECT * FROM stats_mysql_connection_pool;   -- 查看连接池状态
SELECT * FROM stats_mysql_query_rules;       -- 查看规则命中统计
SELECT * FROM monitor.mysql_server_ping_log ORDER BY time_start_us DESC LIMIT 3;  -- 检查后端健康状态

9. 注意事项

  • 密码安全:生产环境中请使用强密码替换 12345678,包括 Keepalived 认证密码。
  • 网络配置:确保服务器间网络畅通,防火墙(若有安装)开放必要端口(80、443、3306、6032、6033,以及 VRRP 协议端口 112)。

    • 示例防火墙规则:
      sudo ufw allow proto vrrp
      sudo ufw allow 80/tcp
      sudo ufw allow 443/tcp
      
  • NFS 可靠性:生产环境建议使用 systemd.automount 或高可用 NFS 方案(如 DRBD 或 GlusterFS)。
  • 备份策略:定期备份 MySQL 数据和 WordPress 文件。
  • Keepalived 健康检查:当前检查 Nginx 进程,可添加 HTTP 健康检查以提高可靠性。
    • 示例:
      vrrp_script check_nginx {script "curl -s http://localhost/health > /dev/null"interval 2weight -20
      }
      
      需要在 Nginx 配置中添加 /health 端点。
  • VIP 规划:确保 VIP(192.168.0.100)未被占用,且与网络网段一致。
  • 域名配置确保 wordpress.mxdx.com 已正确解析到 192.168.0.100,并在 WordPress 后台设置站点 URL 为 https://wordpress.mxdx.com 或 http://wordpress.mxdx.com

附录:带注释的 Docker Compose 文件

注意:生产环境建议使用简洁版 docker-compose.yml,避免注释导致解析问题。以下仅供学习参考。

主库服务器注释版

version: '3.8'
services:mysql:image: hub.yumesakura.com/library/mysql:8.0container_name: docker-mysql-masterenvironment:# 设置 MySQL root 用户密码MYSQL_ROOT_PASSWORD: 12345678# 创建默认数据库MYSQL_DATABASE: wordpress# 创建普通用户MYSQL_USER: wordpress# 设置普通用户密码MYSQL_PASSWORD: 12345678volumes:# 持久化 MySQL 数据- /data/mysql/data:/var/lib/mysql# 挂载配置文件目录- /data/mysql/conf:/etc/mysql/conf.dports:- "3306:3306"restart: unless-stoppedcommand:# 主库 ID- --server-id=1# 启用二进制日志- --log-bin=mysql-bin# 设置日志格式- --binlog-format=ROW# 允许外部连接- --bind-address=0.0.0.0networks:- wp_network# 其他服务配置略(与简洁版相同)
networks:wp_network:driver: bridge

从库服务器注释版(类似主库,略)。

负载均衡服务器(Nginx Slave,192.168.0.120)注释版

version: '3.8'
services:nginx:image: nginx:alpinecontainer_name: load-balancer-slave  # 容器名称ports:- "80:80"  # HTTP 端口映射- "443:443"  # HTTPS 端口映射volumes:- /data/nginx/conf:/etc/nginx/conf.d  # 共享 Nginx 配置文件- /data/nginx/logs:/var/log/nginx  # 日志目录- /data/nginx/ssl:/etc/ssl  # SSL 证书目录networks:- wp_network
networks:wp_network:driver: bridge
http://www.dtcms.com/a/344116.html

相关文章:

  • 行缓存(line buffer)在图像卷积中的工作方式
  • 【iOS】YYModel第三方库源码
  • 飞机起落架减震筒的深孔检测方法探究 - 激光频率梳 3D 轮廓检测
  • 用户登录Token缓存Redis实践:提升SpringBoot应用性能
  • Flutter学习笔记(七)---主题
  • 嵌入式学习day34-网络-tcp/udp
  • 如何判断是否应该为了一个小功能而引入一个大体积的库
  • 配电网重构优化:以减小网损为目标的智能算法实现
  • GitLab CI :深入剖析 gl-sbom-report.cdx.json 解码“数字身份证”
  • 云蝠智能 VoiceAgent:重构售后服务场景
  • 岭回归算法拉索回归
  • LeeCode 40.组合总和II
  • 数据结构之深入探索归并排序
  • 西门子S7-1200系列基本组态常见问题
  • 【C++】多态(详解)
  • Debezium监听MySQL binlog并实现有状态重启
  • 工业环境电缆火灾预防的分布式光纤在线监测
  • 质谱数据解读
  • 【微服务的数据一致性分发问题】究极解决方案
  • Unity设置UI显示区域
  • 主题配色下的背景透明度
  • uniapp plus.io API 封装文件读写方法
  • 【IDEA2017】使用设置+创建项目的不同方式
  • GaussDB SQL引擎(1)-SQL执行流程与解析器和优化器
  • 【Qt调试】断点时,Expressions不能查看变量
  • 新手向:用FastAPI快速构建高性能Web服务
  • 单北斗变形监测系统应用指南
  • c++:MFC中sqlite3的使用(附实际案例)
  • VScode远程连接Ubuntu报错问题分析
  • 表格识别技术:通过图像处理与深度学习,将非结构化表格转化为可编辑结构化数据,推动智能化发展