Linux部署Prometheus+Grafana
【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.tcpstatExecReload=/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.ymlSUCCESS: prometheus.yml is valid prometheus config file syntax
 
失败状态
Checking prometheus.ymlFAILED: 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 ServerCopyright (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.tcpstatExecReload=/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
密码:admingrafana默认配置文件目录 /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 ID 和 Download JSON,自行选择就行;这里我选择复制id,json需要下载
 
 复制好id之后,打开在 grafana 页面中,+ Create -> Import ,输入面板 ID 号或者上传 JSON 文件,点击 Load,即可导入监控面板
 
 
 添加完成后页面视图如下
 
 
相关文章:
Linux部署Prometheus+Grafana
【Linux】PrometheusGrafana 一、Prometheus(普罗米修斯)1、Prometheus简述2、Prometheus特点3、Prometheus生态组件4、Prometheus工作原理 二、部署Prometheus1、系统架构2、部署Prometheus3、修改配置文件4、配置系统启动文件 三、部署 Node Exporter …...
【视频讲解】神经网络、Lasso回归、线性回归、随机森林、ARIMA股票价格时间序列预测|附代码数据
全文链接:https://tecdat.cn/?p37019 分析师:Haopeng Li 随着我国股票市场规模的不断扩大、制度的不断完善,它在金融市场中也成为了越来越不可或缺的一部分。 【视频讲解】神经网络、Lasso回归、线性回归、随机森林、ARIMA股票价格时间序列…...
低代码前端框架Amis全面教程
什么是Amis? 1.1 Amis的基本概念 Amis是一个基于JSON配置的前端低代码框架,由百度开源。它允许开发者通过简单的JSON配置文件来生成复杂的后台管理页面,从而大大减少了前端开发的工作量。Amis的核心理念是通过配置而非编码来实现页面的构建…...
Windows 如何安装和卸载 OneDrive?具体方法总结
卸载 OneDrive 有人想问 OneDrive 可以卸载吗?如果你不使用当然可以卸载,下面是安装和卸载 OneDrive 中的卸载应用具体操作步骤: 卸载 OneDrive 我们可以从设置面板中的应用选项进行卸载,打开设置面板之后选择应用,然…...
c# .net core中间件,生命周期
某些模块和处理程序具有存储在 Web.config 中的配置选项。但是在 ASP.NET Core 中,使用新配置模型取代了 Web.config。 HTTP 模块和处理程序如何工作 官网地址: 将 HTTP 处理程序和模块迁移到 ASP.NET Core 中间件 | Microsoft Learn 处理程序是…...
Spring后端框架复习总结
之前写的博客太杂,最近想把后端框架的知识点再系统的过一遍,主要是Spring Boot和Mybatis相关,带着自己的理解使用简短的话把一些问题总结一下,尤其是开发中和面试中的高频问题,基础知识点可以参考之前写java后端专栏,这篇不再赘述。 目录 Spring什么是AOP?底层原理?事务…...
基于Llama Index构建RAG应用
前言 Hello,大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者,本文参与活动是2024 DataWhale AI夏令营;😲 在本文中作者将通过: Gradio、Streamlit和LlamaIndex介绍 LlamaIndex 构…...
SSLRec代码分析
文章目录 encoder-models-general_cfautocf.py data_utilsdata_handler_general_cf.py输入输出说明使用方法 trainertuner.py encoder-models-general_cf autocf.py import torch as t # 导入PyTorch并重命名为t from torch import nn # 从PyTorch导入神经网络模块 import …...
第四节shell条件测试(1)(2)
一,命令执行结果判定 &&在命令执行后如果没有任何报错时会执行符号后面的动作 ||在命令执行后如果命令有报错会执行符号后的动作 示例: vim lee.sh #!/bin/bash ls /mnt/file &> /dev/null &&{echo /mnt/filr is not existecho no }||{echo /mnt/fi…...
申请https证书的具体流程
申请HTTPS证书的具体流程通常涉及以下步骤,不过请注意,具体细节可能因不同的证书颁发机构(CA)而有所差异: 1、确定证书类型: 证书类型:根据需求选择合适的SSL证书类型。常见的有DV(…...
IP溯源工具--IPTraceabilityTool
工具地址:xingyunsec/IPTraceabilityTool: 蓝队值守利器-IP溯源工具 (github.com) 工具介绍: 在攻防演练期间,对于值守人员,某些客户要求对攻击IP都进行分析溯源,发现攻击IP的时候,需要针对攻击IP进行分析…...
字节抖音电商 后端开发岗位 一面
笔者整理答案,以供参考 自我介绍 项目(20分钟) RocketMQ延时消息的底层实现 回答: 延时消息的实现主要依赖于RocketMQ中的定时任务机制。消息被发送到Broker时,会先存储在一个特定的延时消息队列中。Broker会定时扫…...
前端开发日记——在MacBook上配置Vue环境
前言 大家好,我是来自CSDN的寄术区博主PleaSure乐事。今天是开始学习vue的第一天,我使用的编译器是vscode,浏览器使用的是谷歌浏览器,后续会下载webstorm进行使用,当前学习阶段使用vscode也是可以的,不用担…...
测试开发面经总结(三)
TCP三次握手 TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的。 一开始,客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口,处于 LISTEN 状态 客户端会随机初始化序号&…...
开始构建我们自己的大语言模型:数据处理部分
关注本专栏(NLP简论:手搓大语言模型实践) 继续学习从头编写、训练自己的大语言模型。 接上集,本章我们将深入说一下大语言模型数据处理部分的细节,并直接提供本部分的完整代码。 【配套资源】 暂时的词汇表࿱…...
springboot系列十: 自定义转换器,处理JSON,内容协商
文章目录 自定义转换器基本介绍应用实例查看源码注意事项和细节 处理JSON需求说明应用实例 内容协商基本介绍应用实例debug源码优先返回xml注意事项和细节 ⬅️ 上一篇: springboot系列九: 接收参数相关注解 🎉 欢迎来到 springboot系列十: 自定义转换器,…...
C++(new与delete操作符)
C中的new与delete new 与 delete定位new表达式 new 与 delete 在C中需要动态申请内存空间时需要使用 new 与 delete 这两个操作符 #include <iostream> using namespace std; int main() {int* p1 new int;//开辟一块int类型大小的空间给p1int* p2 new int(1);//开辟…...
STM32智能工业自动化监控系统教程
目录 引言环境准备智能工业自动化监控系统基础代码实现:实现智能工业自动化监控系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:工业自动化与管理问题解决方案与优化收尾与总结 1. 引言 智能…...
WPF设置欢迎屏幕,程序启动过度动画
当主窗体加载时间过长,这时候基本都会想添加一个等待操作来响应用户点击,提高用户体验。下面我记录两个方法,一点拙见,仅供参考。 方法1:在App类中使用SplashScreen类。 protected override void OnStartup(StartupEventArgs e)…...
Flink实时开发添加水印的案例分析
在Flink中,处理时间序列数据时,通常需要考虑事件时间和水印(watermarks)的处理。以下是修改前后的代码对比分析: 修改前的代码: val systemDS unitDS.map(dp > {dp.setDeviceCode(DeviceCodeEnum.fro…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
