Linux部署Prometheus+Grafana

news2024/9/21 15:49:11

【Linux】Prometheus+Grafana

    • 一、Prometheus(普罗米修斯)
      • 1、Prometheus简述
      • 2、Prometheus特点
      • 3、Prometheus生态组件
      • 4、Prometheus工作原理
    • 二、部署Prometheus
      • 1、系统架构
      • 2、部署Prometheus
      • 3、修改配置文件
      • 4、配置系统启动文件
    • 三、部署 Node Exporter 监控系统级指标
      • 1、下载安装包
      • 2、配置启动文件
      • 3、启动
    • 四、监控远程MySQL
      • 1、下载安装包
      • 2、安装mysqld_exporter组件
      • 3、配置服务端
    • 五、Grafana平台部署
      • 1、Grafana简介
      • 2、Grafana起源与初衷
      • 3、Grafana部署
      • 4、配置数据源
      • 5、导入模板
      • 6、数据源做数据展示
      • 7、导入监控模板

一、Prometheus(普罗米修斯)

1、Prometheus简述

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB),基于Go语言开发,是Google BorgMon监控系统的开源版本。Prometheus在2016年加入了云原生计算基金会,成为Kubernetes之后的第二个项目。

Prometheus是一个开源的监控系统,它可以帮助用户监控各种不同类型的系统和应用程序。Prometheus采用的是pull模型,它定期从目标系统中拉取指标数据在本地数据库中。这些指标数据可以用于生成图表、警报和报告,以帮助用户了解他们系统的运作状态和性能表现。Prometheus通过多种数学算法能实现强大的监控需求,原生支持k8s服务发现,能监控容器的动态变化,并且结合Grafana能绘出漂亮图形,然后使用Altermanager或Grafana实现报警。

2、Prometheus特点

  • 多维数据模型:由度量名称和键值对标识的时间序列数据

  • 时间序列数据:按照时间顺序记录系统、设备状态变化的数据,每个数据称为一个样本;服务器指标数据、应用程序性能监控数据、网络数据等都是时序数据

  • 内置时间序列(Time Series)数据库:Prometheus ;外置的远端存储通常会用:InfluxDB、OpenTSDB 等

  • promQL 一种灵活的查询语言,可以利用多维数据完成复杂查询

  • 基于 HTTP 的 pull(拉取)方式采集时间序列数据

  • 同时支持 PushGateway 组件收集数据

  • 通过静态配置或服务发现发现目标

  • 支持作为数据源接入 Grafana

3、Prometheus生态组件

Prometheus Server:用于收集、存储和查询监控数据的核心组件。它定期从配置的目标中拉取指标数据,并将其存储在本地的时间序列数据库中。

Alertmanager:用于处理和发送警报通知的组件。Alertmanager可以根据配置的规则对监控数据进行分析,并在触发警报条件时发送通知。

Exporters:用于将各种服务和应用程序的指标数据转换成Prometheus可读取的格式。

Client Libraries:用于将应用程序的指标数据暴露给Prometheus Server的库。Prometheus提供了多种语言的客户端库,方便开发人员集成监控功能到他们的应用程序中。

Service Discovery:服务发现,用于动态发现待监控的 Target,Prometheus 支持多种服务发现机制:文件、DNS、Consul、Kubernetes 等等。 服务发现可通过第三方提供的接口,Prometheus 查询到需要监控的 Target 列表,然后轮询这些 Target 获取监控数据。该组件目前由 Prometheus Server 内建支持

Grafana:一个开源的数据可视化工具,可以与Prometheus集成,用于创建仪表板和图表展示监控数据。

4、Prometheus工作原理

●Prometheus Server 基于服务发现(Service Discovery)机制或静态配置获取要监视的目标(Target),并通过每个目标上的指标 exporter 来采集(Scrape)指标数据;

●Prometheus Server 内置了一个基于文件的时间序列存储来持久存储指标数据,用户可使用 PromQL 接口来检索数据,也能够按需将告警需求发往 Alertmanager 完成告警内容发送;

●一些短期运行的作业的生命周期过短,难以有效地将必要的指标数据供给到 Server 端,它们一般会采用推送(Push)方式输出指标数据, Prometheus 借助于 Pushgateway 接收这些推送的数据,进而由 Server 端进行抓取

二、部署Prometheus

1、系统架构

在这里插入图片描述

2、部署Prometheus

直接访问官网

①地址:https://prometheus.io/download/
在这里插入图片描述

在服务器上直接下载

②地址:https://prometheus.io/download/

在这里插入图片描述

wget https://github.com/prometheus/prometheus/releases/download/v2.44.0/prometheus-2.44.0.linux-amd64.tar.gz

在这里插入图片描述

[root@Prometheus prometheus]# setenforce 0
[root@Prometheus prometheus]# systemctl disable  --now firewalld.service 
[root@Prometheus ~]# tar -xvf prometheus-2.53.0.linux-amd64.tar.gz 
[root@Prometheus ~]#mv prometheus-2.53.0.linux-amd64 /usr/local/prometheus

3、修改配置文件

[root@Prometheus prometheus]# cp prometheus.yml prometheus.yml.bak

## 第六行添加
scrape_timeout: 10s        ##采集超时时间
## 最后一行localhost改为本机的ip(其实不改也可以,为了分辨,建议修改)
 - targets: ["172.16.11.209:9090"]  

在这里插入图片描述

4、配置系统启动文件

配置系统启动文件,并且设置开机自启动

#进入这个文件,默认是没有的,直接进入就行
vim /usr/lib/systemd/system/prometheus.service 


[Unit]   #服务单元
Description=Prometheus Server
Documentation=https://prometheus.io
After=network.target   #依赖关系
 
[Service]
Type=simple
ExecStart=/usr/local/prometheus/prometheus \    
--config.file=/usr/local/prometheus/prometheus.yml \     #配置文件
--storage.tsdb.path=/usr/local/prometheus/data/ \        #数据目录
--storage.tsdb.retention=15d \         #保存时间
--web.enable-lifecycle      #开启热加载
  
ExecReload=/bin/kill -HUP $MAINPID    #重载
Restart=on-failure
 
[Install]
WantedBy=multi-user.target

在这里插入图片描述

[root@Prometheus prometheus]# systemctl restart prometheus 
[root@Prometheus prometheus]# systemctl enable prometheus
[root@Prometheus prometheus]# ss -antp|grep 9090

在这里插入图片描述
通过浏览器访问http:// 服务器 IP:9090 就可以访问到 Prometheus 的主界面:

在这里插入图片描述
默认只监控了本机一台,点 Status→点 Targets→可以看到只监控了本机:
在这里插入图片描述
通过 http:// 服务器 IP:9090/metrics 可以查看到监控的数据:
在这里插入图片描述

三、部署 Node Exporter 监控系统级指标

1、下载安装包

地址:https://prometheus.io/download/

监控远程主机(被监控端上安装node_Export192.168.10.131)组件
在这里插入图片描述

(1)上传所需要软件包到 /opt目录,并解压

[root@node opt]# tar xf node_exporter-1.8.1.linux-amd64.tar.gz 
[root@node opt]# ls
node_exporter-1.8.1.linux-amd64  node_exporter-1.8.1.linux-amd64.tar.gz  rh
[root@node opt]# cd node_exporter-1.8.1.linux-amd64/
[root@node node_exporter-1.8.1.linux-amd64]# ls
LICENSE  node_exporter  NOTICE
[root@node node_exporter-1.8.1.linux-amd64]# mv node_exporter /usr/local/bin/
[root@node node_exporter-1.8.1.linux-amd64]# 

在这里插入图片描述

2、配置启动文件

[root@node ~]# vim /usr/lib/systemd/system/node_exporter.service

[Unit]
Description=mysqld_exporter
Documentation=https://prometheus.io/
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter \
--collector.ntp \
--collector.mountstats \
--collector.systemd \
--collector.tcpstat
 
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target

在这里插入图片描述

3、启动

[root@node ~]# systemctl start node_exporter.service 
[root@node ~]# systemctl enable node_exporter.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.
[root@node ~]# ss -natp|grep 9100

浏览器访问:http://192.168.109.20:9100/metrics ,可以看到 Node Exporter 采集到的指标数据

在这里插入图片描述
通过浏览器访问 http:// 被监控端 IP:9100/metrics 就可以查看到 node_exporter 在被监控端收集的监控信息:

在这里插入图片描述
点击Metrics可以查看node_exporter 在被监控端收集的监控信息
在这里插入图片描述

(1)修改Prometheus配置文件

vim /usr/local/prometheus/prometheus.yml
  - job_name: 'agent'
    static_configs:
    - targets: ['192.168.10.131:9100']
[root@Prometheus prometheus]# systemctl restart prometheus.service    #修改完后重启服务
[root@Prometheus prometheus]# systemctl status prometheus

在这里插入图片描述
监测prometheus配置文件是否正确

[root@Prometheus prometheus]#cd /usr/local/prometheus
[root@Prometheus prometheus]# ./promtool check config prometheus.yml

成功状态

Checking prometheus.yml
 SUCCESS: prometheus.yml is valid prometheus config file syntax

失败状态

Checking prometheus.yml
  FAILED: parsing YAML file prometheus.yml: "172.16.11.209:9999/cs" is not a valid hostname

(2)访问Prometheus服务器,刷新

回到 web 管理界面→点 Status→点 Targets→可以看到多了一台监控目标

在这里插入图片描述

注:也可以在本机安装 node_exporter,使用上面的方式监控本机。

四、监控远程MySQL

在被管理机 agent上安装 mysqld_exporter 组件

1、下载安装包

地址:https://prometheus.io/download/
在这里插入图片描述
也可在服务器上直接下载

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz

2、安装mysqld_exporter组件

[root@agent opt]# tar xf mysqld_exporter-0.14.0.linux-amd64.tar.gz -C /usr/local
[root@agent opt]# mv /usr/local/mysqld_exporter-0.14.0.linux-amd64/ /usr/local/mysqld_exporter
[root@agent opt]# ls /usr/local/mysqld_exporter/
LICENSE  mysqld_exporter  NOTICE

在这里插入图片描述

(1) 安装mariadb数据库,并授权

[root@node opt]# yum install mariadb\* -y
[root@node opt]# systemctl start  mariadb
[root@node opt]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@node opt]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> grant select,replication client,process ON *.* to 'mysql_monitor'@'192.168.10.131' identified by '123456'; 
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> 

在这里插入图片描述
(2)创建一个mariadb配置文件

创建一个mariadb配置文件,写上连接的用户名和密码(和上面的授权的用户名和密码要对应)
在这里插入图片描述
(3)配置启动文件

[root@node opt]# vim /usr/lib/systemd/system/mysqld_exporter.service

[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/mysqld_exporter \
--collector.ntp \
--collector.mountstats \
--collector.systemd \
--collector.tcpstat

ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

在这里插入图片描述

#启动
systemctl restart mysqld_exporter

#设置开机自启
systemctl enable mysqld_exporter

#查看端口是否启动9104
netstat -anput | grep 9104

在这里插入图片描述
第二种启动方式

#进入解压目录
cd /usr/local/mysqld_exporter

#挂后台执行 mysqld_exporter
nohup /usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf &

#查看端口是否启动
netstat -anput | grep 9104

在这里插入图片描述
页面访问:IP:9104
在这里插入图片描述
客户端配置完成

3、配置服务端

[root@Prometheus ~]# vim /usr/local/prometheus/prometheus.yml

- job_name: "agetn-mysql"
    static_configs:    
      - targets: ["192.168.10.131:9104"]

[root@Prometheus ~]# systemctl restart prometheus.service 

在这里插入图片描述
添加完后,重启服务

[root@Prometheus ~]# systemctl restart prometheus.service

等待重启完成,刷新一下页面,如果还是没有可以清除一下缓存,试试。
在这里插入图片描述
添加成功

五、Grafana平台部署

1、Grafana简介

Grafana是一种开源的数据可视化和监控平台,它允许用户通过创建动态仪表板来监视和分析数据。Grafana最初由Torkel Ödegaard于2014年创建,旨在为不同数据源提供统一的可视化界面。它支持多种数据源,包括但不限于Graphite、Prometheus、Elasticsearch、InfluxDB等。通过Grafana,用户可以轻松创建图标、图形和面板,以直观和动态的方式展示数据趋势、指标和报警。

随着公司业务的不断发展,业务种类的增加、服务器数量的增长和网络环境的复杂以及版本发布频繁,从而不可避免带来了线上事故的增多,因此需要对服务器进行全方位的监控,提前预警,急需一个工具来实现解决这个问题,而Grafana的出现完美解决了这个问题。

在这里插入图片描述

Grafana特点:

多数据源支持:可以从多种数据源中收集数据,并在同一仪表板中进行统一展示。

可视化选项丰富:提供了各种图表类型、样式和配置选项,用户可以根据需求定制图表。

告警功能:支持设置警报规则,并在达到特定条件时发送通知。

插件生态系统:拥有丰富的插件生态系统,用户可以根据需要扩展和定制功能。

社区支持:拥有活跃的开发社区,提供了丰富的文档、教程和支持资源。
在这里插入图片描述

2、Grafana起源与初衷

Grafana的起源可以追溯到2014年,由瑞典工程师Torkel Ödegaard创建。当时,Torkel是一位开发者,他感受到了在处理和展示不同数据源时的困难和不便。他意识到,许多组织和开发者都面临着类似的挑战,需要从多个数据源中收集数据,并以可视化的方式将其呈现出来。

因此,Torkel决定创建一个开源的数据可视化平台,旨在为用户提供统一的界面和工具,帮助他们轻松地监控和分析数据。他的初衷是构建一个灵活、易于使用且功能强大的平台,能够满足各种不同场景下的需求。在初始阶段,Grafana主要是为了满足Graphite这样的数据存储和可视化工具的需求而创建的。但随着时间的推移,Grafana的功能逐渐扩展,开始支持更多的数据源,如InfluxDB、Prometheus、Elasticsearch等,使其成为一个更加通用的数据可视化和监控平台。由于其开放源代码的特性,Grafana迅速得到了开发者和用户的欢迎,形成了一个活跃的社区。这个社区不断贡献新的功能、插件和改进,推动了Grafana的不断发展和壮大。

在这里插入图片描述

3、Grafana部署

下载地址:https://grafana.com/grafana/download
在这里插入图片描述
下载推荐rpm包,点击一下,就会自动下载;或者复制一下,粘贴到服务器上也会下载。
在这里插入图片描述
如果是直接在服务器执行下载的,直接等待下载完成启动即可,如果是下载的rpm包,就需要上传到服务器上,然后使用rpm -ivh grafana-enterprise-9.5.2-1.x86_64.rpm 进行安装;
如果是使用的二进制离线包安装的,默认是没有系统启动配置文件的,所以我们需要加一个:

#进入这个文件,默认是没有的,直接进入就行
vim /usr/lib/systemd/system/grafana.service 

#将下面的全部写进去
[Unit]
Description=Grafana instance
After=network.target

[Service]
Type=simple
WorkingDirectory=/data/monitor/grafana/
ExecStart=/data/monitor/grafana/bin/grafana-server
Restart=always

[Install]
WantedBy=multi-user.target


[root@Prometheus opt]# systemctl start grafana-server.service    #启动
[root@Prometheus opt]# systemctl enable grafana-server.service   #设置开机自启
[root@Prometheus opt]#ss -anput | grep 3000               #查看端口是否启动3000

在这里插入图片描述
页面访问 IP:port(3000)

注意:默认账号密码为:
账号:admin
密码:admin

grafana默认配置文件目录 /etc/grafana/grafana.ini

在这里插入图片描述
进去需要设置一个新的密码
在这里插入图片描述

4、配置数据源

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击保存测试
在这里插入图片描述
可以看到刚创建的模板
在这里插入图片描述

5、导入模板

点进去,选择:Dashboards–>从中选择任意一个模板,这里我选择第二个,点击import。
在这里插入图片描述
在这里插入图片描述
点击名称,进入可以查看模板
在这里插入图片描述
这里所展示的只是个模板

6、数据源做数据展示

点击右上角加号,再点击创建新的仪表板
在这里插入图片描述
在这里插入图片描述
选择刚刚添加的监控项
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这写了三个条件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
再次点击dashboard可以查看到
在这里插入图片描述
自定义的监控模块(监控的服务端的1、5、15分钟的平均负载),一个一个添加比较麻烦,我们可以去找一些模板

7、导入监控模板

这里我们使用现成的模板导入即可,GitHub上面很多人开发了dashboards模板,官方社区上也有很多开源的dashboards模板,我们只需要把模板的Copy ID 或者 Download JSON文件导入到grafana即可,参考官网免费的dashboards模板。

官方模板地址:https://grafana.com/grafana/dashboards/

进入官网,往下拉,可以看到选择这几个,Data Source 选择Prometheus,然后搜索主机监控,或者自己定义,linux什么的都可以,根据自己的需求选择
在这里插入图片描述
可以看到右边有Copy IDDownload JSON,自行选择就行;这里我选择复制id,json需要下载
在这里插入图片描述
复制好id之后,打开在 grafana 页面中,+ Create -> Import ,输入面板 ID 号或者上传 JSON 文件,点击 Load,即可导入监控面板
在这里插入图片描述
在这里插入图片描述
添加完成后页面视图如下
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Spring MVC-什么是Spring MVC?

T04BF 👋专栏: 算法|JAVA|MySQL|C语言 🫵 今天你敲代码了吗 文章目录 1.MVC定义2. Spring MVC 官方对于Spring Web MVC的描述这样的: Spring Web MVC is the original web framework built on the Servlet APl and has been includedin the Spring Frame…

P1-AI产品经理--九五小庞

产品经理的定位 AI基于现有业务挖掘AI应用场景,服务提供商选择及算法定制等,配合已有产品完成整体产品工工资基于从事医疗行业的考虑,我们走的应该是AI产品经理(软件型) AI产品经理(行业型) AI…

JavaEE:Lombok工具包的使用以及EditStarter插件的安装

Lombok是一个Java工具库&#xff0c;通过添加注解的方式&#xff0c;简化Java的开发。 目录 1、引入依赖 2、使用 3、原理解释 4、更多使用 5、更快捷的引入依赖 1、引入依赖 <dependency><groupId>org.projectlombok</groupId><artifactId>lomb…

STM32全栈嵌入式人脸识别考勤系统:融合OpenCV、Qt和SQLite的解决方案

1. 项目概述 本项目旨在设计并实现一个基于STM32的全栈人脸识别考勤系统。该系统结合了嵌入式开发、计算机视觉和数据库技术&#xff0c;实现了自动人脸检测、识别和考勤记录功能。 主要特点: 使用STM32F4系列微控制器作为主控制器采用OpenCV进行人脸检测和识别Qt开发跨平台…

高性能、安全、低碳绿色的趋势下,锐捷网络发布三擎云办公解决方案 3.0

桌面虚拟化作为云时代的主流和热门技术&#xff0c;已经取得了广泛应用。随着生成式 AI 爆炸式发展&#xff0c;CSDN 看到&#xff0c;人工智能正在引发计算、开发、交互三大范式的全面升级&#xff0c;技术开发或将迎来一次全新的科技变革周期&#xff0c;因此 VDI 云桌面随之…

亚马逊自发货erp,虚拟自动化发货功能以及1688订单采购

亚马逊自发货erp自动化功能&#xff0c;自动同步订单&#xff0c;1688订单同步。 大家好&#xff0c;今天分享一个非常实用并且节省时间的功能&#xff1a;自动化发货以及1688同步订单。 首先来看下自动化发货功能怎么操作。 →要在商品信息里面添加商品信息&#xff0c;上传…

C#语法基础详解(万字总结)

文章目录 **参考书籍&#xff1a;C#7.0 核心技术指南**类型类字段解构器对象初始化器属性表达式属性(只读属性才可以)自动属性属性初始化器 索引器静态构造器nameof运算符 继承类型转换和引用转换as运算符is运算符is与模式变量 虚函数成员抽象类和抽象成员new和重写base关键字构…

JavaDS —— 二叉树

树的基本概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看 起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 树形结构中&#xff0c;子树之间不能有…

网易滑块逆向

版本 2.27.2 混淆难度挺大 没反混淆 直接硬着直接干 参数还是那些 滑块&#xff08;其他类型也一样&#xff09;成功率 100%

= null 和 is null;SQL中关于NULL处理的4个陷阱;三值逻辑

一、概述 1、NULL参与的所有的比较和算术运算符(>,,<,<>,<,>,,-,*,/) 结果为unknown&#xff1b; 2、unknown的逻辑运算(AND、OR、NOT&#xff09;遵循三值运算的真值表&#xff1b; 3、如果运算结果直接返回用户&#xff0c;使用NULL来标识unknown 4、如…

CSS技巧专栏:一日一例 8 - 纯CSS利用mask属性实现按钮边框对称包围特效

CSS技巧专栏:一日一例 8 - 纯CSS利用mask属性实现按钮边框对称包围特效 上篇作业解题 在前一篇文章的最后,给各位看官留了一个作业,如上图所示。本篇文章,我们来公布一下它的源码。 主要实现的思路 四个渐变色的线段,沿着四个方向的依次运动,(运动在加载前执行)使用 …

物联网实训室的核心功能有哪些?

随着物联网技术的迅猛发展和广泛应用&#xff0c;唯众凭借其深厚的技术积累和丰富的行业经验&#xff0c;为职业院校提供了全面的物联网实训室解决方案。这些实训室不仅为学生提供了真实、实用、创新的实践环境&#xff0c;还促进了产学研用的深度融合&#xff0c;推动了物联网…

深度学习根据代码可视化模型结构图的方法

方法1. Netron Netron 是一个支持多种深度学习模型格式的可视化工具&#xff0c;可以将 PyTorch 模型转换为 ONNX 格式&#xff0c;然后使用 Netron 进行可视化。 安装 Netron&#xff1a; pip install netron使用示例&#xff1a; import torch.onnx# 定义模型 model EMA…

上海理工大学24计算机考研考情分析!初复试分值比55:45,复试逆袭人数不算多!

上海理工大学&#xff08;University of Shanghai for Science and Technology&#xff09;&#xff0c;位于上海市&#xff0c;是一所以工学为主&#xff0c;工学、理学、经济学、管理学、文学、法学、艺术学等多学科协调发展的应用研究型大学&#xff1b;是上海市属重点建设大…

秒懂C++之类与对象(中)

目录 一.流插入&#xff0c;流提取运算符 二.const成员函数 三.取地址重载 四.构造函数&#xff08;列表初始化&#xff09; 小测试&#xff1a; 五.全部代码 前排提醒&#xff1a;本文所参考代码仍是取用上篇文章关于日期类相关功能的实现~末尾有全部代码~ 一.流插入&a…

使用Redis的SETNX命令实现分布式锁

什么是分布式锁 分布式锁是一种用于在分布式系统中控制多个节点对共享资源进行访问的机制。在分布式系统中&#xff0c;由于多个节点可能同时访问和修改同一个资源&#xff0c;因此需要一种方法来确保在任意时刻只有一个节点能够对资源进行操作&#xff0c;以避免数据不一致或…

WPF/C#:实现导航功能

前言 在WPF中使用导航功能可以使用Frame控件&#xff0c;这是比较基础的一种方法。前几天分享了wpfui中NavigationView的基本用法&#xff0c;但是如果真正在项目中使用起来&#xff0c;基础的用法是无法满足的。今天通过wpfui中的mvvm例子来说明在wpfui中如何通过依赖注入与M…

STM32智能安防系统教程

目录 引言环境准备智能安防系统基础代码实现&#xff1a;实现智能安防系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;家庭与企业安防管理问题解决方案与优化收尾与总结 1. 引言 智能安防系统通过STM32…

解决npm install(‘proxy‘ config is set properly. See: ‘npm help config‘)失败问题

摘要 重装电脑系统后&#xff0c;使用npm install初始化项目依赖失败了&#xff0c;错误提示&#xff1a;‘proxy’ config is set properly…&#xff0c;具体的错误提示如下图所示&#xff1a; 解决方案 经过报错信息查询解决办法&#xff0c;最终找到了两个比较好的方案&a…

【Charles】-雷电模拟器-抓HTTPS包

写在前面 之前的文章我们写过如何通过Charles来抓取IOS手机上的HTTPS包以及遇到的坑。说一个场景&#xff0c;如果你的手机是IOS&#xff0c;但是团队提供的APP安装包是Android&#xff0c;这种情况下你还想抓包&#xff0c;怎么办&#xff1f; 不要慌&#xff0c;我们可以安装…