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

负载均衡深度实践:基于Nginx+Keepalived的高可用方案与Zabbix监控设计

目录

综合实践-部署负载均衡

1 环境准备

2 zabbix监控nginx和keeplive

2.1 nginx安装

2.2 安装keepalived

2.3 部署vue

2.4 安装agent

2.5 zabbix监控nginx配置

2.6 zabbix监控keeplived

3 zabbix监控jar

3.1 安装agent

3.2 安装jdk

3.3 部署jar包

3.4 配置web

4 zabbix 监控mysql

4.1 部署agent

4.2 安装mysql

4.3 zabbix监控mysql配置


综合实践-部署负载均衡

1 环境准备

类型

ip

os

hostname

zabbix-server

10.1.1.12

docker

zbx-server4G 100G

nginx1

10.1.1.22

centos7

zabbix-agent 1G 1cpu 20G

nginx2

10.1.1.33

centos7

zabbix-agent 1G 1cpu 20G

web1

10.1.1.44

centos7

zabbix-agent 1G 1cpu 20G

web2

10.1.1.11

centos7

zabbix-agent 1G 1cpu 20G

mysql

10.1.1.7

centos7

zabbix-agent 1G 1cpu 20G

2 zabbix监控nginx和keeplive

2.1 nginx安装

配置yum源

vim /etc/yum.repos.d/nginx.repo

[nginx-stable]

name=nginx stable repo

baseurl=http://nginx.org/packages/centos/$releasever/$basearch/

gpgcheck=1

enabled=0

gpgkey=https://nginx.org/keys/nginx_signing.key

module_hotfixes=true

安装

yum install -y nginx --enablerepo=nginx-stable

测试

rpm -qa | grep nginx

2.2 安装keepalived

yum install keepalived –y

测试

rpm -qa | grep keepalived

配置

vim /etc/keepalived/keepalived.conf

完成高可用配置(主从配置)

global_defs {

    router_id nginx_master  # 唯一标识(自定义)

}

# 定义健康检查脚本(检测 Nginx 是否存活)

vrrp_script chk_nginx {

    script "/usr/bin/killall -0 nginx"  # 通过检查 Nginx 进程是否存在

    interval 2                          # 每 2 秒检查一次

    weight 2                            # 优先级增减值(失败时降权)

}

vrrp_instance VI_1 {

    state MASTER         # 主节点

    interface ens33       # 绑定网卡(需根据实际网卡名修改,如 ens160)

    virtual_router_id 51 # 虚拟路由 ID(主备节点必须相同,范围 0-255)

    priority 90      # 优先级(主节点 > 备节点)

    advert_int 1         # 主备节点通信间隔(秒)

    # 认证配置(主备节点必须一致)

    authentication {

        auth_type PASS

        auth_pass 1111    # 密码(自定义)

    }

    # 虚拟 IP(VIP),客户端通过该 IP 访问服务

    virtual_ipaddress {

        10.1.1.6/24  # 格式:IP/子网掩码

    }

    # 绑定健康检查脚本

    track_script {

        chk_nginx

    }

}

备机

global_defs {

    router_id nginx_master  

}

vrrp_script chk_nginx {

    script "/usr/bin/killall -0 nginx"  

    interval 2                          

    weight 2                           

}

vrrp_instance VI_1 {

    state BACKUP        

    interface ens33      

    virtual_router_id 51

    priority 10      

    advert_int 1

   

    authentication {

        auth_type PASS

        auth_pass 1111

    }

   

    virtual_ipaddress {

        10.1.1.6/24

    }

   

    track_script {

        chk_nginx

    }

}

启动

nginx -t

systemctl start nginx

systemctl enable nginx

systemctl start keepalived.service

systemctl enable keepalived.service

测试

2.3 部署vue

vim /etc/nginx/conf.d/default.conf

server {

    listen 80;

    server_name localhost;  # 替换为实际域名或IP

    # 托管 Vue 前端

    root /var/www/vue-app;

    index index.html;

    # 处理 Vue Router 的 history 模式

    location / {

        try_files $uri $uri/ /index.html;

    }

    # 代理后端 API 请求

    location /api/ {

        proxy_pass http://backend_cluster/;  # 指向后端集群

        proxy_set_header Host $host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    }

    # 静态资源缓存

    location /static/ {

        expires 365d;

        add_header Cache-Control "public";

    }

}

# 后端服务集群负载均衡

upstream backend_cluster {

    # 配置负载均衡策略(如轮询、IP哈希)

    least_conn;

    server 10.1.1.44:8011;  # 后端实例1

    server 10.1.1.11:8011;  # 后端实例2

    keepalive 32;  # 保持长连接

}

2.4 安装agent

rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.2/rhel/7/x86_64/zabbix-agent-5.2.6-1.el7.x86_64.rpm

配置

vim /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix/zabbix_agentd.log

LogFileSize=0

Server=10.1.1.12

ServerActive=127.0.0.1

Hostname=zabbix-nginx-1

Include=/etc/zabbix/zabbix_agentd.d/*.conf

启动

systemctl start zabbix-agent && systemctl enable zabbix-agent

测试

2.5 zabbix监控nginx配置

启用 stub_status 模块

修改 Nginx 配置文件(如 /etc/nginx/conf.d/default.conf 或站点配置文件)

server {

    listen 80;

    server_name localhost;

    # 启用状态监控接口

    location /nginx_status {

        stub_status on;

        access_log off;

        allow 10.1.1.12;   # 允许本地访问(Zabbix Agent 所在 IP)

        deny all;         # 禁止其他 IP 访问

    }

}

重启 Nginx 服务

systemctl restart nginx

验证状态接口

使用 curl 检查状态接口是否生效:

curl http://127.0.0.1/nginx_status

输出结果:

Active connections: 3

server accepts handled requests

 100 100 200

Reading: 0 Writing: 1 Waiting: 2

配置web端

设置宏

配置主机

测试

2.6 zabbix监控keeplived

创建监控项脚本

vi /etc/zabbix/zabbix_agentd.d/keepalived.conf

UserParameter=keepalived.process,ps aux | grep -v grep | grep -c keepalived

web端配置

创建主机Template Keepalive

创建应用集

创建监控项

创建触发器

报警表达式

{Template Keepalived:keepalived.process.last()}<1

恢复表达式

{Template Keepalived:keepalived.process.last()}>=1

绑定主机

测试

另外一条nginx同样这样安装

3 zabbix监控jar

3.1 安装agent

rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.2/rhel/7/x86_64/zabbix-agent-5.2.6-1.el7.x86_64.rpm

配置

vim /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix/zabbix_agentd.log

LogFileSize=0

Server=10.1.1.12

ServerActive=127.0.0.1

Hostname=zabbix-nginx-2

Include=/etc/zabbix/zabbix_agentd.d/*.conf

启动

systemctl start zabbix-agent && systemctl enable zabbix-agent

3.2 安装jdk

检查是否安装java

java -vesion

卸载以前的包

# 查询已安装的 JDK 包

rpm -qa | grep 'java\|jdk\|gcj\|jre'

# 卸载指定包(替换为实际查询结果)

yum -y remove java-1.7.0-openjdk*

安装jdk

sudo yum install java-1.8.0-openjdk-devel

查看安装路径

ls /usr/lib/jvm

配置环境变量

sudo vi /etc/profile

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk  #填写自己的jdk路径

export PATH=$JAVA_HOME/bin:$PATH

环境生效

source /etc/profile

3.3 部署jar包

上传jar

anzhidian-1.0-SNAPSHOT.jar

运行jar 添加zabbix监控

//开jmx

nohup  java -Dcom.sun.management.jmxremote \

     -Dcom.sun.management.jmxremote.port=50999 \

     -Dcom.sun.management.jmxremote.rmi.port=50999 \

     -Dcom.sun.management.jmxremote.authenticate=false \

     -Dcom.sun.management.jmxremote.ssl=false \

     -Djava.rmi.server.hostname=10.1.1.22 \

     -jar  anzhidian-1.0-SNAPSHOT.jar > ./anzhidian.log 2>&1 &

     

     

  

  //命令没有开启jmx   

nohup  java -jar  anzhidian-1.0-SNAPSHOT.jar > ./anzhidian.log 2>&1 &     

     

     

     

测试一:

通过网盘分享的文件:张家界学院

链接: https://pan.baidu.com/s/1fnXA14o2jb_wTNFqxlN_cw?pwd=nahj 提取码: nahj

使用:cmdline-jmxclient-0.10.3.jar 测试

java -jar cmdline-jmxclient-0.10.3.jar - 192.168.157.152:50999 java.lang:type=Memory NonHeapMemoryUsage

测试结果

3.4 配置web

另外一台同样部署

4 zabbix 监控mysql

4.1 部署agent

rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.2/rhel/7/x86_64/zabbix-agent-5.2.6-1.el7.x86_64.rpm

配置

vi /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix/zabbix_agentd.log

LogFileSize=0

Server=10.1.1.12

ServerActive=127.0.0.1

Hostname=zabbix-nginx-1

Include=/etc/zabbix/zabbix_agentd.d/*.conf

启动

systemctl start zabbix-agent && systemctl enable zabbix-agent

4.2 安装mysql

卸载旧版本

# 查看已安装的 MariaDB/MySQL 包

sudo rpm -qa | grep mariadb

sudo rpm -qa | grep mysql

# 卸载相关包(根据实际查询结果替换包名)

sudo yum remove mariadb-libs-* mysql-*

添加 MySQL 8.0 Yum 仓库

sudo yum install -y wget

wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm

安装仓库 RPM 包

sudo rpm -ivh mysql80-community-release-el7-6.noarch.rpm

验证仓库是否添加成功

yum repolist enabled | grep "mysql.*-community.*"

安装 MySQL 服务

导入GPG密钥

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

安装

sudo yum install -y mysql-community-server

出现异常

获取 GPG 密钥失败:[Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql-2022"

禁用秘钥

sudo yum install mysql-community-server --nogpgcheck

用后再次安装

sudo yum install -y mysql-community-server

验证版本

mysqld --version

启动 MySQL 服务

sudo systemctl start mysqld        # 启动服务

sudo systemctl enable mysqld       # 设置开机自启

sudo systemctl status mysqld       # 检查服务状态

获取临时 root 密码

sudo grep 'temporary password' /var/log/mysqld.log

dd3+kve,u(sC

运行安全配置向导

sudo mysql_secure_installation

新密码:Passw@rd123

配置远程访问(可选)

CREATE USER 'root'@'%' IDENTIFIED BY 'Passw@rd123';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

修改配置文件(可选)

编辑 MySQL 配置文件 /etc/my.cnf,按需调整参数(如字符集、最大连接数):

[mysqld]

character-set-server=utf8mb4

collation-server=utf8mb4_unicode_ci

default-authentication-plugin=mysql_native_password  # 兼容旧版认证方式

max_connections=1000

重启

sudo systemctl restart mysqld

4.3 zabbix监控mysql配置

创建 Zabbix 监控用户

CREATE USER 'zabbix'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'Zabbix@123';

GRANT SELECT, PROCESS, REPLICATION CLIENT, SHOW DATABASES ON *.* TO 'zabbix'@'%';

FLUSH PRIVILEGES;

注意:MySQL 8.0 默认使用 caching_sha2_password,若 Zabbix Agent 不支持此插件,可改用 mysql_native_password

配置 Zabbix Agent

下载官方 MySQL 模板:Template DB MySQL。

sudo vim /etc/zabbix/zabbix_agentd.d/template_mysql.conf

创建 MySQL 专用配置文件

UserParameter=mysql.ping[*], mysqladmin -h"$1" -P"$2" ping

UserParameter=mysql.get_status_variables[*], mysql -h"$1" -P"$2" -sNX -e "show global status"

UserParameter=mysql.version[*], mysqladmin -s -h"$1" -P"$2" version

UserParameter=mysql.db.discovery[*], mysql -h"$1" -P"$2" -sN -e "show databases"

UserParameter=mysql.dbsize[*], mysql -h"$1" -P"$2" -sN -e "SELECT COALESCE(SUM(DATA_LENGTH + INDEX_LENGTH),0) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"

UserParameter=mysql.replication.discovery[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"

UserParameter=mysql.slave_status[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"

新建目录/var/lib/zabbix

mkdir /var/lib/zabbix

新建.my.cnf

vi .my.cnf

[client]

user='zabbix'

password='Zabbix@123'

重启

sudo systemctl restart zabbix-agent

检查

zabbix_get -s 127.0.0.1 -k "mysql.version"  版本

zabbix_get -s 127.0.0.1 -k "mysql.status[Threads_connected]"  链接数

zabbix web 配置

配置模版

设置宏

主机配置

测试

配置完成

相关文章:

负载均衡深度实践:基于Nginx+Keepalived的高可用方案与Zabbix监控设计

目录 综合实践-部署负载均衡 1 环境准备 2 zabbix监控nginx和keeplive 2.1 nginx安装 2.2 安装keepalived 2.3 部署vue 2.4 安装agent 2.5 zabbix监控nginx配置 2.6 zabbix监控keeplived 3 zabbix监控jar 3.1 安装agent 3.2 安装jdk 3.3 部署jar包 3.4 配置web 4…...

深度学习基础--目标检测入门简介

博主简介&#xff1a;努力学习的22级本科生一枚 &#x1f31f;​ 博客主页&#xff1a;羊小猪~~-CSDN博客 内容简介&#xff1a;探索AI算法&#xff0c;C&#xff0c;go语言的世界&#xff1b;在迷茫中寻找光芒​&#x1f338;​ 往期回顾&#xff1a;yolov5基础–一步一步教…...

Redis ⑧-RESP | 渐进式遍历 | 数据库管理

Redis data-types 除了之前学习的 string、hash、list、set、Zset 五种数据结构之外&#xff0c;Redis 还提供了 bitmap、bitfield、 hyperloglog、geospatial、stream 等数据结构。 另外的一些数据结构&#xff0c;都是在某些特定环境下才会使用&#xff0c;使用频率不高&…...

【Android】四大组件之ContentProvider

目录 一、什么是 ContentProvider 二、创建和使用 ContentProvider 三、跨应用权限控制 四、数据变更通知 五、多表关联与视图 六、异步处理 你手机里的通讯录&#xff0c;存储了所有联系人的信息。如果你想把这些联系人信息分享给其他App&#xff0c;就可以通过ContentP…...

Qwen3 发布:优化编码与代理能力,强化 MCP 支持引领 AI 新潮流

人工智能领域的每一次重大突破都如同璀璨星辰&#xff0c;照亮了人类前行的道路。2025 年 4 月 29 日凌晨&#xff0c;阿里巴巴旗下的 Qwen 官方团队正式发布了最新一代大语言模型 ——Qwen3&#xff0c;犹如一颗重磅炸弹&#xff0c;在 AI 领域掀起了惊涛骇浪。此次发布&#…...

LEETERS题解

【题目描述】 给出一个rowcolrowcol的大写字母矩阵&#xff0c;一开始的位置为左上角&#xff0c;你可以向上下左右四个方向移动&#xff0c;并且不能移向曾经经过的字母。问最多可以经过几个字母。 【输入】 第一行&#xff0c;输入字母矩阵行数RR和列数SS&#xff0c;1≤R,S≤…...

图像加密算法概述

版本: 1.0 日期: 2025年5月1日 目录 引言 1.1 什么是图像加密?1.2 为什么需要图像加密?1.3 图像数据的特点与加密挑战加密基础概念 2.1 明文与密文2.2 加密与解密2.3 密钥2.4 对称加密与非对称加密为什么传统文本加密算法不完全适用于图像? 3.1 数据量巨大3.2 高度冗余性…...

loads、dumps、jsonpath使用场景

在处理JSON数据时&#xff0c;loads、dumps 和 jsonpath 是三个非常有用的工具或概念。它们各自在不同的场景下发挥作用&#xff0c;让我们一一来看&#xff1a; 1. loads loads 函数是 Python 中 json 模块的一部分&#xff0c;用于将 JSON 格式的字符串解析成 Python 的数据…...

Winform(7.序列化方式整理)

今天我又对序列化方式进行了整理,可以与上一篇序列化方式一起看 一.序列化方式(四种) 1.二进制序列化 //定义 Person 类,需要标记为可序列化 [Serializable] public class Person { public string Name{get;set;} public int Age{get;set;} } 在进行二进制序列化…...

通过AI的联网功能提升搜索检索能力

以百度ai搜索&#xff08;百度AI搜索 - 办公学习一站解决&#xff09;为例&#xff0c;ai会自动根据问题搜集现有互联网文章&#xff0c;避免人工通过传统检索引擎的结果逐个去查找&#xff0c;这种方式文章的相关性会更高。 tip&#xff1a;快速查看每篇文档&#xff0c;仅关…...

Spring IoC容器的设计与实现

Spring整体架构与模块划分 核心容器&#xff08;Core Container&#xff09; spring-core 基础工具类&#xff1a;如资源加载&#xff08;Resource接口&#xff09;、反射工具&#xff08;ReflectionUtils&#xff09;、类型转换&#xff08;ConversionService&#xff09;。…...

使用vue的插值表达式渲染变量,格式均正确,但无法渲染

如图&#xff0c;作者遇到的问题为&#xff0c;输入以下代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…...

数据库 AI 助手测评:Chat2DB、SQLFlow 等工具如何提升开发效率?

一、引言:数据库开发的 “效率革命” 正在发生 在某互联网金融公司的凌晨故障现场,资深 DBA 正满头大汗地排查一条执行超时的 SQL—— 该语句涉及 7 张核心业务表的复杂关联,因索引缺失导致全表扫描,最终引发交易系统阻塞。这类场景在传统数据库开发中屡见不鲜:据 Gartne…...

21.1Linux中的LCD驱动实验(知识)_csdn

1、LCD 和 LTDC 简介 1.1、LCD 简介 1.1.1、分辨率 1.1.2、像素格式 可以看到红、绿、蓝每个8位&#xff0c;还有一位是A7~A0就是透明通道&#xff0c;32位ARG8888。 1.1.3、LCD 屏幕接口 1.1.4、LCD 时间参数 如果将 LCD 显示一帧图像的过程想象成绘画&#xff0c;那么…...

Angular教程前言:历史、安装与用途

Angular 是一个强大且流行的开源前端 Web 应用程序框架&#xff0c;由 Google 开发并维护 1。它在现代 Web 开发中占据着重要的地位&#xff0c;尤其在构建动态、高效且可扩展的 Web 应用程序方面表现出色&#xff0c;特别适用于单页应用程序 (SPA) 和复杂的用户界面 1。本教程…...

node.js模块化步骤(各标准区别)CommonJS规范、AMD规范、UMD规范、ES Modules (ESM)

前后端建议统一使用ESM 文章目录 Node.js模块化发展历程与标准对比一、模块化的意义1.1 解决的核心问题1.2 没有模块化的问题 二、CommonJS规范2.1 核心特征2.2 实现示例 三、AMD (Asynchronous Module Definition)3.1 特点3.2 代码示例 四、UMD (Universal Module Definition)…...

Unity图片导入设置

&#x1f3c6; 个人愚见&#xff0c;没事写写笔记 &#x1f3c6;《博客内容》&#xff1a;Unity3D开发内容 &#x1f3c6;&#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f50e;Unity支持的图片格式 ☀️BMP:是Windows操作系统的标准图像文件格式&#xff0c;特点是…...

MySQL与分布式架构的碰撞

目录 一、分布式架构的核心挑战与MySQL的应对策略 1.1 高并发与扩展性 1.3 高可用与容灾 二、MySQL分布式架构的核心技术实现 2.1 读写分离与主从复制&#xff08;扩展&#xff09; 2.2 数据分片与分布式存储&#xff08;扩展&#xff09; 2.3 MySQL Cluster与NDB引擎&am…...

python-MySQL鏈接

python鏈接MySQL&#xff0c;主要利用庫 pip install mysql-connector-pythonimport mysql.connector# 配置连接参数 config {"user": "your_username","password": "your_password","host": "localhost", # 或…...

cv::remap() 和 cv::undistortion() 的区别

在 OpenCV 中&#xff0c;cv::remap 和 cv::undistort 都用于处理图像畸变校正&#xff0c;但它们的实现方式和应用场景有显著区别。以下是详细对比&#xff1a; 1. cv::undistort&#xff1a;直接畸变校正 功能 输入&#xff1a;原始畸变图像 相机内参矩阵 (cameraMatrix) …...

【AI提示词】决策树专家

提示说明 一位熟悉决策树算法的机器学习专家&#xff0c;擅长用树状图量化不同选择的结果概率。 提示词 # Role: 决策树专家## Profile - language: 中文 - description: 一位熟悉决策树算法的机器学习专家&#xff0c;擅长用树状图量化不同选择的结果概率 - background: 决…...

【中间件】bthread_数据结构_学习笔记

bthread数据结构 bthread_数据结构_学习笔记1 pthread_cond_t1.1 definition1.2 解释1.3 设计动机1.4 使用示例1.5 注意事项1.6 进一步延伸&#xff1a;pthread_cond_s 2 pthread_mutex_t bthread_数据结构_学习笔记 1 pthread_cond_t POSIX线程库 /usr/include/x86_64-linux…...

VM虚拟机安装CentOS7.9

目录 1.下载CentOS7.9 2.VM虚拟机选择自定义&#xff0c;然后一直傻瓜式下一步 3.选择编辑虚拟机设置&#xff0c;然后选择刚刚下载的ISO 4.输入 ip addr 获取ip地址 5.用Xshell连接 1.下载CentOS7.9 链接&#xff1a;https://pan.baidu.com/s/1kW2gGWnbcjNtq4kz46LKVw?p…...

C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 18)

&#x1f381;个人主页&#xff1a;工藤新一 &#x1f50d;系列专栏&#xff1a;C面向对象&#xff08;类和对象篇&#xff09; &#x1f31f;心中的天空之城&#xff0c;终会照亮我前方的路 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 文章目录 二…...

Cribl 数据脱敏 更多方法 MASK (三)

我做过好几个cribl 数据脱敏的实验: Cribl 脱敏mask-CSDN博客...

【笔记】深度学习模型训练的 GPU 内存优化之旅⑤:内存分配篇

开设此专题&#xff0c;目的一是梳理文献&#xff0c;目的二是分享知识。因为笔者读研期间的研究方向是单卡上的显存优化&#xff0c;所以最初思考的专题名称是“显存突围&#xff1a;深度学习模型训练的 GPU 内存优化之旅”&#xff0c;英文缩写是 “MLSys_GPU_Memory_Opt”。…...

【5G 架构】边缘计算平台是如何与3GPP网络连接的?

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…...

5.0.0 GripSpliter的使用(探讨水平竖直对齐参数)

布局控件Grid 配合 GridSplitter 无需编写任何代码 就能实现网格大小可拖动。 其HorizontalAlignment、VerticalAlignment属性的使用非常具有迷惑性;本文做了一些一些实验,总结为把这两个属性均设置为strech即可。 总结如下:经过实验,发现以下情况可以正常工作。 水平方向…...

python如何把pdf转word

在Python中将PDF转换为Word文档&#xff08;.docx&#xff09;比反向转换&#xff08;Word转PDF&#xff09;更具挑战性&#xff0c;因为PDF是固定格式&#xff0c;而Word是可编辑格式。以下是几种可行的方法及详细步骤&#xff1a; 方法1&#xff1a;使用 pdf2docx 库 pdf2do…...

go实现双向链表

需求 实现双向链表的节点生成、正反向遍历、指定删除。 实现 package mainimport ("fmt" )type zodiac_sign struct {number intdizhi stringanimal stringyear intprevious *zodiac_signnext *zodiac_sign }// 添加 // func add_node_by_order(pr…...

33、VS中提示“以下文件中的行尾不一致。是否将行尾标准化?“是什么意思?

在Visual Studio&#xff08;VS&#xff09;中遇到提示“以下文件中的行尾不一致。是否将行尾标准化&#xff1f;”时&#xff0c;意味着当前打开或正在编辑的文件内部存在行尾符&#xff08;EOL&#xff0c;End-Of-Line&#xff09;格式不统一的情况。以下是详细解释和应对建议…...

C 语言 第五章 指针(5)

目录 函数参数传递机制&#xff1a;地址传递 值传递 简单变量指针作为形参 举例1&#xff1a; 举例2&#xff1a; 举例3&#xff1a; 数组作为形参 举例&#xff1a; 函数参数传递机制&#xff1a;地址传递 值传递 void test(int a, int b) { a 10; b 20; print…...

Python项目源码69:Excel数据筛选器1.0(tkinter+sqlite3+pandas)

功能说明&#xff1a;以下是一个使用Tkinter和Pandas实现的完整示例&#xff0c;支持Excel数据读取、双表格展示和高级条件筛选功能&#xff1a; 1.文件操作&#xff1a;点击"打开文件"按钮选择Excel文件&#xff08;支持.xlsx和.xls格式&#xff09;&#xff0c;自…...

机器人--架构及设备

机器人的四大组成部分 控制系统 驱控系统 驱控驱动系统控制系统。 注意&#xff0c;这里的控制系统不是机器人层面的控制系统&#xff0c;属于更小层级的&#xff0c;驱控系统的控制系统。 驱动系统&#xff1a; 一般指硬件设备&#xff0c;比如电机驱动器&#xff0c;I/O…...

机器人--主机--控制系统

机器人主机 机器人主机&#xff0c;即控制系统。 作用 机器人主机的核心功能 传感器数据处理&#xff1a;处理摄像头、激光雷达、IMU等数据。 运行SLAM/导航算法&#xff1a;如Google Cartographer、RTAB-Map。 路径规划与控制&#xff1a;执行A*、DWA等算法。 通信管理&a…...

Stm32 烧录 Micropython

目录 前言 准备工作 开始操作 问题回顾 后记 前言 去年曾经尝试Pico制作openmv固件&#xff0c;由于知识储备不够最后失败了&#xff0c;留了一个大坑&#xff0c;有了前几天的基础&#xff0c;慢慢补齐知识&#xff0c;最近这一周一直在学习如何编译Stm固件并烧录到单片机…...

leetcode 977. Squares of a Sorted Array

题目描述 双指针法一 用right表示原数组中负数和非负数的分界线。 nums[0,right-1]的是负数&#xff0c;nums[right,nums.size()-1]是非负数。 然后用合并两个有序数组的方法。合并即可。 class Solution { public:vector<int> sortedSquares(vector<int>&…...

使用Nexus搭建远程maven仓库

1、Nexus介绍 Nexus 是 Sonatype 公司的一款用于搭建私服的产品&#xff0c;使用非常广泛。在早期&#xff0c;我们都拿Nexus当maven私服仓库&#xff0c;后来&#xff0c;随着版本不断更新&#xff0c;它支持的数据类型越来越多&#xff0c;比如npm仓库&#xff0c;nuget仓库&…...

坚鹏:工行《DEEPSEEK赋能银行智能办公及数字化营销服务》培训

中国工商银行上海市分行《DEEPSEEK赋能银行智能办公及数字化营销服务》培训圆满落幕 中国工商银行作为全球领先的综合性金融服务集团&#xff0c;始终走在金融科技创新的前沿。截至2024年末&#xff0c;工商银行总资产规模突破40万亿元&#xff0c;连续多年稳居全球银行榜首。在…...

操作系统OS是如何指挥外围设备的呢?

众所周知&#xff0c;OS的职责之一就是管理外围设备&#xff0c;比如常见的磁盘、硬盘、显示器、麦克风等&#xff0c;但并不是外围设备的一切都必须由OS管理&#xff0c;比如无线鼠标上的开关键&#xff0c;当你通过它关闭鼠标时&#xff0c;这个操作并不会经过OS&#xff0c;…...

实现Sentinel与Nacos的规则双向同步

实现Sentinel与Nacos的规则双向同步&#xff1a;完整解决方案 前言 在微服务架构中&#xff0c;流量控制和熔断降级是保障系统稳定性的重要手段。阿里开源的Sentinel作为一款轻量级的流量控制组件&#xff0c;常被用于实现这些功能。然而&#xff0c;在实际生产环境中&#x…...

2025五一杯数学建模A题:支路车流量推测问题,思路分析+模型代码

一持续更新&#xff0c;见文末名片 二、问题背景 想象一下&#xff0c;城市的道路如同一张巨大的脉络图&#xff0c;主路如同大动脉&#xff0c;配备着车流量监测设备&#xff0c;能实时记录车流量数据&#xff0c;就像我们身体的传感器一样。然而&#xff0c;当多条支路像毛细…...

Linux51 安装baidunetdisk yum install rpm -ivh

推测网卡 感觉是不是以前哪里设置了下 deepseek说的这个设置 我没有设置过 这个不会弄啊 准备用虚拟机安个软件 神奇 换了这个命令又能打开网卡了 参考了这个 参考 之前地址我觉得配置错误 动态分配 我就删掉ip地址了 路由表中无ip地址吗&#xff1f; OK 卸载 运…...

【Python-Day 8】从入门到精通:Python 条件判断 if-elif-else 语句全解析

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

若依 FastAPI + Vue3 项目 Docker 部署笔记( 启动器打包教程)

本文记录了将 start.bat 打包成 .exe 启动器的详细教程&#xff0c;适合项目交付或导师演示用。 &#x1f9ed; 一、如何将 start.bat 打包为启动器 .exe&#xff08;含图标 自动打开浏览器&#xff09; ✅ 1. 创建三大功能脚本 start.bat → 启动项目&#xff08;docke…...

Lebesgue测度和积分理论发展概观

1. 发展背景 积分可以从两个角度来理解。首先&#xff0c;积分是微分的逆函数&#xff0c;因此积分是反导数(译注&#xff1a;但积分是独立于微分的&#xff0c;不能微分的函数也可能可积)。然而&#xff0c;这是一个非常抽象的概念。其次&#xff0c;两点之间的积分可以看…...

算法题题型总结

二叉树题型 解法综述&#xff1a;二叉树的解法&#xff0c;基本上都是依赖遍历&#xff0c;再加上递归的思路来做的。那递归又分为深度优先和广度优先。深度优先算法&#xff0c;前序&#xff0c;中序&#xff0c;后序。广度优先&#xff0c;利用先进先出队列&#xff0c;一层…...

网络编程——TCP和UDP详细讲解

文章目录 TCP/UDP全面详解什么是TCP和UDP&#xff1f;TCP如何保证可靠性&#xff1f;1. 序列号&#xff08;Sequence Number&#xff09;2. 确认应答&#xff08;ACK&#xff09;3. 超时重传&#xff08;Timeout Retransmission&#xff09;4. 窗口控制&#xff08;Sliding Win…...

Qt多线程TCP服务器实现指南

在Qt中实现多线程TCP服务器可以通过为每个客户端连接分配独立的线程来处理&#xff0c;以提高并发性能。以下是一个分步实现的示例&#xff1a; 1. 自定义工作线程类&#xff08;处理客户端通信&#xff09; // workerthread.h #include <QObject> #include <QTcpSo…...

【经管数据】A股上市公司资产定价效率数据(2000-2023年)

数据简介&#xff1a;资产定价效率是衡量市场是否能够有效、准确地反映资产内在价值的重要指标。在理想的市场条件下&#xff0c;资产的市场价格应该与其内在价值保持一致&#xff0c;即市场定价效率达到最高。然而&#xff0c;在实际市场中&#xff0c;由于信息不对称、交易摩…...