监控的基本理论和prometheus安装

前言

这篇博客主要讲的是关于理论的知识,大家尽可能的消化和吸收,也能扩展大家的知识面

监控的基本概念

监控俗称为运维的第三只眼。没有了监控,业务运维都是“瞎子”。所以说监控室运维这个职业的根本,尤其是在Devops这么活的时候,用监控数据给自己撑腰,这个显得更加的必要,有人说运维是背锅侠,那么有了监控,就有了证据,一切以证据说话,运维就不需要背锅了,

所以作为一个运维工程师,如何构建一套监控系统是你的第一个工作

SRE必修课程,搞懂SLI,SLO,SLA的区别

SRE团队主要承担的职责,可用性的改进,延迟优化,效率提高,变更管理,监控,紧急事物的处理以及容量规划与管理,总结一句话,就是提升服务质量,就要指定一个针对于客户服务质量的目标,这就是今天要聊的SLI,SLO,SLA

  1. SLI

SLI是指的服务质量水平标准(service level lndicator)用来描述一个服务有多好,达到好的标准,对于业务来说是重要的指标,对于一个网站而言,一个常见的sli是 请求的响应时间是多少,比如tcp延迟小于200ms,又比如pod在一分钟内交付。我i们通常从延迟性,可用性,吞吐率和成功率这些角度来指定sli

  1. SLO

slo (service level object) 表示目标服务器,来衡量一个SLI指标在一段时间内达到好的标准比例,通常是一个百分比,并与一个时间范围内挂钩,比如,月度、季度、年度等。如果脱离了时间的度量,SLO的意义就不大了。比如说,99%的Pod在1min内交付。每月 99.99% 的 TCP 请求延迟(SLI)小于 200ms。

  1. SLA

SLA是服务水平协议,常用于SLO定义的目标比例唯有完成时,服务器方要赔付多少。

区别SLO和SLA的一个简单方法是问“如果SLO没有达到时,有什么后果?”如果没有定义明确的后果,那么我们就肯定是在讨论一个SLO,而不是SLA。

监控方法论

目前业界比较流行的方法论有Google的4个黄金指标,RED方法,USE方法

Google的4个黄金指标

google的4个黄金指标对于服务器监控分别是延迟,流量,错误和饱和度。

延迟:表示服务请求所花费的时间,比如说用户获取商品列表上的每个接口,花费30毫秒,注意请求成功的延迟和失败请求的延迟区别。通常延迟较高时不好的表现,大多数的情况下也意味着系统的系统系能不好,用户的体验不好。

流量:表示系统承载的用户活交易的量级,流量对于不同类型的服务而言可能代表着不同的含义,比如对于web的http应用。这类的指标可能表现为tps,qps,流量指标通常是2用来展现当前系统的负载状态和不同时段的负载情况。

错误:表示当前系统发生错误的评价维度,错误一般可以分为显示错误和隐藏式错误。

举例子来说:http返回了500状态码,说明这个请求是失败的,也就属于显示错误,而某些情况下,http尽管返回了200的状态码但是返回的内容不符合预期这个就是隐藏式的错误,也就是请求失败。此类指标可以用来衡量系统的运行质量

饱和度:表示当前资源使用的饱和度情况,通常情况下,资源达到饱和度,服务器的性能会下降,比如磁盘的读写功能,还有式I/o操作下降会处于阻碍状态,此外cpu使用率也可以作为饱和度的指标,这类指标可以衡量系统资源的使用率

RED方法

RED方法式Google的4类的黄金指标基础上提出的,它重点关注应用请求的3个关键指标,希望由此涵盖web服务(也是占比最高的服务类型)相关问题

(Request)Rate:请求速率,每秒请求数

(Request)Errors:错误,每秒,错误请求数量

(Request)Duration:延迟,每一个请求延迟分布情况

三个英文单词取首字母组成 RED 方法,姑且可以看做是 Google 四个黄金指标的简化版。RED方法是以请求为中心,聚焦用户在使用Web服务时所应关注的重点,通过这三项指标,我们就能监测到 通常情况下影响客户使用体验的关键信息。

Red方法,主要适用于关注和请求相关的指标数据,适合云原生应用和微服务应用下的应用

USE 方法

USE 是使用率(Utilization)、饱和度(Saturation)、错误(Error)的缩写,主要用于分析资源问题。

什么是资源?主要是指传统意义上的物理服务器组件,比如 CPU、硬盘等,但现在很多人已经扩展了资源的范围,把一些软件资源也包含在内。下面我们对使用率、饱和度、错误做一个更详细的解释。

资源使用率:这个我们最熟悉,比如CPU、内存、网络、磁盘I/O等。如果某项资源使用率持续较高,那么通常说明其存在一定的性能瓶颈。

饱和度:与Google的4个黄金信号中的饱和度意义相同。

错误:与错误相关的指标统计信息,比如调用失败次数、或通过 ifconfig 看到的 errors、dropped 包量。还有很多错误是以系统错误日志的方式暴露的,没法直接拿到某个统计指标,此时可以进行日志关键字监控。

USE 方法,可以从资源使用率、资源饱和度等指标维度进行监控和分析,对于系统性能监控和性能瓶颈识别可以起到很好的作用,适用于主机级监控。

需要监控的指标有那些

我们在这里用一个图来表示

在这里插入图片描述

1.资源监控

资源监控,主要是针对硬件设备和网络,硬件设备又分为服务器,网络设备又衍生为通信监控,质量监控,流量监控

2.组件监控

我们将常用web,数据库,中间间,容器等系统通常称之为组件,因此监控组件。

3.应用监控

应用监控就是指对应用程序(Application)的监控,Google 的四个黄金指标、RED 方法主要就是针对应用监控的。其实主要监控的是应用的性能指标

4.业务监控

这类监控指标非常重要,它代表着业务系统是否正常,同时也是管理层非常关注的,因为业务系统代表企业营收,或者跟客户项目相关,核心业务指标异常,一定是故障,业务指标异常代表着最终用户体验受损,或者造成公司直接资产损失。

5、监控与可观测性

监控的本质就是收集、分析和使用信息来观察一段时间内监控对象的运行进度,并且进行相应的决策管理的过程,监控侧重于观察特定指标。

但是随着云原生时代的到来,我们对监控提出了更多的要求:

通过监控了解数据趋势,知道系统在未来的某个时刻可能出问题,预知问题。

通过监控了解系统的资源情况,为服务扩缩容提供数据支撑。

通过监控来给系统把脉,感知到哪里需要优化,比如一些中间件参数的调优。

通过监控来洞察业务,提供业务决策的数据依据,及时感知业务异常。

要实现这些功能,就是今天要讲的“可观测性”。可观测性是云原生时代必须具备的能力。目前,“可观测性”逐渐取代“监控”,成为云原生技术领域最热门的话题之一。

可观测性是指在软件系统中,通过度量、监控和分析系统的各个组件行为,以便于了解系统的状态、性能和问题的能力。

可观测性的重要性在于它可以帮助开发人员及时发现问题,快速定位问题,并在问题发生时采取相应的措施,以减少系统的故障率和维护成本。此外,可观测性还有助于开发人员了解系统的实际运行情况,以便于对系统进行优化和升级。

在可观测性中,有三个重要的组件:

  • 聚合指标聚合指标指的是将多个指标数据聚合到一个单独的指标中以简化数据。例如,将多个节点的 CPU 利用率聚合为一个单一的平均值。聚合指标允许我们更轻松地理解系统的整体性能。同时,聚合指标还可以帮助我们快速识别潜在问题并了解系统中哪些部分 可能需要更多的资源。
  • 事件日志:事件日志是一组事件的记录,这些事件可以提供系统的历史记录和状态变化。例如,错误、警告和信息性事件都可以记录在事件日志中。事件日志对于诊断和调试问题非常有用,因为它们提供了对系统活动的详细记录。还可以发现系统中无法预知的行为
  • **链路追踪:链路追踪是一种用于跟踪分布式系统中请求的过程,以了解请求的路径以及请求在每个服务中花费的时间。**这有助于识别分布式系统中的性能瓶颈和瓶颈来源。链路追踪还可以帮助我们诊断分布式系统中出现的错误和问题,因为它提供了有关请求在哪个组件中失败的信息。

因此,可观测性能够回答以下几个问题:

  • 性能瓶颈有哪些
  • 请求需要接受的服务有哪些
  • 请求执行过程与系统行为之间的差异性
  • 请求失败的原因
  • 每一个微服务将如何处理请求

Prometheus的组件和架构

Prometheus介绍

Prometheus是一套开源的系统监控报警框架,作为新一代的云原生监控系统,Prometheus既可以实现主机为中心的监控,也可以完成以服务为导向的动态架构监控,在微服务的世界里,它支持多维度的数据集合,查询功能非常强大,

Prometheus的优势

  • 简单部署,Prometheus唯一需要的是一个本地磁盘,因为他的核心是一个二进制的文件,没有数据库,缓存等一系列的第三方的依赖
  • Prometheus可以实现监控服务的内部状态
  • Prometheus 内置强大的一个数据查询语言PromQL,通过PromQL可以实现对于数据的查询,聚合。
  • Prometheus可以高速的处理10多万的数据。

与zabbix相比,使用的场景区别

  • 偏基础的监控,像主机,网络这种场景,使用zabbix更加适合
  • 简单来说更适合于硬件方面,cpu,硬盘,内存。。。
  • 偏服务类型的容器的,使用Prometheus来作为监控。

一句话总结

服务类如:mysql,redis,php,python用于Prometheus

硬件类如:硬盘,cpu,内存

Prometheus的组件和架构

Prometheus 的生态系统包括多个组件,大部分组件都是由go语言编写而成,因此部署十分的方便,而这些组件都是可以选择的

主要的组件如下

Prometheus Server
Prometheus Server 是prometheus的核心组件之一,负责对于监控数据的获得,存储以及查询推送网关(push gateway)
主要是用来接收client push 推送过来的指标数据,在指定的时间间隔,由Prometheus Server来抓取Exporter
主要来采集数据,通过http服务的形式暴露于 Prometheus server -》它通过访问Exporter提供接口,即可采集到监控数据数据
常见的Exporter有很多,例如node_exporter、mysqld_exporter、statsd_exporter、blackbox_exporter、haproxy_exporter等等,支持如 HAProxy,StatsD,Graphite,Redis 此类的服务监控。警告管理器(Alertmanager)
管理告警,主要是负责实现监控报警功能。在Prometheus Server中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由AlertManager进行管理。

pull 和 push

在这里插入图片描述

pull监控主动的拉取目标数据

push目标推送数据到监控

  • Prometheus是通过HTTP方式抓取组件的状态,任意组件只要提供的http接口符合Prometheus定义的数据格式,就可以接入prometheus监控
  • Prometheus Server负责定时在目标上抓取metrics(指标)数据,每个抓取目标都需要暴露一个HTTP服务接口用于Prometheus定时抓取。这种调用被监控对象获取监控数据的方式被称为Pull(拉);Pull方式体现了Prometheus独特的设计哲学与大多数采用Push(推)方式的监控不同
  • Pull方式的优势是可以降低耦合。pull模式可控性好,pull模式下,监控系统是主动的一方,可以控制频率;push模式,客户端是主动的一方,如果代码写的有问题,就会给监控系统造成很大压力。所以通过Pull方式,被采集端无需感知监控系统的存在,完全独立于监控系统之外,这样数据的采集完全由监控系统控制。
  • Pull方式的优势是可以降低耦合。pull模式可控性好,pull模式下,监控系统是主动的一方,可以控制频率;push模式,客户端是主动的一方,如果代码写的有问题,就会给监控系统造成很大压力。所以通过Pull方式,被采集端无需感知监控系统的存在,完全独立于监控系统之外,这样数据的采集完全由监控系统控制。

所以说pull模式完美打败push模式

Prometheus安装配置

时序数据库全称是时间序列数据库,时间序列数据库指用于处理时间标签,按照时间顺序变换,即时间上的变化,常用于物联网设别和互联网监控的业务场景,提供读写的性能和强聚合计算的服务。

时间序列数据库主要按照一定的时间间隔产生一个个的数据点,以时间轴为横坐标,序列为纵坐标,如图所示:

在这里插入图片描述

时序数据库的特点:

  • 严重依赖于采集时间:每条数据都有一个时间戳,通常以UNIX时间为单位,可以方便地对数据进行排序和查询。
  • 数据产生频率快:高并发写入,主要是写入和读取操作,没有更新操作,通常以秒或毫秒为单位,有时甚至会达到微秒级别。
  • 存在明显的冷热数据:一般只会查询近期数据。对冷数据降低精度存储,对历史数据做聚合,节省存储空间。
  • 大量的统计查询要求:查询一定时间范围内的计数、最大值、最小值和平均值。

常见时序数据库:InfluxDB、OpenTSDB等。

Prometheus数据指标的概念及命名方式

promethes监控中,对于采集过来的数据统称为指标(metrics)数据,当我们需要为某个系统、某个服务做监控统计时,就需要用到指标数据。因此,指标是对采样数据的总称,注意,metrics并不代表某种具体的数据格式,它是对于度量计算单位的抽象。

Prometheus将采集的监控数据以指标(metric)的形式保存在内置的时间序列数据库当中(TSDB),每一条时间序列是由 metric 的名字和一系列的标签(key/value键值对)来唯一标识的,不同的标签代表不同的时间序列。格式如下:

<metric name>{<label name>=<label value>, …}
  • metric(指标)名字:指标名称可以反映监控样本的含量,一般用于metric的功能,例如prometheus_http_requests_total, 表示http请求的总数。其中,metric 名字由 ASCII 字符,数字,下划线,以及冒号组成。

  • 标签:标签可以使 Prometheus的数据更加丰富,对于相同的指标名称,通过不同标签列表的集合,会形成特定的维度实例。改变任何指标上的任何标签值(包括添加或删除指标),都会创建新的时间序列。例如:

prometheus_http_requests_total{code="200"}

在时间序列中的每一个点称为一个样本(sample),时间序列的样本数据包括一个float64的值和一个毫秒级的unix时间戳,这些数据是按照某个时序以时间维度采集的数据。这样,一个完整的时间序列的组成如下图所示:

在这里插入图片描述

下面的例子:

<--------------- metric and lable----------------------><-timestamp ->  <-value->
http_request_total{status="200", method="GET"}          @1434417560938 => 94355
http_request_total{status="200", method="GET"}          @1434417561287 => 94334
​
http_request_total{status="404", method="GET"}          @1434417560938 => 38473
http_request_total{status="404", method="GET"}          @1434417561287 => 38544
​
http_request_total{status="200", method="POST"}         @1434417560938 => 4748
http_request_total{status="200", method="POST"}         @1434417561287 => 4785

Prometheus server 下载

安装Prometheus之前必须要先安装ntp时间同步,因为prometheus server对系统时间的准确性要求很高,必须保证本机时间实时同步。这里我们以Almalinux9.1/RHEL9.1为例,先执行时间同步,执行如下计划任务:

[root@docker-110 ~]# timedatectl set-timezone Asia/Shanghai
[root@docker-110 ~]# crontab -e

首先需要到Prometheus官网 http://prometheus.io 下载最新版本的Prometheus,自己去下载

在这里插入图片描述

安装与启动Prometheus server

prometheus的安装非常简单,只需解压即可,然后执行命令可直接启动。

[root@localhost ~]# tar -xvzf prometheus-2.44.0.linux-amd64.tar.gz
[root@localhost ~]# mv prometheus-2.44.0.linux-amd64  /usr/local/prometheus[root@docker-110 prometheus]# ll
total 302892
-rw-r--r-- 1 1001 docker     11357 Jun 30 21:38 LICENSE
-rw-r--r-- 1 1001 docker      3773 Jun 30 21:38 NOTICE
-rwxr-xr-x 1 1001 docker 159395306 Jun 30 21:25 prometheus
-rw-r--r-- 1 1001 docker      1093 Jun 30 21:38 prometheus.yml
-rwxr-xr-x 1 1001 docker 150742130 Jun 30 21:25 promtool
[root@docker-110 local]# cd prometheus/ 
[root@docker-110 prometheus]# ./prometheus --version 
prometheus, version 3.5.0-rc.0 (branch: HEAD, revision: 31f0c7007e7187b706da03e05aeeb303101164f8)build user:       root@d6b2cb516986build date:       20250630-13:23:30go version:       go1.24.4platform:         linux/amd64tags:             netgo,builtinassets

使用systemctl管理prometheus

# 创建prometheus本地存储的数据库
mkdir -p /var/lib/prometheusvim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target[Service]
# Type设置为notify时,服务会不断重启
Type=simple
User=root
# --storage.tsdb.path是可选项,默认数据目录在运行目录的./dada目录中
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.enable-lifecycle
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure[Install]
WantedBy=multi-user.target

在这里插入图片描述

访问本机ip:9090地址

在这里插入图片描述

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

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

相关文章

互联网生态下赢家群体的崛起与“开源AI智能名片链动2+1模式S2B2C商城小程序“的赋能效应

摘要&#xff1a;本文聚焦未来互联网赢家群体的构成特征&#xff0c;剖析网红经济与专业主播的差异化发展路径&#xff0c;结合开源AI智能名片链动21模式与S2B2C商城小程序的融合创新&#xff0c;提出技术赋能下互联网商业生态的重构路径。研究表明&#xff0c;开源AI技术通过智…

OneCode 图表组件核心优势解析

一、全方位的可视化能力 OneCode 图表组件提供了15种专业图表类型&#xff0c;覆盖从基础到高级的数据可视化需求&#xff1a; 基础图表&#xff1a;柱状图、折线图、饼图、面积图等高级图表&#xff1a;金字塔图、雷达图、仪表盘、LED图表等实时图表&#xff1a;实时折线图、实…

【Linux】RHCE中ansible的配置

1.安装并配置ansible 第一步先安装ansible所需软件 #安装ansible所需软件 [devopsworkstation ~]$ sudo dnf install ansible ansible-navigator rhel-system-roles -y 第二步登录镜像仓库&#xff0c;在镜像仓库下载镜像容器来运行ansible 由于ansible-navigator 知ansible…

ubuntu server系统 安装宝塔

更新系统软件包sudo apt update && sudo apt upgrade -y提示&#xff0c;如果想博主这样是存绿色liunx系统&#xff0c;要先安装python3脚本才可以python3 --version有pyhton版本号就是安装了&#xff0c;没有的话就要安装安装 Pythonsudo apt update sudo apt install…

用C++实现五子棋游戏

#include <iostream> #include <vector> #include <string> #include <iomanip> // 用于控制输出格式 #include <limits> // 用于numeric_limitsusing namespace std;// 游戏常量定义 const int BOARD_SIZE 15; // 定义棋盘大小为15x15// 棋…

【LeetCode 热题 100】73. 矩阵置零——(解法一)空间复杂度 O(M + N)

Problem: 73. 矩阵置零 题目&#xff1a;给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 文章目录整体思路完整代码时空复杂度时间复杂度&#xff1a;O(M * N)空间复杂度&#xff1a;O(M N)整体思路…

【深度学习新浪潮】国内零样本抗体设计的科研进展如何?

什么是AI零样本抗体设计? AI零样本抗体设计(Zero-shot AI Antibody Design)是指不依赖任何已知抗体序列或结构数据,仅根据靶点抗原信息,通过人工智能直接生成具有高亲和力、高特异性的全新抗体序列的技术。其核心在于突破传统抗体研发的“数据依赖瓶颈”,实现真正的“从…

【论文阅读】A Diffusion model for POI recommendation

论文出处&#xff1a;ACM Transactions on Information Systems (TOIS) SCI一区 CCF-A期刊 论文地址&#xff1a;[2304.07041] A Diffusion model for POI recommendation 论文代码&#xff1a;Yifang-Qin/Diff-POI: The official PyTorch implementation of Diff-POI. 目…

Rust实现FasterR-CNN目标检测全流程

使用 Rust 和 FasterR-CNN 进行目标检测 FasterR-CNN 是目标检测领域广泛使用的深度学习模型。Rust 生态中可以通过 tch-rs(Torch 绑定)调用预训练的 PyTorch 模型实现。以下为完整实现步骤: 环境准备 安装 Rust 和必要的依赖: cargo add tch cargo add anyhow # 错误…

Github 2025-07-03Go开源项目日报Top10

根据Github Trendings的统计,今日(2025-07-03统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10JavaScript项目2Go编程语言:构建简单、可靠和高效的软件 创建周期:3474 天开发语言:Go协议类型:BSD 3-Clause “New” or “Revise…

XML Schema 安装使用教程

一、XML Schema 简介 XML Schema&#xff08;XSD&#xff0c;全称 XML Schema Definition&#xff09;是用于定义 XML 文档结构、数据类型和数据约束的标准方式。它比 DTD 更加强大&#xff0c;支持数据类型、默认值、命名空间等&#xff0c;是企业级 XML 应用推荐的验证方式。…

【字节跳动】数据挖掘面试题0008:计算西瓜视频内容好评率

文章大纲题目描述题目描述 西瓜视频近期开展了”2020百大人气创作者”优质内容扶持项目&#xff0c;鼓励用户产出优质的视频内容。 现需要统计2020年11月01日至2020年11月30日期间创作的视频中&#xff0c; “科技”大类下“数码测评"子类的视频好评率&#xff08;好评率好…

Linux 进程控制:全面深入剖析进程创建、终止、替换与等待

文章目录引言一、进程创建&#xff1a;fork()系统调用的奥秘1.1 fork()的基本原理1.2 代码示例与解读1.3 写时复制&#xff08;COW&#xff09;优化二、进程终止&#xff1a;exit()与_exit()的抉择2.1 exit()和_exit()的区别2.2 代码示例与分析三、进程替换&#xff1a;exec()函…

PJSIP 中的 TCP 传输配置指南

PJSIP 支持通过 TCP 传输 SIP 消息&#xff0c;相比 UDP 提供了更可靠的传输机制。以下是关于在 PJSIP 中使用 TCP 的详细指南。1. 创建 TCP 传输基本 TCP 传输配置cpjsua_transport_config tcp_cfg; pjsua_transport_config_default(&tcp_cfg); tcp_cfg.port 5060; // SI…

小菜狗的云计算之旅,今天学习MySQL数据库基础知识及操作

目录 一、概述 数据库概念 数据库的类型 关系型数据库模型 关系数据库相关概念 二、安装 1、mariadb安装 2、mysql安装 3、启动并开机自启 4、本地连接&#xff08;本地登录&#xff09; 三、mysql数据库配置与命令 yum安装后生成的目录 mysql服务器的启动脚本 数…

为什么是直接在**原型(prototype)上**添加函数

这是一个非常经典、核心的 JavaScript 面向对象编程问题&#xff1a;> 为什么是直接在**原型&#xff08;prototype&#xff09;上**添加函数&#xff0c;而不是在类/构造函数内部直接添加&#xff1f;你提到的代码中&#xff1a;javascript function TopSearchComponent() …

深入理解 classnames:React 动态类名管理的最佳实践

在现代前端开发中&#xff0c;我们经常需要根据组件的状态、属性或用户交互来动态切换 CSS 类名。虽然 JavaScript 提供了多种方式来处理字符串拼接&#xff0c;但随着应用复杂性的增加&#xff0c;传统的类名管理方式很快就会变得混乱不堪。这时&#xff0c;classnames 库就像…

C++系列(七):深度探索C++内存 --- 分区、堆栈、new/delete与高效编程实践

引言 程序运行的本质是对数据的处理&#xff0c;而内存则是程序执行的核心舞台。理解内存的物理与逻辑分区&#xff0c;是掌握程序底层行为、编写高效可靠代码的关键基石。内存并非混沌一片&#xff0c;而是被严格划分为代码区、全局区、栈区和堆区。每个区域拥有独特的生命周…

微信小程序71~80

1.总结小程序生命周期 小程序冷启动&#xff0c;钩子函数执行的顺序保留当前页面&#xff0c;进入下一个页面&#xff0c;钩子函数执行的顺序销毁当前页面&#xff0c;进入下一个页面&#xff0c;钩子函数执行的顺序小程序热启动&#xff0c;钩子函数执行的顺序 2.使用Componen…

[Pytest][Part 3]检测python package状态

目录 实现需求1&#xff1a; 检查python package状态——pkg_resource hook实现自动检测包状态 conftest.py hook钩子函数 Part1: https://blog.csdn.net/x1987200567/article/details/144915315?spm1001.2014.3001.5501 从这里开始逐个实现Part1中的需求 实现需求1&a…