docker compose方式部署Zabbix 7.0 LTS

docker compose方式部署 Zabbix 7.0 LTS

Zabbix 由几个主要的功能组件组成
  • zabbix-server 是 Zabbix agent 向其报告可用性、系统完整性信息和统计信息的核心组件。
  • zabbix-agent 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。
  • zabbix-web 提供基于 web 的界面(Apache 或 Nginx)。
  • Zabbix-Web-Service 在Zabbix5.4版中首次出现,基于Go编写。主要作用是定期发送巡检报告到指定邮件账户。
  • zabbix-java-gateway
  • zabbix-snmptraps
  • zabbix-proxy

可以根据不同组合,搭配不同的docker镜像,如下

Zabbix server 收集数据存储(可选MySQL、PostgreSQL等)

  • MySQL 数据库支持的 Zabbix server - zabbix/zabbix-server-mysql
  • PostgreSQL 数据库支持的 Zabbix server - zabbix/zabbix-server-pgsql

Zabbix web-interface

  • 基于 Apache2 Web 服务器以及支持 MySQL 数据库的 Zabbix web 接口 - zabbix/zabbix-web-apache-mysql
  • 基于 Apache2 Web 服务器以及支持 PostgreSQL 数据库的 Zabbix web 接口 - zabbix/zabbix-web-apache-pgsql
  • 基于 Nginx Web 服务器以及支持 MySQL 数据库的 Zabbix web 接口 - zabbix/zabbix-web-nginx-mysql
  • 基于 Nginx Web 服务器以及支持 PostgreSQL 数据库的 Zabbix web 接口 - - zabbix/zabbix-web-nginx-pgsql
安装环境版本

单机安装以下服务。不使用docker安装zabbix agent,安装在容器中的agent监控的是容器的状态,而不是宿主机的状态。

OS: Rocky Linux 9.2 x86_64
docker compose组合: zabbix 7.0 LTS + MySQL 8.0 + Nginx
docker宿主机IP: 10.10.88.2 (这里选择宿主机安装zabbix agent2)

1、前期准备工作

省略docker安装步骤。

2、zabbix docker compose 配置文件

从 Zabbix github官网 获取7.0 LTS 版本 docker compose.yaml
Zabbix 为 Docker 提供了定义和运行复杂 Zabbix 组件的 compose 文件。这些 compose 文件可以在 Zabbix docker 官方镜像仓库 中找到。

官方提供的 docker compose 文件很多,都是根据组件搭配命名

  • v3 为 docker compose 版本,具体对应关系在这里查看https://docs.docker.com/compose/compose-file/compose-versioning/
  • 基础镜像类型,有 alpine/ubuntu/Oracle linux 可选。
  • MySQL 为 zabbix server 所使用的数据库类型,目前有 MySQL/PostgreSQL 二种。
  • latest 表示为使用官方的最新镜像,local 是下载本地进行 build 镜像。

这里使用基于 docker-compose_v3_alpine_mysql_latest.yaml 模板,调整适合公司使用。

基于alpine Linux镜像,Zabbix server 后端使用MySQL数据库, Zabbix web使用Nginx展示

也可以通过git方式获取基于 zabbix7.0 LTS配置(可选,非必须)

git clone https://github.com/zabbix/zabbix-docker.git

如果之前已经clone过了,重现拉取服务器最新配置,如:
git pull

git切换分支为7.0,也就是长期支持版本(LTS)
git checkout 7.0

[root@VM8802 zabbix-docker]# ll -tha
已省略部分……
-rw-r--r--  1 root root 2.8K Jun  6 11:20 .env
drwxr-xr-x  3 root root 4.0K Jun  6 11:20 env_vars
-rw-r--r--  1 root root  44K Jun  6 11:20 kubernetes.yaml
-rw-r--r--  1 root root  338 Jun  6 11:20 compose_additional_components.yaml
-rw-r--r--  1 root root 2.6K Jun  6 11:20 compose_databases.yaml
lrwxrwxrwx  1 root root   42 Jun  6 11:20 compose.yaml -> docker-compose_v3_alpine_mysql_latest.yaml
-rw-r--r--  1 root root  14K Jun  6 11:20 compose_zabbix_components.yaml
-rw-r--r--  1 root root 4.1K Jun  6 11:20 docker-compose_v3_ubuntu_mysql_latest.yaml
-rw-r--r--  1 root root 7.4K Jun  6 11:20 docker-compose_v3_ubuntu_mysql_local.yaml
-rw-r--r--  1 root root 4.1K Jun  6 11:20 docker-compose_v3_ubuntu_pgsql_latest.yaml
-rw-r--r--  1 root root 7.7K Jun  6 11:20 docker-compose_v3_ubuntu_pgsql_local.yaml
-rw-r--r--  1 root root 4.4K Jun  6 11:20 docker-compose_v3_alpine_mysql_latest.yaml
-rw-r--r--  1 root root 7.6K Jun  6 11:20 docker-compose_v3_alpine_mysql_local.yaml
-rw-r--r--  1 root root 4.4K Jun  6 11:20 docker-compose_v3_alpine_pgsql_latest.yaml
-rw-r--r--  1 root root 8.0K Jun  6 11:20 docker-compose_v3_alpine_pgsql_local.yaml
-rw-r--r--  1 root root 4.3K Jun  6 11:20 docker-compose_v3_ol_mysql_latest.yaml
-rw-r--r--  1 root root 7.4K Jun  6 11:20 docker-compose_v3_ol_mysql_local.yaml
-rw-r--r--  1 root root 4.3K Jun  6 11:20 docker-compose_v3_ol_pgsql_latest.yaml
-rw-r--r--  1 root root 7.7K Jun  6 11:20 docker-compose_v3_ol_pgsql_local.yaml

可以看到当前 compose.yaml 是链接指向 docker-compose_v3_alpine_mysql_latest.yaml
# docker compose -f ./docker-compose_v3_alpine_mysql_latest.yaml up -d
2.1 docker compose配置

官网提供的docker compose文件把所有组件都写上了。可根据自己需求,删除一些不需要的组件配置部分。

当前配置如下组件
zabbix-server
zabbix-server-mysql
zabbix-web-nginx-mysql
zabbix-java-gateway
zabbix-snmptraps

配置文件列表
# tree -a /data/zabbix/
/data/zabbix/
├── compose.yaml
└── zbx_env
    ├── .env_db_mysql
    ├── .env_java
    ├── .env_srv
    └── .env_web

官网默认配置了两个网段,其中zabbix-server和zabbix-java-gateway在不同的网段,导致互通有些干扰,这里就仅保留一个网段配置。

compose.yaml 完整配置(基于 docker-compose_v3_alpine_mysql_latest.yaml 修改)

services:
  zabbix-server:
    image: zabbix/zabbix-server-mysql:alpine-7.0-latest
    ports:
      - 10051:10051
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - /data/zabbix/zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro
      - /data/zabbix/zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro
      - /data/zabbix/zbx_env/var/lib/zabbix/dbscripts:/var/lib/zabbix/dbscripts:ro
      - /data/zabbix/zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw
      - /data/zabbix/zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
      - /data/zabbix/zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
      - /data/zabbix/zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
      - /data/zabbix/zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro
      - snmptraps:/var/lib/zabbix/snmptraps:rw
    ulimits:
      nproc: 65535
      nofile:
        soft: 20000
        hard: 40000
    deploy:
      resources:
        limits:
          cpus: '0.70'
          memory: 2G
        reservations:
          memory: 512M
    env_file:
      - /data/zabbix/zbx_env/.env_db_mysql
      - /data/zabbix/zbx_env/.env_srv
    depends_on:
      - mysql-server
    networks:
      zbx_net:
        aliases:
          - zabbix-server
          - zabbix-server-mysql
    stop_grace_period: 30s
    sysctls:
      - net.ipv4.ip_local_port_range=1024 64999
      - net.ipv4.conf.all.accept_redirects=0
      - net.ipv4.conf.all.secure_redirects=0
      - net.ipv4.conf.all.send_redirects=0
    labels:
      com.zabbix.description: Zabbix server with MySQL database support
      com.zabbix.company: "Zabbix LLC"
      com.zabbix.component: zabbix-server
      com.zabbix.dbtype: mysql
      com.zabbix.os: "Alpine"
  zabbix-web-nginx-mysql:
    image: zabbix/zabbix-web-nginx-mysql:alpine-7.0-latest
    ports:
      - 80:8080
      - 443:8443
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - /data/zabbix/zbx_env/etc/ssl/nginx:/etc/ssl/nginx:ro
      - /data/zabbix/zbx_env/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro
    deploy:
      resources:
        limits:
          cpus: '0.70'
          memory: 1024M
        reservations:
          memory: 256M
    env_file:
      - /data/zabbix/zbx_env/.env_db_mysql
      - /data/zabbix/zbx_env/.env_web
    depends_on:
      - mysql-server
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/ping"]
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 30s
    networks:
      zbx_net:
        aliases:
          - zabbix-web-nginx-mysql
    stop_grace_period: 10s
    sysctls:
      - net.core.somaxconn=65535
    labels:
      com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support"
      com.zabbix.company: "Zabbix LLC"
      com.zabbix.component: zabbix-frontend
      com.zabbix.webserver: nginx
      com.zabbix.dbtype: mysql
      com.zabbix.os: "Alpine"
  zabbix-java-gateway:
    image: zabbix/zabbix-java-gateway:alpine-7.0-latest
    ports:
      - 10052:10052
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
        reservations:
          memory: 256M
    env_file:
      - /data/zabbix/zbx_env/.env_java
    networks:
      zbx_net:
        aliases:
          - zabbix-java-gateway
    stop_grace_period: 5s
    labels:
      com.zabbix.description: "Zabbix Java Gateway"
      com.zabbix.company: "Zabbix LLC"
      com.zabbix.component: "java-gateway"
      com.zabbix.os: "Alpine"
  zabbix-snmptraps:
    image: zabbix/zabbix-snmptraps:alpine-7.0-latest
    profiles:
      - full
      - all
    ports:
      - 162:1162/udp
    volumes:
      - snmptraps:/var/lib/zabbix/snmptraps:rw
    deploy:
      resources:
        limits:
          cpus: '0.5'
          memory: 256M
        reservations:
          memory: 128M
    networks:
      zbx_net:
        aliases:
          - zabbix-snmptraps
    stop_grace_period: 5s
    labels:
      com.zabbix.description: "Zabbix snmptraps"
      com.zabbix.company: "Zabbix LLC"
      com.zabbix.component: snmptraps
      com.zabbix.os: "Alpine"
  mysql-server:
    image: mysql:8.0-oracle
    security_opt:
      - seccomp:unconfined
    command:
      - mysqld
      - --skip-mysqlx
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_bin
      # Only during upgrade from versions prior 6.4 and new installations (schema deployment)
      #- --log_bin_trust_function_creators=1
      - --log_timestamps=SYSTEM
      - --binlog_expire_logs_seconds=3600
      - --innodb_buffer_pool_size=2G
      - --max_connections=500
      - --wait_timeout=1200
      - --interactive_timeout=1200
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /data/zabbix/zbx_env/var/lib/mysql:/var/lib/mysql:rw
      - /data/backup/mysql:/data/backup/mysql:rw
    env_file:
      - /data/zabbix/zbx_env/.env_db_mysql
    stop_grace_period: 1m
    networks:
      zbx_net:
        aliases:
          - mysql-server
          - zabbix-database
          - mysql-database
  db_data_mysql:
    image: busybox
    volumes:
      - /data/zabbix/zbx_env/var/lib/mysql:/var/lib/mysql:rw
networks:
  zbx_net:
    driver: bridge
    driver_opts:
      com.docker.network.enable_ipv6: "false"
    ipam:
      driver: default
      config:
        - subnet: 172.16.238.0/24
volumes:
  snmptraps: 
2.2 环境变量文件

在 compose 文件中找到每个组件的默认环境变量文件,这些环境变量文件名类似 .env_<type of component>

  1. 配置mysql:.env_db_mysql
# DB_SERVER_HOST=mysql-server
# DB_SERVER_PORT=3306
# DB_SERVER_SOCKET=/var/run/mysqld/mysqld.sock
# MYSQL_USER_FILE=/run/secrets/MYSQL_USER
# MYSQL_PASSWORD_FILE=/run/secrets/MYSQL_PASSWORD
MYSQL_USER=zabbix
MYSQL_PASSWORD=yourzabbix
MYSQL_ROOT_PASSWORD=yourmysql
# MYSQL_ROOT_PASSWORD_FILE=/run/secrets/MYSQL_ROOT_PASSWORD
# MYSQL_ALLOW_EMPTY_PASSWORD=false
# MYSQL_DATABASE=zabbix
MYSQL_DATABASE=zabbix
  1. 配置zabbix-java-gateway:.env_java
ZBX_START_POLLERS=5
ZBX_TIMEOUT=3
  1. 配置Zabbix server:.env_srv
ZBX_STARTPOLLERS=7
ZBX_STARTPOLLERSUNREACHABLE=7
ZBX_STARTTRAPPERS=20
ZBX_STARTPINGERS=7
ZBX_STARTDISCOVERERS=7
ZBX_JAVAGATEWAY_ENABLE=true
ZBX_JAVAGATEWAY=zabbix-java-gateway
ZBX_JAVAGATEWAYPORT=10052
ZBX_STARTJAVAPOLLERS=5
ZBX_ENABLE_SNMP_TRAPS=true
ZBX_CACHESIZE=1024M
ZBX_HISTORYCACHESIZE=128M
ZBX_TIMEOUT=15
  1. 配置Nginx:.env_web
ZBX_SERVER_HOST=zabbix-server
ZBX_SERVER_NAME=Your Corp. IT
PHP_TZ=Asia/Shanghai

docker compose 配置说明

  1. 修改时区(web页面显示中文)
    修改 .env_web 配置相关项 PHP_TZ=Asia/Shanghai
  2. 解决zebbix web图片中文显示乱码(zabbix7.0下不指定也可以正常显示中文)
3、部署服务
cd /data/zabbix/
docker compose up -d

浏览 zabbix web界面

启动之后即可使用 <http://ip> 直接访问 zabbix web界面
默认用户名:Admin ,密码:zabbix (注意区分大小写)

配置已经设置了持久化数据目录映射到本地。

4、独立安装Zabbix agent2

安装Zabbix仓库(这里选择国内的腾讯源),然后安装Zabbix agent2

# rpm -Uvh https://mirrors.tencent.com/zabbix/zabbix/7.0/rhel/9/x86_64/zabbix-release-latest.el9.noarch.rpm
# dnf clean all

# dnf install zabbix-agent2

如果是 Rocky Linux 9.x 版本,则需要注意:
EL9 的 EPEL 存储库也提供了 Zabbix 包。 如果同时安装了官方 Zabbix 存储库和 EPEL 存储库,那么 EPEL 中的 Zabbix 包必须通过在 /etc/yum.repos.d/ 下的 EPEL 存储库配置文件中添加以下子句来排除,更详细说明可访问官网安装文档。

[epel]
...
excludepkgs=zabbix*

然后安装即可
rpm -ivh https://mirrors.tencent.com/zabbix/zabbix/7.0/rhel/9/x86_64/zabbix-release-7.0-2.el9.noarch.rpm
yum install zabbix-agent2

修改 /etc/zabbix/zabbix_agent2.conf ,指定 zabbix server 地址,如:

Server=127.0.0.1,172.16.238.4       # 172.16.238.4 为zabbix server容器IP
ServerActive=127.0.0.1,172.16.238.4
Hostname=10.10.88.2   # 这里为Linux主机IP

查看zabbix server容器(容器名为 zabbix-zabbix-server-1 )IP方法

# docker inspect zabbix-zabbix-server-1 |grep IPAddress |tail -1 |awk '{print $2}' |tr '"' " " |tr ',' ' ' 
 172.16.238.4   

进入zabbix server容器
# docker exec -it zabbix-zabbix-server-1 bash

测试访问 zabbix agent2 的端口是否可以正常连通(端口不通,提示:wget: can't connect to remote host (10.10.88.2): Connection refused)
78d0d09dfa31:/var/lib/zabbix$ wget 10.10.88.2:10050
Connecting to 10.10.88.2:10050 (10.10.88.2:10050)
wget: error getting response

如果zabbix-server 服务器ip地址有更改,这里配置也需要修改,然后重启agent2服务
systemctl restart zabbix-agent2.service

5、设置允许docker容器访问宿主机

默认情况下宿主机内docker容器是禁止访问宿主机IP

防火墙firewalld开放zabbix server容器IP段(172.16.238.0/24)访问zabbix agent端口(tcp 10050)

# firewall-cmd --add-rich-rule 'rule family=ipv4 source address=172.16.238.0/24 port port=10050 protocol=tcp accept' --permanent
# firewall-cmd --reload

上面的命令等同于修改配置 /etc/firewalld/zones/public.xml ,在 <zone> 区域内添加如下:

  <rule family="ipv4">
    <source address="172.16.238.0/24"/>
    <port protocol="tcp" port="10050"/>
    <accept/>
  </rule>

然后重启防火墙服务 systemctl restart firewalld.service 即可。

zabbix web页面里配置 zabbix server 主机接口 Agent(类型)地址由默认的 127.0.0.1:10050 改为 your-zabbix-server-ip:10050

日常维护

先切换到 compose.yaml 目录
cd /data/zabbix

停止 zabbix 所有服务   
docker compose down

启动 zabbix 所有服务   
docker compose up -d

停止mysql服务  
docker compose stop mysql-server

查看指定容器IP
docker inspect zabbix-zabbix-server-1 |grep IPAddress |tail -1 |awk '{print $2}' |tr '"' " " |tr ',' ' '

更新配置缓存
/usr/local/sbin/zabbix_server -R config_cache_reload

zabbix server日志默认位置(容器内): /var/log/zabbix/zabbix_server.log

MySQL持久化目录 /data/zabbix/zbx_env/var/lib/mysql
MySQL备份目录 /data/backup/mysql

zabbix官方监控模板

由于使用的zabbix是从低版本升级上来的,需要使用新版本只能手动从 Zabbix Git 存储库下载,然后zabbix web页面的 ConfigurationTemplates(配置 → 模板)手动导入。

升级

Only during upgrade from versions prior 6.4 and new installations (schema deployment)
mysql> set global log_bin_trust_function_creators = 1;

从 zabbix6.0.x 升级为 zabbix7.0.0

停止服务,修改配置 docker.yaml 把指定镜像alpine-6.0所有替换为alpine-7.0即可,
如:image: zabbix/zabbix-server-mysql:alpine-6.0-latest 替换为 image: zabbix/zabbix-server-mysql:alpine-7.0-latest

然后启动服务就可以看到日志里有升级信息提示。

zabbix6.0 迁移至新机器并升级为zabbix7.0 步骤

升级前 zabbix6.0.23 LTS (MySQL 8.0.35)
升级后 zabbix7.0.0 LTS (MySQL 8.0.37)

zabbix server初次启动时,会自动升级MySQL数据库结构。

启动服务
docker compose up -d

除了msyql服务,其它服务都停止
docker compose stop zabbix-web-nginx-mysql
docker compose stop zabbix-java-gateway 
docker compose stop zabbix-server

进入msyql容器,删除原zabbix数据库。
docker exec -it zabbix-mysql-server-1 bash
mysqlsh -p

因为mysql账号zabbix都在,所以重建库后,就可以开始导入库了
mysql> drop database zabbix;
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;

导入前临时更改,导入后改回默认值 0
mysql> set global log_bin_trust_function_creators = 1;

导入备份(视情况选择)
方式1(sql备份文件):
mysql> use zabbix;
mysql> source /var/lib/mysql/zabbix_backup.sql;

方式2(mysql shell备份文件):
MySQL JS > \sql SET GLOBAL local_infile = 'ON';
MySQL JS > \sql show global variables like 'local_infile';
MySQL JS > \sql ALTER INSTANCE DISABLE INNODB REDO_LOG;
MySQL JS > \sql SHOW GLOBAL STATUS LIKE 'Innodb_redo_log_enabled';
MySQL JS > util.loadDump("/data/backup/mysql/zabbix_20240605", {"threads": 4,"ignoreVersion": true})

Disable log_bin_trust_function_creators option after importing database schema.
mysql> set global log_bin_trust_function_creators = 0;

导入完成后,再次停止服务
docker compose down

然后启动(这是启动zabbix server会自动进行升级数据库)
docker compose up -d
参考文档
  1. https://www.zabbix.com/documentation/7.0/en/manual/installation/containers

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决mysql数据库连接报错:Authentication plugin ‘caching_sha2_password‘ cannot be loaded

解决mysql数据库连接报错&#xff1a;Authentication plugin ‘caching_sha2_password’ cannot be loaded OperationalError: (2059, “Authentication plugin ‘caching_sha2_password’ cannot be loaded: /usr/lib/mysql/plugin/caching_sha2_password.so: cannot open sha…

人脸重建迁移攻击FRTA:绕过各种未见过的面部识别系统

随着人脸识别系统在安全关键环境中的部署日益增多&#xff0c;威胁行为者正在开发针对各种攻击点的复杂攻击策略。在这些攻击策略中&#xff0c;面部重建攻击是一个主要的威胁。面部重建攻击的主要目的是创建伪造的生物特征图像&#xff0c;这些图像类似于存储的生物特征模板中…

vue中数组出现__ob__: Observer属性,导致不能正确使用问题解决

直接上图&#xff0c;如下图&#xff0c;数组中出现__ob__: Observer属性&#xff0c;导致无法取值。 解决方案为&#xff1a;JSON.parse(JSON.stringify(数组变量名))深拷贝数组&#xff0c;重新生成一个可枚举数组。 // 处理代码如let tempIds JSON.parse(JSON.stringify(i…

实现统计n个数以下质数的个数

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h>int main() {int n 0;scanf("%d", &n);int sum 0;for (int i 1; i < n; i){for (int j 2; j < i; j) {if (i % j 0){sum;break;}}}printf("%d", n - sum-1);return 0; } n为输…

yum命令提示 错误:rpmdb: BDB0113 Thread/process 4153/139708200269632

一、报错信息 [rootDawn yum.repos.d]# yum clean all 错误&#xff1a;rpmdb: BDB0113 Thread/process 4153/139708200269632 failed: BDB1507 Thread died in Berkeley DB library 错误&#xff1a;db5 错误(-30973) 来自 dbenv->failchk&#xff1a;BDB0087 DB_RUNRECOVE…

记录通过Cloudflare部署属于自己的docker镜像源

引言 由于最近国内无法正常拉取docker镜像&#xff0c;然而找了几个能用的docker镜像源发现拉取回来的docker镜像不是最新的版本&#xff0c;部署到Cloudflare里Workers 和 Pages&#xff0c;拉取docker 镜像成功&#xff0c;故记录部署过程。 部署服务 登录Cloudflare后&…

鸿蒙开发HarmonyOS NEXT (三) 熟悉ArkTs

一、自定义组件 1、自定义组件 自定义组件&#xff0c;最基础的结构如下&#xff1a; Component struct Header {build() {} } 提取头部标题部分的代码&#xff0c;写成自定义组件。 1、新建ArkTs文件&#xff0c;把Header内容写好。 2、在需要用到的地方&#xff0c;导入…

如视“VR+AI”实力闪耀2024世界人工智能大会

7月4日&#xff0c;2024世界人工智能大会暨人工智能全球治理高级别会议&#xff08;以下简称为“WAIC 2024”&#xff09;在上海盛大开幕&#xff0c;本届大会由外交部、国家发展和改革委员会、教育部等部门共同主办&#xff0c;围绕“以共商促共享 以善治促善智”主题&#xf…

算法力扣刷题 三十一【150. 逆波兰表达式求值】

前言 栈和队列篇。 记录 三十一【150. 逆波兰表达式求值】 一、题目阅读 给你一个字符串数组 tokens &#xff0c;表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意&#xff1a; 有效的算符为 、-、* 和 / 。 每个操作…

初尝PaddleOCR识别图片中的文字

引言 PaddleOCR是一个基于飞桨深度学习框架的OCR工具包&#xff0c;它集成了丰富的文字检测、识别和后处理算法&#xff0c;能够高效、准确地识别出图片中的文字。 说明 OpenVINO.NET是一个由开源开发者sdcb发布的&#xff0c;一个个强大的工具集&#xff0c;通过优化神经网…

科普文:Linux服务器性能调优概叙

概叙 Java web应用性能分析之服务端慢和优化概叙_cpu飙高java-CSDN博客 Java web应用性能分析之【CPU飙升分析概述】_web页面性能分析cpu占满是因为死循环,还是循环过多-CSDN博客 在我们的软件服务中&#xff0c;软件部署的服务器&#xff0c;一般都是linux服务器&#xff0c…

【每天学会一个渗透测试工具】SQLmap安装教程及使用

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 ✨SQLmap简介 Sqlmap是一款开源的渗透测试工具 &#x1f680;下载及安装 下载地址&#xff1a;http://sqlmap.org/ windo…

两个Activity之间切换时UI部分重叠

书籍 《第一行代码 Android》第三版 开发 环境 Android Studio Jellyfish | 2023.3.1 setContentView android studio自动生成的SecondActivity.kt中自动生成的代码中已经绑定了second_layout.xml的布局资源&#xff0c;通过代码&#xff1a;setContentView(R.layout.secon…

windows@资源管理器中的地址栏@访问共享文件夹的各种方法@管理共享文件夹

文章目录 资源管理器中的地址栏可以访问什么访问共享文件夹&#x1f47a;UNC路径资源管理器打开共享文件夹纯命令行方式访问共享文件夹 共享文件夹相关操作查看所有已经共享的文件夹&#x1f47a;停止某个文件的共享 共享文件夹的访问控制补充匿名访问问题&#x1f60a;强制启用…

【Linux】高级IO——五种IO模型和基本概念 ,非阻塞IO,fcntl,实现非阻塞IO,同步通信和异步通信

文章目录 Linux高级IO1. 五种IO模型1.1 阻塞IO1.2 非阻塞IO1.3 信号驱动IO1.4 IO多路转接1.5 异步IO 2. 同步通信和异步通信3. 阻塞和非阻塞 Linux高级IO 1. 五种IO模型 IO是什么&#xff1f; IO是计算机领域中的缩写&#xff0c;指的是输入/输出&#xff08;Input/Output&…

【vue3|第15期】Vue3模板语法入门指南

日期:2024年7月2日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^ 1.01365 = 37.7834;0.99365 = 0.0255 1.02365 = 1377.4083…

上海网站建设如何做

上海是中国最繁华的城市之一&#xff0c;作为全国的经济、文化和科技中心&#xff0c;网站建设在上海变得越来越重要。如何做好上海网站建设&#xff0c;让网站更加吸引人&#xff0c;成为企业和个人宣传自身的重要平台呢&#xff1f; 首先&#xff0c;要有清晰的定位和目标。在…

IT之旅启航:高考后IT专业预习全攻略

✨作者主页&#xff1a; Mr.Zwq✔️个人简介&#xff1a;一个正在努力学技术的Python领域创作者&#xff0c;擅长爬虫&#xff0c;逆向&#xff0c;全栈方向&#xff0c;专注基础和实战分享&#xff0c;欢迎咨询&#xff01; 您的点赞、关注、收藏、评论&#xff0c;是对我最大…

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【密钥生成介绍及算法规格】

密钥生成介绍及算法规格 当业务需要使用HUKS生成随机密钥&#xff0c;并由HUKS进行安全保存时&#xff0c;可以调用HUKS的接口生成密钥。 注意&#xff1a; 密钥别名中禁止包含个人数据等敏感信息。 开发前请熟悉鸿蒙开发指导文档&#xff1a;gitee.com/li-shizhen-skin/harm…

Java实现电子围栏的小例子

主要需求是实现一个电子围栏判断的小例子其中包括前端和后端的demo代码 引入对应的依赖库 <!--jts库通常用于几何计算和表示地理空间数据--> <dependency><groupId>org.locationtech.jts</groupId><artifactId>jts-core</artifactId><…