当前位置: 首页 > news >正文

第十八天 - ELK日志体系集成 - 自定义Logstash插件 - 练习:分布式日志分析平台

前言

在分布式系统和微服务架构中,日志管理是监控系统健康、排查故障的核心环节。ELK(Elasticsearch、Logstash、Kibana)作为业界领先的日志分析解决方案,能够实现日志采集、处理、存储与可视化的全链路管理。本文将手把手带你掌握ELK体系的集成方法、Logstash插件开发技巧,并通过实战构建一个企业级分布式日志分析平台。


一、ELK日志体系深度解析

1.1 核心组件架构

ELK技术栈由三大组件构成:

  • Logstash:日志收集与处理管道(支持200+插件)

  • Elasticsearch:分布式搜索与分析引擎

  • Kibana:数据可视化与仪表盘平台

    1.2 快速部署实践

1.2.1 Docker Compose部署(单节点)
version: '3'  
services:  elasticsearch:  image: elasticsearch:8.5.1  ports:  - "9200:9200"  environment:  - discovery.type=single-node  logstash:  image: logstash:8.5.1  ports:  - "5044:5044"  volumes:  - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf  kibana:  image: kibana:8.5.1  ports:  - "5601:5601"  
1.2.2 Logstash基础配置
# logstash.conf  
input {  file {  path => "/var/log/nginx/access.log"  start_position => "beginning"  }  
}  filter {  grok {  match => { "message" => "%{COMBINEDAPACHELOG}" }  }  date {  match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]  }  
}  output {  elasticsearch {  hosts => ["elasticsearch:9200"]  index => "nginx-logs-%{+YYYY.MM.dd}"  }  
}  

二、自定义Logstash插件开发

2.1 插件开发场景

当遇到以下需求时需自定义插件:

  • 解析特殊日志格式(如二进制协议)
  • 对接私有日志存储系统
  • 实现定制化数据处理逻辑

2.2 开发环境搭建

# 安装插件生成工具  
bin/logstash-plugin generate --type filter --name ip_geo --path ./plugins  # 目录结构  
plugins/  
└── logstash-filter-ip_geo  ├── lib  │   └── logstash  │       └── filters  │           └── ip_geo.rb  ├── CHANGELOG.md  └── Gemfile  

2.3 实现IP地理位置过滤插件

# ip_geo.rb  
require "logstash/filters/base"  
require "maxminddb"  class LogStash::Filters::IpGeo < LogStash::Filters::Base  config_name "ip_geo"  # 配置参数  config :source, :validate => :string, :required => true  config :database, :validate => :string, :default => "/GeoLite2-City.mmdb"  public  def register  @geoip = MaxMindDB.new(@database)  end  public  def filter(event)  ip = event.get(@source)  return unless ip  result = @geoip.lookup(ip)  return unless result.found?  event.set("[geo][country]", result.country.name)  event.set("[geo][city]", result.city.name)  event.set("[geo][location]", [result.location.longitude, result.location.latitude])  filter_matched(event)  end  
end  

2.4 插件使用示例

filter {  ip_geo {  source => "client_ip"  database => "/etc/logstash/GeoLite2-City.mmdb"  }  
}  

三、实战:分布式日志分析平台

3.1 场景需求

  • 采集10+微服务的结构化日志
  • 实时分析错误日志并触发告警
  • 可视化展示API请求趋势与地理分布

3.2 架构设计

+----------------+      +---------------+      +-----------------+  
|  微服务集群    |      |   Kafka       |      |  Elasticsearch  |  
|  - App1~AppN   +----->  消息队列      +----->   集群(3节点)   |  
+----------------+      +-------+-------+      +--------+--------+  |                       |  +-------v-------+        +------v------+  |  Logstash     |        |  Kibana     |  | 处理集群      |        | 可视化平台  |  +---------------+        +-------------+  

3.3 关键配置实现

3.3.1 日志采集端(Filebeat)
# filebeat.yml  
output.kafka:  hosts: ["kafka1:9092", "kafka2:9092"]  topic: "app-logs"  codec.json:  pretty: false  
3.3.2 Logstash处理管道
input {  kafka {  bootstrap_servers => "kafka1:9092,kafka2:9092"  topics => ["app-logs"]  codec => json  }  
}  filter {  # 统一时间戳格式  date {  match => [ "timestamp", "ISO8601" ]  }  # 错误日志标记  if [level] == "ERROR" {  mutate { add_tag => ["error"] }  }  
}  output {  if "error" in [tags] {  elasticsearch {  hosts => ["es1:9200", "es2:9200"]  index => "error-logs-%{+YYYY.MM}"  }  # 触发告警到Slack  http {  url => "https://hooks.slack.com/services/xxx"  http_method => "post"  format => "json"  message => '{"text":"Error occurred: %{message}"}'  }  }  elasticsearch {  hosts => ["es1:9200", "es2:9200"]  index => "app-logs-%{+YYYY.MM.dd}"  }  
}  
3.3.3 Kibana仪表盘配置
  1. 错误趋势图
    • 使用Lens可视化,按时间聚合错误日志数量
  2. 地理分布图
    • 使用Maps功能展示客户端IP地理位置
  3. 字段统计表
    • Data Table展示TOP 10错误类型

四、高级优化与安全加固

4.1 性能调优技巧

  • Elasticsearch优化

    # elasticsearch.yml  
    thread_pool.write.queue_size: 1000  
    indices.memory.index_buffer_size: 30%  
    
  • Logstash管道并行

    pipeline.workers: 8  
    pipeline.batch.size: 125  
    

4.2 安全防护方案

  • 传输加密

    # 生成SSL证书  
    bin/elasticsearch-certutil ca  
    
  • 权限控制

    # 创建角色  
    POST /_security/role/log_reader  
    {  "indices": [  {  "names": ["app-logs-*"],  "privileges": ["read"]  }  ]  
    }  
    

五、常见问题排查指南

5.1 日志采集失败

  • 检查步骤
    1. 确认Filebeat进程状态
    2. 查看Kafka主题消息堆积情况
    3. 验证Logstash输入插件配置

5.2 数据未写入ES

  • 诊断命令
    # 检查索引是否存在  
    curl http://es1:9200/_cat/indices?v  # 查看写入错误日志  
    tail -f /var/log/logstash/logstash-plain.log  
    

5.3 查询性能低下

  • 优化方案
    1. 使用Hot-Warm架构分离新旧数据
    2. 对常用查询字段添加索引
    3. 启用分片请求缓存

结语

通过本文的学习,您已掌握ELK体系的集成方法、Logstash插件开发技巧,并能够构建企业级分布式日志平台。建议在生产环境中逐步实施以下优化:

  1. 日志规范化:制定统一的日志格式标准
  2. 生命周期管理:设置索引滚动删除策略
  3. 智能化扩展:结合机器学习进行异常检测

相关文章:

第十八天 - ELK日志体系集成 - 自定义Logstash插件 - 练习:分布式日志分析平台

前言 在分布式系统和微服务架构中&#xff0c;日志管理是监控系统健康、排查故障的核心环节。ELK&#xff08;Elasticsearch、Logstash、Kibana&#xff09;作为业界领先的日志分析解决方案&#xff0c;能够实现日志采集、处理、存储与可视化的全链路管理。本文将手把手带你掌…...

HBuilderX中uni-app打包Android(apk)全流程超详细打包

一、Android生成打包证书 1、Android平台签名证书(.keystore)生成指南_android 签名生成-CSDN博客&#xff08;如果不上架应用商店可以跳过&#xff0c;可以使用云端证书&#xff09; 二、打开manifest.json配置基础设置 三、配置安卓应用图标 四、配置安卓启动页图片 五、…...

CTF web入门之命令执行

web29 文件名过滤 由于flag被过滤,需要进行文件名绕过,有以下几种方法: 1.通配符绕过 fla?.* 2.反斜杠绕过 fl\ag.php 3.双引号绕过 fl’‘ag’.php 还有特殊变量$1、内联执行等 此外 读取文件利用cat函数,输出利用system、passthru 、echo echo `nl flag.php`; ec…...

安宝特案例 | 某户外机房制造企业应用AR+作业流,规范制造过程,记录施工节点,保障交付质量

行业特点&#xff1a;产品客制化、依赖人工&#xff0c;工程量大、细节多&#xff0c;验收困难 户外通讯机房无疑是现代工业社会的“信息心脏”&#xff0c;承载着信息交换、传输与处理的重任。建设一座质量过关的户外通讯机房是保障通信稳定运行的基石。 通常建设一个户外通信…...

学习MySQL的第八天

海到无边天作岸 山登绝顶我为峰 一、数据库的创建、修改与删除 1.1 引言 在经过前面七天对于MySQL基本知识的学习之后&#xff0c;现在我们从基本的语句命令开始进入综合性的语句的编写来实现特定的需求&#xff0c;从这里开始需要我们有一个宏观的思想&…...

ESP8266 采集 DHT11 和 DS18B20 温湿度数据 MQTT 上传至 Home Assistant

ESP8266 采集 DHT11 和 DS18B20 温湿度数据 MQTT 上传至 Home Assistant DHT11 采集 DHT11 温湿度数据并通过 MQTT 联网上传至 Home Assistant 智能家居平台&#xff1b; Arduino 代码 #include <ESP8266WiFi.h> #include <PubSubClient.h> #include <Ardui…...

三、TorchRec中的Optimizer

TorchRec中的Optimizer 文章目录 TorchRec中的Optimizer前言一、嵌入后向传递与稀疏优化器融合如下图所示&#xff1a;二、上述图片的关键步骤讲解&#xff1a;三、优势四、与传统优化器对比总结 前言 TorchRec 模块提供了一个无缝 API&#xff0c;用于在训练中融合后向传递和…...

操作系统 4.1-I/O与显示器

外设工作起来 操作系统让外设工作的基本原理和过程&#xff0c;具体来说&#xff0c;它概括了以下几个关键步骤&#xff1a; 发出指令&#xff1a;操作系统通过向控制器中的寄存器发送指令来启动外设的工作。这些指令通常是通过I/O指令&#xff08;如out指令&#xff09;来实现…...

Qt 5.14.2 入门(三)基本知识理解

目录 一、新建项目后生成的三个文件的作用和内容1、.h文件&#xff1a;头文件&#xff08;如mainwindow.h&#xff09;2、.cpp文件&#xff1a;源文件&#xff08;如mainwindow.cpp&#xff09;3、main.cpp&#xff1a;主程序 二、信号和槽机制1、信号(Signal)2、槽(Slot)3、连…...

Java中常见的设计模式

Java中常见的设计模式 Java 中有 23 种经典设计模式&#xff0c;通常被分为三大类&#xff1a;创建型、结构型和行为型。每个设计模式都解决了不同类型的设计问题。以下是几种常见设计模式的总结&#xff0c;并附带了实际应用场景、示例代码和详细的注释说明。 一、创建型设计…...

nltk 是怎么和 Transformers(比如 BERT 模型)联动来处理文本的

&#x1f9e0; 一句话解释nltk&#xff1a; nltk 是一个用于自然语言处理&#xff08;NLP&#xff09;的 Python 库&#xff0c;功能包括分词、词性标注、命名实体识别、文本分类等。 全称是&#xff1a;Natural Language Toolkit&#xff08;自然语言工具包&#xff09; &…...

项目日志配置模板示例

1.新增application.properties配置 logging.configclasspath:logback-spring.xml spring.profiles.activedev 将项目部署到服务器时需要将dev修改为test后再进行打包部署 2.新增logback-spring.xml <?xml version"1.0" encoding"UTF-8"?> <…...

sql server统计小时数据中每日最大风速及风速对应的风向

客户提出一个需求&#xff0c;有历年逐小时的风速、风向资料&#xff0c;想获取历年最大的风速及风速对应的风向值&#xff0c;通过sql 怎么实现&#xff0c;这个统计&#xff0c;我认为主要考虑一个问题&#xff0c;就是数据重复性&#xff0c;所以我采用以下方法实现&#xf…...

【SQL】MySql常见的性能优化方式

MySQL性能优化的常用方式及对比说明 一、引言二、MySQL性能优化的常用方式及对比说明1. 索引优化1.1 合理创建索引​1.2 ​覆盖索引​1.3 ​索引下推 2. SQL语法优化2.1 ​避免低效操作​2.2 ​分页优化​2.3 ​JOIN优化​ 3. 配置与架构优化3.1 参数调优​3.2 ​读写分离与分库…...

Prometheus实现负载均衡并将多个实例数据汇总到一个主Prometheus

一、Prometheus实现负载均衡策略原理 要实现 Prometheus 的负载均衡并将多个 Prometheus 实例的数据汇总到一个主 Prometheus 实例中&#xff0c;可以结合 Prometheus 联邦&#xff08;Federation&#xff09; 和 负载均衡器 来进行配置。 这种方法的核心是在主 Prometheus 实例…...

力扣 — — 最长公共子序列

力扣 — — 最长公共子序列 最长公共子序列 题源&#xff1a;1143. 最长公共子序列 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 分析&#xff1a; 一道经典的题目&#xff1a;最长公共子序列(LCS) 题目大意&#xff1a;求两个字符串的最长公共序列。 算法&…...

通过AWS EKS 生成并部署容器化应用

今天给大家分享一个实战例子&#xff0c;如何在EKS上创建容器化应用并通过ALB来发布。先介绍一下几个基本概念&#xff1a; IAM, OpenID Connect (OIDC) 2014 年&#xff0c;AWS Identity and Access Management 增加了使用 OpenID Connect (OIDC) 的联合身份支持。此功能允许…...

GNSS静态数据处理

1 安装数据处理软件&#xff1a;仪器之星&#xff08;InStar &#xff09;和 Trimble Business Center 做完控制点静态后&#xff0c;我们需要下载GNSS数据&#xff0c;对静态数据进行处理。在处理之前需要将相关软件在自己电脑上安装好&#xff1a; 仪器之星&#xff08;InS…...

NVIDIA H100 vs A100:新一代GPU架构性能对比分析

一、核心架构演进对比 ‌Ampere架构&#xff08;A100&#xff09;‌采用台积电7nm工艺&#xff0c;集成540亿晶体管&#xff0c;配备6,912个CUDA核心和432个第三代Tensor Core&#xff0c;支持FP16、TF32和INT8精度计算。其显存子系统采用HBM2e技术&#xff0c;80GB版本带宽可…...

AI图像生成

要通过代码实现AI图像生成&#xff0c;可以使用深度学习框架如TensorFlow、PyTorch或GANs等技术。下面是一个简单的示例代码&#xff0c;演示如何使用GANs生成手写数字图像&#xff1a; import torch import torchvision import torchvision.transforms as transforms import …...

计算机考研一战上岸宁波大学经验分享

目录 话不多说先上分数 个人介绍 政治 英语二 数学二 408 复试 话不多说先上分数 初试排名15/65 复试79.81分&#xff0c;复试排名13/65 总成绩13/65&#xff0c;研招网招考50人 &#xff08;均为公开数据&#xff0c;非泄露复试信息&#xff09; 个人介绍 本人山东…...

泛微ECOLOGY9 记 数据展现集成 自定义开窗测试中对SQL 的IN语法转换存在BUG

背景 搭建流程时&#xff0c;需将明细表1中的合同字段 供明细表2中的合同开窗查询使用。 最终实现如下图&#xff1a; 选择 发票号时&#xff0c;自动带出明细表1中的采购合同号清单&#xff0c;然后在明细表2中开窗采购合同号时&#xff0c;只跳出明细表1中有的采购合同号&am…...

【Nginx】Nginx代理Tomcat配置及404问题解决

当Tomcat返回HTTP 404未找到错误时&#xff0c;可以通过以下两种方式设置跳转到指定地址&#xff1a; ① 在Tomcat应用内部配置错误页面跳转&#xff08;直接修改Tomcat的Web应用配置&#xff09; ② 在Nginx反向代理层拦截404错误并跳转&#xff08;无需修改Tomcat&#xff0c…...

【Vue】案例——To do list:

【Vue】案例——To do list&#xff1a; 一、案例介绍&#xff1a;二、效果展示&#xff08;如图&#xff09;三、主要功能&#xff1a;四、技术要点&#xff1a;补充&#xff1a;【Vue】Vue模板语法(点击可跳转)补充&#xff1a;【Vue】数据绑定&#xff08;单双向&#xff09…...

JVM不同环境不同参数配置文件覆盖

背景 需要在启动Java服务并且参数不同的场景&#xff0c;例如端口号在yml中的配置是这样的&#xff1a; server:port: 9100 覆盖配置对应JVM参数&#xff1a; java -jar xxxx.jar -Dserver.port12306 [JVM其他参数] 这样12306就会覆盖掉9100端口的配置作为启动配置 IDE…...

游戏引擎学习第215天

总结并为今天做铺垫 今天的工作内容是解决调试系统中的一个小问题。昨天我们已经完成了大部分的调试系统工作&#xff0c;但还有一个小部分没有完全处理&#xff0c;那就是关于如何层次化组织数据的问题。我们遇到的一个问题是&#xff0c;演示代码中仍有一个尚未解决的部分&a…...

C语言--求n以内的素数(质数)

求n以内的素数&#xff0c;可以用试除法或者埃拉托斯特尼筛法&#xff08;埃氏筛法&#xff09; 输入&#xff1a;数字n 输出&#xff1a;n以内所有的素数 不管是哪个方法&#xff0c;都有一个数学结论可以减少循环次数&#xff1a; 如果有一个数不是质数&#xff0c;那么它至…...

多版本go冲突问题

今天执行go build时遇到一个报错&#xff1a; compile: version “go1.22.7 (Red Hat 1.22.7-1.moduleel8.10.0700fd5cfc7a)” does not match go tool version “go1.23.4” 结果一查 which -a go 发现 当前系统居然有四个不同的位置都安装了go 于是先看go version&#xf…...

Windows 10系统出现无法使用键鼠的问题

有一位系统之家的小伙伴在升级Windows 10系统电脑的时候&#xff0c;出现键盘鼠标不能正常工作打问题&#xff0c;其实&#xff0c;遇到这个问题&#xff0c;有时只需重新启动计算机或断开连接并重新连接鼠标或键盘可以提供帮助&#xff0c;如果没有&#xff0c;可以看看下面系…...

NFC 数据传输

前言 初次接触NFC协议&#xff0c;很多人都会感觉困惑&#xff0c;搜索相关资料&#xff0c;大多数都介绍协议的理论及应用领域&#xff0c;数据传输的内容却很少&#xff0c;但对与开发人员来说&#xff0c;除了理论知识外&#xff0c;数据传输也是非常重要环节&#xff0c;尤…...

基于Streamlit的智能创业计划生成器开发实践

一、应用概述 在数字经济时代&#xff0c;创业者亟需高效工具进行系统化的商业规划。本文介绍的智能创业计划生成器基于Streamlit框架构建&#xff0c;整合了财务建模、时间轴规划、智能文档生成等核心功能。该工具通过模块化设计实现了九大创业要素的系统化配置&#xff0c;显…...

蓝桥杯单片机刷题——按键控制距离显示精度

设计要求 驱动超声波传感器&#xff0c;启动距离测量功能,并将其结果显示到数码管上&#xff0c;距离数据单位为m。 按键“S4”定义为“切换”按键&#xff0c;通过此按键切换距离的显示精度&#xff08;一位或两位小数&#xff09;。切换顺序如图所示。 数码管显示格式如下图…...

c++拷贝构造函数(深浅拷贝)+运算符重载

1拷贝构造函数 1.1定义 只有一个形参&#xff0c;且该形参是对本类类型对象的引用&#xff08;一般用const 修饰&#xff09;&#xff0c;在用已经存在的类类型对象穿件新对象是由编译器自动调用。&#xff08;是一种特殊构造&#xff0c;即初始化一个一模一样的新对象&#…...

操作系统 3.5-内存换入-请求调页

案例分析内存换入 内存换入分析&#xff1a; 内存换入&#xff08;Swapping&#xff09;是指操作系统将不常使用的内存页从物理内存&#xff08;RAM&#xff09;移动到磁盘上的交换空间&#xff08;Swap Space&#xff09;&#xff0c;以释放物理内存供其他进程使用。当需要访…...

stm32工程,拷贝到另一台电脑编译,错误提示头文件找不到cannot open source input file “core_cm4.h”

提示 cannot open source input file “core_cm4.h” ,找不到 [ core_cm4.h ] 这个头文件 . 于是我在原电脑工程文件里找也没有找到这个头文件 接下来查看原电脑keil的头文件引入配置,发现只引入了工程文件下的头文件, 那么core_cm4.h到底哪里来的? (到现在我也不清楚怎…...

使用platformio如何定位hard fault错误

这里写自定义目录标题 前言过程记录结语前言 hard fault是单片机开发过程中经常会遇到的问题,通常是内存溢出、野指针访问等导致,对于有经验的工程师,在代码改动不大的情况下,一般可以通过代码审查定位到问题原因,但也有很多情况下需要借助调试工具进行定位,像Keil就有比…...

全局异常处理器的基本使用

那使用全局异常处理器可以么&#xff1f; 是的&#xff0c;使用全局异常处理器是一个非常好的选择&#xff0c;因为它可以将异常处理逻辑集中化&#xff0c;避免在 Service 层或 Controller 层中重复编写异常处理代码。以下是使用全局异常处理器来处理添加用户时 username 唯一…...

python入门:简单介绍和python和pycharm软件安装/学习网址/pycharm设置(改成中文界面,主题,新建文件)

Python 目前是 AI 开发的首选语言 软件安装 python解释器 官网下载 Python |Python.org 勾选 Add python.exe to PATH 将python.exe添加到PATH 勾选这个选项会将Python的可执行文件路径添加到系统的环境变量PATH中。这样做的好处是&#xff0c;你可以在命令行中从任何位置直…...

众趣科技助力商家“以真示人”,让消费场景更真实透明

在当今的消费环境中&#xff0c;消费者权益保护问题日益凸显。无论是网购商品与实物不符、预定酒店民宿与图文描述差异大&#xff0c;还是游览景区遭遇“照骗”&#xff0c;这些问题不仅让消费者在消费和决策过程中倍感困扰&#xff0c;也让商家面临信任危机。 消费者在享受便…...

【Redis】string类型

目录 1、介绍2、底层实现【1】SDS【2】int编码【3】embstr编码【4】raw编码【5】embstr和raw的区别 3、常用指令【1】字符串基本操作&#xff1a;【2】批量操作【3】计数器【4】过期时间【5】不存在就插入 4、使用场景 1、介绍 string是redis中最简单的键值对形式&#xff0c;…...

EPLAN许可证更新教程

随着电气设计软件的不断更新和优化&#xff0c;确保您的EPLAN许可证始终是最新版本对于顺畅的项目管理至关重要。本文将为您提供一份详尽的EPLAN许可证更新教程&#xff0c;帮助您轻松完成更新操作&#xff0c;确保您的软件始终保持最佳状态。 一、为什么需要更新EPLAN许可证&…...

学习笔记五——Rust 控制流全解析

&#x1f4da; 目录 什么是控制流&#xff1f;Rust 有什么特别&#xff1f;if 表达式完整语法loop / while / for 三种循环写法match 表达式 _ 通配符深入解释if let 表达式用法与场景Option、Some、None 全面通俗讲解 "Tom" 和 "Tom".to_string() 有啥本…...

远程桌面协议(RDP)详解:原理、优势与局限和优化方案分享

文章目录 导言一. RDP的工作原理二. RDP的优势三. RDP的局限性四. RDP的优化与替代方案五. 内网穿透远程访问总结 导言 远程桌面协议(RDP)是一种微软开发的专有协议&#xff0c;允许用户通过网络连接到另一台计算机&#xff0c;并像操作本地计算机一样进行操作。它广泛应用于远…...

Linux 系统管理常用命令

以下是 Linux 系统管理常用命令 的详细介绍&#xff0c;涵盖 IP地址查看、端口管理、进程监控 等核心操作&#xff0c;并附上实际示例&#xff1a; 一、查看网卡 IP 地址 1. 使用 ip 命令 # 查看所有网络接口信息&#xff08;包括 IP 地址&#xff09; ip addr show# 查看特定…...

蓝桥杯篇---客观题

文章目录 前言 前言 本文简单介绍了蓝桥杯中客观题各个部分的知识点。 一、单片机相关 IAP15F2K61S2单片机的定时器0具有4种工作模式&#xff0c;当采用外部12MHz晶振时&#xff0c;定时器最大定时长度65535us。8051单片机的P0口&#xff0c;当使用外部存储器时它是一个传输低…...

RK3568 基于Gstreamer的多媒体调试记录

文章目录 1、环境介绍2、概念理清3、提前准备4、GStreamer编译5、GStreamer基础介绍6、视频播放初体验7、视频硬编码7.1、h2647.2、h265 8、视频硬解码8.1、解码视频并播放解码视频并播放带音频 1、环境介绍 硬件&#xff1a;飞凌ok3568-c开发板 软件&#xff1a;原厂rk356x …...

ZYNQ笔记(五):AXI GPIO 中断

版本&#xff1a;Vivado2020.2&#xff08;Vitis&#xff09; 任务&#xff1a;使用 AXI GPIO IP 核以中断方式实现按键 KEY 控制 LED 亮灭翻转&#xff08;两个都在PL端&#xff09; 目录 一、介绍 二、硬件设计 三、软件设计 四、效果 一、介绍 AXI GPIO 中断通常…...

C++23 多维下标运算符:探索 P2128R6 提案

文章目录 一、背景与动机二、语法与实现2.1 语法2.2 实现方式 三、应用场景3.1 多维数组3.2 自定义数据结构3.3 并行计算 四、性能影响4.1 编译时优化4.2 自定义数据结构的优化 五、总结 C23 引入了许多新特性&#xff0c;其中之一便是多维下标运算符&#xff08;P2128R6&#…...

原理图设计准备:页面栅格模板应用设置

一、页面大小的设置 &#xff08;1&#xff09;单页原理图页面设置 首先&#xff0c;选中需要更改页面尺寸的那一页原理图&#xff0c;鼠标右键&#xff0c;选择“Schmatic Page Properties”选项&#xff0c;进行页面大小设置。 &#xff08;2&#xff09;对整个原理图页面设…...

LeeCode 409.最长回文串

给定一个包含大写字母和小写字母的字符串 s &#xff0c;返回 通过这些字母构造成的 最长的 回文串 的长度。 在构造过程中&#xff0c;请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。 示例 1: 输入:s "abccccdd" 输出:7 解释: 我们可以构造的…...