全面Kafka监控方案:从配置到指标
文章目录
- 1.1.监控配置
- 1.2.监控工具
- 1.3.性能指标
- 系统相关指标
- GC相关指标
- JVM相关指标
- Topic相关指标
- Broker相关指标
- 1.4.性能指标说明
- 1.5.重要指标说明
1.1.监控配置
开启JMX服务端口:kafka基本分为broker、producer、consumer三个子项,每一项的启动都需要用到 $KAFKA_HOME/bin/kafka-run-class.sh
脚本,在该脚本中,存在以下语句:
if ...
KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"fi
if ...KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=$JMX_PORT "
Fi
在启动kafka的过程中,只要指定 JMX_PORT 的值,即可对broker、producer、consumer进行监控。目前有两种方法,在$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/bin/kafka-console-consumer.sh $KAFKA_HOME/bin/kafka-console producer.sh
三个脚本中分别添加 $JMX_PORT=XXXX
语句,但是只适用于使用console方式对topic进行使用的情况。
修改$KAFKA_HOME/bin/kafka-run-class.sh
脚本中的上述语句,使其端口随机变化,可以通过 ps -ef |grep kafka 命令来获取随机的端口号,来进行监控。
1.2.监控工具
Prometheus监控Kafka
- 如可以采用docker部署
kafka-exporter:
docker run -ti -d --rm -p 9308:9308 danielqsj/kafka-exporter --kafka.server=192.168.0.4:9092
监控项名称 | 阈值说明 | 使用的公式 |
---|---|---|
Kafka的Brokers在线 | 1m !=1严重 | count(kafka_server_replicamanager_leadercount{job=~"$job"}) |
Kafka集群中副本处于同步失败或失效状态的分区数 | >0严重 | sum(kafka_topic_partition_under_replicated_ partition{topic=~"$topic", namespace=~"$kubernetes_namespace"}) |
Kafka集群中控制器的数量 | !=1严重 | sum(kafka_controller_kafkacontroller_activecontrollercount{job=~"$job"}) |
Kafka离线分区数 | >0严重 | sum(kafka_controller_kafkacontroller_offlinepartitionscount{job=~"$job"}) |
Kafka每秒入网络流量 | >=150中度 | avg_over_time(kafka_server_BrokerTopicMetrics_ OneMinuteRate{name="BytesInPerSec",topic=""}[1m]) / 1024 /1024 |
Kafka请求处理程序线程空闲的平均时间百分比 | <= 0.3中度 | avg_over_time(kafka_server_KafkaRequestHandlerPool_ OneMinuteRate{name="RequestHandlerAvgIdlePercent",}[1m]) |
2. 在prometheus.yml出添加kafka配置
- job_name: 'kafka_exporter'static_configs:- targets: ['$node1:9308']
- 重启prometheus加载。
- 在promethues的管理界面可以查看状态:
- 然后配置grafana来展示图表效果。
- 告警监控项,如下表供参考:
时间百分比 | rcent",}[1m]) | |
---|---|---|
Kafka请求处理程序线程空闲的平均时间百分比 | <= 0.3中度 | avg_over_time(kafka_server _KafkaRequestHandlerPool _OneMinuteRate{name=“ RequestHandlerAvgIdlePercent”,}[1m]) |
Kafka网络处理器线程空闲的平均时间百分比 | <= 0.3中度 | avg_over_time(kafka_network_ SocketServer_Value{name=“ NetworkProcessorAvgIdlePercent”,}[1m]) |
Kafka已建立的连接数 | > 3000中度> 5000严重 | sum(avg_over_time(kafka_ server_socket_server_metrics_ connection_count{listener=“PLAINTEXT”,} [1m])) by (instance,app) |
Kafka每秒新建连接数 | > 100中度> 200 严重 | sum(avg_over_time(kafka_server _socket_server_metrics_connection _creation_rate[1m])) by (instance) |
Kafka请求在请求队列中等待的时间 | >5000中度 | avg_over_time(kafka_networ k_RequestMetrics_999thPercentile {name=“RequestQueueTimeMs”, request=“Produce”,}[1m]) |
Kafka_leader处理请求的时间 | >5000中度 | avg_over_time(kafka_network_ RequestMetrics_999thPercentile {name=“LocalTimeMs”,request=“Produce”,}[1m]) |
Kafka请求等待follower的时间 | >1000中度 | avg_over_time(kafka_network_ RequestMetrics_999thPercentile {name=“RemoteTimeMs”,request=“Produce”,}[1m]) |
Kafka请求在响应队列中等待的时间 | >1000中度 | avg_over_time(kafka_network_ RequestMetrics_999thPercentile {name=“ResponseQueueTimeMs”,request=“Produce”,}[1m]) |
Kafka发送响应的时间 | >1000中度 | avg_over_time(kafka_network_RequestMetrics _999thPercentile{name=“ResponseSendTimeMs”, request=“Produce”,}[1m]) |
Kafka汇总传入消息速率 | > 200000中度 | avg_over_time(kafka_server_ BrokerTopicMetrics_OneMinuteRate {name=“MessagesInPerSec”,topic=“”}[1m]) |
kafka消费滞后告警 | >1000 | sum(kafka_consumergroup _lag{topic!=“sop_free_study_fix-student_wechat_detail”}) by (consumergroup, topic) > 1000 |
kafka-exporter停止 | < 1 | kafka_exporter_build_info |
kafka server停止 | <1 | kafka_brokers |
kafka监控topic实时生产速率 | >= 0 | sum(irate(kafka_topic_partition_current_ offset{topic !~ "__consumer_offsets |
Kafka消费者端分区偏移量 | 5m >= 0 | sum(delta(kafka_consumergroup_current _offset[5m])/5) by (consumergroup, topic) |
Kafka消费者组的当前主题分区偏移汇总 | sum(delta(kafka_consumergroup_current _offset_sum[5m])/5) by (consumergroup, topic) | |
Kafka某个消费组消费延迟 | 5m >100000中度 | sum(kafka_consumergroup_lag) by (consumergroup,partition,topic) |
Kafka某个消费者组在某个主题分区的近似滞后情况汇总 | sum(kafka_consumergroup_lag_sum) by (consumergroup,partition,topic) | |
某个消费组成员 | kafka_consumergroup_ members{instance=“$instance”} | |
Kafka分区的位移量汇总 | sum(kafka_topic_partition_current_offset) by (partition,topic) | |
Kafka分区的同步副本数 | 1m =0 中度 | sum(kafka_topic_partition_in_sync_replica) |
Kafka旧主题分区偏移 | sum(kafka_topic_partition_oldest _offset{topic=~“$topic”}) by (partition,topic) | |
Kafka主题分区的副本数 | 1m <3中度 | sum(kafka_topic_partition _replicas{topic=~“$topic”}) |
Kafka主题分区复制不足的分区数 | sum(kafka_topic_partition_under _replicated_partition{topic=~“$topic”}) | |
Kafka 总分区数 | 5m >1000中度 | sum(kafka_topic_partitions) by(topic) |
1.3.性能指标
系统相关指标
- 系统信息收集 java.lang:type=OperatingSystem
- Thread信息收集 java.lang:type=Threading
- 获取mmaped和direct空间
- 通过BufferPoolMXBean获取used、capacity、count
GC相关指标
- Young GC
java.lang:type=GarbageCollector,name=G1 Young Generation - Old GC
java.lang:type=GarbageCollector,name=G1 Old Generation
JVM相关指标
通过MemoryMXBean获取JVM相关信息HeapMemoryUsage和NonHeapMemoryUsage;通过MemoryPoolMXBean获取其他JVM内存空间指标,例如:Metaspace、Codespace等
Topic相关指标
- Topic消息入站速率(Byte)
kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec,topic=" + topic - Topic消息出站速率(Byte)
kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec,topic=" + topic - Topic请求被拒速率
kafka.server:type=BrokerTopicMetrics,name=BytesRejectedPerSec,topic=" + topic - Topic失败拉去请求速率
kafka.server:type=BrokerTopicMetrics,name=FailedFetchRequestsPerSec,topic=" + topic; - Topic发送请求失败速率
kafka.server:type=BrokerTopicMetrics,name=FailedProduceRequestsPerSec,topic=" + topic - Topic消息入站速率(message)
kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=" + topic
Broker相关指标
- Log flush rate and time
kafka.log:type=LogFlushStats,name=LogFlushRateAndTimeMs - 同步失效的副本数
kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions - 消息入站速率(消息数)
kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec - 消息入站速率(Byte)
kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec - 消息出站速率(Byte)
kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec - 请求被拒速率
kafka.server:type=BrokerTopicMetrics,name=BytesRejectedPerSec - 失败拉去请求速率
kafka.server:type=BrokerTopicMetrics,name=FailedFetchRequestsPerSec - 发送请求失败速率
kafka.server:type=BrokerTopicMetrics,name=FailedProduceRequestsPerSec - Leader副本数
kafka.server:type=ReplicaManager,name=LeaderCount - Partition数量
kafka.server:type=ReplicaManager,name=PartitionCount - 下线Partition数量
kafka.controller:type=KafkaController,name=OfflinePartitionsCount - Broker网络处理线程空闲率
kafka.server:type=KafkaRequestHandlerPool,name=RequestHandlerAvgIdlePercent - Leader选举比率
kafka.controller:type=ControllerStats,name=LeaderElectionRateAndTimeMs - Unclean Leader选举比率
kafka.controller:type=ControllerStats,name=UncleanLeaderElectionsPerSec - Controller存活数量
kafka.controller:type=KafkaController,name=ActiveControllerCount - 请求速率
kafka.network:type=RequestMetrics,name=RequestsPerSec,request=Produce - Consumer拉取速率
kafka.network:type=RequestMetrics,name=RequestsPerSec,request=FetchConsumer - Follower拉去速率
kafka.network:type=RequestMetrics,name=RequestsPerSec,request=FetchFollower - Request total time
kafka.network:type=RequestMetrics,name=TotalTimeMs,request=Produce - Consumer fetch total time
kafka.network:type=RequestMetrics,name=TotalTimeMs,request=FetchConsumer - Follower fetch total time
kafka.network:type=RequestMetrics,name=TotalTimeMs,request=FetchFollower - Time the follower fetch request waits in the request queue
kafka.network:type=RequestMetrics,name=RequestQueueTimeMs,request=FetchFollower - Time the Consumer fetch request waits in the request queue
kafka.network:type=RequestMetrics,name=RequestQueueTimeMs,request=FetchConsumer - Time the Produce fetch request waits in the request queue
kafka.network:type=RequestMetrics,name=RequestQueueTimeMs,request=Produce - Broker I/O工作处理线程空闲率
kafka.network:type=SocketServer,name=NetworkProcessorAvgIdlePercent - ISR变化速率
kafka.server:type=ReplicaManager,name=IsrShrinksPerSec
1.4.性能指标说明
指标 | 单位 | 具体含义 |
---|---|---|
kafka.broker_offset offsets | broker | 上当前消息的偏移量(offset) |
kafka.consumer.bytes_in | bytes/second | consumer 字节率(bytes in rate) |
kafka.consumer.delayed_requests | requests | 延迟的 consumer 请求数 |
kafka.consumer.expires_per_second | evictions/second | 延迟 consumer 的请求到期(expiration)速率 |
kafka.consumer.fetch_rate | requests | consumer 向 broker 发送提取请求(fetch requests)的最低速率 |
kafka.consumer.kafka_commits | writes/second | 面向 Kafka 的 offset commits 速率 |
kafka.consumer.max_lag | offsets | 最大消费滞后(consumer lag) |
kafka.consumer.messages_in | messages/second | consumer 消息消费(consumption)的速率 |
kafka.consumer.zookeeper_commits | writes/second | 面向 ZooKeeper 的 offset commits 速率 |
kafka.consumer_lag | offsets | consumer 和 broker 之间的消息滞后(lag) |
kafka.consumer_offset | offsets | consumer 的当前消息偏移量(current message offset) |
kafka.expires_sec | evictions/second | 延迟生产者(delayed producer)的请求到期(request expiration)速率 |
kafka.follower.expires_per_second | evictions/second | 关注者(followers)的请求到期(request expiration)速率 |
kafka.log.flush_rate | flushes/second | 日志刷新速率 |
kafka.messages_in | messages | 传入(incoming)信息速率 |
kafka.net.bytes_in | bytes/second | 传入(incoming)字节速率 |
kafka.net.bytes_out | bytes/second | 传出(outgoing)字节速率 |
kafka.net.bytes_rejected | bytes/second | 被拒绝(rejected)的字节速率 |
kafka.producer.bytes_out | bytes/second | producer 字节输出速率 |
kafka.producer.delayed_requests | requests | 延迟的 producer 请求数 |
kafka.producer.expires_per_seconds | evictions/second | producer 请求到期率 |
kafka.producer.io_wait | nanoseconds | Producer I/O 等待时间 |
kafka.producer.message_rate | messages/second | Producer 消息速率 |
kafka.producer.request_latency_avg | milliseconds | Producer 平均请求延迟 |
kafka.producer.request_rate | requests/second | producer 每秒钟的请求数 |
kafka.producer.response_rate | responses/second | producer 每秒钟的响应数 |
kafka.replication.isr_expands | nodes/second | 副本加入 ISR 池的速率 |
kafka.replication.isr_shrinks | nodes/second | 副本离开 ISR 池的速率 |
kafka.replication.leader_elections | events/second | 领导选举(Leader election)频率 |
kafka.replication.unclean_leader_elections | events/second | Unclean 的领导选举(Leader election)频率 |
kafka.replication.under_replicated_partitions | 未使用的分区数 | |
kafka.request.fetch.failed | requests | 客户端获取请求(fetch request)失败次数 |
kafka.request.fetch.failed_per_second | requests/second | 每秒钟的客户端获取请求(fetch request)失败率 |
kafka.request.fetch.time.99percentile | requests/second | 获取请求(fetch request)时间的第 99 百分位的值 |
kafka.request.fetch.time.avg | requests/second | 获取请求(fetch request)时间的平均值 |
kafka.request.handler.avg.idle.pct | fractions | 请求处理程序线程(request handler threads)的平均空闲时间占比 |
kafka.request.metadata.time.99percentile | milliseconds | 元数据(metadata)请求时间的第 99 百分位的值 |
kafka.request.metadata.time.avg | milliseconds | 元数据(metadata)请求时间的的平均值 |
kafka.request.offsets.time.99percentile | milliseconds | offset 请求时间的第 99 百分位的值 |
kafka.request.offsets.time.avg | milliseconds | offset 请求时间的平均值 |
kafka.request.produce.failed | requests | 失败的产品请求(produce requests)数 |
kafka.request.produce.failed_per_second | requests/second | 每秒钟的产品请求(produce requests)失败率 |
kafka.request.produce.time.99percentile | requests/second | 产品请求(produce requests)时间的第 99 百分位的值 |
kafka.request.produce.time.avg | requests/second | 产品请求(produce requests)平均时间 |
kafka.request.update_metadata.time.99percentile | milliseconds | 更新元数据请求(update metadata requests)时间的第 99 百分位的值 |
kafka.request.update_metadata.time.avg | milliseconds | 更新元数据请求(update metadata requests)时间的平均值 |
1.5.重要指标说明
参照kafka-manager管理工具
1.
kafka.replication.under_replicated_partitions:
Under Replicated Partitions
: 在一个运行健康的集群中,处于同步状态的副本数(ISR)应该与总副本数(简称AR:Assigned Repllicas)完全相等,如果分区的副本远远落后于leader,那这个follower将被ISR池删除,随之而来的是IsrShrinksPerSec(可理解为isr的缩水情况,后面会讲)的增加。由于kafka的高可用性必须通过副本来满足,所有有必要重点关注这个指标,让它长期处于大于0的状态。
2. Brokers Spread:
broker使用率,如kafka集群9个broker,某topic有7个partition,则broker spread: 7 / 9 = 77%
3. Brokers Leader Skew:
leader partition是否存在倾斜,如kafka集群9个broker,某topic14个partition,则正常每个broker有2个leader partition。若其中一个broker有0个leader partition,一个有4个leader partition,则broker leader skew: (4 - 2) / 14 = 14%
由于kafka所有读写都在leader上进行, broker leader skew会导致不同broker的读写负载不均衡,配置参数 auto.leader.rebalance.enable=true
可以使kafka每5min自动做一次leader的rebalance,消除这个问题。
4. Lag:
表示consumer的消费能力,计算公式为Lag = LogSize - Consumer Offset,Kafka Manager从zk获取LogSize,从kafka __consumer_offsets topic读取Offset。两步操作存在一个时间gap,因此吞吐很大的topic上会出现LogSize > Offset 的情况。导致Lag负数。
相关文章:
全面Kafka监控方案:从配置到指标
文章目录 1.1.监控配置1.2.监控工具1.3.性能指标系统相关指标GC相关指标JVM相关指标Topic相关指标Broker相关指标 1.4.性能指标说明1.5.重要指标说明 1.1.监控配置 开启JMX服务端口:kafka基本分为broker、producer、consumer三个子项,每一项的启动都需要…...
Springboot项目Druid运行时动态连接多数据源的功能
项目支持多数据库连接是个很常见的需求,这不仅是要在编译前连已经知道的多个数据库,有时还要在程序运行时连后期增加的多个数据源来获得数据。 一、编译前注册数据库连接 1.引入依赖包 <!-- springboot 3.x --><dependency><groupId&g…...
【漏洞复现】F5 BIG-IP Next Central Manager SQL注入漏洞(CVE-2024-26026)
免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作…...
中间件xxl-job安装
拉取镜像 docker pull xuxueli/xxl-job-admin:2.4.2 创建xxl-job-admin容器 docker create --name xxl-job-admin -p 9099:8080 -e PARAMS"--spring.datasource.urljdbc:mysql://192.168.96.57:3306/xxl_job2Unicodetrue&characterEncodingUTF-8 --spring.dataso…...
Pytorch | 利用SMI-FGRM针对CIFAR10上的ResNet分类器进行对抗攻击
Pytorch | 利用I-FGSSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集SMI-FGRM介绍SMI-FGRM算法流程 SMI-FGRM代码实现SMI-FGRM算法实现攻击效果 代码汇总smifgrm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CI…...
论文解读 | EMNLP2024 一种用于大语言模型版本更新的学习率路径切换训练范式
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 作者简介 王志豪,厦门大学博士生 刘诗雨,厦门大学硕士生 内容简介 新数据的不断涌现使版本更新成为大型语言模型(LLMsÿ…...
破解海外业务困局:新加坡服务器托管与跨境组网策略
在当今全球化商业蓬勃发展的浪潮之下,众多企业将目光投向海外市场,力求拓展业务版图、抢占发展先机。而新加坡,凭借其卓越的地理位置、强劲的经济发展态势以及高度国际化的营商环境,已然成为企业海外布局的热门之选。此时…...
win系统B站播放8k视频启用HEVC编码
下载HEVC插件 点击 HEVC Video Extension 2.2.20.0 latest downloads,根据教程下载安装 安装 Random User-Agent 点击 Random User-Agent 安装 配置 Random User-Agent ”项目中的“家电控制设计”中的“空调控制”子项目,最前者还包括“物联网设计”、“环境监测设计”、“门禁系统设计计”和“小…...
springboot/ssm图书大厦图书管理系统Java代码编写web图书借阅项目
springboot/ssm图书大厦图书管理系统Java代码编写web图书借阅项目 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库ÿ…...
【MySQL】踩坑笔记——保存带有换行符等特殊字符的数据,需要进行转义保存
问题描述 从DBeaver中导出了部分业务数据的 insert sql,明明在开发、测试环境都可以一把执行通过,却在预发环境执行前的语法检查失败了,提示有SQL语法错误。 这条SQL长这样,default_sql是要在odps上执行的sql语句,提…...
利用 Python 编写一个 VIP 音乐下载脚本
在这篇博客中,我们将介绍如何使用 Python 编写一个简单的 VIP 音乐下载脚本,利用网页爬虫技术从一个音乐网站下载歌曲。通过解析网页,获取歌曲的真实下载链接,并将音乐文件保存到本地。我们将使用 requests 和 BeautifulSoup 库来实现这个过程。 目标 本脚本的主要功能是…...
Sashulin升级啦,开箱即用!
经过多年的不断投入,升级为了Sashulin基础软件系列,本系列包含: 1、Sashulin IDE 2025全域通用开发工具 通用型Java开发工具,并可以进行业务流可视化开发。 2、发布Sashulin Webserver 2025 将Html等网页文件发布成网站…...
Java圣诞树
目录 写在前面 技术需求 程序设计 代码分析 一、代码结构与主要功能概述 二、代码功能分解与分析 1. 类与常量定义 2. 绘制树的主逻辑 3. 彩色球的绘制 4. 动态效果的实现 5. 窗口初始化 三、关键特性与优点 四、总结 写在后面 写在前面 Java语言绘制精美圣诞树…...
在Python如何用Type创建类
文章目录 一,如何创建类1:创建一个简单类2:添加属性和方法3:动态继承父类4:结合元类的使用总结 二.在什么情境下适合使用Type创建类1. **运行时动态生成类**2. **避免重复代码**3. **依赖元类或高级元编程**4. **动态扩…...
04软件测试需求分析案例-用户登录
通读文档,提取信息,提出问题,整理为需求。 从需求规格说明、设计说明、配置说明等文档获取原始需求,通读原始需求,分析有哪些功能,每种功能要完成什么业务,业务该如何实现,业务逻辑…...
替代传统FTP传输,镭速大数据传输系统实现安全高效数据流转!
信息技术的快速进步让大数据成为了企业决策的关键支撑,但同时也带来了巨大的挑战。企业在运营过程中产生的数据量急剧增加,这对数据传输的速度、安全性和效率提出了更高的要求。然而,传统的FTP传输方式在处理大规模数据时显得力不从心&#x…...
SpringMVC学习(一)——请求与响应处理
目录 一、SpringMVC简介 二、RequestMapping:请求路径映射 三、RestController 四、请求限定 五、请求处理 1.使用普通变量,收集请求参数 2.使用RequestParam明确指定获取参数 3.目标方法参数是一个pojo 4.RequestHeader:获取请求…...
大语言模型学习工具及资源总结和落地应用
当前,随着人工智能技术的迅猛发展,大语言模型(Large Language Models, LLMs)在各个领域的应用日益广泛。以下是国内外常见的大语言模型工具、已经落地部署的应用以及学习相关的网站和资源的详细介绍。 一、国内外常见的大语言模型…...
深度学习使用Anaconda打开Jupyter Notebook编码
新手入门深度学习使用Anaconda打开Jupyter Notebook编码 1. 安装Anaconda 第一种是Anaconda官网下载安装包,但是很慢,不太建议 第二种使用国内清华大学镜像源下载 选择适合自己电脑的版本,支持windows,linux系统 下载完之后自行…...
【视觉惯性SLAM:四、相机成像模型】
相机成像模型介绍 相机成像模型是计算机视觉和图像处理中的核心内容,它描述了真实三维世界如何通过相机映射到二维图像平面。相机成像模型通常包括针孔相机的基本成像原理、数学模型,以及在实际应用中如何处理相机的各种畸变现象。 一、针孔相机成像原…...
Firewalld 防火墙详解:深入理解与实践指南
在现代网络环境中,防火墙是保护系统和网络不受未授权访问的关键工具。firewalld是Linux系统中广泛使用的动态防火墙管理工具,它提供了强大的功能和灵活的配置选项。本文将深入探讨firewalld防火墙的工作原理、配置和管理,以及如何在实际环境中…...
在linux系统中使用jdbc访问sqlite数据库时报错“java.lang.UnsatisfiedLinkError”
1. 异常描述 在linux系统中使用jdbc访问sqlite数据库时出现如下错误提示: 2. 异常分析 可能是当前使用版本的sqlite-jdbc-xxx.jar版本有bug。 3. 异常解决 我是从3.8.9.1版本换到了3.16.1版本就好了。...
华为管理变革之道:管理制度创新
目录 华为崛起两大因素:管理制度创新和组织文化。 管理是科学,150年来管理史上最伟大的创新是流程 为什么要变革? 向世界标杆学习,是变革第一方法论 体系之一:华为的DSTE战略管理体系(解决:…...
MySQL 临时表:使用技巧与最佳实践
MySQL 临时表:使用技巧与最佳实践 引言 在数据库管理系统中,临时表是一种常见的数据结构,它允许用户存储临时数据,这些数据只在当前会话或事务中有效。MySQL 作为一种广泛使用的数据库管理系统,也提供了对临时表的支…...
华为云语音交互SIS的使用案例(文字转语音-详细教程)
文章目录 题记一 、语音交互服务(Speech Interaction Service,简称SIS)二、功能介绍1、实时语音识别2、一句话识别3、录音文件识别4、语音合成 三、约束与限制四、使用1、API2、SDK 五、项目集成1、引入pom依赖2、初始化 Client1)…...
【Rust自学】6.3. 控制流运算符-match
喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 6.3.1. 什么是match match允许一个值与一系列模式进行匹配,并执行匹配的模式对应的代码。模式可以是字面值、变量名、通配符等…...
AIA - IMSIC之二(附IMSIC处理流程图)
本文属于《 RISC-V指令集基础系列教程》之一,欢迎查看其它文章。 1 通过IMSIC接收外部中断的CSR 软件通过《AIA - 新增的CSR》描述的CSR来访问IMSIC。 machine level 的 CSR 与 IMSIC 的 machine level interrupt file 可相互互动;而 supervisor level 的 CSR…...
Excel中一次查询返回多列
使用Excel或wps的时候,有时候需要一次查询返回多列内容,这种情况可以选择多次vlookup或者多次xlookup,但是这种做法费时费力不说,效率还有些低下,特别是要查询的列数过多时。我放了3种查询方法,效果图&…...
SQLAlchemy示例(连接数据库插入表数据)
背景需求 连接数据库,插入表中一些数据。 其用户是新建用户,所以只能插入,不能更新。 再次输入数据则使用更新数据语法,这个没调试。 #! /usr/bin/env python # -*- coding: utf-8 -*-from sqlalchemy import create_engine, …...
AG32 MCU 的电机控制方案
原创 AG32 AG32MCU cpld 2024年12月24日 17:23 浙江 AG32 MCU 的电机控制方案 在工业自动化、智能家居、新能源设备等众多领域,电机控制的精准性、稳定性和高效性至关重要。 AG32 MCU 凭借其高性能处理器、丰富的外设资源以及独特的 2K CPLD 资源,在电机…...
Linux:进程概念
1.冯诺依曼体系结构 结论: --- CPU不和外设直接打交道,和内存直接打交道。 --- 所有的外设,有数据需要收入,只能载入到内存中;内存写出,也一定是写道外设中。 --- 为什么程序要运行必须加载到内存…...
使用 Webpack 优雅的构建微前端应用❕
Module Federation 通常译作“模块联邦”,是 Webpack 5 新引入的一种远程模块动态加载、运行技术。MF 允许我们将原本单个巨大应用按我们理想的方式拆分成多个体积更小、职责更内聚的小应用形式,理想情况下各个应用能够实现独立部署、独立开发(不同应用甚…...
【Leetcode 热题 100】208. 实现 Trie (前缀树)
问题背景 T r i e Trie Trie 或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。 请你实现 Trie 类: Trie() 初始化前缀树对象。void insert(String word…...
从0开始在linux服务器上部署SpringBoot和Vue
目录 一、申请服务器的IP (1)阿里云申请IP (2)设置服务器的密码 (3)远程终端——MobaXterm 二、Docker (1)安装Docker (2)镜像加速 (3&…...
41 stack类与queue类
目录 一、简介 (一)stack类 (二)queue类 二、使用与模拟实现 (一)stack类 1、使用 2、OJ题 (1)最小栈 (2)栈的弹出压入序列 (3…...
代码随想录-笔记-其八
让我们开始:动态规划! 70. 爬楼梯 - 力扣(LeetCode) 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? class Solution { public:int climbStairs(i…...
信号仿真高级工程师面试题
信号仿真高级工程师面试题可能涵盖多个方面,旨在全面评估应聘者的专业知识、技能水平、实践经验和问题解决能力。以下是一些可能的面试题及其简要解析: 一、专业知识与技能 描述你对信号仿真的理解 考察点:对信号仿真基本概念、原理及应用的掌握程度。参考答案:信号仿真是…...
FLTK - build fltk-1.1.10 on vs2019
文章目录 FLTK - build fltk-1.1.10 on vs2019概述笔记buildtest测试程序运行 END FLTK - build fltk-1.1.10 on vs2019 概述 看书上用到了fltk-1.1.10, 用vs2019试试能否正常编译使用? 笔记 build 从官网下载fltk-1.1.10-source.tar.bz2 用7zip解开 fltk-1.1.10-source.…...
FPGA远程升级 -- FLASH控制
简介 前文讲到如何实现XILINX芯片程序跳转,但升级程序是事先通过VIVADO工具将两个程序合成一个BIN文件实现升级的,并不能在线更新升级。要实现远程升级的能力需要对FPGA的FLASH进行在线写入升级程序。 FLASH介绍 本次设计FLASH选用的是S25FL128芯片&…...
蓝牙BLE开发——解决iOS设备获取MAC方式
解决iOS设备获取MAC方式 uniapp 解决 iOS 获取 MAC地址,在Android、iOS不同端中互通,根据MAC 地址处理相关的业务场景; 文章目录 解决iOS设备获取MAC方式监听寻找到新设备的事件BLE工具效果图APP监听设备返回数据解决方式ArrayBuffer转16进制…...
【总结(三)】单片机重点知识总结记录(串口重定向+按键消抖+延时)
一.串口重定向 串口重定向代码如下 注意: 要添加头文件include "stdio.h"要勾选微库,即Use MicroLIB /**********重定向************/ //串口1 int fputc(int ch, FILE *f) {HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff)…...
攻防世界 unserialize3
开启场景 题目为unserialize3,这个单词在php中代表反序列化,代码 __wakeup 也是php反序列化中常见的魔术方法,所以这个题基本就是和反序列化有关的题目。根据代码提示,编写一个Exploit运行,将对象xctf的信息序列化 得到…...
ISDP010_基于DDD架构实现收银用例主成功场景
信息系统开发实践 | 系列文章传送门 ISDP001_课程概述 ISDP002_Maven上_创建Maven项目 ISDP003_Maven下_Maven项目依赖配置 ISDP004_创建SpringBoot3项目 ISDP005_Spring组件与自动装配 ISDP006_逻辑架构设计 ISDP007_Springboot日志配置与单元测试 ISDP008_SpringB…...
如何注册华为云国际版账户:详细步骤指南
华为云作为全球知名的云计算服务提供商,提供了丰富的云服务和解决方案。无论是企业还是个人开发者,注册华为云国际版账户都是开启云计算之旅的第一步。我们九河云通过本文将为您详细介绍华为云国际版的注册流程。 第一步:访问华为云国际版官网…...
存储过程实现多个分类不同计算规则得到对应的分类、月份和款号
该存储过程 PRO_MON_MDCODE 实现多个分类不同计算规则得到对应的分类、月份和款号,其中线下分类的款最早出现时间会在20230101,最晚是当前月份后12月,电商的款取商品维表的23,24,25年商品年份的A款,其他业务分类逻辑(A-线上,B电商公司,C品牌公司)的款最早出现时间会在2…...
【LeetCode】906、超级回文数
【LeetCode】906、超级回文数 文章目录 一、通过数据量猜解法 枚举 数学 回文1.1 通过数据量猜解法 枚举 数学 回文1.2 多语言解法 二、打表法 一、通过数据量猜解法 枚举 数学 回文 1.1 通过数据量猜解法 枚举 数学 回文 减小数据规模: 先构成回文, 再平方, 再判断是否是范围…...