【Elasticsearch】监控与管理:集群监控指标

🧑 博主简介:CSDN博客专家历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程高并发设计Springboot和微服务,熟悉LinuxESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作请加本人wx(注明来自csdn):foreast_sea

在这里插入图片描述


在这里插入图片描述

文章目录

  • 【Elasticsearch】监控与管理:集群监控指标
    • 引言
    • 1. Elasticsearch 集群监控概述
      • 1.1 什么是 Elasticsearch 集群监控?
      • 1.2 监控的重要性
      • 1.3 Elasticsearch 内置监控工具
    • 2. 节点状态指标
      • 2.1 CPU 使用率
      • 2.2 内存使用率
      • 2.3 磁盘空间
      • 2.4 JVM 堆内存
      • 2.5 网络使用情况
    • 3. 索引指标
      • 3.1 文档数量
      • 3.2 索引大小
      • 3.3 索引操作统计
      • 3.4 索引碎片化程度
    • 4. 搜索性能指标
      • 4.1 查询延迟
    • 4.2 查询吞吐量
      • 4.3 聚合操作性能
      • 4.4 响应时间分布
    • 5. 通过 Java API 获取监控指标
      • 5.1 使用 REST API 获取节点状态
      • 5.2 使用 Java High Level REST Client 获取索引统计信息
      • 5.3 实时监控搜索性能
    • 6. 可视化工具:Kibana 的应用
      • 6.1 Kibana 的安装与配置
      • 6.2 创建监控仪表盘
      • 6.3 实时监控与告警设置
    • 7. 总结与展望
    • 8. 参考资料

【Elasticsearch】监控与管理:集群监控指标

引言

在现代互联网应用中,Elasticsearch 已经成为不可或缺的核心组件之一。无论是搜索引擎、日志分析系统,还是实时数据分析平台,Elasticsearch 凭借其强大的分布式特性、灵活的查询能力以及高效的全文检索功能,在各个领域中都有着广泛的应用。然而,随着业务规模的不断扩大和数据量的持续增长,Elasticsearch 集群的稳定性、性能和资源利用率成为了运维人员和开发人员关注的重点。

在实际生产环境中,Elasticsearch 集群可能会面临多种挑战:节点负载不均导致某些节点成为性能瓶颈、磁盘空间不足引发节点不可用、索引碎片化严重导致查询性能下降等等。这些问题如果得不到及时发现和处理,将会直接影响系统的可用性和用户体验。因此,对 Elasticsearch 集群进行实时监控和深入分析,成为了保障系统稳定运行的关键环节。

Elasticsearch 本身提供了丰富的内置监控指标和工具,可以帮助我们全面了解集群的运行状态。这些指标涵盖了节点级别的资源使用情况(如 CPU 使用率、内存使用率、磁盘空间等)、索引级别的数据分布和操作统计(如文档数量、索引大小、查询请求量等),以及搜索性能相关的指标(如查询延迟、查询吞吐量等)。通过这些指标,我们可以快速定位集群中的潜在问题,并采取相应的优化措施。

对于 Java 开发者来说,掌握如何通过 Elasticsearch 的 Java API 获取和分析这些监控指标尤为重要。无论是通过编写自定义监控脚本,还是集成第三方监控工具(如 Kibana、Prometheus 等),了解如何高效地获取和解析这些指标数据,都是提升系统运维能力的关键技能。

本文将从 Elasticsearch 集群监控的基本原理出发,详细介绍各类监控指标的作用和应用场景,并结合实际案例展示如何通过 Java API 和可视化工具(如 Kibana)获取和分析这些指标。希望通过本文的讲解,能够帮助读者全面掌握 Elasticsearch 集群监控的核心技术和实践方法。


1. Elasticsearch 集群监控概述

1.1 什么是 Elasticsearch 集群监控?

Elasticsearch 集群监控是指通过对 Elasticsearch 集群的各项运行指标进行实时采集、分析和展示,从而全面了解集群的健康状况、性能表现以及资源使用情况的过程。监控的目标是及时发现潜在问题,并采取相应的优化措施,以保障集群的稳定性和高效性。

1.2 监控的重要性

  • 保障系统稳定性:通过监控可以及时发现节点故障、资源不足等问题,避免因单点故障导致整个集群不可用。
  • 优化性能:通过对 CPU、内存、磁盘等资源的使用情况进行分析,可以识别性能瓶颈并进行针对性优化。
  • 资源规划:基于历史数据和趋势分析,可以更好地规划硬件资源的扩展,避免资源浪费或不足。
  • 故障排查:当系统出现异常时,监控数据可以为故障排查提供有力的支持。

1.3 Elasticsearch 内置监控工具

Elasticsearch 提供了多种内置工具和接口用于集群监控:

  • Nodes API:用于获取节点级别的各项指标。
  • Cluster Health API:用于查看集群的整体健康状况。
  • Indices Stats API:用于获取索引级别的统计信息。
  • Search Profiler:用于分析搜索请求的执行过程和性能瓶颈。

此外,Elasticsearch 还支持与第三方工具(如 Kibana、Prometheus、Grafana 等)集成,以实现更强大的可视化监控和告警功能。


2. 节点状态指标

2.1 CPU 使用率

CPU 使用率反映了节点的计算资源使用情况。如果某个节点的 CPU 使用率长期处于高位(如超过 80%),可能会导致节点响应变慢甚至不可用。

// 示例:通过 Java API 获取节点 CPU 使用率
public void getNodeCpuUsage() {NodesInfoResponse response = client.admin().cluster().nodesInfo(new NodesInfoRequest()).actionGet();for (NodeInfo node : response.getNodes()) {System.out.println("Node name: " + node.getName());System.out.println("CPU usage: " + node.getJvm().getCpuLoad());}
}

2.2 内存使用率

内存使用率是衡量节点内存资源使用情况的重要指标。如果内存使用率过高,可能会导致垃圾回收(GC)频繁发生,进而影响系统性能。

// 示例:获取节点内存使用情况
public void getNodeMemoryUsage() {NodesInfoResponse response = client.admin().cluster().nodesInfo(new NodesInfoRequest()).actionGet();for (NodeInfo node : response.getNodes()) {System.out.println("Node name: " + node.getName());System.out.println("Heap used: " + node.getJvm().getMem().getHeapUsed());System.out.println("Heap max: " + node.getJvm().getMem().getHeapMax());}
}

2.3 磁盘空间

磁盘空间不足是导致节点不可用的常见原因之一。通过监控磁盘空间使用情况,可以及时发现并处理磁盘满的问题。

// 示例:获取节点磁盘空间信息
public void getNodeDiskSpace() {NodesInfoResponse response = client.admin().cluster().nodesInfo(new NodesInfoRequest()).actionGet();for (NodeInfo node : response.getNodes()) {System.out.println("Node name: " + node.getName());for (NodeInfo.NodeInfoFs fs : node.getFs()) {System.out.println("Path: " + fs.getPath());System.out.println("Total space: " + fs.getTotal());System.out.println("Free space: " + fs.getFree());}}
}

2.4 JVM 堆内存

JVM 堆内存的使用情况直接影响着节点的性能。如果堆内存不足,可能会导致频繁的 Full GC,从而影响系统响应速度。

// 示例:获取 JVM 堆内存使用情况
public void getJvmHeapUsage() {NodesInfoResponse response = client.admin().cluster().nodesInfo(new NodesInfoRequest()).actionGet();for (NodeInfo node : response.getNodes()) {System.out.println("Node name: " + node.getName());JvmInfo jvmInfo = node.getJvm();System.out.println("Heap used: " + jvmInfo.getMem().getHeapUsed());System.out.println("Heap max: " + jvmInfo.getMem().getHeapMax());}
}

2.5 网络使用情况

网络使用情况反映了节点之间的通信负载。如果网络带宽被大量占用,可能会导致节点间通信延迟增加。

// 示例:获取节点网络使用情况
public void getNodeNetworkUsage() {NodesInfoResponse response = client.admin().cluster().nodesInfo(new NodesInfoRequest()).actionGet();for (NodeInfo node : response.getNodes()) {System.out.println("Node name: " + node.getName());System.out.println("Network rx: " + node.getTransport().getRxCount());System.out.println("Network tx: " + node.getTransport().getTxCount());}
}

3. 索引指标

3.1 文档数量

文档数量反映了索引中存储的数据量。通过监控文档数量的变化趋势,可以了解业务数据的增长情况。

// 示例:获取索引文档数量
public void getIndexDocCount(String indexName) {GetIndexResponse response = client.admin().indices().getIndex(new GetIndexRequest(indexName)).actionGet();long docCount = response.getIndices().get(indexName).getDocs().getCount();System.out.println("Document count in index '" + indexName + "': " + docCount);
}

3.2 索引大小

索引大小反映了存储在磁盘上的数据量。通过监控索引大小的变化,可以了解数据的增长趋势,并提前规划存储资源。

// 示例:获取索引大小
public void getIndexSize(String indexName) {GetIndexResponse response = client.admin().indices().getIndex(new GetIndexRequest(indexName)).actionGet();long storeSize = response.getIndices().get(indexName).getStore().getSizeInBytes();System.out.println("Index size of '" + indexName + "': " + storeSize + " bytes");
}

3.3 索引操作统计

索引操作统计包括插入、更新、删除等操作的数量和耗时。通过这些指标可以了解索引操作的负载情况。

// 示例:获取索引操作统计
public void getIndexOperations(String indexName) {IndexStatsResponse response = client.admin().indices().stats(new IndexStatsRequest(indexName)).actionGet();IndexStats stats = response.getIndexStats().get(0);System.out.println("Index name: " + indexName);System.out.println("Insert count: " + stats.getTotal().getIndexing().getTotal());System.out.println("Update count: " + stats.getTotal().getIndexing().getUpdate());System.out.println("Delete count: " + stats.getTotal().getIndexing().getDelete());
}

3.4 索引碎片化程度

索引碎片化程度反映了索引段的分布情况。高碎片化会导致查询性能下降。

// 示例:获取索引碎片化程度
public void getIndexFragmentation(String indexName) {IndexStatsResponse response = client.admin().indices().stats(new IndexStatsRequest(indexName)).actionGet();IndexStats stats = response.getIndexStats().get(0);long totalSegments = stats.getTotal().getSegments().getNum();long totalShards = stats.getTotal().getShards().getPrimary();double fragmentation = (double) totalSegments / (totalShards * 2); // 考虑副本System.out.println("Fragmentation level of '" + indexName + "': " + fragmentation);
}

4. 搜索性能指标

4.1 查询延迟

查询延迟反映了搜索请求的响应时间。通过监控查询延迟的变化趋势,可以识别性能瓶颈。

// 示例:获取搜索延迟统计
public void getSearchLatency() {SearchResponse response = client.search(new SearchRequest().indices("your_index").source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()).size(0).aggregation(AggregationBuilders.avg("avg_latency").field("_score"))), RequestOptions.DEFAULT);Aggregations aggregations = response.getAggregations();if (aggregations != null) {Avg avg = aggregations.get("avg_latency");System.out.println("Average search latency: " + avg.getValue());}
}

4.2 查询吞吐量

查询吞吐量反映了单位时间内处理的搜索请求数量。通过监控吞吐量的变化趋势,可以了解系统的处理能力。

// 示例:获取搜索吞吐量统计
public void getSearchThroughput() {SearchResponse response = client.search(new SearchRequest().indices("your_index").source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()).size(0).aggregation(AggregationBuilders.sum("sum_throughput").field("_score"))), RequestOptions.DEFAULT);Aggregations aggregations = response.getAggregations();if (aggregations != null) {Sum sum = aggregations.get("sum_throughput");System.out.println("Total search throughput: " + sum.getValue());}
}

4.3 聚合操作性能

聚合操作性能反映了复杂查询(如分组、排序等)的执行效率。通过监控聚合操作的性能指标,可以优化查询逻辑。

// 示例:获取聚合操作性能统计
public void getAggregationPerformance() {SearchResponse response = client.search(new SearchRequest().indices("your_index").source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()).size(0).aggregation(AggregationBuilders.dateHistogram("histogram").field("@timestamp").interval(DateHistogramInterval.DAY))), RequestOptions.DEFAULT);Aggregations aggregations = response.getAggregations();if (aggregations != null) {Histogram histogram = aggregations.get("histogram");System.out.println("Number of buckets: " + histogram.getBuckets().size());}
}

4.4 响应时间分布

响应时间分布反映了不同时间段内搜索请求的响应时间分布情况。通过分析响应时间分布,可以识别长尾请求的影响。

// 示例:获取响应时间分布统计
public void getResponseTimeDistribution() {SearchResponse response = client.search(new SearchRequest().indices("your_index").source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()).size(0).aggregation(AggregationBuilders.range("response_time_range").field("_score").addRange(0, 100).addRange(100, 500).addRange(500, Double.POSITIVE_INFINITY))), RequestOptions.DEFAULT);Aggregations aggregations = response.getAggregations();if (aggregations != null) {Range range = aggregations.get("response_time_range");for (Range.Bucket bucket : range.getBuckets()) {String key = bucket.getKeyAsString();long docCount = bucket.getDocCount();System.out.println("Response time range: " + key + ", Doc count: " + docCount);}}
}

5. 通过 Java API 获取监控指标

5.1 使用 REST API 获取节点状态

Elasticsearch 提供了丰富的 REST API 接口用于获取集群和节点的状态信息。通过这些接口,我们可以轻松地获取 CPU、内存、磁盘等资源的使用情况。

// 示例:获取节点状态信息
public void getNodeStatus() {NodesInfoResponse response = client.admin().cluster().nodesInfo(new NodesInfoRequest()).actionGet();for (NodeInfo node : response.getNodes()) {System.out.println("Node name: " + node.getName());System.out.println("Node status: " + node.getStatus());System.out.println("Node version: " + node.getVersion());}
}

5.2 使用 Java High Level REST Client 获取索引统计信息

Java High Level REST Client 是 Elasticsearch 官方提供的 Java 客户端库,支持通过简洁的 API 访问 Elasticsearch 的各种功能。

// 示例:获取索引统计信息
public void getIndexStats(String indexName) {IndexStatsResponse response = client.admin().indices().stats(new IndexStatsRequest(indexName)).actionGet();IndexStats stats = response.getIndexStats().get(0);System.out.println("Index name: " + indexName);System.out.println("Document count: " + stats.getTotal().getDocs().getCount());System.out.println("Index size: " + stats.getTotal().getStore().getSizeInBytes());
}

5.3 实时监控搜索性能

通过 Java API 可以实时监控搜索请求的执行情况,并根据结果进行动态调整。

// 示例:实时监控搜索性能
public void monitorSearchPerformance() {SearchRequest request = new SearchRequest().indices("your_index").source(new SearchSourceBuilder().query(QueryBuilders.matchAllQuery()).size(0));while (true) {try {SearchResponse response = client.search(request, RequestOptions.DEFAULT);long tookInMillis = response.getTookInMillis();System.out.println("Search took: " + tookInMillis + " ms");Thread.sleep(1000);} catch (InterruptedException e) {Thread.currentThread().interrupt();break;}}
}

6. 可视化工具:Kibana 的应用

6.1 Kibana 的安装与配置

Kibana 是 Elasticsearch 官方提供的可视化工具,支持创建丰富的仪表盘和图表来展示集群的运行状态。

安装 Kibana
sudo apt-get install kibana配置 Kibana
编辑 /etc/kibana/kibana.yml 文件
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]

6.2 创建监控仪表盘

在 Kibana 中可以通过拖拽式界面创建自定义仪表盘,展示 CPU 使用率、内存使用率等关键指标。

// 示例:创建一个包含 CPU 使用率图表的仪表盘
{"title": "Cluster Overview","description": "Monitor cluster health and performance","panelsJSON": [{"type": "metric","id": "cpu_usage","grid": { "x": 0, "y": 0, "w": 6, "h": 4 },"options": {"metrics": [{ "id": "node.cpu.percent", "type": "avg" }],"timeRange": { "from": "now-5m", "to": "now" }}}]
}

6.3 实时监控与告警设置

Kibana 支持设置告警规则,当某个指标超过阈值时触发告警通知。

// 示例:设置 CPU 使用率告警规则
{"name": "High CPU Usage Alert","description": "Trigger when CPU usage exceeds 80%","condition": {"metric": {"aggregation": "avg","field": "node.cpu.percent","operator": ">=","value": 80}},"actions": [{"type": "email","to": "admin@example.com","subject": "[ALERT] High CPU Usage Detected"}]
}

7. 总结与展望

通过对 Elasticsearch 集群监控指标的深入分析和实践,我们能够全面了解集群的运行状态,并采取相应的优化措施以保障系统的稳定性和高效性。随着业务规模的不断扩大和技术的发展,Elasticsearch 集群监控的需求也将变得更加多样化和复杂化。未来,我们可以进一步探索以下方向:

  • 智能化监控:利用机器学习算法对历史数据进行分析和预测,实现智能化的异常检测和容量规划。
  • 自动化优化:结合自动化工具(如 Elastic Stack 的 Curator 工具),实现索引生命周期管理、节点自动扩缩容等功能。
  • 多集群管理:针对大规模分布式环境下的多集群管理需求,开发统一的监控和管理系统。

总之,Elasticsearch 集群监控是一项需要持续关注和投入的工作。只有通过不断的实践和优化,才能真正实现对集群的全面掌控,并为企业创造更大的价值。


8. 参考资料

  1. Elasticsearch 官方文档
  2. Kibana 官方文档
  3. Java High Level REST Client 文档
  4. Prometheus 官方文档
  5. Grafana 官方文档

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

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

相关文章

黑马Redis详细笔记(实战篇---短信登录)

目录 一.短信登录 1.1 导入项目 1.2 Session 实现短信登录 1.3 集群的 Session 共享问题 1.4 基于 Redis 实现共享 Session 登录 一.短信登录 1.1 导入项目 数据库准备 -- 创建用户表 CREATE TABLE user (id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT 用户ID,phone …

大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡

大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡 背景 前端开发接口请求,调试,联调,接入数据,前端必不可少工具,postman是一个非常好…

开源身份和访问管理方案之keycloak(一)快速入门

文章目录 什么是IAM什么是keycloakKeycloak 的功能 核心概念client管理 OpenID Connect 客户端 Client Scoperealm roleAssigning role mappings分配角色映射Using default roles使用默认角色Role scope mappings角色范围映射 UsersGroupssessionsEventsKeycloak Policy创建策略…

java项目之直销模式下家具工厂自建网站源码(ssm+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的直销模式下家具工厂自建网站源码。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 直销模式下家具…

C基础(十)动态内存分配和结构体

动态内存分配 堆区与栈区空间&#xff1a;申请堆区空间需手动操作&#xff0c;使用完要手动释放&#xff1b;栈区空间由系统自动分配和释放。相关函数与概念 malloc&#xff1a;从堆区申请指定字节数的空间&#xff0c;返回首地址&#xff0c;需搭配头文件#include <stdlib.…

图7.1-7.6《分析模式》第7章使用会计模型-原图和UML图对比

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 图7.1 TT示例的包。 账户包持有抽象的会计类型&#xff0c;电话服务包为这个特定领域扩展这些类型。 图7.2 TT的账户模型。 7.3 电话服务的结构模型。 图7.4 创建新电话服务的事件图。…

大模型基本原理(四)——如何武装ChatGPT

传统的LLM存在几个短板&#xff1a;编造事实、计算不准确、数据过时等&#xff0c;为了应对这几个问题&#xff0c;可以借助一些外部工具或数据把AI武装起来。 实现这一思路的框架包括RAG、PAL、ReAct。 1、RAG&#xff08;检索增强生成&#xff09; LLM生成的内容会受到训练…

Qt监控设备离线检测/实时监测设备上下线/显示不同的状态图标/海康大华宇视华为监控系统

一、前言说明 监控系统中一般有很多设备&#xff0c;有些用户希望知道每个设备是否已经上线&#xff0c;最好有不同的状态图标提示&#xff0c;海康的做法是对设备节点的图标和颜色变暗处理&#xff0c;离线的话就变暗&#xff0c;有可能是加了透明度&#xff0c;而大华的处理…

数据结构-栈和队列的应用

目录 前言一、栈的应用二、队列的应用&#xff08;农夫过河问题&#xff09;2.1 问题描述2.2 算法选择2.3 算法精化2.4 算法实现2.5 问题结果 总结 前言 本篇文章使用两个例子说明栈和队列的应用&#xff0c; 对于迷宫问题&#xff0c;使用栈实现深度优先策略解决迷宫问题&…

Acwing-基础算法课笔记之基础算法(差分)

Acwing-基础算法课笔记之基础算法&#xff08;差分&#xff09; 一、一维差分1、差分的概念2、差分思想 二、二维差分操作流程 一、一维差分 1、差分的概念 对于一个给定的序列a&#xff0c;它的差分序列b定义为&#xff1a; b [ 1 ] a [ 1 ] b[1]a[1] b[1]a[1]&#xff0c…

SkyWalking 10.1.0 实战:从零构建全链路监控,解锁微服务性能优化新境界

文章目录 前言一、集成SkyWalking二、SkyWalking使用三、SkyWalking性能剖析四、SkyWalking 告警推送4.1 配置告警规则4.2 配置告警通知地址4.3 下发告警信息4.4 测试告警4.5 慢SQL查询 总结 前言 在传统监控系统中&#xff0c;我们通过进程监控和日志分析来发现系统问题&…

【动态规划】风扫枯杨,满地堆黄叶 - 9. 完全背包问题

本篇博客给大家带来的是完全背包问题之动态规划解法技巧. &#x1f40e;文章专栏: 动态规划 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&#x1f680; 要开心要快乐顺…

MyBatis的工作流程是怎样的?

大家好&#xff0c;我是锋哥。今天分享关于【MyBatis的工作流程是怎样的&#xff1f;】面试题。希望对大家有帮助&#xff1b; MyBatis的工作流程是怎样的&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MyBatis 的工作流程可以分为几个主要的步骤&…

python-leetcode 25.环形链表

题目&#xff1a; 给定一个链表的头节点head,判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪next指针再次到达&#xff0c;则链表中存在环。为了表示给定链表中的环&#xff0c;评测系统内部使用整数pos来表示链表尾连接到链表中的位置&#xff08;…

瑞芯微开发板/主板Android调试串口配置为普通串口方法 深圳触觉智能科技分享

本文介绍瑞芯微开发板/主板Android调试串口配置为普通串口方法&#xff0c;不同板型找到对应文件修改&#xff0c;修改的方法相通。触觉智能RK3562开发板演示&#xff0c;搭载4核A53处理器&#xff0c;主频高达2.0GHz&#xff1b;内置独立1Tops算力NPU&#xff0c;可应用于物联…

Datawhale 组队学习 Ollama教程 task1

一、Ollama 简介 比喻&#xff1a;Ollama 就像是一个“魔法箱子”&#xff0c;里面装满了各种大型语言模型&#xff08;LLM&#xff09;。你不需要懂复杂的魔法咒语&#xff08;配置&#xff09;&#xff0c;只需要轻轻一按&#xff08;一条命令&#xff09;&#xff0c;就能让…

vulnhub 靶场 —— NullByte

免责声明 本博客文章仅供教育和研究目的使用。本文中提到的所有信息和技术均基于公开来源和合法获取的知识。本文不鼓励或支持任何非法活动&#xff0c;包括但不限于未经授权访问计算机系统、网络或数据。 作者对于读者使用本文中的信息所导致的任何直接或间接后果不承担任何…

使用 meshgrid函数绘制网格点坐标的原理与代码实现

使用 meshgrid 绘制网格点坐标的原理与代码实现 在 MATLAB 中&#xff0c;meshgrid 是一个常用函数&#xff0c;用于生成二维平面网格点的坐标矩阵。本文将详细介绍如何利用 meshgrid 函数生成的矩阵绘制网格点的坐标&#xff0c;并给出具体的代码实现和原理解析。 实现思路 …

【STM32系列】利用MATLAB配合ARM-DSP库设计FIR数字滤波器(保姆级教程)

ps.源码放在最后面 设计IIR数字滤波器可以看这里&#xff1a;利用MATLAB配合ARM-DSP库设计IIR数字滤波器&#xff08;保姆级教程&#xff09; 前言 本篇文章将介绍如何利用MATLAB与STM32的ARM-DSP库相结合&#xff0c;简明易懂地实现FIR低通滤波器的设计与应用。文章重点不在…

使用mermaid画流程图

本文介绍使用mermaid画流程图&#xff0c;并给出几个示例。 背景 目前&#xff0c;除有明确格式要求的文档外&#xff0c;笔者一般使用markdown写文档、笔记。当文档有图片时&#xff0c;使用Typora等软件可实时渲染&#xff0c;所见即所得。但如果文档接收方没有安装相关工具…