入门 | Prometheus+Grafana 普罗米修斯

#1024程序员节|征文#

一、prometheus介绍

1、监控系统组成

        一个完整的监控系统需要包括如下功能:数据产生、数据采集、数据存储、数据处理、数据展示、分析、告警等。

(1)、数据来源

        数据来源,也就是需要监控的数据。数据常见的产生、直接或间接暴露方式如下:

                硬件本身的记录信息---以文件或者以内存属性的方式存在

                应用业务的接口-- 主动暴露软件本身的运行状态,比如redis info、各种status 等

                相关的信息采集工具 --- 方便收集数据或者采集数据的 系统级别的命令等

注意:这些数据在长时间的运行过程中,都是以固定的“属性指标”来描述他们,我们把这些称为 metric (监控指标),监控系统就需要对每个环境的每个指标都要进行数据的获取,并且按照用户的需要方式,提供给用户来使用。

(2)、数据采集和传输

        对于上面所说的metric指标数据,我们需要持续性、周期性的方式来采集,根据数据采集方式的不同划分了两个分类:

        软件层面:

                agent:专用的软件的一种应用机制

                ssh:系统常见的一种应用通信机制,但是并非所有的系统都支持

                SNMP:简单网络管理协议,是工作在各种网络设备中的一种机制

        硬件层面:

                IPMI:智慧平台管理接口,是一种工业标准用于采集硬件设备的各种物理健康状态数据,如温度、电压、工作状态、电源状态等

注意:由于每个业务场景不同,我们需要的采集指标量不好评估,甚至一个业务场景,就需要采集数百个指标,如果按照上述所说的周期性采集的方式来说,数据的采集量是相当大的。

(3)、数据存储

        由于采集到是“样本数据” ,不是一次性使用的,尤其是单个数据是没有意义的,我们需要将这些数据存储下来,在后续的工作场景中进行聚合操作,从而满足我们的需求。

        我们在后续使用这些数据的时候,不仅仅要知道这些数据,还要知道这些数据的事件属性--什么时候的数据,所以这些数据在存储的时候,必须有一个重要的时间维度,所以我们一般将这种用于监控场景的数据,称为时间序列数据 -- TS,专门用于存储这些数据的数据库,称其为 时序数据库  TSDB 

        其具备以下特点:

                数据结构简单:某一度量指标在某一时间点只会有一个值,没有复杂的结构(嵌套、层次)和关系(关联、主外键)

                数据量大:由于时序数据由所监控的大量数据源来产生、收集和发送,比如主机、IoT设备、终端或 APP等

(4)、数据处理

        如果仅仅采集到的是单条数据,本身没有太大的意义,我们需要对数据进行各种聚合和处理操作,才可以正常的用于工作分析场景,所以对于各种聚合操作之后的数据,我们也需要进行分析和展示。

(5)、数据分析展示

        无论是采集到的时序数据,还是经过聚合分析之后的统计数据,由于数据量巨大,用肉眼观察很难看得清楚,尤其是通过表格来查看成千上万条数据,来分析其内在的逻辑趋势关系,所以对于监控系统来说,其本身的数据可视化功能是非常重要的,以各种图形演示的方式展示我们数据的发展趋势,方便我们进行分析。

 (6)、告警

        告警,就是在某些特殊情况下,提醒我们去看相关的数据,根据日常工作的状态值,设置一个阈值指标,后续数据采集的时候,一旦超出我们的阈值指标,就通过告警机制通知我们,提高我们的工作效率。

(7)、监控内容

        资源监控:

                硬件设备:服务器、路由器、交换机、IO系统等

                系统资源:OS、网络、容器、VM实例

                应用软件:nginx 、MySQL 、Java 应用等

        业务服务:

                业务状态:服务通信、服务运行、服务下线、性能指标、QPS、DAU日活、转化率、业务接口(登录、注册、聊天、留言)、产品转化率、充值额度、用户投诉等

                一般故障:访问缓慢、存储空间不足、数据同步延迟、主机宕机、主机不可达

                严重故障:服务不可达、集群故障

        趋势分析:

                数据统计:时间序列数据展示历史数据等

                数据预测:事件什么时候发生、持续时间、发生概率是多大等,比如:电商大促时间

(8)、监控设施实现方式

          对于Linux系统来说,他的系统监控的实现方式很多,主要有系统命令、开源软件、监控平台等

                系统命令(略)

                uptime

                开源软件

                        zabbix、nogios、Prometheus、smoke ping 、cacti

        对于传统的业务数据监控来说,Zabbix 是优秀的,由于 Zabbix 诞生的时代业务数据量相对不是太多,所以它默认采取的是关系型数据库作为后端存储。

        所以随着业务场景的发展,尤其是微服务、云原生场景的发展,大量数据的存储就成为了 Zabbix 本身的限制。所以就出现了另外一种监控软件 Prometheus。

2、时序数据库

        时间序列数据(TimeSeriesData) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。

        时间序列数据库 (Time Series Database , 简称 TSDB) 是一种高性能、低成本、稳定可靠的在线时间序列数据库服务,提供高效读写、高压缩比存储、时序数据插值及聚合计算等服务

        特点:

                顺序写入操作,很少涉及修改数据

                删除操作都是删除一段时间的数据,而不涉及到删除无规律数据,读操作一般都是升序或者降序

                高效的压缩算法,节省存储空间,有效降低 IO,存储成本低

                高性能读写, 每秒百万级数据点写入,亿级数据点聚合结果秒级返回

3、Prometheus

        Prometheus是一个开源的系统监控和报警系统,本身基于Go语言开发的一套开源的系统监控报警框架和时序列数据库(TSDB)。

        其特点主要如下:

                支持多维数据模型:由度量名和键值对组成的时间序列数据

                内置时间序列数据库TSDB(Time Series Database )

                支持PromQL(Prometheus Query Language)查询语言,可以完成非常复杂的查询和分析,对图表展示和告警非常有意义

                支持 HTTP 的 Pull 方式采集时间序列数据

                支持 PushGateway 采集瞬时任务的数据

                支持静态配置和服务发现两种方式发现目标

                多种可视化和仪表盘,支持第三方 Dashboard,比如:Grafana

        数据特点:

                监控指标采用,独创的指标格式,我们称之为Prometheus格式,这个格式在监控场景中很常见。

                数据标签,支持多维度标签,每个独立的标签组合都代表一个独立的时间序列

                数据处理,Prometheus内部支持多种数据的聚合、切割、切片等功能。

                数据存储,Prometheus支持双精度浮点型数据存储和字符串

        适用场景:

                Prometheus非常适合记录任何纯数字时间序列。它既适合以机器为中心的监控场景,也适合于高度动态的面向服务的体系结构的监控场景。尤其是在微服务世界中,它对多维数据收集和查询的支持是一种特别的优势。

        不足:

                不支持集群化

                被监控集群规模过大后本身性能有一定瓶颈

                中文支持不好中文资料也很少

二、Prometheus架构

1、Prometheus架构图

2、架构详解

(1)、Prometheus Server(普罗米修斯服务器)

        负责从各种数据源拉取指标数据(metrics pull)以及接收通过 Pushgateway 推送过来的指标数据(alerts push)。
        通过 HTTP 与数据源进行交互,包括与各种 exporters(如 Jobs/ Node HDD/SSD 对应的 exporters)以及 targets(目标)通信。
        内部包含一个时间序列数据库(TSDB server)用于存储抓取到的指标数据,支持 PromQL(Prometheus 查询语言)进行数据查询和分析。
        提供 web UI 供用户查看和管理监控数据。

(2)、Pushgateway(推送网关)

        主要用于接收短生命周期作业(Short-lived jobs)的数据推送,因为这些作业可能在 Prometheus 主动抓取数据之前就已经结束了。
        将接收到的数据缓存起来,等待 Prometheus Server 来拉取。

(3)、Exporters(导出器)

        负责从各种不同的数据源(如 Jobs/ Node HDD/SSD)收集数据,并将其转换为 Prometheus 可以理解的格式进行暴露。
        使得 Prometheus 可以监控各种不同类型的系统和应用程序。

(4)、PromQL(Prometheus 查询语言)

        用于查询和分析存储在 Prometheus Server 中的时间序列数据。
        可以进行复杂的查询操作,例如聚合、过滤、函数计算等。

(5)、Grafana visualization(Grafana 可视化)

        Grafana 是一个流行的开源数据可视化工具,可以与 Prometheus 集成。
        通过使用 Prometheus 作为数据源,Grafana 可以将 Prometheus 中的监控数据以各种直观的图表和仪表盘形式展示出来。

(6)、Alertmanager(Prometheus 告警)

        当监控数据满足特定条件时,可以触发警报。
        可以通过 Alertmanager 将警报发送到各种渠道,如 PagerDuty、Email 等,以便及时通知相关人员进行处理。

(7)、API clients(API 客户端)

        可以通过 Prometheus 的 API 与 Prometheus Server 进行交互,获取监控数据或者进行管理操作。

(8)、工作流程

        Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自Pushgateway 发过来的 metrics,或者从其他的 Prometheus server 中拉 metrics。

        Prometheus server 在本地存储收集到的 metrics,并运行已定义好的alert.rules,记录新的时间序列或者向 Alertmanager 推送警报,实现一定程度上的完全冗余功能。Alertmanager 根据配置文件,对接收到的警报进行去重分组,根据路由配置,向对应主机发出告警。集成Grafana或其他API作为图形界面,用于可视化收集的数据。

        为保存数据的拉取效果,当数据量特别大时,会产生一定的延迟。基于promQL语句显示在web、UI上。

(9)、Prometheus数据模型

        rometheus中存储的数据为时间序列,即基于同一度量标准或者同一时间维度的数据流。除了时间序列数据的正常存储之外,Prometheus还会基于原始数据临时生成新的时间序列数据,用于后续查询的依据或结果。

metric名字:

        该名字必须有意义,用于表示 metric 的一般性功能,metric名字由ASCII 字符,数字,下划线,以及冒号组成,且必须满足正则表达式[a-zA-Z_:][a-zA-Z0-9_:]* 的查询需求。

注意:冒号是为用户定义的记录规则保留的。

标签:

        标签是以键值对的样式而存在,不同的标签用于表示时间序列的不同维度标识,方便检索

基本格式:

<metric name>{<label name>=<label value>, …}

指标类型:

        Counter-累计图:

                counter是一个累加的计数器,代表一个从0开始累积单调递增的计数器,其值只能在重新启动时增加或重置为零。典型的应用如:用户的访问量,请求的总个数,任务的完成数量或错误的数量等。不能使用Counter来表示递减值。

        Gauge- 量规图:

                Gauge是一种度量标准,只有一个简单的返回值,或者叫瞬时状态,可以代表可以任意metric的上下波动的数值。通常用于测量值,例如,硬盘剩余空间,当前的内存使用量,一个待处理队列中任务的个数等,还用于可能上升和下降的“计数”,例如并发请求数。

        Histogram-直方图:

                某一段范围内的分布情况

                Histogram统计数据的分布情况。比如最小值,最大值,中间值,还有中位数,75百分位,90百分位, 95百分位.98百分位,99百分位,和9.9百分位的值(percenties ,代表着近似的百分比估算数值

三、Prometheus部署

1、脚本安装Prometheus server

下载二进制安装包:

https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gz

进行脚本安装:

#!/bin/bash
#
#無爲謂PROMETHEUS_VERSION=2.54.1
PROMETHEUS_FILE="prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz"
PROMETHEUS_URL="https://mirrors.tuna.tsinghua.edu.cn/github-release/prometheus/prometheus/LatestRelease/${PROMETHEUS_FILE}"
#PROMETHEUS_URL="https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/${PROMETHEUS_FILE}"INSTALL_DIR=/usr/localHOST=`hostname -I|awk '{print $1}'`. /etc/os-releasemsg_error() {echo -e "\033[1;31m$1\033[0m"
}msg_info() {echo -e "\033[1;32m$1\033[0m"
}msg_warn() {echo -e "\033[1;33m$1\033[0m"
}color () {RES_COL=60MOVE_TO_COL="echo -en \\033[${RES_COL}G"SETCOLOR_SUCCESS="echo -en \\033[1;32m"SETCOLOR_NORMAL="echo -en \E[0m"echo -n "$1" && $MOVE_TO_COLecho -n "["if [ $2 = "success" -o $2 = "0" ] ;then${SETCOLOR_SUCCESS}echo -n $"  OK  "    elif [ $2 = "failure" -o $2 = "1"  ] ;then${SETCOLOR_FAILURE}echo -n $"FAILED"else${SETCOLOR_WARNING}echo -n $"WARNING"fi${SETCOLOR_NORMAL}echo -n "]"echo 
}install_prometheus () {if [ ! -f  ${PROMETHEUS_FILE} ] ;thenwget ${PROMETHEUS_URL} ||  { color "下载失败!" 1 ; exit ; }fi[ -d $INSTALL_DIR ] || mkdir -p $INSTALL_DIRtar xf ${PROMETHEUS_FILE} -C $INSTALL_DIRcd $INSTALL_DIR &&  ln -s prometheus-${PROMETHEUS_VERSION}.linux-amd64 prometheusmkdir -p $INSTALL_DIR/prometheus/{bin,conf,data}cd $INSTALL_DIR/prometheus && { mv prometheus promtool bin/ ; mv prometheus.yml conf/; }groupadd -r prometheususeradd -r -g prometheus -s /sbin/nologin prometheuschown -R prometheus.prometheus ${INSTALL_DIR}/prometheus/cat >  /etc/profile.d/prometheus.sh <<EOF
export PROMETHEUS_HOME=${INSTALL_DIR}/prometheus
export PATH=\${PROMETHEUS_HOME}/bin:\$PATH
EOF}prometheus_service () {cat > /lib/systemd/system/prometheus.service <<EOF
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target[Service]
Restart=on-failure
User=prometheus
Group=prometheus
WorkingDirectory=${INSTALL_DIR}/prometheus
ExecStart=${INSTALL_DIR}/prometheus/bin/prometheus --config.file=${INSTALL_DIR}/prometheus/conf/prometheus.yml
ExecReload=/bin/kill -HUP $MAINPID
LimitNOFILE=65535[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reloadsystemctl enable --now prometheus.service
}start_prometheus() {systemctl is-active prometheusif [ $?  -eq 0 ];thenecho color "Prometheus 安装完成!" 0echo "-------------------------------------------------------------------"echo -e "访问链接: \c"msg_info "http://$HOST:9090/"elsecolor "Prometheus 安装失败!" 1exitfi
}install_prometheusprometheus_servicestart_prometheus

Dashboard 菜单说明

        Alerts  #Prometheus的告警信息菜单

        Graph   #Prometheus的图形展示界面,这是prometheus默认访问的界面

        Status  #Prometheus的状态数据界面

        Help    #Prometheus的帮助信息界面

                #Status子菜单,在Status菜单下存在很多的子选项,其名称和功能效果如下:

                Runtime& Build Information 服务主机的运行状态信息及内部的监控项基本信息

                Command-LineFlags 启动时候从配置文件中加载的属性信息

                Configuration配置文件的具体内容(yaml格式)

                Rules查询、告警、可视化等数据分析动作的规则记录

                Targets监控的目标对象,包括主机、服务等以endpoint形式存在

                ServiceDiscovery 自动发现的各种Targets对象列表

2、脚本安装node_exporter 

安装 Node Exporter 用于收集各 node 主机节点上的监控指标数据,监听端口为9100

#!/bin/bash
#
#無僞謂NODE_EXPORTER_VERSION=1.8.2
NODE_EXPORTER_FILE="node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz"
NODE_EXPORTER_URL=https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/${NODE_EXPORTER_FILE}
INSTALL_DIR=/usr/localHOST=`hostname -I|awk '{print $1}'`. /etc/os-releasemsg_error() {echo -e "\033[1;31m$1\033[0m"
}msg_info() {echo -e "\033[1;32m$1\033[0m"
}msg_warn() {echo -e "\033[1;33m$1\033[0m"
}color () {RES_COL=60MOVE_TO_COL="echo -en \\033[${RES_COL}G"SETCOLOR_SUCCESS="echo -en \\033[1;32m"SETCOLOR_FAILURE="echo -en \\033[1;31m"SETCOLOR_WARNING="echo -en \\033[1;33m"SETCOLOR_NORMAL="echo -en \E[0m"echo -n "$1" && $MOVE_TO_COLecho -n "["if [ $2 = "success" -o $2 = "0" ] ;then${SETCOLOR_SUCCESS}echo -n $"  OK  "    elif [ $2 = "failure" -o $2 = "1"  ] ;then${SETCOLOR_FAILURE}echo -n $"FAILED"else${SETCOLOR_WARNING}echo -n $"WARNING"fi${SETCOLOR_NORMAL}echo -n "]"echo 
}install_node_exporter () {if [ ! -f  ${NODE_EXPORTER_FILE} ] ;thenwget ${NODE_EXPORTER_URL} ||  { color "下载失败!" 1 ; exit ; }fi[ -d $INSTALL_DIR ] || mkdir -p $INSTALL_DIRtar xf ${NODE_EXPORTER_FILE} -C $INSTALL_DIRcd $INSTALL_DIR &&  ln -s node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64 node_exportermkdir -p $INSTALL_DIR/node_exporter/bincd $INSTALL_DIR/node_exporter &&  mv node_exporter bin/cat >  /etc/profile.d/node_exporter.sh <<EOF
export NODE_EXPORTER_HOME=${INSTALL_DIR}/node_exporter
export PATH=\${NODE_EXPORTER_HOME}/bin:\$PATH
EOF}node_exporter_service () {cat > /lib/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Prometheus Node Exporter
After=network.target[Service]
Type=simple
ExecStart=$INSTALL_DIR/node_exporter/bin/node_exporter
Restart=on-failure[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reloadsystemctl enable --now node_exporter.service
}start_node_exporter() {systemctl is-active node_exporter.serviceif [ $?  -eq 0 ];thenecho color "node_exporter 安装完成!" 0echo "-------------------------------------------------------------------"echo -e "访问链接: \c"msg_info "http://$HOST:9100/metrics"elsecolor "node_exporter 安装失败!" 1exitfi
}install_node_exporternode_exporter_servicestart_node_exporter

3、修改配置,使得Prometheus采集node数据

修改配置文件

vim /usr/local/prometheus/conf/prometheus.yml
# my global config
global:# 默认情况下,每15s拉取一次目标采样点数据。注释后为1分钟scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.# 每15秒评估一次规则。默认值为每1分钟。evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:# - "first_rules.yml"# - "second_rules.yml"# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:# job名称会增加到拉取到的所有采样点上,同时还有一个instance目标服务的host:port标签也会增加到采样点上- job_name: 'prometheus'# 覆盖global的采样点,拉取时间间隔5sscrape_interval: 5sstatic_configs:- targets: ['localhost:9090']
#添加新的node节点- job_name: "node1"static_configs:- targets: - "192.168.10.110:9100"
-- 插入 --                     

检查配置文件语法是否有误:

新版本可能没有下载这个命令 promtool 可以下载一下:

promtool check config /usr/local/prometheus/conf/prometheus.yml

语法检查无误,重启Prometheus服务

systemctl restart prometheus.service 

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

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

相关文章

【认知智能】编译器1

深度学习编译器是一种专门设计用来优化和加速深度学习模型在各种硬件平台上执行的工具。它们通过将高级深度学习框架&#xff08;如TensorFlow, PyTorch等&#xff09;中的计算图转换为针对特定硬件架构优化过的低级代码来实现这一目标。基础架构通常包括以下几个关键组件&…

ML 系列:机器学习和深度学习的深层次总结(17)从样本空间到概率规则概率

一、说明 概率是支撑大部分统计分析的基本概念。从本质上讲&#xff0c;概率提供了一个框架&#xff0c;用于量化不确定性并对未来事件做出明智的预测。无论您是在掷骰子、预测天气还是评估金融市场的风险&#xff0c;概率都是帮助您驾驭不确定性的工具。本篇将讲授概率的原理和…

STM32 第17章 EXIT--外部中断/事件控制器

时间:2024.10.23 参考资料:《零死角玩转STM32》“EXTI-外部中断/事件控制器” STM32里每一个GPIO都能产生中断,中断的产生体现在GPIO的电平的变化,电平的变化需要一个外设来管理,最终传给NVIC(内核里的嵌套中断控制器)来处理。 一、学习内容 1、EXTI功能框图+EXTI初始…

51单片机完全学习——红外遥控

一、红外接收模块原理 红外接收头内部本身有一个反相&#xff0c;意思就是&#xff1a;平时发送方无信号时接收到的是1&#xff0c;发送方有发送载波时接收头引脚输出的是0&#xff0c;写代码的时候注意这一点。红外协议&#xff0c;你也可以理解成&#xff0c;他对0和1重新做…

HarmonyOS 5.0应用开发——Navigation实现页面路由

【高心星出品】 文章目录 Navigation实现页面路由完整的Navigation入口页面子页面 页面跳转路由拦截其他的 Navigation实现页面路由 Navigation&#xff1a;路由导航的根视图容器&#xff0c;一般作为页面&#xff08;Entry&#xff09;的根容器去使用&#xff0c;包括单页面&…

iPhone SE 4:定了

万众期待的iPhone SE 4&#xff0c;近日传来了确定的消息。 近日&#xff0c;屏幕供应链分析师Ross Young透露&#xff1a;iPhone SE 4的屏幕面板&#xff0c;预计在 11 月份开始出货&#xff0c;并将于 2025 年年初正式发布。 来了来了&#xff0c;终于来了。 和以往不同&am…

【C++打怪之路Lv12】-- 模板进阶

#1024程序员节&#xff5c;征文# &#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;重生之我在学Linux&#xff0c;C打怪之路&#xff0c;python从入门到精通&#xff0c;数据结构&#xff0c;C语言&#xff0c;C语言题集&#x1f448; 希望得到您…

【jvm】堆的内部结构

目录 1. 说明2. 年轻代&#xff08;Young Generation&#xff09;2.1 说明2.2 Eden区2.3 Survivor区 3. 老年代&#xff08;Old Generation&#xff09;3.1 说明3.2 对象存放3.3 垃圾回收 4. jdk7及之前5. jdk8及之后 1. 说明 1.JVM堆的内部结构主要包括年轻代&#xff08;You…

SpringBoot poi-tl通过模板占位符生成word文件

简介&#xff1a; 开发中我们需要通过在word中使用占位符来动态渲染一些数据&#xff0c;本文讲解poi-tl实现动态生成word文档&#xff0c;包括表格循环&#xff0c;对象嵌套。 poi-tl官网文档 Poi-tl Documentation 1. word格式 这是我的test.word 这是导出后的out.docx文件 …

详解Pectra升级:如何影响以太坊价值及利益相关者

Pectra很可能是最后几个会直接影响用户和ETH持有者的升级之一。 原文&#xff1a;Galaxy Research&#xff1b;编译&#xff1a;Golem&#xff1b;编辑&#xff1a;郝方舟 出品 | Odaily星球日报&#xff08;ID&#xff1a;o-daily&#xff09; 编者按&#xff1a;以太坊 Pectr…

了解 WebSocket

了解 WebSocket 轮询方式、短轮询长轮询SSE WebSocket为什么说 WebSocket 是基于 Http 协议的&#xff1f;如何通过 Sec-WebSocket-Key 与 验证 Sec-WebSocket-Accept验证 demo SpringBoot 中使用 WebSocket引入依赖增加 WebSocketConfig修改 ServerEndpointConfig定义 ServerE…

保研考研机试攻略:python笔记(1)

&#x1f428;&#x1f428;&#x1f428;宝子们好呀 ~ 我来更新欠大家的python笔记了&#xff0c;从这一篇开始我们来学下python&#xff0c;当然&#xff0c;如果只是想应对机试并且应试语言以C和C为主&#xff0c;那么大家对python了解一点就好&#xff0c;重点可以看高分篇…

易基因:Nat Commun:ATAC-seq等揭示恒河猴大脑高分辨率解剖区域的转录组和开放染色质图谱

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 恒河猴是神经科学研究中常用的模型动物&#xff0c;其大脑结构和功能与人类大脑相似。大脑中复杂的遗传网络是灵长类动物行为、认知和情感的基础&#xff0c;一直是神经科学的核心。大脑…

禾川SV-X2E A伺服驱动器参数设置——脉冲型

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff01;人工智能学习网站 前言&#xff1a; 大家好&#xff0c;我是上位机马工&#xff0c;硕士毕业4年年入40万&#xff0c;目前在一家自动化公司担任…

【Android】基础回顾--四大组件

1. 四大组件是什么&#xff1f; 四大组件&#xff1a;Activity、Service、BroadcastReceiver、ContentProvider。 2. 四大组件的生命周期和简单用法 Activity&#xff1a; 特殊情况下的生命周期&#xff1a; 典型的生命周期好像没什么可说的&#xff0c;主要说一下特殊情况…

基于Datawhale开源量化投资学习指南(11):LightGBM在量化选股中的优化与实战

1. 概述 在前几篇文章中&#xff0c;我们初步探讨了如何通过LightGBM模型进行量化选股&#xff0c;并进行了一些简单的特征工程和模型训练。在这一篇文章中&#xff0c;我们将进一步深入&#xff0c;通过优化超参数和实现交叉验证来提高模型的效果&#xff0c;并最终通过回测分…

C++ | Leetcode C++题解之第516题最长回文子序列

题目&#xff1a; 题解&#xff1a; class Solution { public:int longestPalindromeSubseq(string s) {int n s.length();vector<vector<int>> dp(n, vector<int>(n));for (int i n - 1; i > 0; i--) {dp[i][i] 1;char c1 s[i];for (int j i 1; j…

2-135 基于matlab的有限差分法计算电位分布

基于matlab的有限差分法计算电位分布&#xff0c;设置目标尺寸的矩形区域&#xff0c;设置矩形区域内的网格数量&#xff0c;根据网格位置在区域内设置电位&#xff0c;实现电位分布计算。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&#xff1a;2-135 基于matlab…

微信小程序的日期区间选择组件的封装和使用

组件化开发是一种将大型软件系统分解为更小、更易于管理和复用的独立模块或组件的方法。这种方法在现代软件开发中越来越受到重视&#xff0c;尤其是在前端开发领域。微信小程序的日期区间选择组件的使用 wxml 代码 <view><view bind:tap"chooseData">…

【Redis】内存淘汰策略

文章目录 什么是内存淘汰策略设置Redis最大内存执行内存淘汰策略的流程Redis的八大内存淘汰策略深入源码进行理解内存淘汰策略流程 什么是内存淘汰策略 Redis内存淘汰策略是指当Redis的内存使用达到其配置的最大内存限制&#xff08;maxmemory&#xff09;时&#xff0c;Redis…