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

zabbix企业级监控平台

zabbix部署

安装源

重新创建纯净环境,利用base克隆一台虚拟机server1

给server1做快照,方便下次实验恢复使用

进入zabbix官网https://www.zabbix.com

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

#安装 Zabbix 监控系统的 YUM 软件源配置包。这个命令将会下载并安装 Zabbix 5.0 版本适用于 CentOS/RHEL 7 x86_64 系统的软件源配置文件 zabbix-release-5.0-1.el7.noarch.rpm。

官网的yum源下载速度慢,可以使用清华下载站

vim zabbix.repo

yum clean all

#清理yum的缓存,包括下载的软件包和元数据。通过运行这个命令,可以释放磁盘空间并确保系统中使用的软件包信息是最新的

yum install zabbix-server-mysql zabbix-agent

#安装Zabbix server,Web前端,agent

安装 Zabbix 前端和启用 Red Hat Software Collections:

yum install -y centos-release-scl-2-3.el7.centos.noarch.rpm  centos-release-scl-rh-2-3.el7.centos.noarch.rpm

#安装

yum repolist

#列出系统中配置的 YUM 软件源(repositories)以及它们的状态和信息

yum install zabbix-web-mysql-scl zabbix-apache-conf-scl

#安装前端界面包

tar xf mysql-5.7.33-1.el7.x86_64.rpm-bundle.tar

#解压编译好的mysql开发包

yum install -y mysql-community-client-5.7.33-1.el7.x86_64.rpm mysql-community-common-5.7.33-1.el7.x86_64.rpm mysql-community-libs-5.7.33-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.33-1.el7.x86_64.rpm mysql-community-server-5.7.33-1.el7.x86_64.rpm

#安装rpm软件包,这种安装方法速度快

systemctl status mysqld

#查看mysql状态,自动创建了启动脚本

systemctl enable --now mysqld

#开机自启

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

#过滤日志中记录的临时密码

mysql_secure_installation

#安全初始化,设置新密码为YQMyqm0626*

mysql -pYQMyqm0626*

#登录数据库

创建zabbix数据库:

create database zabbix character set utf8 collate utf8_bin;

#创建一个名为zabbix,字符集为utf8,校对规则为utf8_bin的数据库

create user zabbix@localhost identified by 'YQMyqm0626*';

#中创建一个名为zabbix的用户,允许该用户只能从本地主机(localhost)登录,并设置密码为YQMyqm0626*

grant all privileges on zabbix.* to zabbix@localhost;

#授予zabbix@localhost用户对zabbix数据库的全部权限

set global log_bin_trust_function_creators = 1;

#设置全局变量log_bin_trust_function_creators的值为1,允许在具有二进制日志的 MySQL 实例中创建和修改函数,而无需super权限

zcat /usr/share/doc/zabbix-server-mysql-5.0.42/create.sql.gz | mysql -uzabbix -pYQMyqm0626* zabbix

#导入数据,数据量较大,需要等待,不要中断

可使用zabbix用户身份,已经拥有所有权限

mysql> set global log_bin_trust_function_creators = 0;

#将全局变量log_bin_trust_function_creators的值设为0,禁止在具有二进制日志的 MySQL 实例中创建和修改函数,除非用户具有 SUPER 权限

vim /etc/zabbix/zabbix_server.conf

#编辑配置文件

vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

#配置zabbix前端

systemctl enable --now zabbix-server zabbix-agent httpd rh-php72-php-fpm

#设置Zabbix 服务器、Zabbix Agent、Apache(httpd)以及 PHP-FPM 服务开机自启

访问前端 http://192.168.145.11/zabbix

填写数据库连接信息

填写zabbix server信息

登陆前端的用户密码是:Admin/zabbix

修改前端语言

修改字体文件

最终指向的是DejaVu Sans 字体,是系统字体

DejaVu Sans 是一种常用的开源无衬线字体,具有良好的可读性和跨平台兼容性,适合用于屏幕显示和打印输出。通过指定这个路径,系统或应用程序可以引用并使用 DejaVu Sans 字体来显示文本内容,以确保文本在界面上能够正确显示并保持一致的外观。

cp simkai.ttf /usr/share/zabbix/assets/fonts

#将下载的楷体字体文件放到字体存储的目录中

rm -f graphfont.ttf

#删除原来的软连接

ln -s simkai.ttf graphfont.ttf

#将graphfont.ttf重新指向simkai.ttf字体文件,可以方便地引用simkai.ttf字体文件,而无需复制或移动文件内容

vim /usr/share/zabbix/include/defines.inc.php

#查看配置文件

指定了字体文件,所以做软链接指向要使用的字体文件即可,不用修改配置文件


添加agent

从母镜像base克隆两台虚拟机server2,server3,设置主机名为server2,server3,ip地址分别为192.168.145.12,192.168.145.13

1.手动添加 

scp zabbix.repo server2:/etc/yum.repos.d/

#从server1拷贝repo文件到server2 

server2:

vim /etc/yum.repo.d/zabbix.repo

yum install -y zabbix-agent

#安装zabbix-agent

vim /etc/zabbix/zabbix_agentd.conf

#编辑配置文件

systemctl enable --now zabbix-agent.service

#启动服务

server端:

2.自动发现

配置server3

scp zabbix.repo server3:/etc/yum.repos.d/

#从server2拷贝repo文件

vim /etc/zabbix/zabbix_agentd.conf

#编辑配置文件

systemctl  enable --now zabbix-agent.service

#启动服务

server端:

打开agent即可

要先启用动作再启用发现

适合通用大批量主机管理,并不具备实时性,因为有时间间隔

3.自动注册

停用自动发现规则

删除server3主机

可根据实际应用场景选择添加不同动作

systemctl restart zabbix-agent.service

#重启server3的agent服务

是由agent端完成动作,具有实时性

自动发现适合大批量通用型添加场景

4.zabbix api

Zabbix API是Zabbix监控系统提供的应用程序接口(Application Programming Interface),用于通过HTTP/HTTPS协议与Zabbix服务器进行通信。通过Zabbix API,用户可以以编程方式执行各种操作,如创建、修改和删除监控项、主机、触发器、图表等。这使得用户可以自动化监控系统的管理和配置,同时也可以将Zabbix集成到其他应用程序或工具中。

Zabbix API提供了RESTful风格的API,支持JSON和XML格式的数据交换。通过调用API方法,用户可以执行各种操作,并获取系统状态和监控数据。例如,可以使用API创建一个新的监控项,获取主机的当前状态,或者检索触发器的历史数据。

使用Zabbix API,用户可以根据自己的需求开发自定义的监控解决方案,或者集成Zabbix监控系统到其它自动化工具和流程中,从而实现更高效的监控管理和自动化运维。

curl -s -X POST http://192.168.145.11/zabbix/api_jsonrpc.php -H 'Content-Type: application/json-rpc' -d '
{
    "jsonrpc": "2.0",
    "method": "user.login",
    "params": {
        "user": "Admin",
        "password": "zabbix"
    },
    "id": 1,
    "auth": null
}' | python -m json.tool

#获取token值

{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "1e4cc57eb1e0583ff63ef25cfdbb581c"
}

#认证后获取的token值

也可将curl命令写入脚本,添加可执行权限,执行脚本即可获得token值

检索主机:

#执行查询操作,获取主机信息以及它们的接口信息

删除主机

删除server3主机,id为10440

修改脚本内容为删除10440主机

./zabbix-api.sh

#执行

创建主机

生效

在生产环境更加适用


服务监控

1.nginx监控 

在server2安装nginx

使用nginx-1.23.3版本

tar zxf nginx-1.23.3.tar.gz

#解压

yum install -y gcc make openssl-devel pcre-devel

#安装依赖性

./configure  --with-http_stub_status_module --with-http_ssl_module

#配置

不指定安装路径,也自动安装到了/usr/local/nginx

make

#编译

make install

#安装

ln -s /usr/local/nginx/sbin/nginx  /usr/local/bin/

#创建软连接,便于启动

vim /usr/local/nginx/conf/nginx.conf

#编辑配置文件,配置stub_status模块

#访问/basic_status路径时,Nginx会返回服务器的简单状态信息

nginx

#启动服务

curl  localhost/basic_status

#访问本地/basic_status,获取服务器简单信息

多次访问

监控显示:

稍作等待,监控数据就会出现,采集数据有一定的时间间隔

在官方文档查看zabbix安装要求

数据库要求:

可根据主机所有监控项换算所需的磁盘大小

2.mysql监控

zabbix自带mysql模板 

为zabbix server链接mysql监控模板

拷贝模板:

cp /usr/share/doc/zabbix-agent-5.0.42/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.d/

#拷贝

创建数据库连接用户

GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';

#授予了'zbx_monitor'用户在所有数据库上执行以下操作的权限

  • REPLICATION CLIENT: 允许用户查看关于复制的信息,例如主从复制状态。
  • PROCESS: 允许用户查看当前正在执行的进程。
  • SHOW DATABASES: 允许用户查看所有数据库的列表。
  • SHOW VIEW: 允许用户查看数据库中的视图。

这个语句中的*.*表示所有数据库和所有表。'zbx_monitor'@'%'指定了用户的用户名为'zbx_monitor',并且可以从任何主机(%表示任何主机)连接到MySQL服务器。

创建数据库连接文件

mkdir /var/lib/zabbix/

vim /var/lib/zabbix/.my.cnf

systemctl restart zabbix-agent.service

#重启agent

查看mysql监控

percona数据库模板

清理掉原来模板

rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm

#安装 Percona 提供的 Zabbix 模板包

  • -ivh: 这三个选项分别代表:
    • -i: 安装一个新的软件包。
    • -v: 在安装过程中显示详细信息,即 verbose 模式。
    • -h: 在显示安装进度条时,以 hash 标识进度。

cd /var/lib/zabbix/percona/templates

cp userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/

#拷贝模板,存放key/value

rm -f /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

#删除原来的模板

现在模板内容更多

systemctl restart zabbix-agent.service

#重启agent

cd /var/lib/zabbix/percona/scripts/

vim ss_get_mysql_stats.php

#编辑php脚本

ln -s /opt/rh/rh-php72/root/usr/bin/php /usr/bin/php

#创建软连接,方便调用php

/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh gg

#运行脚本

运行该脚本加上键值gg是获取mysql的key-read-requests指标

有数据显示就表示正常

数据已经做过格式化,key/value机制

此时缓存文件是root身份创建的,最终要实现zabbix用户自行创建

rm -f localhost-mysql_cacti_stats.txt

#删除/tmp下的缓存文件,如果不删除后期则zabbix用户无法修改文件

导入模板文件

等待监控数据生成

3.tomcat监控

yum install -y java-1.8.0-openjdk.x86_64

#安装java openjdk软件包

tar zxf apache-tomcat-8.5.24.tar.gz -C /usr/local

#解压tomcat软件压缩包

cd /usr/local/

ln -s apache-tomcat-8.5.24/ tomcat

#创建软链接

cd /usr/local/tomcat/bin/

vim catalina.sh

#编辑tomcat启动脚本

CATALINA_OPTS='-Dcom.sun.management.jmxremote.port=8888

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

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

#配置 Apache Tomcat 服务器的 JMX 远程管理功能,指定 JMX 远程管理的端口为8888

./startup.sh

#启动tomcat服务器

服务不能all in一台服务器

在server1安装java网关:

yum install -y zabbix-java-gateway

#安装zabbix-java-gateway,作为一个中间件,连接 Zabbix Server 和监控的 Java 应用程序之间的通信

systemctl  enable --now zabbix-java-gateway.service

#启动服务

vim /etc/zabbix/zabbix_server.conf

#修改zabbix server配置文件

StartJavaPollers 用于处理 Java 监控数据的 Java Poller 进程的数量。Java Poller 负责从 Java 应用程序中收集监控数据并将其传递给 Zabbix Server。通过设置该参数,可以控制并发处理的 Java 监控数据的数量。在这里,设置为 5,表示启动 5 个 Java Poller 进程

systemctl  restart zabbix-server.service

#重启server

server端:

等待配置

有监控数据生成

4.集成告警平台

睿象云-智能运维找睿象

注册以后创建appkey,按照文档配置探针

部署探针:

cd /usr/lib/zabbix/alertscripts

#切换到zabbix脚本目录

wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-4.0.3.tar.gz

#获取Cloud Alert Agent包

wget命令是一个在Linux和类Unix操作系统中经常使用的网络命令,用途是从指定的URL下载文件。它支持HTTP、HTTPS和FTP协议,支持断点续传,可以下载整个网站

tar xf ca_zabbix_release-4.0.3.tar.gz

#解压

cd cloudalert/bin

./install.sh fd654cbe71c44c28b6155e5862002334

#安装

chown zabbix.zabbix cloudalert/ -R

#将cloudalert/探针目录的所有人和所有组都设为zabbix,保证运行zabbix服务的权限和cloudalert探针目录的权限保持一致

配置通知策略:

app通知需下载app,微信通知需绑定微信公众号

测试:

停止server2的agent服务

被认领

再次启动agent

[root@server2 ~]# systemctl start zabbix-agent.service

平台显示解决

实际生产过程中还可开启智能降噪功能,可智能筛掉无用通知

分布式监控

agent 主动方式

目前模板是server端主动连接agent端10050端口(常规)

Template App Nginx by Zabbix agent

也可以agent主动将数据回传给server端10051口,降低了server端的性能开销

Template App Nginx by Zabbix agent active

zabbix proxy

删除server2 agent作为proxy节点

在三台机器添加本地解析

vim /etc/hosts

yum install zabbix-proxy-mysql

#安装proxy软件

在server1数据库中:

mysql> FLUSH PRIVILEGES;

#重新加载授权表

[root@proxy ~]# cd /usr/share/doc/zabbix-proxy-mysql-5.0.42/

scp schema.sql.gz server1:

#从proxy拷贝数据库文件

该文件用于创建数据库的结构(schema),包括表、视图、索引等的定义

zcat schema.sql.gz | mysql -uzabbix -pYQMyqm0626* zabbix_proxy

#使用zcat解压文件后输出到mysql的zabbix_proxy库中

[root@proxy ~]# vim /etc/zabbix/zabbix_proxy.conf

#编辑proxy配置文件

server端创建proxy

为主机配置代理:

systemctl  restart zabbix-proxy.service

#重启proxy服务

cat /var/log/zabbix/zabbix_proxy.log

#查看日志

[root@server3 ~]# vim /etc/zabbix/zabbix_agentd.conf

#修改agent配置,指向proxy地址

cat /var/log/zabbix/zabbix_agentd.log

#查看日志无报错

监控可用

zabbix瓶颈可能在于数据库,随着监控数据的采集存储,监控项越来越多,对数据库性能的要求会越来越高

推荐TIDB数据库将mysql数据迁移到TIDB,可实现分布式

完成这部分学习可以尝试使用ansible自动化运维工具搭建起整个lnmp架构或者监控平台

相关文章:

zabbix企业级监控平台

zabbix部署 安装源 重新创建纯净环境,利用base克隆一台虚拟机server1 给server1做快照,方便下次实验恢复使用 进入zabbix官网https://www.zabbix.com rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm …...

如何关闭WordPress的自动更新功能

Wordpress为什么自动更新 WordPress自动更新是为了提供更好的安全性和稳定性。 安全性:WordPress是一个广泛使用的内容管理系统,因此成为恶意攻击的目标。WordPress的自动更新功能确保你的网站及时获得最新的安全补丁和修复程序,以保护你的网…...

【分析 GClog 的吞吐量和停顿时间、heapdump 内存泄漏分析】

文章目录 🔊博主介绍🥤本文内容GClog分析以优化吞吐量和停顿时间步骤1: 收集GClog步骤2: 分析GClog步骤3: 优化建议步骤4: 实施优化 Heapdump内存泄漏分析步骤1: 获取Heapdump步骤2: 分析Heapdump步骤3: 定位泄漏对象步骤4: 分析泄漏原因步骤5: 修复泄漏…...

[STL-list]介绍、与vector的对比、模拟实现的迭代器问题

一、list使用介绍 list的底层是带头双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行…...

代码随想录-035期-算法训练营【博客笔记汇总表】

ヾ(◍∇◍)ノ゙加油~ 目录 00、说明 01、刷题网址 02、每日打卡任务 03、博客打卡笔记 01、数组 02、链表 03、哈希表 04、字符串 05、双指针法 06、栈与队列 07、二叉树 08、回溯算法 09、贪心算法 10、动态规划 11、单调栈 12、图论 04…...

postgresql数据库|数据整合的好工具--Oracle-fdw的部署和使用

概述 Oracle_fdw 是一种postgresql外部表插件,可以读取到Oracle上面的数据。是一种非常方便且常见的pg与Oracle的同步数据的方法 Oracle_fdw 适用场景: Oracle_fdw 是一个开源的 Foreign Data Wrapper (FDW),主要用于在 PostgreSQL 数据库中…...

让php开发更优雅-Laravel篇

前言 随着开发经验的增加,也伴随团队开发的积累,规范开发显得越来越重要,本文给大家提供一些laravel开发的进阶思路和经验,让大家开发更加统一规范,代码看起来更加优雅。 1.更多使用第三方库。团队开发的时候&#xf…...

自动化测试之httprunner框架hook函数实操

本篇介绍httprunner中hook函数的使用,以及通过编程能力实现建设自动化测试更全面的场景覆盖 前置: 互联网时代让我们更快的学习到什么是Httprunner 正文: 经过上文了解到这个框架怎么使用之后,我们开始来探讨一下我们为什么要用…...

物联网实战--入门篇之(七)嵌入式-MQTT

目录 一、MQTT简介 二、MQTT使用方法 三、MQTT驱动设计 四、代码解析 五、使用过程 六、总结 一、MQTT简介 MQTT因为其轻量、高效和稳定的特点,特别适合作为物联网系统的数据传输协议,已经成为物联网事实上的通信标准了。关于协议的具体内容看看这…...

跑模型——labelme的json文件转成yolo使用的txt文件(语义分割)

前言 将labelme多边形标注的json文件转换成yolo使用的txt文件 import os import json import numpy as np from tqdm import tqdm#实现函数 def json2txt(path_json, path_txt): # 可修改生成格式with open(path_json, r) as path_json:jsonx json.load(path_json)with open…...

一个项目仿京东商场代码

git clone http://git.itcast.cn/heimaqianduan/erabbit-uni-app-vue3-ts.git...

计算机网络——WEB服务器编程实验

实验目的 1. 处理一个 http 请求 2. 接收并解析 http 请求 3. 从服务器文件系统中获得被请求的文件 4. 创建一个包括被请求的文件的 http 响应信息 5. 直接发送该信息到客户端 具体内容 一、C 程序来实现 web 服务器功能。 二、用 HTML 语言编写两个 HTML文件,并…...

蓝桥杯算法题:最大比例

题目描述: X星球的某个大奖赛设了 M 级奖励。 每个级别的奖金是一个正整数。 并且,相邻的两个级别间的比例是个固定值。 也就是说:所有级别的奖金数构成了一个等比数列。 比如:16,24,36,54,其等比值为:3/2。…...

【堡垒机】堡垒机的介绍

目前,常用的堡垒机有收费和开源两类。 收费的有行云管家、纽盾堡垒机; 开源的有jumpserver; 这几种各有各的优缺点,如何选择,大家可以根据实际场景来判断 什么是堡垒机 堡垒机,即在一个特定的网络环境下&…...

通过 ffmpeg命令行 调节视频播放速度

1. 仅调整视频速率 视频调速原理:修改视频的pts,dts # 可能会丢帧 ffmpeg -i input.mkv -an -filter:v "setpts0.5*PTS" output.mkv # 可用-r参数指定输出视频FPS以防止丢帧 ffmpeg -i input.mkv -an -r 60 -filter:v "setpts2.0*PTS&q…...

SQLite数据库在Linux系统上的使用

SQLite是一个轻量级的数据库解决方案,它是一个嵌入式的数据库管理系统。SQLite的特点是无需独立的服务器进程,可以直接嵌入到使用它的应用程序中。由于其配置简单、支持跨平台、服务器零管理,以及不需要复杂的设置和操作,SQLite非…...

Spring中依赖注入的方法有几种,分别是什么?

依赖注入的目的: 都是为了减少对象之间的紧密耦合 1. 构造函数注入:通过在类的构造函数中接受依赖对象作为参数,Spring在创建对象时将依赖注入。 2. Setter方法注入:在类中提供setter方法,Spring通过调用这些setter方法…...

【面试精讲】MyBatis设计模式及源码分析,MyBatis设计模式实现原理

【面试精讲】MyBatis设计模式及源码分析,MyBatis设计模式实现原理 目录 本文导读 一、MyBatis中运用的设计模式详解 1. 工厂模式(Factory Pattern) 2. 单例模式(Singleton Pattern) 3. 建造者模式(Bu…...

Acrel-1000DP光伏监控系统在尚雷仕(湖北)健康科技有限公司5.98MW分布式光伏10KV并网系统的应用

摘 要:分布式光伏发电特指在用户场地附近建设,运行方式多为自发自用,余电上网,部分项目采用全额上网模式。分布式光伏全额上网的优点是可以充分利用分布式光伏发电系统的发电量,提高分布式光伏发电系统的利用率。发展分…...

电脑远程控制esp32上的LED

1、思路整理 首先esp32需要连接上wifi 然后创建udp socket 接受udp数据 最后解析数据,控制LED 2、micropython代码实现 import network from socket import * from machine import Pin p2Pin(2,Pin.OUT)def do_connect(): #连接wifi wlan network.WLAN(network.…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

32位寻址与64位寻址

32位寻址与64位寻址 32位寻址是什么&#xff1f; 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元&#xff08;地址&#xff09;&#xff0c;其核心含义与能力如下&#xff1a; 1. 核心定义 地址位宽&#xff1a;CPU或内存控制器用32位…...

Appium下载安装配置保姆教程(图文详解)

目录 一、Appium软件介绍 1.特点 2.工作原理 3.应用场景 二、环境准备 安装 Node.js 安装 Appium 安装 JDK 安装 Android SDK 安装Python及依赖包 三、安装教程 1.Node.js安装 1.1.下载Node 1.2.安装程序 1.3.配置npm仓储和缓存 1.4. 配置环境 1.5.测试Node.j…...