系统学习Linux-zabbix监控平台

一、zabbix的基本概述

zabbix是一个监控软件,其可以监控各种网络参数,保证企业服务架构安全运营,同时支持灵活的告警机制,可以使得运维人员快速定位故障、解决问题。zabbix支持分布式功能,支持复杂架构下的监控解决方案,也支持web页面,为主机监控提供了良好直观的展现。

zabbix官网地址为https://www.zabbix.com/,页面如下所示:

二、zabbix的构成

zabbix主要由以下5个组件构成:

1、Server

zabbix server是zabbix的核心组件,server内部存储了所有的配置信息、统计信息和操作信息。zabbix agent会向zabbix server报告可用性、完整性及其他统计信息。

2、web页面

web页面也是zabbix的一部分,通常和zabbix server位于一台物理设备上,但是在特殊情况下也可以分开配置。web页面主要提供了直观的监控信息,以方便运维人员监控管理。

3、数据库

zabbix数据库内存储了配置信息、统计信息等zabbix的相关内容。

4、proxy

zabbix proxy可以根据具体生产环境进行采用或者放弃。如果使用了zabbix proxy,则其会替代zabbix server采集数据信息,可以很好的分担zabbix server的负载。zabbix proxy通常运用与架构过大、zabbix server负载过重,或者是企业设备跨机房、跨网段、zabbix server无法与zabbix agent直接通信的场景。

5、Agent

zabbix agent通常部署在被监控目标上,用于主动监控本地资源和应用程序,并将监控的数据发送给zabbix server。

三、zabbix的监控对象

zabbix支持监控各种系统平台,包括LinuxWindows等主流操作系统,也可以借助SNMP或者是SSH协议监控路由交换设备。

zabbix如果部署在服务器上,可以监控其CPU、内存、网络性能等硬件参数,也可以监控具体的服务或者应用程序、服务运行情况及性能。

硬件监控:Zabbix IPMI Interface ,通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压、温度、风扇状态、电源状态等。

系统监控:Zabbix Agent Interface ,通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent,推荐首选这种方式。

Java监控:Zabbix JMX Interface ,通过JMX进行监控,JMX(java management extensions,即java管理扩展),监控JVM虚拟机时,使用这种方法是非常不错的选择。

网络设备监控:Zabbix SNMP Interface ,通过SNMP协议与被监控对象进行通信,SNMP协议的全称为simple network management protocol,被译为简单网络管理协议,通常来说,我们无法在路由器、交换机这种硬件上安装agent,但是这些硬件都支持SNMP协议。

应用服务监控:Zabbix Agent UserParameter

MySQL数据库监控:percona-monitoring-plulgins   

URL监控:Zabbix Web 监控

四、zabbix的常用术语

zabbix的学习需要掌握一些zabbix的常用术语,zabbix常用术语列举如下:

1、主机(host)

要监控的设备,可以由IP或者是主机名(必须可解析)指定。

2、主机组(host group)

主机的逻辑容器,包含主机和模板,主机组通常在给用户或者是用户组指派监控权限时使用。

3、监控项(item)

一个特定监控指标的相关数据,比如内存的大小、CPU的使用率,甚至是服务的运行状态等等。监控项数据来源于被监控对象,并且每个监控项都由一个key来标识。

4、触发器(trigger)

一个表达式,用于评估监控项的值是否在合理的范围内。当接收的值超出触发器的规定时,就被认为是故障,如果超出后再次符合,就被认为是正常。

5、事件(event)

触发器触发的一个特定事件,或者是zabbix定义的一个自动上线注册主机的事件。

6、动作(action)

指根据配置,zabbix对于触发器触发的特定事件进行处理的具体措施,如执行某个脚本,或者是向管理员邮箱发送邮件等等。

7、报警升级(escalation)

发送警报或者是执行远程命令的自定义方案。

8、媒介(media)

发送通知(告警)的手段,如微信、邮件、钉钉等等。

9、通知(notification)

通过指定的媒介,向用户发送的有关事件的信息。

10、远程命令(remote command)

指运维人员提前写好的命令,可以让被监控主机在触发事件后执行。

11、模板(template)

用于快速定义被监控主机的预设条目集合,通常包括了监控项、触发器、应用等,模板可以直接链接至某个主机。

12、应用(application)

一组监控项的集合。

13、web场景(web scennario)

用于检测web站点可用性的一个或多个HTTP请求。

14、前端(frontend)

zabbix的web接口。

这些术语,我们都会在后文中直接使用而不过多赘述,在企业技术交流中也会经常使用。

五、zabbix的工作流程

Zabbix在进行监控时,zabbix客户端要安装在被监控设备上,负责定期收集数据,并将其发送给zabbix服务端;zabbix服务端要安装在监控设备上,其将zabbix客户端发送的数据存储的数据库中,zabbix web根据数据在前端进行展示和绘图。

zabbix的数据收集分为两种模式:

1、主动模式

zabbix客户端主动向zabbix server请求监控项列表,并主动将监控项内需要的数据提交给zabbix server。

2、被动模式

zabbix server向 agent 请求获取监控项的数据,zabbix agent返回数据。

由此可以看出zabbix的主动和被动模式是以zabbxi客户端为基准的。

六、zabbix进程详解

在默认的情况下,zabbix有6个工作进程;分别是 zabbix_agentd,zabbix_get,zabbix_proxy,zabbix_sender,zabbix_server 和 zabbix_gateway。

其中,zabbix_java_gateway是可选进程。这6个进程的作用如下:

1、zabbix_agentd

zabbix-agentd为zabbix客户端守护进程 ,主要负责收集客户端监控项数据。

2、zabbix_server

zabbix_server为zabbix服务端守护进程,主要负责收集zabbix客户端数据。(端口为10051)

3、zabbix_proxy

zabbix_proxy是zabbix的代理程序,其功能类似于server,作用上类似于一个中转站,最终会把收集的数据再次提交给zabbix_server。

4、zabbix_get

zabbix_get作为zabbix工具,通常运行在zabbix_server或者zabbix_proxy上,用于远程获取客户端信息,通常用于排错。

5、zabbix_sender

zabbix_sender也是zabbix的一个工具,通常运行在zabbix的客户端,用于耗时比较长的检查,其作用是主动发送数据。

6、zabbix_java_gateway

zabbix_java_gateway是zabbix2.0以后引入的新功能,可以用于JAVA方面的设备;但是只能主动获取数据,而不能被动获取数据。

七、zabbix的监控框架

在实际的工作环境中,根据网络环境和监控的规模不同,zabbix一共有三种框架,分别是server_client架构、master_node_client架构和server_proxy_client架构。

1、server_client架构

zabbix最简单的架构,监控设备和被监控设备之间直接相连,zabbix_server 和 zabbix_client 之间直接进行数据交互。

2、zabbix_proxy_client架构

proxy是连接 server 和 client 之间的桥梁,其本身不存放数据,只是将zabbix_agent端发来的数据暂存,然后再提交给server。这种架构一般用于跨机房、跨网络的中型网络架构。

在server_proxy_client架构中,server设备的宕机会导致整个系统瘫痪而无法正常工作。

3、master_node_client架构

master_node_client架构是zabbix最复杂的架构。一般用于跨机房、跨网络、监控设备较多的大型网络架构。与server_proxy_client架构相比,master_node_client架构的主要区别在于node与proxy上.

在master_node_client架构中,每个node可以理解为一个小的server端,在自己的配置文件和数据库,node下游可以直接连接client,也可以再次经过proxy代理后连接client。

在master_node_client架构中,master设备宕机不会影响node节点的正常工作。

7.1 三种架构模式的架构图如下:


7.2 每个模块的工作职责:
1、Zabbix_Server:zabbix_server作为核心组件,用来获取agent存活情况和监控数据。所有的配置、统计、操作数据均通过server进行存取到database;

2、Zabbix_Database:用户存储所有的zabbix的配置信息、监控数据的数据库;

3、Zabbix_Web:zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,通常与zabbix_server运行在同一台主机上,也可以单独部署在独立的服务器上;

4、Zabbix_Proxy:通常用于分布式监控,代理zabbix_server收集部分被监控的数据并统一发送给server端;(通常大于500台主机需要使用)

5、Zabbix_Agent:部署在被监控主机上,负责收集被监控主机的数据,并发送给servre端或者proxy端;

Zabbix Server、Proxy、Agent都有自己的配置文件以及log文件,重要的参数需要在这里配置,后面会详细说明。 

八、zabbix源码安装及部署

一、服务端安装

[root@localhost yum.repos.d]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@localhost yum.repos.d]# yum install zabbix-server-mysql zabbix-agent -y
[root@localhost yum.repos.d]# yum install epel-release
[root@localhost yum.repos.d]# yum install centos-release-scl
[root@localhost yum.repos.d]# yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
[root@localhost yum.repos.d]# yum install -y mariadb-server mariadb
[root@localhost yum.repos.d]# systemctl start mariadb
[root@localhost yum.repos.d]# systemctl enable mariadb
#进入数据库给权限配置
[root@localhost ~ ]# mysql
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> create user zabbix@localhost identified by '123456';
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
#在Zabbix服务器主机上,导入初始架构和数据。系统将提示您输入新创建的密码
[root@localhost ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

可选配置:如果官方仓库无法连接,可将仓库地址改为清华大学,下边是清华大学仓库地址

[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=1[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1

安装zabbix前端软件包

zabbix-web-mysql-scl       用于连接数据库
zabbix-apache-conf-scl    用于连接apache 
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl 如果缺包加入以下两个库(如果安装不成功确保yum.repo文件夹里光盘文件齐全)
yum -y install epel-release
yum install centos-release-scl

这时候提示我们缺包,我们可以下载另外两个库

Zabbix服务器配置数据库

#Zabbix服务器配置数据库
vim /etc/zabbix/zabbix_server.conf
100 DBName=zabbix         #存储监控数据的库名
116 DBUser=zabbix             #连接数据库的用户
124 DBPassword=123456     #设置zabbix用户密码#为Zabbix配置正确的时区
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai    #亚洲/上海 

启动并查看

[root@node1 yum.repos.d]# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
[root@node1 yum.repos.d]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/rh-php72-php-fpm.service to /usr/lib/systemd/system/rh-php72-php-fpm.service.#查看zabbix服务占用端口信息
[root@node1 yum.repos.d]# netstat -anptu | grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      120892/zabbix_agent 
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      120891/zabbix_serve 
tcp6       0      0 :::10050                :::*                    LISTEN      120892/zabbix_agent 
tcp6       0      0 :::10051                :::*                    LISTEN      120891/zabbix_serve 

九、web页面设置

从浏览器上打开Zabbix前端访问URL. 如果你是从packages方式安装Zabbix, URL是:

对应Apache:  http:///zabbix

对应Nginx: http://

您看到的第一个Web前端安装向导页面如下:

先决条件检查

请确保先满足所有软件先决条件. 这里的Check of pre- requisites必须全部项目OK后才能继续配置,如有提示 fail,去server上检查是否安装这个包或配置是否按上述更改

配置数据库连接

输入连接数据库所需的详细信息。zabbix数据库必须先建立好。

Zabbix server服务器详情

请输入Zabbix服务器详情,可选的输入Zabbix服务器的名 字, 然而, 如果输入并提交了, Zabbix服务器的名字将会显示在菜单和页面的标题。

安装前总结

回顾所有配置

完成安装

如果webserver用户对conf/目录有写访问权,配置文件 将自动保存,并且可以立即进入下一步

web界面登陆

zabbix前端已经安装完成!超级用户名是Admin,密码是zabbix

为了防止暴力破解和词典攻击,如果发生连续五次尝试登陆失败,Zabbix接口将暂停30秒。

在下次成功登陆后,将会在界面上显示登录尝试失败的IP地址。

web界面概览

侧边栏的垂直菜单可访问Zabbix前端各个部分。

菜单默认使用深蓝主题。

菜单可以整个折叠或隐藏:

折叠, 单击Zabbix logo旁边的

隐藏, 单击Zabbix logo旁边的

折叠菜单

当菜单折叠为图标时,将鼠标光标放在菜单上,就会重新 显示完整菜单。 需要注意菜单只是重新浮在页面内容上; 要将页面内容移至右侧,您必须单击展开按钮。 如果再次 将鼠标光标置于整个菜单之外,则该菜单将在两秒钟后再 次折叠。

隐藏菜单

即使菜单被完全隐藏,只需要通过鼠标单击汉堡图标即可 获得完整的菜单。需要注意的是它只是重新浮现在页面内 容上;要将页面内容移至右侧,您必须通过单击显示侧边 栏按钮来取消隐藏菜单。

修改界面的语言

修改登陆密码

用户及媒介创建
添加用户

可以在管理(Administration)→用户(Users)下查看用户信息。 

点击  创建用户(Create user)以增加用户。

在添加用户的表单中,请确保将新增的用户添加到了一个已有的用户组,比如'Zabbix   administrators'。

所有必填项都以红色星标标记。

默认情况下,没有为新增的用户定义媒介(media,即通 知发送方式) 。如需要创建,可以到 媒介(Media)标签 下,然后点击 增加(Add)。

在这个对话框中,为用户输入一个Email地址。

你可以为媒介指定一个时间活动周期,(访问时间周期说明

页面,查看该字段格式的描述)。默认情况下,媒介一直 是活动的。你也可以通过自定义触发器严重等级来激活媒介,默认所有的等级都保持开启。

选择用户身份(如果需要该用户接收告警通知,需要超级 管理员类型)

添加权限

默认情况下,新用户没有访问主机的权限。若要授予用户 权限,请单击“组”列中的用户组(在本例中 为"administrators"组)。在“组属性”表单中,转到“权限” 选项卡。

此用户是要有只读访问Linux Server组的权限, 设置权限级别,然后添加到权限列表中。 在“用户组属性”表单中, 单击“更新。

重要提醒:在Zabbix中,主机的访问权限被分配给用户组, 而不是单独的用户。权限设置完成了!您可以尝试使用新用户的凭据登录。

如何修改超级用户 Admin 的密码

十、部署被监控的主机

修改源

rpm -ivh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.24-1.el7.x86_64.rpm 

[root@localhost ~]# yum install -y zabbix-agent[root@localhost ~]# rpm -ql zabbix-agent
/etc/logrotate.d/zabbix-agent
/etc/zabbix/zabbix_agentd.conf
/etc/zabbix/zabbix_agentd.d
/usr/lib/systemd/system/zabbix-agent.service
/usr/lib/tmpfiles.d/zabbix-agent.conf
/usr/sbin/zabbix_agentd
/usr/share/doc/zabbix-agent-5.0.37
/usr/share/doc/zabbix-agent-5.0.37/AUTHORS
/usr/share/doc/zabbix-agent-5.0.37/COPYING
/usr/share/doc/zabbix-agent-5.0.37/ChangeLog
/usr/share/doc/zabbix-agent-5.0.37/NEWS
/usr/share/doc/zabbix-agent-5.0.37/README
/usr/share/doc/zabbix-agent-5.0.37/userparameter_mysql.conf
/usr/share/man/man8/zabbix_agentd.8.gz
/var/log/zabbix
/var/run/zabbix
vim /etc/zabbix/zabbix_agentd.conf
117 Server=192.168.31.51    #指定zabbix server地 址#启动服务并设置服务随机自启
systemctl start zabbix-agent
systemctl enable zabbix-agent

十一、zabbix监控windows客户端配置

实验两种方法

1、配置虚拟机win10系统

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DataTable扩展 列转行方法(2*2矩阵转换)

源数据 如图所示 // <summary>/// DataTable扩展 列转行方法&#xff08;2*2矩阵转换&#xff09;/// </summary>/// <param name"dtSource">数据源</param>/// <param name"columnFilter">逗号分隔 如SDateTime,PM25,PM10…

【QT】使用qml的QtWebEngine遇到的一些问题总结

在使用qt官方的一些QML的QtWebEngine相关的例程的时候&#xff0c;有时在运行会报如下错误&#xff1a; WebEngineContext used before QtWebEngine::initialize() or OpenGL context creation failed 这个问题在main函数里面最前面加上&#xff1a; QCoreApplication::setAttr…

Linux下的系统编程——认识进程(七)

前言&#xff1a; 程序是指储存在外部存储(如硬盘)的一个可执行文件, 而进程是指处于执行期间的程序, 进程包括 代码段(text section) 和 数据段(data section), 除了代码段和数据段外, 进程一般还包含打开的文件, 要处理的信号和CPU上下文等等.下面让我们开始对Linux进程有个…

利用transform和border 创造简易图标,以适应uniapp中多字体大小情况下的符号问题

heml: <text class"icon-check"></text> css: .icon-check {border: 2px solid black;border-left: 0;border-top: 0;height: 12px;width: 6px;transform-origin: center;transform: rotate(45deg);} 实际上就是声明一个带边框的div 将其中相邻的两边去…

java八股文面试[数据库]——主键的类型自增还是UUID

auto_increment的优点&#xff1a; 字段长度较uuid小很多&#xff0c;可以是bigint甚至是int类型&#xff0c;这对检索的性能会有所影响。 在写的方面&#xff0c;因为是自增的&#xff0c;所以主键是趋势自增的&#xff0c;也就是说新增的数据永远在后面&#xff0c;这点对于…

Android之 SVG绘制

一 SVG介绍 1.1 SVG&#xff08;Scalable Vector Graphics&#xff09;是可缩放矢量图形的缩写&#xff0c;它是一种图形格式&#xff0c;其中形状在XML中指定&#xff0c; 而XML又由SVG查看器呈现。 1.2 SVG可以区别于位图&#xff0c;放大可以做到不模糊&#xff0c;可以做…

Vagrant + VirtualBox + CentOS7 + WindTerm 5分钟搭建本地linux开发环境

1、准备阶段 将环境搭建所需要的工具和文件下载好&#xff08;页面找不到可参考Tips部分&#xff09; Vagrant 版本&#xff1a;vagrant_2.2.18_x86_64.msi 链接&#xff1a;https://developer.hashicorp.com/vagrant/downloads VirtualBox 版本&#xff1a;VirtualBox-6.1.46…

无涯教程-JavaScript - DAYS360函数

描述 DAYS360函数返回基于360天的年份(十二个月为30天)的两个日期之间的天数,该天数用于会计计算。 语法 DAYS360 (start_date,end_date,[method])争论 Argument描述Required/OptionalStart_dateThe two dates between which you want to know the number of days.Required…

基于SpringBoot的医院挂号系统

基于SpringBootVue的医院挂号、预约、问诊管理系统&#xff0c;前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 角色&#xff1a;管理员、用户、医生 管…

Android Jetpack Compose 用计时器demo理解Compose UI 更新的关键-------状态管理(State)

目录 概述1.什么是状态2.什么是单向数据流3.理解Stateless和Stateful4.使用Compose实现一个计数器4.1 实现计数器4.2 增加组件复用性-----状态上提 总结 概述 我们都知道了Compose使用了声明式的开发范式&#xff0c;在这样的范式中&#xff0c;UI的职责更加的单一&#xff0c…

es5的实例__proto__(原型链) prototype(原型对象) {constructor:构造函数}

现在看这张图开始变得云里雾里&#xff0c;所以简单回顾一下 prototype 的基本内容&#xff0c;能够基本读懂这张图的脉络。 先介绍一个基本概念&#xff1a; function Person() {}Person.prototype.name KK;let person1 new Person();在上面的例子中&#xff0c; Person …

腾讯混元助手使用指南

一、腾讯混元助手简介 腾讯混元助手是什么&#xff1f; 腾讯混元助手是由腾讯研发的大语言模型的平台产品&#xff0c;具备跨领域知识和自然语言理解能力&#xff0c;实现基于人机自然语言对话的方式&#xff0c;理解用户指令并执行任务&#xff0c;帮助用户实现人获取信息&am…

SpringBoot整合Websocket(Java websocket怎么使用)

目录 1 Websocket是什么2 Websocket可以做什么3 Springboot整合Websocket3.1 服务端3.2 客户端 1 Websocket是什么 WebSocket 是一种基于 TCP 协议的全双工通信协议&#xff0c;可以在浏览器和服务器之间建立实时、双向的数据通信。可以用于在线聊天、在线游戏、实时数据展示等…

算法通关村第十七关:青铜挑战-贪心其实很简单

青铜挑战-贪心其实很简单 1. 难以解释的贪心算法 贪心学习法则&#xff1a;直接做题&#xff0c;不考虑贪不贪心 贪心(贪婪)算法 是指在问题尽心求解时&#xff0c;在每一步选择中都采取最好或者最优&#xff08;最有利&#xff09;的选择&#xff0c;从而希望能够导致结果最…

【爬虫笔记】Python爬虫简单运用爬取代理IP

一、前言 近些年来&#xff0c;网络上的爬虫越来越多&#xff0c;很多网站都针对爬虫进行了限制&#xff0c;封禁了一些不规则的请求。为了实现正常的网络爬虫任务&#xff0c;爬虫常用代理IP来隐藏自己的真实IP&#xff0c;避免被服务器封禁。本文将介绍如何使用Python爬虫来…

百度智能云千帆大模型丨未来人手必备的代码助手

文章目录 1. 前言2. 千帆大模型平台3. 十分友好的功能4. comate代码助手5. 总结 1. 前言 我之前给大家推荐过Poe这个网站&#xff0c;它用的人比较少&#xff0c;但一旦接触后会发现它其实挺强大的。 因为它是一个可以同时支持好几个大模型的在线聚合平台。常用的GPT4&#x…

基于阻塞队列的生产消费模型

目录 一、线程同步 1.生产消费模型&#xff08;或生产者消费者模型&#xff09; 2.认识同步 &#xff08;1&#xff09;生产消费模型中的同步 &#xff08;2&#xff09;生产者消费者模型的特点 二、条件变量 1.认识条件变量 2.条件变量的使用 3.代码改造 三、基于阻…

uniapp移动端h5设计稿还原

思路 动态设置html的font-size大小 实现步骤 先创建一个public.css文件&#xff0c;设置初始的font-size大小 /* 注意这样写 只能使用css文件, scss 是不支持的, setProperty 只适用于原生css上 */ html {--gobal-font-size: 0.45px; } .gobal-font-size {font-size: var(--g…

leetcode 655. 输出二叉树(java)

输出二叉树 题目描述代码演示 题目描述 难度 - 中等 leetcode 655. 输出二叉树 给你一棵二叉树的根节点 root &#xff0c;请你构造一个下标从 0 开始、大小为 m x n 的字符串矩阵 res &#xff0c;用以表示树的 格式化布局 。构造此格式化布局矩阵需要遵循以下规则&#xff1a…

Python接口自动化封装导出excel方法和读写excel数据

一、首先需要思考&#xff0c;我们在页面导出excel&#xff0c;用python导出如何写入文件的 封装前需要确认python导出excel接口返回的是一个什么样的数据类型 如下&#xff1a;我们先看下不对返回结果做处理&#xff0c;直接接收数据类型是一个对象&#xff0c;无法获取返回值…