视频编解码学习7之视频编码简介
视频编码技术发展历程与主流编码标准详解
视频编码技术是现代数字媒体领域的核心技术之一,它通过高效的压缩算法大幅减少了视频数据的体积,使得视频的存储、传输和播放变得更加高效和经济。从早期的H.261标准到最新的AV1和H.266/VVC,视频编码技术经历了数十年的发展演进,压缩效率提高了数十倍。本文将全面介绍视频编码技术的发展历史、基本原理以及所有主流编码技术的详细特点,包括H.26x系列、MPEG系列以及新兴的AV1等开放标准,帮助读者深入理解这一关键技术领域的发展脉络和技术特点。
视频编码技术概述与发展历程
视频编码技术是指通过特定算法对原始视频数据进行压缩处理,以减少存储空间和传输带宽需求的技术。自20世纪80年代以来,视频编码技术经历了从简单压缩到高效智能编码的演进过程,其发展动力主要来源于对更高压缩效率和更好视频质量的不懈追求。
视频编码技术的发展历程可以清晰地划分为几个重要阶段:
-
1980年代-早期标准诞生:这一时期诞生了H.261标准,它是首个实用的视频编码标准,专为ISDN网络上的视频会议设计,采用了基于运动补偿的帧间预测和DCT变换的混合编码框架,奠定了后续标准的基础架构159。同时期,MPEG组织也开始制定用于存储媒体的压缩标准。
-
1990年代-标准分化发展:ITU-T推出了H.263标准,针对低码率应用进行了优化;而ISO/IEC的MPEG组织则发布了MPEG-1(用于VCD)、MPEG-2(用于DVD和数字电视)等标准。这一时期的特点是标准分化,针对不同应用场景发展出不同的编码技术16。
-
2000年代-统一与高效:H.264/AVC标准的出现标志着视频编码技术进入成熟期,它由ITU-T和ISO/IEC联合制定,在压缩效率上实现了重大突破,比H.263提高了约50%的压缩率,成为互联网视频的事实标准236。
-
2010年代-高清与智能:随着4K/8K视频的普及,H.265/HEVC应运而生,它进一步提高了压缩效率,支持更高分辨率的视频。同时,谷歌主导的VP9和开放媒体联盟的AV1等免版税标准开始挑战传统专利标准23。
-
2020年代-智能与沉浸:最新的H.266/VVC和AV1等标准开始支持更智能的内容感知编码,为元宇宙、VR/AR等沉浸式应用提供技术基础310。
视频编码技术的基本原理是去除视频数据中的冗余信息,主要包括三种类型的冗余:
-
空间冗余:图像相邻像素之间的相关性,可以通过帧内预测和变换编码来消除68。
-
时间冗余:视频序列中相邻帧之间的相似性,通过运动估计和运动补偿技术来减少68。
-
统计冗余:数据本身的概率分布不均匀性,通过熵编码(如哈夫曼编码、算术编码)来压缩78。
此外,编码技术还利用人类视觉系统(HVS)的特性,去除人眼不敏感的视觉冗余信息,如对色度信息采用比亮度信息更低的采样率8。
表:视频编码技术发展里程碑
年代 | 标准 | 主要特点 | 典型应用 |
---|---|---|---|
1984-1990 | H.261 | 首个实用视频编码标准,混合编码框架 | ISDN视频会议 |
1990-1995 | MPEG-1, H.263 | 支持CD-ROM视频,改进低码率性能 | VCD, 视频电话 |
1995-2003 | MPEG-2, MPEG-4 | 支持数字电视,引入基于对象编码 | DVD, 数字电视 |
2003-2013 | H.264/AVC | 压缩效率提高50%,网络友好 | 互联网视频, HDTV |
2013-2020 | H.265/HEVC, VP9 | 支持4K/8K,压缩效率再提高50% | UHDTV, 流媒体 |
2020-至今 | H.266/VVC, AV1 | 智能编码,支持VR/AR | 元宇宙, 沉浸式媒体 |
随着技术的进步,视频编码标准不仅在压缩效率上持续提升,在功能上也越来越丰富,从单纯的压缩工具发展为支持可伸缩编码、错误恢复、内容交互等高级特性的多媒体处理平台36。同时,编码标准的制定也从最初的专有技术逐步走向开放协作,AV1等开放标准的出现为行业带来了新的发展机遇2。
早期视频编码标准:H.261与MPEG-1
视频编码技术的标准化进程始于20世纪80年代末,当时数字视频应用开始从专业领域向商业和消费领域扩展。H.261和MPEG-1作为最早的两个重要视频编码标准,奠定了现代视频压缩技术的基础框架,其影响一直延续至今。
H.261:视频编码的奠基者
H.261标准由ITU-T(国际电信联盟电信标准化部门)于1988年制定完成,1990年正式批准,是第一个实用化的视频编码标准。它专为ISDN(综合业务数字网)上的视频会议和可视电话应用设计,目标码率为p×64kbit/s(p=1~30),因此也被称为"p×64"标准159。
H.261的技术创新主要体现在以下几个方面:
-
混合编码框架:H.261首次将帧间预测和变换编码结合起来,形成了经典的"预测+变换"混合编码架构。这一框架被后续几乎所有视频编码标准所继承17。具体流程包括:运动补偿的帧间预测、DCT变换、量化和熵编码。
-
基于块的处理:H.261将图像划分为16×16像素的宏块(Macroblock),这是视频编码中块处理概念的起源。每个宏块可以独立选择使用帧内编码或帧间编码模式59。
-
运动补偿技术:为了去除时间冗余,H.261引入了运动估计和运动补偿技术,通过寻找相邻帧中相似块的位置偏移(运动矢量),只编码残差部分79。
-
DCT变换:对残差数据或帧内块进行8×8离散余弦变换(DCT),将空域信号转换到频域,使能量集中在少数低频系数上,便于后续量化压缩15。
H.261仅支持两种图像格式:QCIF(176×144)和CIF(352×288),且运动估计精度只到整像素级别,没有B帧(双向预测帧)概念,只有I帧(帧内编码帧)和P帧(前向预测帧)69。尽管以今天的标准看,H.261的压缩效率不高,但它确立了视频编码的基本方法论,其技术框架影响深远。
MPEG-1:面向存储媒体的编码标准
MPEG-1是ISO/IEC的运动图像专家组(MPEG)于1993年发布的视频编码标准,主要针对CD-ROM等存储媒体上的视频播放应用,典型码率为1.2Mbit/s左右,能够提供30帧CIF(352×288)质量的图像159。
MPEG-1在H.261的基础上进行了多项重要改进:
-
引入B帧:MPEG-1新增了双向预测帧(B帧),可以同时参考前后帧进行预测,显著提高了压缩效率。B帧的使用是MPEG-1相比H.261压缩效率提升的关键因素之一16。
-
更灵活的GOP结构:MPEG-1定义了图像组(GOP,Group of Pictures)的概念,允许在I帧和P帧之间插入多个B帧,形成如IBBPBBPBB...的编码结构68。
-
半像素运动估计:将运动估计的精度从H.261的整像素提高到半像素级别,使运动补偿更加精确,残差数据更小19。
-
D帧:MPEG-1还引入了直流帧(D帧),只编码块的DC系数,用于快速预览等特殊应用5。
MPEG-1标准分为系统、视频和音频三部分,其中第二部分是视频编码规范。它最初是为VCD(视频光盘)设计的,但也广泛应用于早期的网络视频。MPEG-1的一个显著特点是编解码复杂度不对称,编码比解码复杂得多,这符合存储应用的特点15。
表:H.261与MPEG-1主要技术参数对比
技术特性 | H.261 | MPEG-1 |
---|---|---|
制定组织 | ITU-T | ISO/IEC MPEG |
发布时间 | 1990 | 1993 |
目标应用 | 视频会议 | CD-ROM视频 |
典型码率 | p×64kbit/s (p=1~30) | 1.2Mbit/s |
图像格式 | QCIF, CIF | CIF |
帧类型 | I帧, P帧 | I帧, P帧, B帧 |
运动估计精度 | 整像素 | 半像素 |
关键技术 | DCT变换, 运动补偿 | 引入B帧, GOP结构 |
早期标准的局限性与影响
尽管H.261和MPEG-1取得了巨大成功,但随着应用需求的增长,它们逐渐暴露出一些局限性:
-
压缩效率有限:受当时技术条件限制,早期标准的压缩率相对较低,H.261在低码率下图像质量较差,MPEG-1的1.2Mbit/s码率也难以满足更高画质需求15。
-
功能单一:这些标准主要针对特定应用设计(H.261用于视频会议,MPEG-1用于存储播放),缺乏灵活性和可扩展性9。
-
分辨率支持有限:最高只支持CIF(352×288)分辨率,无法满足后来出现的标准清晰度电视(SDTV)和高清晰度电视(HDTV)需求16。
然而,H.261和MPEG-1确立的混合编码框架——运动补偿预测加变换编码——成为后续所有主流视频编码标准的基础。据估计,现代视频编码标准如H.264/AVC和H.265/HEVC中,约有70%的技术可以追溯到H.261最初的设计理念7。这种技术框架的持久生命力证明了早期标准设计的合理性和前瞻性。
随着多媒体应用的普及,用户对视频质量的要求不断提高,推动着视频编码技术向更高效率、更多功能的方向发展,直接催生了MPEG-2、H.263等后续标准159。
视频编码技术成熟期:H.263与MPEG-2/4
随着多媒体应用的普及和数字电视的兴起,1990年代中期至2000年代初,视频编码技术进入快速发展阶段。这一时期出现了多个重要标准,包括ITU-T的H.263系列和ISO/IEC的MPEG-2、MPEG-4标准,它们在压缩效率、功能丰富性和应用范围等方面都有显著提升,为现代数字视频产业奠定了基础。
H.263:低码率视频通信标准
H.263是ITU-T于1995年制定的视频编码标准,最初目标是面向极低码率应用(小于64kbit/s),如PSTN网络上的视频电话159。然而随着技术发展,H.263及其后续版本(H.263+、H.263++)逐渐演变为支持全码率应用的通用标准。
H.263在H.261基础上引入了多项技术创新:
-
半像素运动补偿:运动矢量精度提高到半像素级别,使预测更加精确,显著减少了预测残差16。
-
PB帧模式:允许将两个帧(P帧和B帧)编码为一个单元,提高编码效率59。
-
更多图像格式:支持Sub-QCIF(128×96)、QCIF(176×144)、CIF(352×288)、4CIF(704×576)甚至16CIF(1408×1152)等多种格式,应用范围更广16。
-
非限制运动矢量:允许运动矢量指向图像边界外的参考像素,通过边缘扩展技术实现,提高了边缘宏块的预测效率5。
-
高级预测模式:包括重叠块运动补偿(OBMC)和四个运动矢量模式(每个宏块可以使用四个8×8块的运动矢量而非一个16×16矢量)59。
H.263标准设计非常灵活,包含大量可选功能,这使得它能够通过不同的配置适应从极低码率(28.8kbit/s调制解调器)到较高码率(数Mbit/s)的各种应用场景1。然而,过多的选项也导致H.263实现复杂,不同设备间的互操作性成为挑战,这一问题在H.263+和H.263++中更为突出59。
MPEG-2:数字电视的基石
MPEG-2标准于1995年发布,是MPEG-1的扩展和完善,主要针对数字电视和高清晰度视频应用16。它保持了与MPEG-1的向后兼容性,同时在多个方面进行了重要增强:
-
支持隔行扫描视频:MPEG-2明确区分"帧"(渐进扫描)和"场"(隔行扫描)的概念,在场编码模式下,可以对顶场和底场分别进行运动补偿预测16。
-
更高的分辨率支持:MPEG-2支持从低分辨率(352×288)到高清晰度(1920×1080)的多种图像格式,满足从VCD到HDTV的不同需求6。
-
可分级编码:引入空间可分级性、时间可分级性和信噪比(SNR)可分级性,允许从一个码流中提取不同质量的子码流,适应不同的网络条件和终端能力15。
-
更精细的量化控制:MPEG-2采用更精细的量化步长调整策略,支持非线性量化矩阵,更好地适应人类视觉特性6。
-
传输流与节目流:MPEG-2系统层定义了两种复用格式:传输流(TS)用于易错环境如广播,节目流(PS)用于无误码环境如存储媒体,这一设计极大促进了数字电视的发展1。
MPEG-2视频部分(第二部分)的技术规范与ITU-T的H.262标准完全相同,是两大标准化组织合作的成果15。MPEG-2取得了巨大商业成功,广泛应用于数字卫星电视、有线数字电视、DVD视频以及后来的地面数字电视等领域。即使在今天,虽然压缩效率已被新一代标准超越,MPEG-2仍在许多传统广播系统中使用6。
MPEG-4:基于对象的编码革命
MPEG-4(第二部分)标准于1999年发布,代表了视频编码理念的重大转变——从基于帧的编码转向基于对象的编码159。其核心思想是将视频场景视为由多个音频视频对象(AVO,Audio-Visual Object)组成,每个对象可以独立编码、传输和组合,从而实现高度交互性。
MPEG-4的主要技术创新包括:
-
基于对象的编码:支持对场景中的不同对象(如前景人物和背景)分别编码,用户可以选择性地解码和操作特定对象14。
-
形状编码:为每个视频对象定义透明度形状信息,并对其进行高效编码,这是实现对象分离的基础45。
-
精灵编码:针对背景等静态或准静态对象,采用精灵(Sprite)编码技术,将整个背景作为一张大图传输,然后只传送相机运动参数5。
-
可伸缩性增强:提供比MPEG-2更灵活的可分级编码方式,支持精细粒度可伸缩性(FGS)编码1。
-
人脸与身体动画:定义参数化的人脸和身体动画模型,可以用极低的码率驱动虚拟人物5。
尽管MPEG-4的基于对象编码理念极具前瞻性,但由于技术复杂度和实现难度较高,这部分功能在实际应用中并未广泛普及19。相反,MPEG-4的简单档次(Simple Profile)和高级简单档次(Advanced Simple Profile)等基于传统帧编码的部分得到了广泛应用,特别是在网络视频和移动视频领域56。
MPEG-4还引入了DRM支持和交互性等特性,使其成为第一个真正意义上的多媒体框架标准,而不仅仅是视频编码标准5。然而,MPEG-4的专利授权政策较为复杂且费用较高,这在一定程度上限制了它的普及6。
表:H.263、MPEG-2与MPEG-4主要特性对比
特性 | H.263系列 | MPEG-2 | MPEG-4(第二部分) |
---|---|---|---|
主要目标 | 低码率视频通信 | 数字电视与存储 | 多媒体交互与低码率 |
核心技术 | 半像素运动估计,PB帧 | 隔行扫描处理,可分级编码 | 基于对象的编码,形状编码 |
典型应用 | 视频会议,可视电话 | DVD,数字电视 | 网络视频,移动视频 |
压缩效率 | 比H.261提高30-50% | 与MPEG-1相当(同质量下码率减半) | 比MPEG-1提高约50% |
创新特点 | 灵活选项多,适应性强 | 传输流,广播友好 |
相关文章:
视频编解码学习7之视频编码简介
视频编码技术发展历程与主流编码标准详解 视频编码技术是现代数字媒体领域的核心技术之一,它通过高效的压缩算法大幅减少了视频数据的体积,使得视频的存储、传输和播放变得更加高效和经济。从早期的H.261标准到最新的AV1和H.266/VVC,视频编码…...
【NextPilot日志移植】整体功能概要
整体日志系统的实现功能 该日志系统主要实现了飞行日志的记录功能,支持多种日志记录模式,可将日志存储到文件或通过 MAVLink 协议传输,同时具备日志加密、空间管理、事件记录等功能。具体如下: 日志记录模式:支持按武…...
Windows系统下使用Kafka和Zookeeper,Python运行kafka(二)
1.配置 Zookeeper 进入解压后的 Zookeeper 目录(例如 F:\zookeeper\conf),复制 zoo_sample.cfg 文件并命名为 zoo.cfg(如果 zoo.cfg 已经存在,则直接编辑该文件)。 打开 zoo.cfg 文件,配置相关…...
《构建社交应用用户激励引擎:React Native与Flutter实战解析》
React Native凭借其与JavaScript和React的紧密联系,为开发者提供了一个熟悉且灵活的开发环境。在构建用户等级体系时,它能够充分利用现有的前端开发知识和工具。通过将用户在社交应用中的各种行为进行量化,比如发布动态的数量、点赞评论的次数…...
Oracle OCP认证考试考点详解083系列13
题记: 本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。 61. 第61题: 题目 解析及答案: 关于基于RPM的Oracle数据库安装,以下哪两项是正确的? A) …...
【AI】DeepWiki 页面转换成 Markdown 保存 - Chrome 扩展
GitHub: https://github.com/zxmfke/deepwiki-md-chrome-extension 背景 个人比较喜欢整理项目架构,更多都是保存成 markdown 的格式保存,然后发博客。deepwiki 刚好把 github 仓库代码的架构输出出来了,不过没有办法下载成 markdown 格式&…...
HTTP 状态码是服务器对客户端请求的响应标识,用于表示请求的处理结果
以下是完整的 HTTP 状态码分类和常见状态码详解: 一、状态码分类(5大类) 分类范围描述常见场景1xx100-199信息性响应请求已被接收,继续处理2xx200-299成功响应请求成功处理3xx300-399重定向响应需要进一步操作4xx400-499客户端错…...
【AI论文】FlexiAct:在异构场景中实现灵活的动作控制
摘要:动作定制涉及生成视频,其中主体执行由输入控制信号指示的动作。 当前的方法使用姿势引导或全局运动定制,但受到空间结构(如布局、骨架和视点一致性)严格约束的限制,降低了在不同主题和场景下的适应性。…...
ubuntu24.04安装anaconda
1. ubuntu安装ananconda 进入官网:添加链接描述 直接点击Download下载,它会自动匹配合适的版本 打开保存下载文件,点击右键,选择在终端打开,输入 bash Anaconda3-2024.10-1-Linux-x86_64.sh不断点击Enter,…...
六、Hadoop初始化与启动
成功部署一个Hadoop集群并不仅仅是安装好软件那么简单。在它真正能够为我们处理海量数据之前,还需要一系列精心的初始化和启动步骤。这些步骤确保了各个组件能够正确协同工作。完成启动后,Hadoop还提供了便捷的 Web 用户界面 (Web UI),帮助我…...
边缘网关(边缘计算)
边缘网关是边缘计算架构中的关键组件,充当连接终端设备(如传感器、IoT设备)与云端或核心网络的桥梁。它在数据源头附近进行实时处理、分析和过滤,显著提升效率并降低延迟。 核心功能 协议转换 ○ 支持多种通信协议(如…...
学成在线之课程管理
一:业务概述 我负责的课程管理这一块,可以发布课程,可以对课程列表进行一个管理,发布课程这分为三步:首先是需要进行填写课程相关的信息,再设计这个课程的大纲,最后是选择发布这门课程ÿ…...
python里面的class,类,方法,函数,def
一、ds 好的!我将用专业术语结合通俗解释来梳理这些概念,并用结构化方式呈现它们的关系: 1. 核心概念解析 类 (Class) 定义:类是面向对象编程(OOP)中的核心概念,是创建对象的模板(蓝图)。它封装了一组属性(数据)和方法(行为),用于描述具有相同特征和功能的对象…...
复盘20250508
根据行业趋势、政策支持、公司基本面及技术壁垒,我推荐以下两支最可能持续上涨的个股,并深度分析原因: 1. 奥普光电(机器视觉光刻机芯片) 核心逻辑: 光刻机国产化核心标的:控股股东长春光机所…...
数据结构 - 10( B- 树 B+ 树 B* 树 4000 字详解 )
一:B- 树 1.1 B- 树的引入 在使用二叉搜索树对数据进行排序时,存在一个缺陷:随着数据量的增大,二叉搜索树的高度也会随之增加。虽然在数据量较小时,这种情况并不明显,但当数据量变得庞大时,树…...
算法与数据结构 - 常用图算法总结
在图论中,图算法非常重要,广泛应用于计算机科学、网络分析、社交网络、地理信息系统等领域。下面是一些常用的图算法,按不同功能和应用场景分类: 1. 图的遍历 图遍历算法用于遍历图中的节点和边。主要有两种常见的图遍历方法&am…...
涨薪技术|0到1学会性能测试第53课-Tomcat配置
前面的推文我们掌握了Tomcat服务器的3种监控技术知识。今天给大家分享Tomcat调优技术。后续文章都会系统分享干货,带大家从0到1学会性能测试。 01Tomcat配置 当Tomcat服务器安装好并开始运行后,需要对服务器进行一些基本配置,通常关于Tomcat服务器的配置包括两部分: 第一:…...
亚马逊推出新型仓储机器人 Vulcan:具备“触觉”但不会取代人类工人
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
后退n帧协议
滑动窗口机制(Sliding Window) 发送方有一个发送窗口,最多可以连续发送 N 个未确认的帧(N 就是窗口大小)。 接收方通常只有一个接收窗口,只接收按序到达的帧,不接受乱序帧。 累计确认机制&…...
R9周:RNN实现阿尔茨海默病诊断
🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 一、导入数据 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import torch import torch.nn as nn f…...
node.js 实战——在express 中将input file 美化,并完成裁剪、上传进度条
美化上传按钮 在ejs 页面 <!DOCTYPE html> <html> <head><meta charset"utf-8"></meta><title><% title %></title><link relstylesheet href/stylesheets/form.css/><!-- 本地 Bootstrap 引入方式 -->…...
Linux环境下部署MaxScale
测试环境:两台服务器,Mysql版本 8.0,linux版本:Ubuntu 20.04.3; 介绍 在我之前的文章里面有介绍MySql主从服务器的配置,我们项目通常使用.NET开发Server端,如果是代码直接去管理主从服务器的访…...
新能源汽车CAN通信深度解析:MCU、VCU、ECU协同工作原理
1. 什么是CAN通信? CAN(Controller Area Network,控制器局域网) 是一种广泛应用于汽车电子系统的串行通信协议,由德国Bosch公司在1980年代开发,主要用于实现车内电子控制单元(ECU)之…...
按句子切分文本、保留 token 对齐信息、**适配 tokenizer(如 BERT)**这种需求
在之前的文章中我解释了 把长文本切分成一句一句的小段(chunk),每一段尽量是一个完整的句子,而不是强行按字数截断。 但是这个方法自己写会比较复杂,有很多处理这种场景的工具可以直接拿来用。 下面就 处理按句子切分…...
缓存(1):三级缓存
三级缓存是指什么 我们常说的三级缓存如下: CPU三级缓存Spring三级缓存应用架构(JVM、分布式缓存、db)三级缓存 CPU 基本概念 CPU 的访问速度每 18 个月就会翻 倍,相当于每年增⻓ 60% 左右,内存的速度当然也会不断…...
Kubernetes client-go 客户端类型与初始化指南
Kubernetes client-go 客户端类型与初始化指南 在 Kubernetes 的 client-go 库中,存在多种客户端用于与 API 服务器交互。以下介绍主要客户端类型,包括用途、初始化方式及 Demo。 1. RESTClient 用途 RESTClient 是底层 REST 客户端,直接…...
【金仓数据库征文】金仓数据库:创新驱动,引领数据库行业新未来
一、引言 在数字化转型的时代洪流中,数据已跃升为企业的核心资产,宛如企业运营与发展的 “数字命脉”。从企业日常运营的精细化管理,到战略决策的高瞻远瞩制定;从客户关系管理的深度耕耘,到供应链优化的全面协同&…...
图漾相机——Sample_V2示例程序(待补充)
文章目录 1.SDK支持的平台类型1.1 Windows 平台1.2 Linux平台 2.Sample_V2编译流程2.1 Windows环境2.2 Linux环境编译 3.Sample_V2示例程序测试3.1 ListDevice_v23.2 DepthStream_v23.3 ExposureTimeSetting_v23.4 ForceDeviceIP_v23.5 GetCalibData_v23.6 NetStatistic_v23.7 …...
手写 vue 源码 ===:自定义调度器、递归调用规避与深度代理
目录 引言 自定义调度器(Scheduler) 什么是调度器? 调度器的实现原理 自定义调度器的实际应用 切面编程(AOP)思想在调度器中的应用 递归调用规避 递归调用的问题 Vue 如何规避递归调用 深度代理(D…...
WPF实时调试的一种实现方法
在WPF程序中,如果我们需要对程序进行调试,一般是使用断点/单步或输出日志之类的调试方法。 如果我们需要实时查看程序输出,可以将程序的输出类型修改为控制台应用程序 这样我们在程序运行后,就可以得到一个控制台窗口。 然后再配…...
数据库操作
本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接…...
学习笔记:数据库——事务
1.内容: 基于现有数据库设计检查点实验,观察比较提交前后执行结果并分析。 2.实现 源码 -- 开启事务 START TRANSACTION;-- 插入一条订单记录(客户ID为10002) INSERT INTO orders (o_date, c_id) VALUES (NOW(), 10002);-- 获…...
企业级可观测性实现:OpenObserve云原生平台的本地化部署与远程访问解析
文章目录 前言1. 安装Docker2. 创建并启动OpenObserve容器3. 本地访问测试4. 公网访问本地部署的OpenObserve4.1 内网穿透工具安装4.2 创建公网地址 5. 配置固定公网地址 前言 嘿,各位小伙伴们,今天要给大家揭秘一个在云原生领域里横扫千军的秘密法宝—…...
【Linux系统】第三节—权限
Hello,好久不见—— 云边有个稻草人-CSDN个人博客主页 Linux-本节文章所属专栏-欢迎订阅-持续更新中~~~ 目录 hi!在这里—本节课重要知识点详解 一、Shell命令以及运行原理 二、Linux权限 2.1 Linux权限的概念 2.2 Linux权限管理 2.3 ⽂件权限值的…...
@Data和 @NoArgsConstructor注解详解
Data 和 NoArgsConstructor 注解详解 1. Data 注解 作用:Data 是 Lombok 提供的一个复合注解,用于自动生成 Java 类的常用方法,减少样板代码。生成的内容: Getter 和 Setter:为所有非静态、非 final 字段生成 getter…...
《云计算》第三版总结
《云计算》第三版总结 云计算体系结构 云计算成本优势 开源云计算架构Hadoop2.0 Hadoop体系架构 Hadoop访问接口Hadoop编程接口 Hadoop大家族 分布式组件概述ZooKeeperHbasePigHiveOozieFlumeMahout 虚拟化技术 服务器虚拟化存储虚拟化网络虚拟化桌面虚拟化OpenStack开源虚…...
滚珠导轨:电子制造领域精密运动的核心支撑
电子制造正朝着高精度、高效率方向飞速发展,滚珠导轨在这一进程中扮演着重要角色。滚珠导轨在电子制造领域中具有广泛且重要的应用,主要体现在以下几个方面: 1、印刷电路板(PCB)制造设备:滚珠导轨在PCB制造…...
Spark缓存--cache方法
在Spark 中,cache() 是用于优化计算性能的核心方法之一,但它有许多细节需要深入理解。以下是关于 cache() 的详细技术解析: 1. cache() 的本质 简化的 persist():cache() 是 persist(StorageLevel.MEMORY_ONLY) 的快捷方式&#x…...
kafka logs storage
Kafka 会将日志文件按段(Segment)存储。 Segment是Kafka的最小存储单元,它是一个可追加的文件,用于存储Kafka分区中的一部分消息。 在文件系统中,Partition 是目录名,而Segment 是文件名。 Segment可以通过…...
数据分析平台选型与最佳实践:如何打造高效、灵活的数据生态?
数据分析平台选型与最佳实践:如何打造高效、灵活的数据生态? 在大数据时代,数据分析平台已经成为企业决策的核心支撑。从传统 BI(商业智能)到现代 AI 驱动的数据分析,选择合适的平台不仅影响数据处理效率,也决定了企业的数字化竞争力。面对市场上的众多解决方案(如 Ap…...
MYSQL之索引结构,为何要用B+树
索引的目的就是为了提高查询效率 索引的结构是B树,那么说到B树,必须提一下其他三种结构,分别是:二叉查找树、平衡二叉树、B树 我们来看看各自的结构特征 二叉查找树 特点:任何节点的左子节点的值都小于当前节点的值,右…...
OpenCV 中用于背景分割的一个类cv::bgsegm::BackgroundSubtractorLSBP
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::bgsegm::BackgroundSubtractorLSBP 是 OpenCV 中用于背景分割的一个类,它基于局部样本二进制模式(Local Sample Bina…...
【PmHub后端篇】PmHub Gateway全局过滤器:接口调用耗时统计及黑白名单配置技术深度解析
在微服务架构日益成为现代应用开发主流模式的背景下,网关作为微服务架构前端的关键组件,肩负着路由请求、负载均衡、安全认证、流量控制、监控和日志记录等多项重要任务。本文将围绕PmHub项目中Gateway全局过滤器实现接口调用耗时统计的相关技术进行深入…...
国产激光二极管厂家
中国在激光二极管(Laser Diode)领域已有多家厂商布局,涵盖从低功率到高功率、不同波长的产品,应用于工业、医疗、通信、消费电子等领域。以下是部分国产激光二极管厂家及相关信息,供参考: 1. 武汉锐科光纤…...
安卓基础(XML)
123 属性行为适用场景注意事项match_parent填满父容器可用空间全屏视图、占满剩余空间父容器需有固定尺寸wrap_content根据内容自适应尺寸动态文本、图标、浮动按钮内容过长时可能超出父容器需处理 123 属性作用常用值…...
uniapp|获取当前用户定位、与系统设定位置计算相隔米数、实现打卡签到(可自定义设定位置、位置有效范围米数)
基于UniApp阐述移动应用开发中定位功能的实现全流程,涵盖实时定位获取、动态距离计算与自定义位置、有效范围设定等功能。文章提供完整的代码示例与适配方案,适用于社交签到、课堂教室打卡等场景。 目录 引言定位功能在移动应用中的价值(社交、导航、O2O等场景)UniApp跨平台…...
matlab稳定求解高精度二维对流扩散方程
利用MATLAB稳定求解高精度二维对流扩散方程 Diffusion_1D.m , 2310 Diffusion_2D.m , 3813 license.txt , 1334...
【最新版】likeshop连锁点餐系统-PHP版+uniapp前端全开源
一.系统介绍 likeshop外卖点餐系统适用于茶饮类的外卖点餐场景,搭建自己的一点点、奈雪、喜茶点餐系统。 系统基于总部多门店的连锁模式,拥有门店独立管理后台,支持总部定价和门店定价LBS定位点餐,可堂食可外卖。无论运营还是二开…...
Redis 重回开源怀抱:开源精神的回归与未来展望
在开源软件的广袤天地里,Redis 一直是备受瞩目的明星项目。近期,Redis 宣布重新回归开源,这一消息犹如一颗石子投入平静的湖面,在技术社区激起层层涟漪。今天,就让我们深入了解 Redis 这一重大转变背后的故事、意义以及…...
mac运行java文件提示 错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序
1、问题如上 双击java文件打不开,命令行报错。查找了下文章说java8之后,高版本jdk不自带javafx,需要自己下载 2、解决办法 首先查看自己的java版本,我是17.0.10 访问 JavaFX - Gluon 下载对应的版本,如果没有对应的 …...