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

Prometheus使用

介绍:Prometheus 是一个开源的 监控与告警系统,主要用于采集和存储时间序列数据(Time Series Data)

Prometheus的自定义查询语言PromQL

Metric类型

为了能够帮助用户理解和区分这些不同监控指标之间的差异,Prometheus定义了4中不同的指标类型(metric type):Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要)

1、Counter:只增不减的计数器

计数器是一种只增不减(除非重置)的累加值,适合用来记录某些事件发生的总次数。

特点: 值只能递增(或重置为 0)、 常用于统计单调递增的指标。

场景:HTTP 请求总数(如 http_requests_total)、已处理任务的总数、 错误发生的总次数、用户访问量

# 查询总数:
http_requests_total
# 计算速率(每秒请求数)
rate(http_requests_total[5m])

2、Gauge:可增可减的仪表盘

Gauge 是一种值可以上下波动的数据类型,适合用来表示某些瞬时状态值。

特点:值可以增大或减小、适合表示当前状态,例如资源使用情况。
场景:当前内存使用量(如 memory_usage_bytes)、当前 CPU 使用率(如 cpu_usage_percentage)、当前并发连接数、磁盘使用量、内存使用量

3、Histogram和Summary分析数据分布情况

Histogram和Summary主用用于统计和分析样本的分布情况

实践

Prometheus函数

rate函数

rate函数 是专门搭配 counter 函数使用的
功能:按照设置一个时间段,取counter在这个时间段中的 平均每秒的增量。
node_network_receive_bytes_total即网络接受字节数为例,这个就是counter类型。这个counter被rate函数包上以后 就可以获取在1分钟之内,平均每秒的增量了即 rate( node_network_receive_bytes_total[1m])

increase函数

在 Prometheus 中,increase() 函数用于计算给定时间窗口内一个计数器的增量。它计算的是时间序列在指定时间范围内的增量(变化量),即数据点的“增加”部分。与 rate() 不同,increase() 更侧重于计算累计量的增长,而不是每秒的速率。

语法

increase(<metric>[<range>])
<metric>Prometheus 中的一个计数器指标,比如 node_cpu_seconds_total。
<range>:时间范围,用来定义增量的计算范围,常见的时间范围单位有 1m(1 分钟)、5m(5 分钟)、1h(1 小时)等。

举例:
increase(node_cpu_seconds_total{mode="idle"}[1m])为例。
计算过去 1 分钟内 node_cpu_seconds_total 的增量,也就是在这段时间内,CPU 空闲时间总共增加了多少秒。

时间(秒)node_cpu_seconds_total{mode=“idle”}
t15000
t25050

t1 时,CPU 空闲时间累计为 5000 秒。
t2 时,CPU 空闲时间累计为 5050 秒。
如果你计算 increase(node_cpu_seconds_total{mode="idle"}[1m]),则计算的是过去 1 分钟内 node_cpu_seconds_total 增长的部分
increase(node_cpu_seconds_total{mode="idle"}[1m]) = 5050 - 5000 = 50 秒 这表示在过去 1 分钟内,CPU 空闲时间增加了 50 秒。

docekr安装prometheus

安装步骤

1、 拉取prometheus镜像
docler pull prom/prometheus
2、配置文件

global:scrape_interval: 15sevaluation_interval: 15salerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093rule_files:# - "first_rules.yml"# - "second_rules.yml"scrape_configs:- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']- job_name: 'node_exporter'static_configs:- targets: ['192.168.31.142:9100']- job_name: 'cloud'metrics_path: '/actuator/prometheus'scrape_interval: 5sstatic_configs:- targets: ['10.2.0.187:8080']

3、启动一个prometheus容器

docker run  -d --name prometheus -p 9090:9090 -v /Users/liuyuanyuan/docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus

4、mac 精准查找ip命令
ifconfig en0 | grep inet| awk ‘{print $2}’
5、访问地址
http://localhost:9090/
在这里插入图片描述

安装node-exporter

1、docker pull prom/node-exporter
2、运行容器

docker run -d --name node-exporter --restart=always -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" prom/node-exporter

3、访问地址
http://127.0.0.1:9100/metrics
在这里插入图片描述
说明成功。
4、配置到Prometheus中
记住mac要写的是ip地址(获取mac本机地址)ifconfig en0 | grep inet| awk '{print $2}'而不是localhost不然好像配置不生效

global:scrape_interval: 15sevaluation_interval: 15salerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093rule_files:# - "first_rules.yml"# - "second_rules.yml"scrape_configs:- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']- job_name: 'node_exporter'static_configs:- targets: ['192.168.31.142:9100']- job_name: 'cloud'metrics_path: '/actuator/prometheus'scrape_interval: 5sstatic_configs:- targets: ['10.2.0.187:8080']

加上之后我们看下内存使用率
node_memory_MemFree_bytes
在这里插入图片描述

node_cpu_seconds_total

解释:cpu使用率
第一个问题:时间增量
cpu底层是时间的累积。所以用Counter 刚好满足这个情况,其中increase()函数 在Prometheus 中 专门针对 Counter 这种持续增长的数值,截取其中一段时间的增量 increase(node_cpu[1m])这个意思就是 30分钟内 每1分钟就会对增量取一个值。这样就能获取cpu在1分钟内时间的增量了
第二个问题:实际工作中cpu都是多核
我们在实际中不关心每个cpu核而是看整个cpu表现,此时Prometheus有另一个函数sum() 对结果集加和 比如 sum( increase(node_cpu[1m]) ) 直接统计所有核数值累加

全部cpu时间:node_cpu_seconds_total
在这里插入图片描述

空闲cpu时间:node_cpu_seconds_total{mode="idle"}
在这里插入图片描述

空闲cpu1分钟的增量: increase(node_cpu_seconds_total{mode="idle"}[1m])
在这里插入图片描述

全部cpu1分钟的增量:sum(increase(node_cpu_seconds_total{mode="idle"}[1m]))
在这里插入图片描述

这里有个问题 他怎么变成1条线了?我们是多台服务器进行数据采集,因为sum函数的原因,sum函数他是把所有结果集全部加和了不光把每台机器的cpu核加一起了 还把所有机器的cpu核也加到一起了。最终变成 服务器集群总cpu平均高值了,这显然不是我们的效果。
怎么解决呢?引入函数 by (instance)
它可以按照结果集进行拆分 instance 就是按照机器拆分。
单台机器cpu1分钟的增量:(sum(increase(node_cpu_seconds_total[1m])) by (instance))
结果:
在这里插入图片描述
很明显你看到了左下角有机器分组了,你可以看上一个sum结果明显没有对结果集分组。
所以空闲的的1分钟时间增量:
(sum(increase(node_cpu_seconds_total{mode="idle"}[1m])) by (instance))
那么cpu利用率就知道了:

(1 - ((sum(increase(node_cpu_seconds_total{mode="idle"}[1m])) by (instance)) / (sum(increase(node_cpu_seconds_total[1m])) by (instance)))) * 100

在这里插入图片描述

相关文章:

Prometheus使用

介绍&#xff1a;Prometheus 是一个开源的 监控与告警系统&#xff0c;主要用于采集和存储时间序列数据&#xff08;Time Series Data&#xff09; Prometheus的自定义查询语言PromQL Metric类型 为了能够帮助用户理解和区分这些不同监控指标之间的差异&#xff0c;Prometheu…...

Java学习打卡-Day19-Set、HashSet、LinkedHashSet

Set 接口 无序&#xff08;添加和取出顺序不一致&#xff09;&#xff08;但取出顺序固定&#xff09;。没有索引。不允许重复&#xff0c;所以最多一个null。遍历方式 迭代器增强for循环不能使用普通for循环索引方式。 HashSet 实现了Set接口&#xff0c;具有相应特征。底…...

冯・诺依曼架构深度解析

一、历史溯源&#xff1a;计算机科学的革命性突破 1.1 前冯・诺依曼时代 在 1940 年代之前&#xff0c;计算机领域呈现 "百家争鸣" 的格局&#xff1a; 哈佛 Mark I&#xff08;1944&#xff09;&#xff1a;采用分离的指令存储与数据存储ENIAC&#xff08;1946&a…...

单片机学完开发板,如何继续提升自己的技能?

很多人学完开发板后都会卡在一个尴尬的阶段&#xff1a;觉得自己会的东西不少&#xff0c;但又不知道下一步该干啥。会点C语言&#xff0c;能烧录程序&#xff0c;能点亮LED&#xff0c;玩转按键&#xff0c;搞定串口等等&#xff0c;能用开发板做点小玩意儿&#xff0c;但面对…...

Nginx 日志格式

默认日志格式配置 log_format main $remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for";该格式记录了客户端IP、用户、时间、请求、状态…...

Spring Boot 整合 Elasticsearch 实践:从入门到上手

引言 Elasticsearch 是一个开源的分布式搜索引擎&#xff0c;广泛用于日志分析、搜索引擎、数据分析等场景。本文将带你通过一步步的教程&#xff0c;在 Spring Boot 项目中整合 Elasticsearch&#xff0c;轻松实现数据存储与查询。 1. 创建 Spring Boot 项目 首先&#xff…...

STM32 —— 嵌入式系统、通用计算机系统、物联网三层架构

目录 一、嵌入式系统的概念 二、通用计算机系统与嵌入式系统的比较 用途 硬件 软件 性能与功耗 开发与维护 三、嵌入式系统与物联网的关系 四、物联网的三层架构 1. 感知层&#xff08;Perception Layer&#xff09; 2. 网络层&#xff08;Network Layer&#xff09; …...

SARAD 解读

出处&#xff1a;NIPS 2024 代码链接&#xff1a;https://github.com/daidahao/SARAD/ 一 文章动机 ① 时间建模&#xff08;Temporal Modeling&#xff09;的局限性&#xff1a; a. 时间维度上 感受野极小&#xff1b;b. 变量间时间戳错位 (时间建模、空间建模不统一) →…...

【愚公系列】《高效使用DeepSeek》017-知识点思维导图生成

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...

【linux】scp和rsync

scp 和 rsync 都是 Linux 系统中用于文件传输的命令行工具&#xff0c;它们都可以通过网络在本地和远程主机之间传输文件。 scp 命令 定义 scp 是 “secure copy” 的缩写&#xff0c;它是一个基于 SSH 协议的文件传输工具&#xff0c;用于在本地和远程主机之间安全地复制文…...

软件需求分类、需求获取(高软46)

系列文章目录 软件需求分类&#xff0c;需求获取 文章目录 系列文章目录前言一、软件需求二、获取需求三、真题总结 前言 本节讲明软件需求分类、需求获取的相关知识。 一、软件需求 二、获取需求 三、真题 总结 就是高软笔记&#xff0c;大佬请略过&#xff01;...

蓝桥杯单片机之AT24C02(基于自己对AT24C02的学习和理解)

一、先用抽象法说明原理&#xff0c;让原理变得简单易懂&#xff1a; 1、向AT24C02写入数据&#xff1a; 有个关系户&#xff0c;他想安排自己的儿子进某个大厦里某个楼层的公司&#xff0c;那么他就要先找到这个公司的地址&#xff0c;然后再找到该公司是第几楼&#xff0c;最…...

【Qt】Qt + Modbus 服务端学习笔记

《Qt Modbus 服务端学习笔记》 1.因为项目的需要&#xff0c;要写一个modbus通信&#xff0c;csdn上感觉有些回答&#xff0c;代码是人工智能生成的&#xff0c;有些细节不对。我这个经过实测&#xff0c;是可以直接用的。 首先要包含Qt 的相关模块 Qt Modbus 模块主要包含以…...

抖音用户视频批量下载工具开发全解析

一、逆向工程原理剖析 1.1 抖音Web端防护体系 抖音采用五层防御机制保护数据接口: graph LRA[浏览器指纹检测] --> B[请求参数签名]B --> C[Cookie动态验证]C --> D[请求频率限制]D --> E[IP信誉评级] 1.2 核心参数解密 参数名称作用原理生成方式有效期x-bogu…...

DeepSeek写打台球手机小游戏

DeepSeek写打台球手机小游戏 提问 根据提的要求&#xff0c;让DeepSeek整理的需求&#xff0c;进行提问&#xff0c;内容如下&#xff1a; 请生成一个包含以下功能的可运行移动端打台球小游戏H5文件&#xff1a; 要求 可以重新开始游戏 可以暂停游戏 有白球和其他颜色的球&am…...

清晰易懂的 Swift 安装与配置教程

初学者也能看懂的 Swift 安装与配置教程 本教程将手把手教你如何在 macOS 系统上安装 Swift&#xff0c;配置依赖包缓存位置&#xff0c;并指出新手容易踩坑的细节。即使你是零基础小白&#xff0c;也能快速上手&#xff01; 一、安装 Swift&#xff08;macOS 环境&#xff09…...

Post-Training Quantization, PTQ

Post-Training Quantization&#xff08;PTQ&#xff09; 是 模型训练完成后&#xff0c;对其参数&#xff08;权重 & 激活值&#xff09;进行量化 的方法&#xff0c;目的是 减少存储占用 & 提高推理速度&#xff0c;同时尽可能保持模型精度。 相比于 量化感知训练&a…...

linux Redhat9.5采用DNS主从实现跨网段解析

文章目录 主从服务器DNS实现跨网段解析一、服务器规划二、主服务器配置1、安装bind2、修改主配置文件3、配置区域配置文件4、配置正向解析文件5、配置反向解析文件6、检查并启动服务 三、从服务器配置1、安装bind2、配置主配置文件3、修改区域配置文件4、检查并启动服务 四、路…...

Python个人学习笔记(18):模块(异常处理、traceback、日志记录)

七、异常处理 语法错误不属于异常&#xff0c;处理的是程序运行时的一些意外情况 代码&#xff1a; a int(input(>>>&#xff1a;)) b int(input(>>>&#xff1a;)) print(a / b) # 在运行的时候由于数据不对&#xff0c;导致出错 # 此时程序会中断 prin…...

记一次MyBatis分页莫名其妙的失效,首次执行合适,后续执行分页失效且异常

代码几乎一样&#xff0c;为啥这个xml配置的就会出现莫名其妙的问题呢 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{propertymybatis_plus_first, modeI…...

Claude是什么?适合哪些场景?

Claude 是由人工智能公司 Anthropic 开发的一款 大型语言模型&#xff08;LLM&#xff09;&#xff0c;旨在通过自然语言交互帮助用户完成复杂任务。以下是关于 Claude 的核心信息&#xff1a; 1. 核心定位 • 安全可靠&#xff1a; 采用 Constitutional AI&#xff08;宪法AI…...

基于yolov11的持刀检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv11的持刀检测系统 随着公共安全问题的日益突出&#xff0c;特别是在公共场所如机场、车站、学校等地&#xff0c;持刀等危险行为频发&#xff0c;对人们的生命财产安全构成严重威胁。传统的监控手段往往依赖于人工观察&#xff0c;但这种方式不仅效率低…...

openEuler24.03 LTS下安装Hive3

目录 前提条件 安装MySQL 卸载原有mysql及mariadb 下载mysql 解压mysql 安装mysql 启动mysql服务 开机自启动mysql服务 登录mysql 修改mysql密码 远程连接mysql 安装Hive 下载安装包 解压 设置环境变量 解决日志包冲突 将mysql驱动拷贝到lib目录 配置Hive 创…...

13-动态规划-最长公共子序列

题目 来源 24. 最长公共子序列 思路 不想打字&#xff0c;援引自最长公共子序列 (LCS) 详解例题模板&#xff08;全&#xff09;-CSDN博客 图示举例&#xff1a; 其余详见代码 代码 #include<bits/stdc.h> using namespace std; const int N110; int f[N][N]; int m…...

golang 生成单元测试报告

在 Go 语言中&#xff0c;你可以使用 go test 生成单元测试报告。以下是几种方法&#xff1a; 1. 生成基本测试报告&#xff08;文本格式&#xff09; go test -v ./... > test_report.txt-v&#xff1a;显示详细的测试信息./...&#xff1a;递归测试所有子目录> test_r…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

设备健康管理系统是什么,设备健康管理系统多少钱?

想象一下&#xff0c;你的汽车在仪表盘报警前 3 天&#xff0c;手机就收到 “发动机轴承剩余寿命 1500 公里” 的提醒 —— 这就是 ** 设备健康管理系统&#xff08;EHM&#xff09;** 的日常。在制造业&#xff0c;设备故障每年造成全球 3.4 万亿美元损失&#xff0c;而 80% 的…...

设计模式(创建型)-抽象工厂模式

摘要 在软件开发的复杂世界中,设计模式作为解决常见问题的最佳实践方案,一直扮演着至关重要的角色。抽象工厂模式,作为一种强大的创建型设计模式,在处理创建一系列或相关依赖对象的场景时,展现出了独特的优势和灵活性。它通过提供一个创建对象的接口,让开发者能够在不指定…...

docker 部署elk 设置账号密码

1. 先把 kibana 停掉 2.进入es 容器 docker exec -it 75895a078cbc /bin/bash 找到 bin 目录 执行 ./elasticsearch-setup-passwords interactive 全部设置一样的密码 ,不一样自己要记住&#xff0c;设置成功会输出如下内容 Changed password for user [apm_system] Chang…...

<table>内有两行<tr>,第一行设定高度为60,剩余第二行,和右侧元素高度补齐。

实现 <table> 内第一行高度设定为 60px&#xff0c;第二行和右侧元素高度补齐的效果&#xff0c;你可以通过 CSS 样式来控制。示例&#xff1a; 为第一行 <tr> 设置固定高度 60px。对于右侧元素&#xff0c;假设它是一个 <div> 或者其他容器&#xff0c;将其…...

QT5.15.2加载pdf为QGraphicsScene的背景

5.15.2使用pdf 必须要安装QT源码&#xff0c;可以看到编译器lib目录已经有pdf相关的lib文件&#xff0c;d是debug 1.找到源码目录&#xff1a;D:\soft\QT\5.15.2\Src\qtwebengine\include 复制这两个文件夹到编译器的包含目录中:D:\soft\QT\5.15.2\msvc2019_64\include 2.找…...

常见的工具和技术

Mockito Mockito 是一个流行的 Java Mocking 框架&#xff0c;用于创建和配置模拟对象&#xff08;Mock Objects&#xff09;&#xff0c;以便在单元测试中模拟复杂依赖关系的行为 使用场景&#xff1a;单元测试、隔离测试 EclipseEclipse 是一个开源的集成开发环境&#xff08…...

Linux怎样源码安装Nginx

1. 安装必要的依赖 在编译 Nginx 之前&#xff0c;你需要安装一些必要的依赖包&#xff0c;像编译工具和库文件等。以 CentOS 系统为例&#xff0c;可借助yum命令来安装&#xff1a; bash sudo yum install -y gcc pcre-devel zlib-devel openssl-devel要是使用的是 Ubuntu 系…...

汇编指令(20250319)

SOC常用总线 AHB&#xff08;Advanced High-performance Bus&#xff09;&#xff1a;先进高性能总线&#xff0c;连接RAM&#xff0c;ROM等高速设备APB&#xff08;Advanced Peripheral Bus&#xff09;&#xff1a;先进外设总线&#xff0c;连接外设等一些低速设备 CISC和R…...

PlainUSR|LIA: 追求更快的卷积网络实现高效的超分辨率重建

PlainUSR|LIA: 追求更快的卷积网络实现高效的超分辨率重建 引言 在深度学习领域&#xff0c;图像处理始终是一个热门话题。而超分辨率重建&#xff08;Super-Resolution Reconstruction, SR&#xff09;作为其中一个重要的研究方向&#xff0c;旨在通过算法将低分辨率图像恢复…...

神经网络基础之正则化

引言&#xff1a;正则化 &#xff08;Regularization&#xff09; 是机器学习中一种用于防止模型过拟合技术。核心思想是通过在模型损失函数中添加一个惩罚项 &#xff08;Penalty Term&#xff09;&#xff0c;对模型的复杂度进行约束&#xff0c;从而提升模型在新数据上的泛化…...

JAVA序列化与反序列化URLDNS链CC1链

1、序列化的实现 java序列化的是对象属性的&#xff0c;只有实现了Serializable或者Externalizable接口的类的对象才能被序列化为字节序列。&#xff08;不是则会抛出异常&#xff09;&#xff0c;静态成员变量是属于类的&#xff0c;所以静态成员变量是不能被序列化的&#x…...

孤儿进程和僵尸进程

本文讲述了什么是孤儿进程和僵尸进程&#xff0c;会带来怎样的问题以及如何处理 一、孤儿进程 1&#xff09;什么是孤儿进程 孤儿进程&#xff0c;顾名思义&#xff0c;就是父进程提前终止&#xff0c;但是子进程还在运行中&#xff0c;父进程无法对子进程进行监管&#…...

用ASCII字符转化图片

代码 from PIL import Image# 定义 ASCII 字符集&#xff0c;从最暗到最亮 ASCII_CHARS "%#*-:. "def resize_image(image, new_width100):width, height image.sizeratio height / widthnew_height int(new_width * ratio)resized_image image.resize((new_wi…...

从WebRTC到嵌入式:EasyRTC如何借助大模型提升音视频通信体验

随着人工智能技术的快速发展&#xff0c;WebRTC与大模型的结合正在为音视频通信领域带来革命性的变革。WebRTC作为一种开源实时通信技术&#xff0c;以其低延迟、跨平台兼容性和强大的音视频处理能力&#xff0c;成为智能硬件和物联网设备的重要技术支撑。 而EasyRTC作为基于W…...

自动化测试工具-Playwright介绍和快速实例

Playwright 是什么 Playwright 是由 Microsoft 开发的开源自动化测试工具,专为现代 Web 应用设计。它支持 Chromium、Firefox 和 WebKit 内核的浏览器,能够跨平台(Windows、macOS、Linux)运行,提供强大的浏览器自动化能力,适用于测试、爬虫和监控等场景。 Playwright的…...

Java:Apache HttpClient中HttpRoute用法的介绍

当使用Apache HttpClient组件时&#xff0c;经常会用到它的连接池组件。典型的代码如下&#xff1a; PoolingHttpClientConnectionManager connectionManager new PoolingHttpClientConnectionManager();connectionManager.setMaxTotal(httpConfig.getMaxPoolTotal());connect…...

万字长文详解|蚂蚁数据湖深度探索与业务应用实践

作者介绍&#xff1a;黄超傑&#xff0c;蚂蚁数据智能部实时数据团队数据研发工程师&#xff0c;致力于数据湖技术在蚂蚁落地应用、蚂蚁广告实时数仓建设、蚂蚁数据成本治理等工作。 在开始之前 如果&#xff1a; 你想要提升数据时效&#xff0c;能够接受分钟级延迟你好奇准实…...

rk3568 以太网eth1 , 定制板 phy调试问题。

问题: 客户定制底板的 phy 网络不通。 解决逻辑: phy 问题, 就是 照着 公司底板对硬件就行,完全是硬件问题,不用改 软件。 原理图如下:...

React相关面试题

以下是150道React面试题及其详细回答&#xff0c;涵盖了React的基础知识、组件、状态管理、路由、性能优化等多个方面&#xff0c;每道题目都尽量详细且简单易懂&#xff1a; React基础概念类 1. 什么是React&#xff1f; React是一个用于构建用户界面的JavaScript库&#xff…...

IT工具 | node.js 进程管理工具 PM2 大升级!支持 Bun.js

P(rocess)M(anager)2 是一个 node.js 下的进程管理器&#xff0c;内置负载均衡&#xff0c;支持应用自动重启&#xff0c;常用于生产环境运行 node.js 应用&#xff0c;非常好用&#x1f44d; &#x1f33c;概述 2025-03-15日&#xff0c;PM2发布最新版本v6.0.5&#xff0c;这…...

php 高性能,高并发,有哪些框架,扩展,推荐一下,或者技术的实现有哪些

以下是针对PHP高性能、高并发场景的框架、扩展及技术实现推荐&#xff0c;结合最新技术趋势和行业实践进行总结&#xff1a; 一、高性能框架推荐 1. C扩展类框架 YAF (Yet Another Framework) 特点&#xff1a;由C语言编写&#xff0c;直接嵌入PHP内核&#xff0c;仅提供核心M…...

golang单机锁实现

1、锁的概念引入 首先&#xff0c;为什么需要锁&#xff1f; 在并发编程中&#xff0c;多个线程或进程可能同时访问和修改同一个共享资源&#xff08;例如变量、数据结构、文件&#xff09;等&#xff0c;若不引入合适的同步机制&#xff0c;会引发以下问题&#xff1a; 数据竞…...

面试中JVM常被问到的问题以及对应的答案

在面试中&#xff0c;关于JVM常被问到的问题以及对应的答案可能包括&#xff1a; 什么是JVM&#xff1f;它的作用是什么&#xff1f; 答&#xff1a;JVM是Java虚拟机的缩写&#xff0c;是Java程序运行的环境。它负责将Java源代码编译成字节码并运行在不同平台上。 请解释一下J…...

算法——广度优先搜索——跨步迷宫

原题链接 思路&#xff1a;找出最短路径&#xff0c;然后判断是否存在连续三个点是横纵坐标相等的&#xff0c;如果有就步数减1 但是有两个样例过不了 错误原因&#xff1a;在错误的测试案例中&#xff0c;最短路径可能有多条&#xff0c;而我刚好选了一条比较曲折的&#x…...