【Python】 基于Python实现日志聚合与分析工具:利用Logstash与Fluentd构建高效分布式日志系统

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门!

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界

在分布式系统中,日志数据的生成速度和数量呈指数级增长,传统的日志管理方式已无法满足现代企业对实时性、可扩展性和高效性的需求。本文深入探讨了如何使用Python结合Logstash和Fluentd等开源工具,构建一个高效的日志聚合与分析系统。通过详细的代码示例和中文注释,本文涵盖了日志收集、传输、存储、分析和可视化的全流程。我们将介绍Logstash和Fluentd的基本原理与配置方法,展示如何利用Python脚本实现日志的自定义处理与分析,并探讨在分布式环境下的优化策略。最后,本文还提供了一个完整的示例项目,帮助读者快速上手并应用于实际生产环境中。通过本文的学习,读者将能够掌握构建高效、可扩展日志管理系统的关键技术,为提升系统运维效率和业务决策能力提供有力支持。

目录

  1. 引言
  2. 日志聚合与分析概述
  3. 工具介绍:Logstash与Fluentd
  4. 环境搭建与配置
    • 4.1 安装与配置Logstash
    • 4.2 安装与配置Fluentd
  5. 使用Python进行日志收集
    • 5.1 Python日志模块简介
    • 5.2 自定义日志收集脚本
  6. 使用Python与Logstash集成
    • 6.1 Logstash输入插件配置
    • 6.2 Logstash过滤插件配置
    • 6.3 Logstash输出插件配置
    • 6.4 Python与Logstash的交互示例
  7. 使用Python与Fluentd集成
    • 7.1 Fluentd输入插件配置
    • 7.2 Fluentd过滤插件配置
    • 7.3 Fluentd输出插件配置
    • 7.4 Python与Fluentd的交互示例
  8. 日志数据的存储与索引
    • 8.1 Elasticsearch简介
    • 8.2 Logstash与Elasticsearch的集成
    • 8.3 Fluentd与Elasticsearch的集成
  9. 日志分析与可视化
    • 9.1 Kibana简介与配置
    • 9.2 使用Kibana进行日志可视化
    • 9.3 Python进行日志数据分析
    • 9.4 可视化分析示例
  10. 实时监控与报警
    • 10.1 实时日志监控的重要性
    • 10.2 使用Elasticsearch Watcher进行报警
    • 10.3 Python实现自定义报警机制
  11. 案例分析:分布式系统日志分析
    • 11.1 系统架构概述
    • 11.2 日志收集与聚合流程
    • 11.3 日志分析与故障排查
  12. 优化与性能调优
    • 12.1 日志系统的性能瓶颈
    • 12.2 Logstash与Fluentd的优化策略
    • 12.3 Python脚本的性能优化
  13. 安全性与合规性考虑
    • 13.1 日志数据的安全传输
    • 13.2 日志数据的访问控制
    • 13.3 合规性要求与日志管理
  14. 示例项目实战
    • 14.1 项目结构
    • 14.2 配置文件详解
    • 14.3 Python脚本实现
    • 14.4 系统部署与测试
  15. 总结与展望

1. 引言

在现代分布式系统中,日志是运维人员和开发者排查问题、优化性能的重要依据。随着系统规模的扩大和复杂度的增加,日志数据的生成速度和数量也急剧上升,传统的手工收集和分析方式已经无法满足需求。为了高效地管理和利用日志数据,构建一个自动化、可扩展的日志聚合与分析系统显得尤为重要。本文将介绍如何基于Python实现一个全面的日志聚合与分析工具,结合Logstash和Fluentd等开源工具,打造一个高效的分布式日志系统。

2. 日志聚合与分析概述

日志聚合与分析系统旨在收集分布式系统中各个组件生成的日志数据,进行集中存储、处理和分析,以便于实时监控、故障排查和业务分析。一个典型的日志系统通常包括以下几个核心功能:

  1. 日志收集:从不同来源收集日志数据,包括应用程序日志、系统日志、网络日志等。
  2. 日志传输:将收集到的日志数据传输到集中存储或处理平台。
  3. 日志存储:高效地存储大量日志数据,支持快速检索和查询。
  4. 日志分析:对存储的日志数据进行处理和分析,提取有价值的信息。
  5. 日志可视化:通过图表和仪表盘展示分析结果,帮助用户直观理解日志数据。
  6. 实时监控与报警:实时监控日志数据中的异常情况,并在发现问题时及时报警。

为了实现上述功能,业界常用的工具包括Logstash、Fluentd、Elasticsearch和Kibana等。本文将详细介绍如何使用这些工具,并结合Python脚本,实现一个完整的日志聚合与分析系统。

3. 工具介绍:Logstash与Fluentd

在日志管理领域,Logstash和Fluentd是两款广受欢迎的日志收集和处理工具。它们各自有着不同的特点和优势。

3.1 Logstash

Logstash是由Elastic公司开发的开源数据收集引擎,广泛应用于日志收集、处理和传输。它支持多种输入源、过滤器和输出目标,能够灵活地处理各种类型的数据。Logstash与Elasticsearch和Kibana(统称为ELK Stack)结合使用,可以实现强大的日志分析和可视化功能。

主要特点:

  • 多种输入源:支持文件、网络协议(如TCP、UDP)、消息队列(如Kafka)、数据库等多种数据源。
  • 强大的过滤能力:内置多种过滤器,如grok、date、mutate等,支持自定义插件扩展。
  • 灵活的输出目标:支持Elasticsearch、文件、数据库、消息队列等多种输出方式。
  • 可扩展性:通过插件机制,可以方便地扩展Logstash的功能。

3.2 Fluentd

Fluentd是由Treasure Data开发的开源数据收集器,旨在为日志收集和处理提供统一的解决方案。Fluentd拥有轻量级、高性能和高度可扩展的特点,广泛应用于云原生和微服务架构中。

主要特点:

  • 统一的数据模型:Fluentd使用统一的数据格式(称为Event),简化了不同数据源和目标之间的集成。
  • 插件生态丰富:拥有超过500个插件,支持各种输入、输出和过滤功能。
  • 高性能:采用高效的多线程架构,支持高吞吐量的数据处理。
  • 易于扩展:通过编写Ruby或C语言插件,可以轻松扩展Fluentd的功能。

3.3 Logstash与Fluentd的比较

特性 Logstash Fluentd
语言 JRuby(基于Java) C语言和Ruby
性能 较高的内存消耗,适合中等规模日志 高性能,适合大规模分布式系统
插件生态 丰富,但主要集中在ELK Stack 非常丰富,适用于各种场景
配置文件 使用专有的配置语法 使用统一的配置格式(YAML)
易用性 配置较为复杂 配置简洁,易于上手

根据具体需求,开发者可以选择适合的工具,或者将两者结合使用,以充分发挥各自的优势。

4. 环境搭建与配置

在开始实现日志聚合与分析系统之前,需要搭建相关的环境,并安装配置所需的工具。本文将以Logstash和Fluentd为例,介绍它们的安装与基本配置。

4.1 安装与配置Logstash

步骤1:下载和安装Logstash

首先,访问Logstash官网下载适用于操作系统的Logstash安装包。以Ubuntu为例,可以使用以下命令安装:

# 导入Elastic GPG key
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

# 安装apt-transport-https
sudo apt-get install apt-transport-https

# 添加Elastic仓库
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

# 更新包索引并安装Logstash
sudo apt-get update
sudo apt-get install logstash

步骤2:配置Logstash

Logstash的配置文件通常位于/etc/logstash/conf.d/目录下,文件扩展名为.conf。一个基本的配置文件包含三个部分:输入(input)、过滤(filter)和输出(output)。

创建一个名为logstash.conf的配置文件:

sudo nano /etc/logstash/conf.d/logstash.conf

在文件中添加以下内容:

input {
    beats {
        port => 5044
    }
}

filter {
    grok {
        match => { "message" => "%{COMMONAPACHELOG}" }
    }
    date {
        match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
    }
}

output {
    elasticsearch {
        hosts => ["localhost:9200"]
        index => "logstash-%{+YYYY.MM.dd}"
    }
    stdout { codec => rubydebug }
}

配置说明:

  • Input部分:使用Beats输入插件,监听5044端口,接收来自Filebeat等Beats客户端发送的日志数据。
  • Filter部分:使用Grok过滤器解析Apache日志格式,并使用Date过滤器将时间戳转换为标准格式。
  • Output部分:将处理后的日志数据发送到本地Elasticsearch实例,并在控制台输出调试信息。

步骤3:启动Logstash

启动并启用Logstash服务:

sudo systemctl start logstash
sudo systemctl enable logstash

4.2 安装与配置Fluentd

步骤1:安装Fluentd

Fluentd有多种安装方式,可以通过包管理器、Docker或源码安装。以使用td-agent(Fluentd的稳定发行版)为例,在Ubuntu上安装:

# 导入Treasure Data的GPG key
curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-bionic-td-agent4.sh | sh

步骤2:配置Fluentd

Fluentd的配置文件通常位于/etc/td-agent/td-agent.conf。编辑配置文件:

sudo nano /etc/td-agent/td-agent.conf

添加以下内容作为示例配置:

<source>
  @type forward
  port 24224
</source>

<match **>
  @type elasticsearch
  host localhost
  port 9200
  logstash_format true
  include_tag_key true
  tag_key @log_name
</match>

配置说明:

  • Source部分:使用Forward输入插件,监听24224端口,接收来自Fluentd客户端发送的日志数据。
  • Match部分:将所有匹配的日志数据发送到本地Elasticsearch实例,使用Logstash格式进行索引。

步骤3:启动Fluentd

启动并启用Fluentd服务:

sudo systemctl start td-agent
sudo systemctl enable td-agent

5. 使用Python进行日志收集

Python作为一门强大的编程语言,拥有丰富的标准库和第三方库,适合用于日志的收集、处理和分析。本文将介绍如何使用Python进行日志收集,并将其集成到Logstash和Fluentd中。

5.1 Python日志模块简介

Python内置的logging模块提供了强大的日志记录功能,支持多种日志级别、日志格式和输出目标。通过合理配置,可以将日志数据发送到不同的目的地,如文件、控制台、远程服务器等。

基本用法示例:

import logging

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s %(levelname)s %(message)s',
    filename='app.log',
    filemode='a'
)

# 记录日志
logging.info('这是一个信息日志')
logging.error('这是一个错误日志')

5.2 自定义日志收集脚本

为了实现更灵活的日志收集,开发者可以编写自定义的Python脚本,收集特定的日志数据,并通过网络协议(如HTTP、TCP)发送到Logstash或Fluentd。

以下是一个简单的示例,演示如何使用Python收集系统日志并通过HTTP发送到Logstash。

步骤1:安装必要的库

pip install requests

步骤2:编写日志收集与发送脚本

import logging
import requests
import time
import json

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s %(levelname)s %(message)s',
    filename='system.log',
    filemode='a'
)

def send_log_to_logstash(log_data, logstash_url):
    """
    通过HTTP将日志数据发送到Logstash
    :param log_data: 字典格式的日志数据
    :param logstash_url: Logstash的HTTP输入端点
    """
    headers = {
   'Content-Type': 'application/json'}
    try:
        response = requests.post(logstash_url, data=json.dumps(log_data), headers=headers)
        if response.status_code == 200:
            logging.info('日志成功发送到Logstash')
        else:
            logging.error(f'发送日志失败,状态码: {
     response.status_code}')
    except Exception as e:
        logging.error(f'发送日志时发生异常: {
     e}')

def collect_system_metrics():
    """
    模拟收集系统指标数据
    :return: 字典格式的系统指标
    """
    # 这里可以集成psutil等库收集实际的系统指标
    return {
   
        'timestamp': time.strftime("%Y-%m-%d %H:%M:%S"),
        'cpu_usage': 55.5,  # 示例数据
        'memory_usage': 70.2  # 示例数据
    }

if __name__ == "__main__":
    logstash_http_url = 'http://localhost:8080/logs'  # 替换为实际的Logstash HTTP输入端点
    while True:
        metrics = collect_system_metrics()
        send_log_to_logstash(metrics, logstash_http_url)
        logging.info(f'收集并发送系统指标: {
     metrics}')
        time.sleep(60)  # 每60秒收集一次

代码说明:

  • send_log_to_logstash函数:将日志数据通过HTTP POST请求发送到Logstash的HTTP输入端点。
  • collect_system_metrics函数:模拟收集系统指标数据,可以使用psutil库获取实际的CPU和内存使用率。
  • 主程序:每60秒收集一次系统指标,并将其发送到Logstash,同时记录日志到本地文件。

步骤3:运行脚本

确保Logstash的HTTP输入插件已正确配置,并启动Logstash服务。然后运行Python脚本:

python log_sender.py

6. 使用Python与Logstash集成

Logstash作为一个强大的数据收集和处理工具,可以与Python脚本无缝集成,实现灵活的日志处理流程。本文将介绍如何通过Python与Logstash进行集成,包括输入插件、过滤插件和输出插件的配置,以及如何通过Python脚本发送日志数据到Logstash。

6.1 Logstash输入插件配置

Logstash支持多种输入插件,用于接收不同来源的数据。本文以HTTP输入插件为例,展示如何配置Logstash以接收来自Python脚本发送的日志数据。

配置示例:

input {
    http {
        port => 8080
        codec => json
    }
}

说明:

  • http输入插件监听8080端口,接收HTTP POST请求。
  • codec设置为json,表示接收的数据为JSON格式,并自动解析为Logstash事件。

6.2 Logstash过滤插件配置

过滤插件用于对输入的数据进行处理和转换。常用的过滤插件包括Grok、Date、Mutate等。以下示例展示如何使用Grok和Date过滤器处理日志数据。

配置示例:

filter {
    grok {
        match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{WORD:metric} %{NUMBER:value}" }
    }
    date {
        match => [ "timestamp", "ISO8601" ]
    }
}

说明:

  • Grok过滤器:解析消息字段,将其拆分为timestampmetricvalue三个字段。
  • Date过滤器:将timestamp字段转换为标准的时间格式。

6.3 Logstash输出插件配置

输出插件用于将处理后的数据发送到指定的目标。本文以Elasticsearch和控制台输出为例,展示如何配置输出插件。

配置示例:

output {
    elasticsearch {
        hosts => ["localhost:9200"]
        index => "python-logstash-%{+YYYY.MM.dd}"
    }
    stdout { codec => rubydebug }
}

说明:

  • Elasticsearch输出插件:将日志数据发送到本地的Elasticsearch实例,并按照日期创建索引。
  • Stdout输出插件:将日志数据输出到控制台,便于调试和查看。

6.4 Python与Logstash的交互示例

以下示例展示了如何使用Python脚本通过HTTP发送日志数据到Logstash。

import requests
import json
import time
import logging

# 配置日志
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s %(levelname)s %(message)s',
    filename='logstash_sender.log',
    filemode='a'
)

def send_log_to_logstash(log_data, logstash_url):
    """
    通过HTTP将日志数据发送到Logstash
    :param log_data: 字典格式的日志数据
    :param logstash_url: Logstash的HTTP输入端点
    """
    headers = {
   'Content-Type': 'application/json'}
    try:
        response = requests.post(logstash_url, data=json.dumps(log_data), headers=headers)
        if response.status_code == 200:
            logging.info('日志成功发送到Logstash')
        else:
            logging.error(f'发送日志失败,状态码: {
     response.status_code}')
    except Exception as e:
        logging.error(f'发送日志时发生异常: {
     e}')

def collect_application_logs():
    """
    模拟收集应用日志数据
    :return: 字典格式的应用日志
    """
    return {
   
        'timestamp': time.strftime("%Y-%m-%dT%H:%M:%S"),
        'metric': 'cpu_usage',
        'value': 65.3  # 示例数据
    }

if __name__ == "__main__":
    logstash_http_url = 'http://localhost:8080'  # Logstash HTTP输入端点
    while True:
        log_entry = collect_application_logs()
        send_log_to_logstash(log_entry, logstash_http_url)
        logging.info(f'收集并发送应用日志: {
     log_entry}')
        time.sleep(30)  # 每30秒发送一次

代码说明:

  • send_log_to_logstash函数:通过HTTP POST请求将日志数据发送到Logstash的HTTP输入端点。
  • collect_application_logs函数:模拟收集应用日志数据,可以根据实际需求修改为收集真实的应用日志。
  • 主程序:每30秒收集一次应用日志,并发送到Logstash,同时记录日志到本地文件。

运行脚本:

确保Logstash服务已启动,并正确配置了HTTP输入插件。然后运行Python脚本:

python logstash_integration.py

通过上述步骤,Python脚本将定期发送日志数据到Logstash,Logstash将其处理后存储到Elasticsearch,并在控制台输出调试信息。

7. 使用Python与Fluentd集成

Fluentd作为一款高性能的日志收集工具,可以与Python脚本无缝集成,实现高效的日志传输和处理。本文将介绍如何通过Python与Fluentd进行集成,包括输入插件、过滤插件和输出插件的配置,以及如何通过Python脚本发送日志数据到Fluentd。

7.1 Fluentd输入插件配置

Fluentd支持多种输入插件,用于接收不同来源的数据。本文以Forward输入插件为例,展示如何配置Fluentd以接收来自Python脚本发送的日志数据。

配置示例:

<source>
  @type forward
  port 24224
</source>

说明:

  • forward输入插件监听24224端口,接收来自Fluentd客户端发送的日志数据。

7.2 Fluentd过滤插件配置

过滤插件用于对输入的数据进行处理和转换。常用的过滤插件包括Parser、Grep、Record Transformer等。以下示例展示如何使用Parser和Record Transformer过滤器处理日志数据。

配置示例:

<filter **>
  @type parser
  format json
  key_name message
  reserve_data true
</filter>

<filter **>
  @type record_transformer
  <record>
    hostname "#{Socket.gethostname}"
  </record>
</filter>

说明:

  • Parser过滤器

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

支持向量机入门指南:从原理到实践

目录 1 支持向量机的基本概念 1.2 数学表达 2 间隔与支持向量 2.1 几何间隔 2.2 支持向量的概念 2.3 规范化超平面 2.4 支持向量的深入分析 2.4.1 支持向量的特征 2.4.2 支持向量的作用 2.4.3 支持向量的代数表示 2.5 KKT条件 3 最优化问题 3.1 问题的形成 3.2 规…

【时时三省】(C语言基础)动态内存函数calloc

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 calloc calloc函数也用来动态内存分配 原型如下: void* calloc&#xff08;size&#xff3f;t num, size&#xff3f;t size&#xff09;&#xff1b; 它们两个的区别是 它是需要两个参数…

Flutter中添加全局防护水印的实现

随着版权意识的加强&#xff0c;越来越多的应用开始在应用内部增加各种各样的水印信息&#xff0c;防止核心信息泄露&#xff0c;便于朔源。 效果如下&#xff1a; 在Flutter中增加全局水印的方式&#xff0c;目前有两种实现。 方案一&#xff0c;在native层添加一个遮罩层&a…

uniapp - 小程序实现摄像头拍照 + 水印绘制 + 反转摄像头 + 拍之前显示时间+地点 + 图片上传到阿里云服务器

前言 uniapp&#xff0c;碰到新需求&#xff0c;反转摄像头&#xff0c;需要在打卡的时候对上传图片加上水印&#xff0c;拍照前就显示当前时间日期地点&#xff0c;拍摄后在呈现刚才拍摄的图加上水印&#xff0c;最好还需要将图片上传到阿里云。 声明 水印部分代码是借鉴的…

图像处理-Ch7-小波函数

个人博客&#xff01;无广告观看&#xff0c;因为这节内容太多了&#xff0c;有点放不下&#xff0c;分了三节 文章目录 多分辨率展开(Multi-resolution Expansions)序列展开(Series Expansions)尺度函数(Scaling Function)例&#xff1a;哈尔尺度函数(Haar scaling func)多分…

本地小主机安装HomeAssistant开源智能家居平台打造个人AI管家

文章目录 前言1. 添加镜像源2. 部署HomeAssistant3. HA系统初始化配置4. HA系统添加智能设备4.1 添加已发现的设备4.2 添加HACS插件安装设备 5. 安装cpolar内网穿透5.1 配置HA公网地址 6. 配置固定公网地址 前言 大家好&#xff01;今天我要向大家展示如何将一台迷你的香橙派Z…

Rocky Linux下安装meld

背景介绍&#xff1a; meld是一款Linux系统下的用于 文件夹和文件的比对软件&#xff0c;非常常用&#xff1b; 故障现象&#xff1a; 输入安装命令后&#xff0c;sudo yum install meld&#xff0c;报错。 12-31 22:12:17 ~]$ sudo yum install meld Last metadata expirat…

数据结构与算法之动态规划: LeetCode 337. 打家劫舍 III (Ts版)

打家劫舍 III https://leetcode.cn/problems/house-robber-iii/description/ 描述 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为 root除了 root 之外&#xff0c;每栋房子有且只有一个“父“房子与之相连一番侦察之后&#xff0c;聪明的小…

chatwoot 开源客服系统搭建

1. 准备开源客服系统&#xff08;我是用的Chatwoot &#xff09; 可以选择以下开源客服系统作为基础&#xff1a; Chatwoot: 功能强大&#xff0c;支持多渠道客户对接&#xff0c;&#xff08;支持app&#xff0c;web&#xff09;。Zammad: 现代的开源工单系统。FreeScout: 免…

sentinel-请求限流、线程隔离、本地回调、熔断

请求限流&#xff1a;控制QPS来达到限流的目的 线程隔离&#xff1a;控制线程数量来达到限流的目录 本地回调&#xff1a;当线程被限流、隔离、熔断之后、就不会发起远程调用、而是使用本地已经准备好的回调去提醒用户 服务熔断&#xff1a;熔断也叫断路器&#xff0c;当失败、…

鸿蒙开发-ArkTS中使用Path组件

在ArkTS中使用Path组件&#xff0c;可以按照以下步骤进行&#xff1a; 一、了解Path组件 Path组件用于根据绘制路径生成封闭的自定义形状。该组件从API Version 7开始支持&#xff0c;并随着后续版本的更新可能增加新的功能。Path组件支持多种属性和方法&#xff0c;用于定义…

高效管理 Nginx 的利器:nginxWebUI 指南和 Docker 部署安装过程

前言 Nginx WebUI 是一个为 Nginx 提供图形化管理界面的工具。通过 WebUI&#xff0c;用户可以轻松管理 Nginx 配置&#xff0c;而无需直接编辑配置文件&#xff0c;尤其适合新手用户和频繁修改配置的场景。 官网文档&#xff1a;nginxWebUI - 文档 本文将分享为什么选择 ngin…

Linux网络 | 理解Web路径 以及 实现一个简单的helloworld网页

前言&#xff1a;本节内容承接上节课的http相关的概念&#xff0c; 主要是实现一个简单的接收http协议请求的服务。这个程序对于我们理解后面的http协议的格式&#xff0c;报头以及网络上的资源的理解&#xff0c; 以及本节web路径等等都有着重要作用。 可以说我们就用代码来理…

2.5万字 - 用TensorFlow和PyTorch分别实现五种经典模型

在深度学习领域&#xff0c;TensorFlow和PyTorch是两大广泛使用的框架&#xff0c;各有其独特的特性和优势。随着人工智能技术的快速发展&#xff0c;越来越多的开发者需要熟练掌握这两种工具&#xff0c;以便在实际项目中选择适合的框架进行高效开发。 目录 入门友好介绍 Te…

【C++】2029:【例4.15】水仙花数

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述&#x1f4af;我的做法思路分析优势不足之处 &#x1f4af;老师的做法思路分析优势不足 &#x1f4af;对比和优化实现方式对比优化思路和操作1. 直接分解数字的各位…

结合长短期记忆网络(LSTM)和无迹卡尔曼滤波器(UKF)的技术在机器人导航和状态估计中的应用前景

结合长短期记忆网络(LSTM)和无迹卡尔曼滤波器(UKF)的技术在机器人导航和状态估计中具有广泛的应用前景。如有滤波、导航方面的代码定制需求,可通过文末卡片联系作者获得帮助 文章目录 结合LSTM和UKF的背景结合LSTM和UKF的优势应用实例研究现状MATLAB代码示例结论结合LSTM和…

Android14 CTS-R6和GTS-12-R2不能同时测试的解决方法

背景 Android14 CTS r6和GTS 12-r1之后&#xff0c;tf-console默认会带起OLC Server&#xff0c;看起来olc server可能是想适配ATS(android-test-station)&#xff0c;一种网页版可视化、可配置的跑XTS的方式。这种网页版ATS对测试人员是比较友好的&#xff0c;网页上简单配置下…

告别Kibana:Elasticsearch 桌面客户端的新变革

告别Kibana&#xff1a;Elasticsearch 桌面客户端的新变革 在大数据处理与分析领域&#xff0c;Elasticsearch 及其相关技术的应用日益广泛。长期以来&#xff0c;Kibana 在数据可视化与查询管理方面占据重要地位&#xff0c;但随着技术的不断发展&#xff0c;用户对于更高效、…

HTML5实现喜庆的新年快乐网页源码

HTML5实现喜庆的新年快乐网页源码 前言一、设计来源1.1 主界面1.2 关于新年界面1.3 新年庆祝活动界面1.4 新年活动组织界面1.5 新年祝福订阅界面1.6 联系我们界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现喜庆的新年快乐网页源码&#xff0c;春节新年网…

【广州计算机学会、广州互联网协会联合主办 | ACM独立出版 | 高录用】第四届大数据、信息与计算机网络国际学术会议(BDICN 2025)

第四届大数据、信息与计算机网络国际学术会议&#xff08;BDICN 2025&#xff09;定于2025年01月10-12日在中国广州举行。会议旨在为从事“大数据”、“计算机网络”与“信息”研究的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术&#xff0c;了解学术发…