vue 中实现音视频播放进度条(可拖拽,满足常见开发需求)
由于开发需要,作者封装了一个音视频播放进度条的组件,支持 vue2 及 vue3 ,有需要的朋友后台私信作者获取组件源码哦(工作日每天都在线),下面是对该款组件的介绍。
组件默认样式👇(组件提供了多个配置选项,可根据自身需求进行个性化配置,详情请往下看)
效果演示(只展示部分,更多效果请往下看👇):
目录
- 一、介绍
- 1、用法概述
- 2、模式
- 二、使用
- 1、基础配置
- 1.1、模式(必传)
- 1.2、是否播放
- 1.3、播放开始的时间(必传)
- 1.4、播放倍速
- 1.5、禁用进度条
- 1.6、是否显示最左侧当前播放时间文本
- 1.7、是否显示播放暂停及启动按钮
- 1.8、是否显示倍速选择器
- 1.9、是否显示进度条提示
- 2、样式配置
- 2.1、组件的宽高设置
- 2.2、进度条中端点样式配置
- 2.3、进度条背景色
- 2.4、开始暂停按钮
- 2.5、进度条提示框出现位置
- 2.6、组件背景色
- 3、特殊配置
- 3.1、连续播放模式:
- 3.1.1、播放总时长(必传,非连续播放模式下请勿传递)
- 3.2、非连续播放模式
- 3.2.1、播放数据(必传)
- 3.2.2、进度条的开始及结束时间(必传)
- 3.2.3、跨度时间
- 3.2.4、进度条中的标识样式
- 3.2.5、是否显示刻度
- 3.2.6、刻度间隔时间
- 3.2.7、时间格式(左侧提示时间、刻度时间、进度条提示时间)
- 4、传出的进度条数据
- 4.1、进度条当前播放进度的时间
- 4.2、拖动进度条时触发的回调
- 4.3、拖动进度条后触发的回调
- 5、配置参数总结
- 基础配置
- 样式配置
- 特殊配置
- 连续播放模式:
- 非连续播放模式:
- 组件传出数据
- 6、用法示例
- 三、总结
一、介绍
该款组件可作为音频、视频播放的进度条,用于控制音频、视频的播放(播放进度、暂停开始、播放倍速、自定义刻度 等)。同时,组件提供了多方面的配置选项,使用者可以通过个性化配置来达到自己想要的效果(下面会对配置项进行详解),拓展性极高。
1、用法概述
在播放的过程中组件会返回当前播放的播放信息(如当前播放到的秒(进度)、进度条被拖拽时的回调、进度条拖拽后的回调等),根据这些返回信息,我们拿到后根据实际的需求来做不同处理就可以实现控制播放的效果。
2、模式
组件分为两种模式: 连续播放模式 及 非连续播放模式
❓ 连续和非连续分别表示什么意思呢 ❓
连续与非连续指的是播放是否是连续的。比如我们平时常见的音频、视频的播放是以秒作为单位,逐秒进行播放的,这就是连续播放。而非连续播放出现的情况可能比较少,指的是根据传入组件的数据,有数据的时间节点则进行播放,如果下一个数据的时间节点与当前数据时间节点间隔超过指定秒,则直接跳到下一个有数据的时间节点,若间隔不超过指定秒数则逐秒播放至下一数据时间节点,这样跳着播放的就是非连续播放。(有不懂的可联系作者)
二、使用
接下来对组件的 配置项 以及 能够获取到的进度条信息 进行详细说明:
1、基础配置
1.1、模式(必传)
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
type | String | continuous | 上面介绍中说到组件分为连续播放和非连续播放两种模式 (连续播放:continuous,非连续播放:discontinuous ) |
连续播放演示:
非连续播放演示:
1.2、是否播放
关于播放倍速有以下两个参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
isActivate | Boolean | true | 通过该参数可以控制播放的开始与暂停,初始值赋值为 true 则默认播放 |
演示(以连续播放为例,非连续播放效果相同):
1.3、播放开始的时间(必传)
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
scheduleStartTime | Number | 0 | 连续播放模式下传入播放开始的秒数,非连续播放模式传入播放开始的毫秒时间戳 |
//连续播放模式
const scheduleStartTime = 10 //表示从第10秒开始播放//非连续播放模式
const scheduleStartTime = 1679988534000 //1679988534000是一个毫秒时间戳,表示从1679988534000这个时间点开始播放
1.4、播放倍速
关于播放倍速有以下两个参数:
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
multipleList | Array | [64,32,16,8,4,2,1] | 提供的倍速选项,默认提供默认值中的播放倍速选项 |
multiple | Number | 1 | 当前的播放倍速,默认为1倍速 |
演示(以连续播放为例,非连续播放效果相同):
1.5、禁用进度条
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
disabled | Boolean | false | true 禁用,false 启用 |
演示(以连续播放为例,非连续播放效果相同):
1.6、是否显示最左侧当前播放时间文本
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
showTimeText | Boolean | true | true 显示,false 隐藏 |
演示(以连续播放为例,非连续播放效果相同):
1.7、是否显示播放暂停及启动按钮
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
showPlayBtn | Boolean | true | true 显示,false 隐藏 |
演示(以连续播放为例,非连续播放效果相同):
1.8、是否显示倍速选择器
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
showMultiple | Boolean | true | true 显示,false 隐藏 |
演示(以连续播放为例,非连续播放效果相同):
1.9、是否显示进度条提示
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
showTooltip | Boolean | true | true 显示,false 隐藏 |
演示(以连续播放为例,非连续播放效果相同):
2、样式配置
2.1、组件的宽高设置
需要设置了宽度组件才会显示,组件的宽度100%自适应包裹它的元素,通过修改其父元素的宽高来设置其宽度,组件自带高度不需要设置其高度,代码如下:
<div style="width:100%;"><ProgressBar :type="type":dataList="dataList":startTimestamp="startTimestamp":endTimestamp="endTimestamp"...@afterInput="afterInput" @afterChange="afterChange"@getCurrentProgress="getCurrentProgress"></ProgressBar></div>
2.2、进度条中端点样式配置
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
schedulePointConfig | Object | {width: ‘20px’,height: ‘20px’ } | 设置端点的样式 |
可配置的属性有:
属性 | 类型 | 描述 | 例子 |
---|---|---|---|
width | String | 宽度 | 15px |
height | String | 高度 | 15px |
borderColor | String | 边框颜色 | red |
borderWidth | String | 边框宽度 | 2px |
borderRadius | String | 边框弧度 | 10% |
bgColor | String | 背景色 | red |
bgImgUrl | String | 背景图片 | https://…png |
演示(以连续播放为例,非连续播放效果相同):
实现上方效果,schedulePointConfig 的配置为(可供参考):
import testImg from './assets/images/test_img.png'const schedulePointConfig = {width: '30px',height: '30px',bgImgUrl: testImg,borderColor: 'transparent',bgColor:'transparent',borderRadius: '0px'
}
2.3、进度条背景色
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
progressBarColor | String | #409eff | 设置进度条背景色 |
演示(以连续播放为例,非连续播放效果相同):
2.4、开始暂停按钮
开始暂停按钮可替换替换图片和设置大小,其它样式未提供配置,如有其他需求可隐藏自带按钮,根据自身需求个性化实现,组件提供控制播放开始及暂停的配置参数。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
activateImgUrl | String | – | 开始按钮 |
stopImgUrl | String | – | 暂停按钮 |
startStopBtnConfig | Object | {width: ‘15px’,height: ‘15px’,} | 样式配置,只提供宽高的配置 |
注意: 这里的图片并不像上文进度条端点可以使用本地图片,只能使用线上地址图片。
演示(以连续播放为例,非连续播放效果相同):
2.5、进度条提示框出现位置
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
placement | String | top | (vue2版本不能使用) 可选值有:‘top’ / ‘top-start’ / ‘top-end’ / ‘bottom’ / ‘bottom-start’ / ‘bottom-end’ / ‘left’ / ‘left-start’ / ‘left-end’ |
演示(以连续播放为例,非连续播放效果相同):
2.6、组件背景色
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
scheduleBgColor | String | transparent | 设置组件背景色 |
演示(以连续播放为例,非连续播放效果相同):
3、特殊配置
特殊配置指的是区分模式的一些配置。
3.1、连续播放模式:
3.1.1、播放总时长(必传,非连续播放模式下请勿传递)
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
max | Number | 0(单位:秒) | 连续播放模式下播放的总时长 |
3.2、非连续播放模式
3.2.1、播放数据(必传)
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
dataList | Array | [] | 非连续播放的播放数据 (传入数据时间必须从小到大进行排序) |
数据格式为:
let dataList = [{loc:{time: 1679981334000},alarm:{text:'我是标识1',style:{'color': 'red'}}},{loc:{time: 1679988534000},},{loc:{time: 1679992134000},alarm:{text:'我是标识2',style:{'color': 'red'}}},{loc:{time: 1679995734000},},{loc:{time: 1679998434000},},
]
结构说明: dataList 中的每一个元素表示一个有数据的时间节点,在播放的过程中会对这些点进行播放,两点间的时间间隔如果超过指定的跨度时间(跨度时间配置说明在下方 3.2.3 )则直接跳到下一个节点进行播放,如果不超过跨度时间则逐秒播放到下一个时间节点。loc 中的 time 属性就是该数据所处时间,而 alarm 表示该事件节点是否需要进行标注,存在 alarm 属性的节点会在进度条中进行标注。alarm 中的 text 表示标注的文本,通过 style 中的属性可以配置 text 文本的样式。
演示(该演示所使用数据就是上方的数据格式中的数据):
3.2.2、进度条的开始及结束时间(必传)
参数 | 类型 | 描述 |
---|---|---|
startTimestamp | Number(毫秒时间戳,如:1679980393000) | 进度条开始时间 |
endTimestamp | Number(毫秒时间戳,如:1679998698000) | 进度条结束时间 |
演示:
3.2.3、跨度时间
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
spanTime | Number | 30(单位:秒) | 两个节点如果间隔时间超过该跨度时间则直接跳转到下一节点,如果不大于该跨度时间则逐秒播放到下一个时间节点 |
3.2.4、进度条中的标识样式
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
marksConfig | Object | {color: ‘#e8405e’, width: ‘3px’} | width:宽度(String),color:颜色(String) |
演示:
3.2.5、是否显示刻度
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
showScale | Boolean | false | true:显示,false:隐藏 |
演示:
3.2.6、刻度间隔时间
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
scaleIntervalTime | Number | 30(单位:分钟,当刻度时间格式(scaleTextFormat)属性设置为 m:s 格式时单位自动变为秒) | 刻度的间隔时间 |
3.2.7、时间格式(左侧提示时间、刻度时间、进度条提示时间)
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
timeTipFormat | String | h:m | 设置左侧时间的格式 |
scaleTextFormat | String | h:m | 设置刻度时间的格式 |
tooltipFormat | String | h:m | 设置进度条提示时间的格式 |
能够设置的时间格式有(Y:年,M:月,D:日,h:时,m:分,s:秒):
h:m | Y-M-D h:m:s | M-D h:m:s | M-D h:m | Y-M-D |
Y/M/D h:m:s | M/D h:m:s | M/D h:m | Y/M/D | h:m:s | m:s(特殊)
注意: 当 scaleTextFormat 设置为 m:s 时,scaleIntervalTime(刻度间隔时间)属性的单位就会变为秒
4、传出的进度条数据
组件中传出的数据及钩子函数,通过传出的数据可以对外部的音视频播放进行控制。通过传出的钩子函数可以在相应的时机做自身需要的处理。
4.1、进度条当前播放进度的时间
函数 | 参数 | 描述 |
---|---|---|
getCurrentProgress | nowTime(当前的进度时间,连续播放模式下返回进度的秒,非连续播放模式下返回进度的毫秒时间戳) | 函数用户获取当前的播放进度 |
演示:
- 连续播放模式:
- 非连续播放模式:
4.2、拖动进度条时触发的回调
函数 | 参数 | 描述 |
---|---|---|
afterInput | value(Number类型,当前拖动到的进度) | 拖拽时触发 |
4.3、拖动进度条后触发的回调
函数 | 参数 | 描述 |
---|---|---|
afterChange | value(Number类型,当前拖动到的进度) | 拖拽后或者点击进度条某个点时触发 |
5、配置参数总结
基础配置
参数 | 类型 | 默认值 | 描述 | 是否必传 |
---|---|---|---|---|
type | String | continuous | 上面介绍中说到组件分为连续播放和非连续播放两种模式(连续播放:continuous,非连续播放:discontinuous ) | 是 |
isActivate | Boolean | true | 通过该参数可以控制播放的开始与暂停,初始值赋值为 true 则默认播放 | 否 |
scheduleStartTime | Number | 0 | 连续播放模式下传入播放开始的秒数,非连续播放模式传入播放开始的毫秒时间戳 | 是 |
multipleList | Array | [64,32,16,8,4,2,1] | 提供的倍速选项,默认提供默认值中的播放倍速选项 | 否 |
multiple | Number | 1 | 当前的播放倍速,默认为1倍速 | 否 |
disabled | Boolean | false | true 禁用,false 启用 | 否 |
showTimeText | Boolean | true | true 显示,false 隐藏 | 否 |
showPlayBtn | Boolean | true | true 显示,false 隐藏 | 否 |
showMultiple | Boolean | true | true 显示,false 隐藏 | 否 |
showTooltip | Boolean | true | true 显示,false 隐藏 | 否 |
样式配置
参数 | 类型 | 默认值 | 描述 | 是否必传 |
---|---|---|---|---|
schedulePointConfig | Object | {width: ‘20px’,height: ‘20px’ } | 设置端点的样式 | 否 |
progressBarColor | String | #409eff | 设置进度条背景色 | 否 |
activateImgUrl | String | – | 开始按钮 | 否 |
stopImgUrl | String | – | 暂停按钮 | 否 |
startStopBtnConfig | Object | {width: ‘15px’,height: ‘15px’,} | 设置开始暂停按钮样式 | 否 |
placement | String | top | 设置进度条提示的出现位置 | 否 |
scheduleBgColor | String | transparent | 设置组件背景色 | 否 |
特殊配置
连续播放模式:
参数 | 类型 | 默认值 | 描述 | 是否必传 |
---|---|---|---|---|
max | Number | 0(单位:秒) | 连续播放模式下播放的总时长,非连续播放模式下请勿传递 | 是 |
非连续播放模式:
参数 | 类型 | 默认值 | 描述 | 是否必传 |
---|---|---|---|---|
dataList | Array | [] | 非连续播放的播放数据 (传入数据时间必须从小到大进行排序) | 是 |
startTimestamp | Number(毫秒时间戳,如:1679980393000) | – | 进度条开始时间 | 是 |
endTimestamp | Number(毫秒时间戳,如:1679998698000) | – | 进度条结束时间 | 是 |
spanTime | Number | 30(单位:秒) | 跨度时间 | 否 |
marksConfig | Object | {color: ‘#e8405e’, width: ‘3px’} | 设置进度条中标注样式 | 否 |
showScale | Boolean | false | 是否显示刻度 | 否 |
scaleIntervalTime | Number | 30(单位:分钟,当刻度时间格式(scaleTextFormat)属性设置为 m:s 格式时单位自动变为秒) | 刻度的间隔时间 | 否 |
timeTipFormat | String | h:m | 设置左侧时间的格式 | 否 |
scaleTextFormat | String | h:m | 设置刻度时间的格式 | 否 |
tooltipFormat | String | h:m | 设置进度条提示时间的格式 | 否 |
组件传出数据
函数 | 参数 | 描述 |
---|---|---|
getCurrentProgress | nowTime(当前的进度时间,连续播放模式下返回进度的秒,非连续播放模式下返回进度的毫秒时间戳) | 函数用户获取当前的播放进度 |
afterInput | value(Number类型,当前拖动到的进度) | 拖拽时触发 |
afterChange | value(Number类型,当前拖动到的进度) | 拖拽后或者点击进度条某个点时触发 |
6、用法示例
<ProgressBar :type="discontinuous":isActivate="isActivate" @getCurrentProgress=getCurrentProgress...
></ProgressBar>
三、总结
组件包含了日常常见的进度条需求,基本能满足大部分进度条的使用环境。感兴趣的朋友可以后台私信作者获取组件(工作日每天都在线)。如有其他功能组件中未实现的,欢迎留言,作者会持续更新,感谢!
👇觉得有帮助的朋友可以支持下作者哦,您的鼓励是我创作的最大动力,如有开发问题可联系作者
相关文章:

vue 中实现音视频播放进度条(可拖拽,满足常见开发需求)
由于开发需要,作者封装了一个音视频播放进度条的组件,支持 vue2 及 vue3 ,有需要的朋友后台私信作者获取组件源码哦(工作日每天都在线),下面是对该款组件的介绍。 组件默认样式👇(组…...

[免费]SpringBoot+Vue企业OA自动化办公管理系统【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue企业OA自动化办公管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue企业OA自动化办公管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 随着信息技术在管理上越来越深入…...
笔记:在WPF中BitmapSource都有哪些派生类,他们主要功能,使用方法,使用场景
一、目的:在WPF中BitmapSource都有哪些派生类,他们主要功能,使用方法,使用场景 BitmapSource 是 WPF 中图像处理的基类,提供了许多派生类来处理不同类型的图像源。以下是一些常见的 BitmapSource 派生类、它们的主要功…...
JAVA基础学习笔记_多线程
文章目录 多线程并发和并行多线程的实现方式Thread类实现Runnable接口方式实现callable接口和Future接口实现 常用的成员方法线程的生命周期线程的安全问题同步代码块同步方法lock锁死锁 生产者和消费者(等待唤醒机制)阻塞队列实现等待唤醒机制线程的6种状态线程池自定义线程池…...
什么是自动化办公
自动化办公是指使用技术工具或软件,通过预设流程或脚本,自动执行日常办公任务,从而提升效率、减少错误、节约时间的办公模式。它适用于需要重复性、规则明确的工作流程,让员工将精力集中在更具创造性和战略性的工作上。 自动化办公…...

数据库系统
数据库模式 3个阶段以及各自的产物: 1、需求分析(数据流图、数据字典、需求说明书); 2、概念结构设计(ER模型); 3、逻辑结构设计(关系模式)); 关…...

文件系统--底层架构(图文详解)
一、文件系统的底层存储与寻址 当我们谈到文件系统的底层结构时,最关键的问题是:文件的数据与元数据(属性)如何存储在磁盘上,以及系统是如何定位这些数据的?在谈及文件系统之前,我们要先对储存…...

【OCR】——端到端文字识别GOT-OCR2.0不香嘛?
代码:https://github.com/Ucas-HaoranWei/GOT-OCR2.0?tabreadme-ov-file 在线demo:https://huggingface.co/spaces/stepfun-ai/GOT_official_online_demo 0.前言 最早做ocr的时候,就在想如何能做一个端到端的模型,就不用先检测再…...

SkyWalking 和 ELK 链路追踪实战
一、背景 最近在给项目搭建日志平台的时候,采用的方案是 SkyWalking ELK 日志平台,但发现 ELK 日志平台中的日志没有 Trace ID,导致无法追踪代码报错的整体链路。 空哥提示:Trace ID 是分布式追踪中用来唯一标识一个服务请求或事…...

ETCD的封装和测试
etcd是存储键值数据的服务器 客户端通过长连接watch实时更新数据 场景: 当主机A给服务器存储 name: 小王 主机B从服务器中查name ,得到name-小王 当主机A更改name 小李 服务器实时通知主机B name 已经被更改成小李了。 应用:服务注册与发…...

基于大数据爬+数据可视化的民族服饰数据分析系统设计和实现(源码+论文+部署讲解等)
博主介绍:CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围…...
torch.optim.lr_scheduler.ReduceLROnPlateau
torch.optim.lr_scheduler.ReduceLROnPlateau 是 PyTorch 中的一种学习率调度器,主要用于在模型训练过程中根据某些指标(如验证损失)动态调整学习率。它是一种基于性能指标动态调整学习率的策略,而不是预定义的固定时间调整。 主要…...
Linux 搭建ftp服务
FTP是什么? FTP(文件传输协议,File Transfer Protocol)是一种用于在计算机之间传输文件的网络协议。它基于客户端-服务器模型,允许用户从远程服务器上传、下载和管理文件。 FTP的主要作用 文件传输:FTP最基…...
阳光电源嵌入式面试题及参考答案
讲一讲声明变量的时候应该注意哪些内容。 在声明变量时,首先要考虑变量的类型。不同的数据类型有不同的用途和占用的存储空间大小。例如,基本数据类型如整型(int)通常占用 4 个字节,用来存储整数;而浮点型(float)用于存储带有小数部分的数字,占用 4 个字节,双精度浮点…...

PS的功能学习(形状、文字、图层)
关于图层 如果是在一个已经有其他图层的文档界面下,拉一张新图进来,就会自动转换成智能对象 注意,放大之后再栅格化,是会根据原本的防矢量图规则放大之后,再变回像素图层,这个变回来的像素图层是“在原像素…...

项目实例_FashionMNIST_CNN
前言 提醒: 文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。 其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展…...

Ubuntu 安装 web 服务器
安装 apach sudo apt install apache2 -y 查看 apach2 版本号 apache2 -v 检查是否启动服务器 sudo service apache2 status 检查可用的 ufw 防火墙应用程序配置 sudo ufw app list 关闭防火墙 sudo ufw disable 更改允许通过端口流量 sudo ufw allow Apache Full 开启…...

burp的编解码,日志,比较器
声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…...

2.1、模版语法
2.1.1、插值语法 1、代码示例 <body><!-- 准备容器 --><div id"app"><!-- 在data中声明的 --><!--1、 data中声明的变量 --><h1>{{msg}}</h1><h1>{{sayHello()}}</h1><!-- 不在data中的变量不可以 -->…...

最小二乘法拟合出二阶响应面近似模型
背景:根据样本试验数据拟合出二阶响应面近似模型(正交二次型),并使用决定系数R和调整的决定系数R_adj来判断二阶响应面模型的拟合精度。 1、样本数据(来源:硕士论文《航空发动机用W形金属密封环密封性能分析…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...

STM32HAL库USART源代码解析及应用
STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...