[FPGA Video IP] Video Processing Subsystem
Xilinx Video Processing Subsystem IP (PG231) 详细介绍
概述
Xilinx LogiCORE™ IP Video Processing Subsystem (VPSS)(PG231)是一个高度可配置的视频处理模块,设计用于在单一 IP 核中集成多种视频处理功能,包括缩放(Scaling)、去隔行(Deinterlacing)、颜色空间转换(Color Space Conversion, CSC)、色度重采样(Chroma Resampling)等。它支持 AXI4-Stream 或内存映射 AXI4 接口输入输出,通过 AXI4-Lite 接口进行控制,适用于实时视频处理流水线。VPSS 是早期独立视频 IP(如 Video Scaler PG009、Video CSC PG013)的整合升级版本,提供更高的集成度和灵活性,支持多种 AMD FPGA 和 SoC 设备,广泛应用于嵌入式系统、广播设备和高分辨率视频处理。
主要特性
- 接口:
- 输入/输出:
- AXI4-Stream 视频协议(符合 Vivado AXI Reference Guide UG1037),用于实时视频流。
- 内存映射 AXI4 接口(m_axi_mm2s 和 m_axi_s2mm),用于从外部内存(如 DDR3/4)读取或写入帧数据。
- 控制:AXI4-Lite 从接口,用于配置子功能参数、分辨率和颜色格式。
- 输入/输出:
- 子功能:
- 缩放(Scaler):
- 支持上行和下行缩放,分辨率范围从 64x64 到 8192x4320(8K)。
- 使用多相(Polyphase)滤波器,支持 6/8/10/12 抽头(Taps),64 或 128 相(Phases)。
- 支持双线性(Bilinear)、双三次(Bicubic)和基于 Lanczos 算法的插值。
- 去隔行(Deinterlacer):
- 支持运动自适应(Motion Adaptive)和垂直时间滤波(Vertical Temporal Filtering)算法。
- 转换隔行视频(如 NTSC、PAL)为逐行视频。
- 颜色空间转换(CSC):
- 支持 RGB、YUV 4:4:4、YUV 4:2:2、YUV 4:2:0 之间的转换。
- 支持 BT.601、BT.709、BT.2020 颜色编码标准,可编程系数。
- 色度重采样(Chroma Resampler):
- 支持 YUV 4:4:4、4:2:2、4:2:0 之间的子采样转换。
- 使用 4x2 或 2x2 滤波器优化色度平滑度。
- 缩放(Scaler):
- 数据宽度:
- 支持 8/10/12/16 位每颜色分量。
- 每时钟像素数(PPC):
- 支持 1、2、4 PPC,提升高分辨率视频吞吐量。
- 分辨率与帧率:
- 支持从 VGA(640x480)到 8K(7680x4320,需高性能设备)。
- 最大像素时钟频率因设备而异(例如,UltraScale+ 可达 300 MHz)。
- 运行模式:
- 全功能模式(Full-Fledged):支持所有子功能(缩放、去隔行、CSC、色度重采样)。
- 仅缩放模式(Scaler-Only):仅启用缩放功能,优化资源占用。
- 仅 CSC 模式(CSC-Only):仅启用颜色空间转换,适合简单应用。
- 设备支持:
- 兼容 Artix-7、Kintex-7、Virtex-7、Zynq-7000、UltraScale、UltraScale+、Versal AI Core、Versal Premium 等。
- 设计工具:
- 支持 Vivado Design Suite。
- 性能:
- 支持高带宽视频(如 4K@60Hz,2 PPC,或 8K@30Hz,4 PPC)。
- 低延迟设计,适合实时视频处理。
- 其他特性:
- 免费许可,包含在 Vivado 工具中。
- 支持动态配置(分辨率、缩放系数、颜色空间等)。
- 提供中断支持,监控帧完成、错误等事件。
- 支持 .coe 文件加载自定义缩放系数,基于 MATLAB 或 Xilinx C 模型生成。
应用场景
-
视频处理流水线:
- 在视频采集和处理系统中,执行缩放、去隔行、颜色空间转换和色度重采样,优化视频流以适配显示设备或编码器。
- 常用于视频监控、医疗影像处理、工业视觉系统。
-
嵌入式视频系统:
- 在 Zynq-7000 或 Zynq UltraScale+ MPSoC 平台上,处理视频流以驱动 HDMI、DisplayPort 或 SDI 输出。
- 适用于数字标牌、机顶盒、游戏机。
-
广播与专业视频设备:
- 在视频编码器、切换器或广播系统中,处理高分辨率视频(如 4K/8K),支持 BT.709 或 BT.2020 标准。
- 适用于演播室、直播设备和专业视听系统。
-
视频流媒体:
- 在流媒体平台中,将输入视频转换为多种分辨率和颜色格式(如 YUV 4:2:0 用于 H.264/H.265 编码)。
- 适用于视频会议系统、在线直播。
-
汽车与无人机:
- 在汽车辅助驾驶系统(ADAS)或无人机视觉系统中,处理摄像头视频,进行缩放、去隔行和颜色调整以适配显示或分析模块。
- 支持实时、低延迟处理。
-
硬件验证与测试:
- 在视频系统开发中,结合测试图案生成器(TPG)和视频时序控制器(VTC),验证视频处理流水线的功能和性能。
- 适用于 FPGA 原型设计和硬件在环(HIL)测试。
使用指南
设计流程
-
IP 配置:
- 在 Vivado IP Integrator 中添加 Video Processing Subsystem IP 核。
- 选择运行模式(全功能、仅缩放、仅 CSC)。
- 配置子功能:
- 缩放:设置抽头数(6/8/10/12)、相位数(64/128)和缩放系数(默认或自定义 .coe 文件)。
- 去隔行:选择运动自适应或垂直时间滤波算法。
- CSC:选择颜色编码(BT.601/709/2020)和范围(有限/全范围)。
- 色度重采样:选择 4:4:4、4:2:2 或 4:2:0 转换。
- 设置 PPC(1、2、4)、数据宽度(8/10/12/16 位每分量)和颜色格式(RGB、YUV 4:4:4 等)。
- 配置输入/输出接口(AXI4-Stream 或内存映射 AXI4)和最大分辨率。
- 设置 AXI4-Lite 地址范围和中断支持。
-
视频流水线集成:
- AXI4-Stream 模式:
- 输入连接到视频源(如 TPG、Video In to AXI4-Stream)。
- 输出连接到下游模块(如 AXI4-Stream to Video Out、HDMI TX)。
- 内存映射模式:
- 输入通过 AXI4 主接口(m_axi_mm2s)从 DDR 读取帧,搭配 Video Frame Buffer Write IP。
- 输出通过 AXI4 主接口(m_axi_s2mm)写入 DDR,连接到 Video Frame Buffer Read IP。
- 搭配 VTC IP 提供时序信号(如 Vsync、Hsync)。
- 使用 AXI Interconnect 管理多个 AXI4 主接口与内存控制器(如 MIG DDR3/4)的连接。
- AXI4-Stream 模式:
-
时钟管理:
- 使用时钟向导(Clocking Wizard)生成像素时钟、AXI4 主接口时钟和 AXI4-Lite 控制时钟。
- 确保时钟频率支持目标视频带宽(例如,4K@60Hz 需要约 297 MHz,2 PPC)。
- 验证输入、输出和控制接口的时钟域隔离。
compulsion4. 控制与软件开发:
- 通过 AXI4-Lite 接口使用处理器(如 Zynq PS 或 MicroBlaze)配置 VPSS 参数(分辨率、缩放系数、颜色空间等)。
- 使用 Xilinx 提供的裸机驱动(位于 Vitis 嵌入式软件库)或 Linux 驱动(DRM 或 V4L2 框架)简化开发。
- 参考驱动示例(如 xvprocss_example.c)实现动态配置。
- 对于 Linux 系统,启用 CONFIG_VIDEO_XILINX_VPSS 内核选项。
- 验证与调试:
- 使用 Vivado 仿真工具验证 AXI4-Stream 或 AXI4 主接口信号(TValid、TReady、ARADDR、AWADDR)。
- 使用 TPG 生成测试图案(如颜色条、棋盘格)验证缩放、去隔行、CSC 和色度重采样效果。
- 检查状态寄存器(如子功能状态、错误代码)以诊断问题。
- 使用 Vivado ILA 监控硬件中的视频流和内存访问。
- 参考应用笔记 XAPP1285,了解从旧版 Video Scaler/CSC IP 迁移到 VPSS 的方法。
示例设计
以下是一个典型的视频处理设计:
- 模块:
- TPG IP 生成 AXI4-Stream 视频流(1080p60,RGB,隔行)。
- VPSS IP(全功能模式)执行去隔行(运动自适应)、缩放(1080p 到 4K)、CSC(RGB 到 YUV 4:2:0)和色度重采样(4:4:4 到 4:2:0)。
- AXI4-Stream to Video Out IP 转换为并行视频信号。
- VTC IP 提供时序信号,HDMI TX 输出到显示器。
- 控制:
- Zynq PS 通过 AXI4-Lite 配置 VPSS(分辨率、缩放系数、颜色编码)。
- 使用裸机驱动设置 10 抽头多相滤波器和 BT.709 系数。
- 启用中断以监控帧完成和错误。
- 时钟:
- 时钟向导生成 148.5 MHz 像素时钟(1 PPC)、200 MHz AXI4 主接口时钟和 100 MHz AXI4-Lite 时钟。
- 参考:XAPP1285 提供了基于 Zynq UltraScale+ 的 VPSS 参考设计。
使用注意事项
-
内存带宽需求:
- 内存映射模式下,高分辨率(如 4K/8K)或多子功能组合会显著增加 AXI4 主接口的带宽需求。确保内存控制器(如 MIG DDR3/4)支持足够带宽。
- 优化 AXI Interconnect 参数(如突发长度)以提高内存访问效率。
-
PPC 与时钟频率:
- 选择合适的 PPC(1、2、4)以平衡时钟频率和吞吐量。例如,8K@60Hz 可使用 4 PPC 降低时钟频率需求。
- 确保像素时钟支持目标分辨率和帧率,验证 AXI4-Stream 或 AXI4 主接口的吞吐量。
-
缩放系数配置:
- 使用 .coe 文件加载自定义缩放系数,确保系数与滤波器抽头数和相位数匹配。
- 默认系数基于 Lanczos 算法,适合高质量缩放。若需优化资源,可尝试双线性(2 抽头)或双三次(4 抽头)。
-
去隔行性能:
- 运动自适应去隔行适合复杂动态场景,但资源占用较高;垂直时间滤波适合简单场景,资源占用较低。
- 验证输入视频的隔行格式(NTSC、PAL)并确保帧率与 VTC 时序匹配。
-
颜色空间与色度重采样:
- 配置 CSC 时,验证 BT.601/709/2020 编码和范围(有限/全范围)设置,避免颜色失真。
- 对于 YUV 4:2:0,确认下游模块支持子采样格式,验证色度重采样的滤波器设置。
-
AXI4-Stream 协议合规性:
- 在 AXI4-Stream 模式下,确保输入/输出信号(TValid、TReady、TData、TUser、TLast)符合协议要求。
- 若上下游模块不支持 TUser 信号,使用 AXI4-Stream Subset Converter IP 进行转换(参考 PG085)。
-
中断与错误处理:
- 启用中断以监控帧完成、内存访问错误或子功能错误。
- 检查状态寄存器(如错误代码)以诊断缩放、去隔行或颜色转换问题。
-
资源优化:
- VPSS 资源占用随子功能数量、PPC、数据宽度和滤波器复杂度增加。参考 PG231 的资源利用率数据选择合适的 FPGA 设备。
- 使用仅缩放或仅 CSC 模式以降低资源需求。
-
仿真与验证:
- 在设计初期进行充分仿真,使用 TPG 生成测试图案验证子功能效果(缩放清晰度、去隔行平滑度、颜色准确性)。
- 检查输出图像的分辨率、颜色和伪影。
- 使用 Vivado ILA 监控 AXI4-Stream 或 AXI4 主接口的信号时序。
-
迁移注意事项:
- VPSS 整合了 Video Scaler v8.1、Video CSC v7.0 等旧版 IP。迁移时需参考 XAPP1285,注意接口(AXI4-Stream vs. 内存映射)和驱动差异。
- 旧版 .coe 文件可能需调整以适配 VPSS 的多相滤波器格式。
常见问题与解决方法
-
问题:缩放输出图像模糊或有伪影。
- 原因:缩放系数质量差或滤波器抽头数不足。
- 解决:使用更高抽头滤波器(如 10 或 12 抽头),加载高质量 .coe 文件(基于 Lanczos 算法)。
-
问题:去隔行后图像抖动或细节丢失。
- 原因:算法选择不当或输入帧率不匹配。
- 解决:尝试运动自适应算法,验证输入隔行视频的帧率和 VTC 时序。
-
问题:颜色空间转换后图像颜色异常。
- 原因:颜色编码或范围设置错误。
- 解决:验证 BT.601/709/2020 设置,检查有限/全范围配置。
-
问题:内存映射模式下数据流阻塞。
- 原因:内存带宽不足或 AXI4 主接口配置错误。
- 解决:优化内存控制器带宽,检查 AXI4 主接口的突发长度和地址范围。
-
问题:高分辨率视频(如 8K)性能不足。
- 原因:像素时钟频率不足或 FPGA 性能限制。
- 解决:选择高性能设备(如 Versal),使用更高 PPC 或优化时钟频率。
结论
Xilinx Video Processing Subsystem IP (PG231) 是一个集成化的视频处理模块,集成了缩放、去隔行、颜色空间转换和色度重采样功能,适用于视频处理流水线、嵌入式系统和广播设备。其支持 AXI4-Stream 和内存映射接口、多种颜色格式和高分辨率(最高 8K),结合动态配置和免费许可,提供强大的灵活性和易用性。使用时需特别注意内存带宽、PPC 配置、子功能参数和接口协议合规性,以确保系统性能和视频质量。参考 XAPP1285 和 PG231 文档可加速开发和旧版 IP 迁移。
更多详细信息,请参考:
- PG231 Video Processing Subsystem 产品指南
- Vivado AXI Reference Guide (UG1037)
- XAPP1285 应用笔记
- Xilinx 嵌入式软件驱动
- Video Beginner Series
设计工具推荐
- SZ901:
SZ901 是一款基于XVC协议的FPGA网络下载器。- 最高支持53M
- 支持4路JTAG独立使用
- 支持端口合并
- 支持国产FLASH烧写
- 下载器无限扩展
- 配备专属程序固化软件,一键烧写,能大大减小程序固化时间!
相关文章:
[FPGA Video IP] Video Processing Subsystem
Xilinx Video Processing Subsystem IP (PG231) 详细介绍 概述 Xilinx LogiCORE™ IP Video Processing Subsystem (VPSS)(PG231)是一个高度可配置的视频处理模块,设计用于在单一 IP 核中集成多种视频处理功能,包括缩放…...
java基础之枚举和注解
枚举 简介 枚举:enumeration,jdk1.5中引入的新特性,用于管理和使用常量 入门案例 第一步:定义枚举,这里定义一个动物类,里面枚举了多种动物 public enum AnimalEnum {CAT, // 猫DOG, // 狗PIG // …...
前端开发本地配置 HTTPS 全面详细教程
分为两步:生成证书、本地服务配置使用证书一、HTTPS 的基本概念 HTTPS 是一种安全的 HTTP 协议,它通过 SSL/TLS 对数据进行加密,确保数据在传输过程中不被窃取或篡改。在前端开发中,某些功能(如 Geolocation API、Web…...
C语言中宏的高级应用
一、宏的核心高级特性 1. 变参宏(Variadic Macros) 支持不定数量参数,用于灵活处理格式化字符串、日志输出等场景。 #include <stdio.h>// 定义支持可变参数的调试宏 #define DEBUG_LOG(format, ...) \printf("[DEBUG] %s:%d |…...
Simulink 数据字典(Data Dictionary)详解:使用场景、存储内容与调用方法
1. 引言 在 Simulink 建模中,随着模型复杂度增加,参数管理变得尤为重要。传统方法(如 MATLAB 工作区变量或脚本)在团队协作或大型项目中容易导致数据分散、版本混乱。数据字典(Data Dictionary) 提供了一种…...
部署yolo到k230教程
训练:K230 借助 AICube部署AI 视觉模型 YOLO等教程_嘉楠 ai cube多标签分类-CSDN博客K230模型训练ai cube报错生成部署文件异常_aicube部署模型显示生成部署文件异常-CSDN博客 部署: # 导入必要的库和模块 import os import ujson # 超快的JS…...
【高频考点精讲】第三方库安全审计:如何避免引入带漏洞的npm包
大家好,我是全栈老李。今天咱们聊一个前端工程师必须掌握的生存技能——如何避免把带漏洞的npm包引入项目。这可不是危言耸听,去年某大厂就因为在生产环境用了有漏洞的lodash版本,被黑客利用原型污染漏洞直接攻破后台系统。 为什么npm包会变成"定时炸弹"? npm生…...
【后端】主从单体数据库故障自动切换,容灾与高可用
在现代企业级应用中,数据库的高可用性和容灾能力是保障业务连续性的关键。尤其是在一些对稳定性要求较高的业务场景中,当主数据库发生故障时,如何快速切换到备用数据库并确保业务不受影响,成为了一个重要课题。本文将介绍一种基于 SpringBoot 和 Druid 数据源的解决方案,通…...
AI编程案例拆解|基于机器学习XX评分系统-后端篇
文章目录 5. 数据集生成使用KIMI生成数据集 6. 后端部分设计使用DeepSeek生成神经网络算法设计初始化项目在Cursor中生成并提问前后端交互运行后端命令 注意事项 关注不迷路,励志拆解100个AI编程、AI智能体的落地应用案例为了用户的隐私性,关键信息会全部…...
数据库设置外键的作用
数据库外键(Foreign Key)是关系型数据库中用于建立表与表之间关联关系的重要约束,其核心作用是确保数据的一致性、完整性和关联性。以下是外键的主要作用及相关说明: 1. 建立表间关联关系 外键通过引用另一张表的主键࿰…...
从基础到实战的量化交易全流程学习:1.1 量化交易本质与行业生态
从基础到实战的量化交易全流程学习:1.1 量化交易本质与行业生态 在金融市场数字化转型的浪潮中,量化交易凭借数据驱动的科学性与自动化执行的高效性,成为连接金融理论与技术实践的核心领域。本文作为系列开篇,将从本质解析、行业生…...
路由交换网络专题 | 第八章 | GVRP配置 | 端口安全 | 端口隔离 | Mux-VLAN | Hybrid
拓扑图 (1)通过 LSW1 交换机配置 GVRP 协议同步 VLAN 信息到所有接入层设备。 基于 GARP 机制:GVRP 是通用属性注册协议 GARP(Generic Attribute Registration Protocol)的一种应用,用于注册和注销 VLAN 属…...
重定向和语言级缓冲区【Linux操作系统】
文章目录 重定向重定向的原理重定向系统调用接口进程替换不会影响重定向bash命令行中输入,输出,追加重定向的区别输出重定向输入重定向追加重定向命令行中只支持向文件描述符为0,1,2的标准流进行>,>>…...
Channel如何安全地尝试发送数据
在 Go 语言中,无法直接检查 channel 是否关闭(没有类似 IsClosed(ch) 的方法),但可以通过 非阻塞发送 或 select 语句 安全地尝试发送数据,避免向已关闭的 channel 发送数据导致 panic。以下是具体实现方式:…...
MH2103 MH22D3系列的JTAG/SWD复用功能和引脚映射,IO初始化的关键点
MH21xx和MH22xx内核集成了串行/JTAG调试接口(SWJ-DP)。这是标准的ARM CoreSight调试接 口,包括JTAG-DP接口(5个引脚)和SW-DP接口(2个引脚)。 ● JTAG调试接口(JTAG-DP)为AHP-AP模块提供5针标准JTAG接口。 ● 串行调试接口(SW-DP)为AHP-AP模块提供2针(时钟࿰…...
Tortoise-ORM级联查询与预加载性能优化
title: Tortoise-ORM级联查询与预加载性能优化 date: 2025/04/26 12:25:42 updated: 2025/04/26 12:25:42 author: cmdragon excerpt: Tortoise-ORM通过异步方式实现级联查询与预加载机制,显著提升API性能。模型关联关系基础中,定义一对多关系如作者与文章。级联查询通过s…...
【C++11】列表初始化
📝前言: 这篇文章我们来讲讲C11引入的列表初始化{},注意这不是构造函数里的初始化列表!!! 在阅读文章之前,请你记住一句重点:万物皆可{}初始化 🎬个人简介:努…...
基于Cherry Studio + DeepSeek 搭建本地私有知识库!
在当今数字化时代,知识管理变得越来越重要。无论是个人还是企业,都希望能够高效地存储、管理和检索知识。而借助 AI 技术,我们可以实现更加智能的知识库系统。本文将详细介绍如何使用 Cherry Studio 和 DeepSeek 搭建本地私有知识库ÿ…...
栈相关算法题解题思路与代码实现分享
目录 前言 一、最小栈(LeetCode 155) 题目描述 解题思路 代码实现(C) 代码解释 二、栈的压入、弹出序列(剑指 Offer JZ31) 题目描述 解题思路 代码实现(C) 代码解释 总结…...
MongoDB Atlas与MongoDB连接MCP服务器的区别解析
MongoDB Atlas作为全托管的云数据库服务,与本地自建MongoDB实例在连接MCP(Model Context Protocol)服务器时存在显著差异。以下从配置方式、安全机制、功能特性三个维度对比两者的区别: 连接配置差异 • 本地MongoDB:…...
服务器传输数据存储数据建议 传输慢的原因
一、JSON存储的局限性 1. 性能瓶颈 全量读写:JSON文件通常需要整体加载到内存中才能操作,当数据量大时(如几百MB),I/O延迟和内存占用会显著增加。 无索引机制:查找数据需要遍历所有条目(时间复…...
【大模型】Coze AI 智能体工作流从配置到使用实战详解
目录 一、前言 二、工作流介绍 2.1 什么是工作流 2.2 工作流与对话流 2.2.1 两者区别 2.3 工作流节点介绍 2.3.1 工作流节点说明 2.3.2 开始节点与结束节点 2.4 工作流入口 2.4.1 自定义智能体入口 2.4.2 从资源库新增工作流 2.5 工作流使用限制 三、工作流配置与使…...
Java后端开发——分层解耦详解
文章目录 一、三层架构1.1 概述1.2 具体实现方法 二、分层解耦2.1 以往问题2.2 概念解释2.3 解耦思路 三、Spring核心:IOC & DI3.1 快速入门3.2 IOC(控制反转)详解3.3 DI(依赖注入)详解 注入方式 标签:…...
论文如何降低AIGC?(完整指南版)
最近一段时间,关于论文AIGC率太高怎么办的问题,真的是知乎、小红书、B站到处都是! 尤其是今年知网一升级,连纯手写的内容都能给你标疑似AIGC,简直离谱啊兄弟姐妹们😭! 那论文到底怎么降低AIGC…...
【LCMM】纵向轨迹模型,组轨迹模型
latent_class_mixed_models 基础知识 增长混合模型(GMM)和潜在类别增长模型(LCGA)的核心区别确实主要在于是否允许类别内存在随机效应,但两者的差异还涉及模型灵活性、假设和应用场景等方面。以下是详细对比…...
Flask + ajax上传文件(三)--图片上传与OCR识别
本教程将详细介绍如何使用Flask框架构建一个图片上传与文字识别(OCR)的Web应用。我们将使用EasyOCR作为OCR引擎,实现一个支持中文和英文识别的完整应用。 环境准备 首先,确保你已经安装了Python 3.7+环境,然后安装必要的依赖库: pip install flask easyocr pillow werkz…...
观察者模式 (Observer Pattern)
观察者模式(Observer Pattern)是一种行为型设计模式。它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象的状态发生变化时,会自动通知所有观察者对象,使它们能够自动更新自己的状态。 一、基础 1. 意图 核心目的:定义对象间的一种一对…...
【Leetcode 每日一题】2444. 统计定界子数组的数目
问题背景 给你一个整数数组 n u m s nums nums 和两个整数 m i n K minK minK 以及 m a x K maxK maxK。 n u m s nums nums的定界子数组是满足下述条件的一个子数组: 子数组中的 最小值 等于 m i n K minK minK。子数组中的 最大值 等于 m a x K maxK maxK…...
LeetCode热题100——70. 爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1 阶 1 阶2 阶 示例 2: …...
黑马Java基础笔记-4
方法 什么是方法 方法是程序中最小的执行单元。 形参和实参 调用 直接调用 getSum(10,20,30);赋值调用 int sum getSum(10,20,30);输出调用 System.out.println(getSum(10,20,30));方法的重载 在同一个类中,定义了多个同名的方法,这些同名的方法…...
【Python】Python中的浅拷贝和深拷贝
在Python中,浅拷贝(shallow copy)和深拷贝(deep copy)是两种不同的对象复制方式,它们在复制对象时的行为有所不同: 浅拷贝(Shallow Copy) 浅拷贝是创建一个新对象&…...
使用 LangGraph 和 Elasticsearch 构建强大的 RAG 工作流
作者:来自 Elastic Neha Saini 在这篇博客中,我们将向你展示如何配置和自定义 LangGraph Retrieval Agent 模板与 Elasticsearch,以构建一个强大的 RAG 工作流,实现高效的数据检索和由 AI 驱动的响应。 Elasticsearch 原生集成了…...
云原生--核心组件-容器篇-2-认识下Docker(三大核心之镜像,容器,仓库)
1、Docker基本概念 (1)、定义 Docker是一种开源的应用容器引擎,是基于操作系统级虚拟化技术。允许开发者将应用程序及其依赖项打包到一个可移植的容器中,然后发布到任何支持Docker的环境中运行。Docker容器是轻量级、独立且可执…...
智慧园区IOT项目与AI时代下的机遇 - Java架构师面试实战
在互联网大厂的Java求职者面试中,面试官通常会针对实际业务场景提出一系列问题。以下是关于智慧园区IOT项目及AI时代下的机遇的面试模拟对话。 第一轮提问 面试官:马架构,请简要介绍下智慧园区IOT项目的整体架构设计。 马架构:…...
Unity中文件上传以及下载,获取下载文件大小的解决方案
首先现在Unity插件那么的广泛的情况下,很多东西都不需要自己实现,直接使用第三方插件就可以了,但为什么这里需要自己写,接下来说明原因。 在Unity商城中有很多关于关于网络接口调用的插件,其中有一款叫BestHTTP这款使用比较广泛的插件,不知道朋友们是不是都知道,是不是…...
Word/WPS 删除最后一页空白页,且保持前面布局样式不变
如题,试了多种方法,都不行。主要是可能的原因太多了,没有通解,这只是适用于我的情况。 解决方案: 首先光标放在倒数第二页(即想保留的最后一页),点击页面右下角这个小箭头ÿ…...
MySQL长事务的隐患:深入剖析与解决方案
MySQL长事务的隐患:深入剖析与解决方案 一、什么是长事务? 在数据库系统中,长事务(Long Transaction)通常指执行时间超过预期或系统设定阈值的事务。对于MySQL而言,虽然没有严格的时间定义,但一般认为执行时间超过数…...
【Tauri】桌面程序exe开发 - Tauri+Vue开发Windows应用 - 比Electron更轻量!8MB!
效果图 Tauri的二进制文件体积显著小于Electron,安装包通常缩小80%以上。应用启动更快,内存占用更低,尤其在老旧设备上体验更流畅。 写在前面 Tauri官网 https://tauri.app/zh-cn/支持语言:js、ts、rust、.net编译出来的exe文件&…...
2025春季NC:3.1TheTrapeziumRule
3.1TheTrapeziumRule 📐 The Idea Instead of finding the exact area under a curve y = f ( x ) y = f(x) y=...
【摩尔定律】
一、摩尔定律的核心定义 原始表述(1965年) “集成电路上可容纳的晶体管数量,每隔约 18-24个月 便会增加一倍,同时性能提升一倍,而成本下降一半。” 简化理解 芯片的 晶体管密度 和…...
Maven 依赖冲突调解与版本控制
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
《Python Web部署应知应会》Flask网站隐藏或改变浏览器URL:从Nginx反向代理到URL重写技术
Flask网站隐藏或改变浏览器显示URL地址的实现方案:从Nginx反向代理到URL重写技术 引言 在Web应用开发中,URL路径的安全性往往被忽视,这可能导致网站结构和后端逻辑被攻击者轻易推断。对于Flask框架开发的网站,如何隐藏或改变浏览…...
6.2 内容生成与营销:个性化内容创作与营销策略优化
随着消费者对个性化体验的需求日益增长,传统的内容创作与营销方式已难以满足市场竞争的需要。基于大语言模型(LLM)与智能代理(Agent)的技术为企业提供了全新的解决方案,能够实现高效、精准、规模化的内容生…...
平面连杆机构(上)
1、平面四杆机构的类型与演化 1)平面四杆机构的类型 a、铰链四杆机构:曲柄摇杆机构、双曲柄机构、双摇杆机构 b、其他四杆机构:曲柄滑块机构、导杆机构、滑块机构、双滑块机构、偏心轮四杆机构...... 2)平面四杆机构的演化 a、…...
【数据结构刷题】顺序表与ArrayList
【数据结构刷题】顺序表与ArrayList 1. 杨辉三角2. 合并两个有序数组 1. 杨辉三角 LC链接:杨辉三角 //杨辉三角import java.util.ArrayList; import java.util.List;public class Demo1 {public List<List<Integer>> generate(int numRows) {List<…...
顶点着色器和片元着色器染色+表面体着色器染色
顶点/片元着色器染色 创建材质球及Shader同名文件VFColor //Update NOTE:replaced mul(UNITY_MATRIX_MVP,*) with UnityObjectToClipPos(*) Shader "CreateTest/VFColor" {Properties{_Color("颜色",Color)(1,1,1,1)}SubShader{Pass{//顶点片…...
240426 leetcode exercises
240426 leetcode exercises jarringslee 文章目录 240426 leetcode exercises[1669. 合并两个链表](https://leetcode.cn/problems/merge-in-between-linked-lists/?envTypeproblem-list-v2&envIdlinked-list)🔁基础版 保存断点,先拼再补…...
代码随想录算法训练营Day35
卡码网46.携带研究材料 力扣494.目标和【meidum】 力扣416.分割等和子集【medium】 一、卡码网46.携带研究材料 题目链接:卡码网46.携带研究材料 视频链接:代码随想录 题解链接:代码随想录 1、思路 dp[i][j] 表示从下标为 [0-i] 的物品里任意…...
C++17 折叠表达式
C17 引入的折叠表达式(Fold Expressions) 是处理可变参数模板(Variadic Templates)的革命性特性。它通过简洁的语法,使得对参数包(Parameter Pack)的操作更加直观和高效,避免了传统的…...
Ubuntu编译opencv源码
准备 Ubuntu版本:22.04opencv版本:4.9.0没下载Ubuntu镜像的可以在清华镜像下载 本文以4.9.0版本演示,可根据自身情况选择 安装JDK和依赖项 本次编译主要为了获取java在linux环境下的动态库,所以需要在虚拟机上下载jdk # 安装…...