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

树莓派学习专题<11>:使用V4L2驱动获取摄像头数据--启动/停止数据流,数据捕获,缓存释放

树莓派学习专题<11>:使用V4L2驱动获取摄像头数据--启动/停止数据流,数据捕获,缓存释放

  • 1. 启动和停止数据流
  • 2. 捕获数据
  • 3. 释放缓存

1. 启动和停止数据流

使用命令 VIDIOC_STREAMON 启动摄像头数据流,使用命令 VIDIOC_STREAMOFF 停止摄像头数据流。
这两条命令的定义是:

#define VIDIOC_STREAMON		 _IOW('V', 18, int)
#define VIDIOC_STREAMOFF	 _IOW('V', 19, int)

这两条命令都需要一个 enum v4l2_buf_type 类型的参数作为入参数。参数内容固定填写 V4L2_BUF_TYPE_VIDEO_CAPTURE
代码如下:

/*******************************************************************************
- Function    : __StartStream
- Description : 本函数启动数据接收。
- Input       : VOID
- Output      : NULL
- Return      : VOID
- Others      :
*******************************************************************************/
void __StartStream(void)
{enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;if(-1 == ioctl(g_iFDVideo, VIDIOC_STREAMON, &type)){printf("Start stream failed.\n") ;exit(-1) ;}return ;
}/*******************************************************************************
- Function    : __StopStream
- Description : 本函数停止数据接收。
- Input       : VOID
- Output      : NULL
- Return      : VOID
- Others      :
*******************************************************************************/
void __StopStream(void)
{enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;if(-1 == ioctl(g_iFDVideo, VIDIOC_STREAMOFF, &type)){printf("Stop stream failed.\n") ;exit(-1) ;}return ;
}

2. 捕获数据

代码如下:

/*******************************************************************************
- Function    : __ReadFrame
- Description : 本函数读取摄像头数据并写入到文件。
- Input       : VOID
- Output      : NULL
- Return      : VOID
- Others      :
*******************************************************************************/
void __ReadFrame(void)
{struct v4l2_buffer stBuf;memset(&stBuf, 0, sizeof(stBuf)) ;stBuf.type   = V4L2_BUF_TYPE_VIDEO_CAPTURE;stBuf.memory = V4L2_MEMORY_MMAP;if(-1 == ioctl(g_iFDVideo, VIDIOC_DQBUF, &stBuf)){printf("De-queue buffer failed.\n") ;exit(-1) ;}#if 1 == WRITE_TO_FILEif(-1 == write(g_iFDStore, g_pstBufDesc[stBuf.index].pvBufPtr, stBuf.bytesused)){printf("Write camera data failed.\n") ;exit(-1) ;}
#endifif(-1 == ioctl(g_iFDVideo, VIDIOC_QBUF, &stBuf)){printf("Re-Queue buffer failed.\n") ;exit(-1) ;}return ;
}/*******************************************************************************
- Function    : __CaptureFrame
- Description : 本函数捕获帧数据。
- Input       : VOID
- Output      : NULL
- Return      : VOID
- Others      :
*******************************************************************************/
void __CaptureFrame(void)
{struct timeval stTimeVal ;fd_set         stFDRead ;int            iRetVal ;stTimeVal.tv_usec = 0 ;stTimeVal.tv_sec  = 2 ; FD_ZERO(&stFDRead) ;FD_SET(g_iFDVideo, &stFDRead) ;iRetVal = select(g_iFDVideo + 1, &stFDRead, NULL, NULL, &stTimeVal) ;if(-1 == iRetVal){perror("select") ;exit(-1) ;}else if(0 == iRetVal){printf("timeout.\n") ;exit(-1) ;}__ReadFrame() ;return ;
}

主函数中,首先调用函数 __StartStream 来启动摄像头输出数据的接收。而后调用函数 __CaptureFrame 来捕获一帧数据。使用 select函数监视摄像头文件描述符的读操作。一旦监视到,则调用 __ReadFrame 函数来获取数据。

对于V4L2驱动,使用 VIDIOC_DQBUF命令来从缓存队列中取出一块就绪的缓存。该命令的定义如下:

#define VIDIOC_DQBUF		_IOWR('V', 17, struct v4l2_buffer)

命令需要一个struct v4l2_buffer类型的参数。
结构体中,index 字段指示了当前是那一块缓冲。bytesused 字段指示了缓冲中有多少有效数据量。对于非编码格式,如YUV或RGB系列格式,应该是整个缓冲都用了。使用index字段可以索引到对应缓存块在用户空间中的地址,从而获取数据。
从队列中取出缓存块后,可对缓存块中数据进行处理,例如写入文件,或者编码等。操作完毕后,还需要将缓存块重新放入到队列中。该操作使用 VIDIOC_QBUF 命令执行。

#define VIDIOC_QBUF		_IOWR('V', 15, struct v4l2_buffer)

3. 释放缓存

在使用 VIDIOC_STREAMOFF 命令停止摄像头数据流后,退出程序之前,还需要释放缓存。

/*******************************************************************************
- Function    : __UnmapBuffer
- Description : 本函数撤除缓冲区映射。
- Input       : VOID
- Output      : NULL
- Return      : VOID
- Others      :
*******************************************************************************/
void __UnmapBuffer(void)
{int iLoop ;for(iLoop = 0 ; iLoop < 4 ; iLoop++) {munmap(g_pstBufDesc[iLoop].pvBufPtr, g_pstBufDesc[iLoop].szBufSize) ;}free(g_pstBufDesc) ;return ;
}

这里包括解除 mmap 映射关系,以及释放描述符。


相关文章:

树莓派学习专题<11>:使用V4L2驱动获取摄像头数据--启动/停止数据流,数据捕获,缓存释放

树莓派学习专题&#xff1c;11&#xff1e;&#xff1a;使用V4L2驱动获取摄像头数据--启动/停止数据流&#xff0c;数据捕获&#xff0c;缓存释放 1. 启动和停止数据流2. 捕获数据3. 释放缓存 1. 启动和停止数据流 使用命令 VIDIOC_STREAMON 启动摄像头数据流&#xff0c;使用…...

adb push 报错:CreateProcess failure, error 123

客户使用adb push 可执行程序的时候报错如下所示 原因&#xff1a;文件目录里边带中文导致 解决方法&#xff1a;将文件目录里中文改成英文就好了...

【实战篇】数字化打印——打印格式设计器的功能说明

前言 myBuilder内置了覆盖丰富场景的打印格式设计器&#xff0c;效果统一&#xff0c;功能完善。 设计器一&#xff1a;小票 用于设计小票、水单等滚筒纸张的场景&#xff0c;例如&#xff1a;超市购物小票 主要功能 打印格式的保存、下载、上传设计时功能&#xff1a;撤销…...

【数据挖掘】时间序列预测-时间序列预测策略

时间序列预测策略 &#xff08;1&#xff09;单步预测与多步预测&#xff08;2&#xff09;直接多步预测&#xff08;3&#xff09;递归多步预测&#xff08;4&#xff09;直接递归的混合预测&#xff08;5&#xff09;多输入多输出预测 &#xff08;1&#xff09;单步预测与多…...

京东商品详情数据爬取难度分析与解决方案

在当今数字化商业时代&#xff0c;电商数据对于市场分析、竞品研究、价格监控等诸多领域有着不可估量的价值。京东&#xff0c;作为国内首屈一指的电商巨头&#xff0c;其商品详情页蕴含着海量且极具价值的数据&#xff0c;涵盖商品价格、库存、规格、用户评价等关键信息。然而…...

【Linux】线程

一.线程概念 我们在学习进程的时候已经知道了&#xff0c;进程内核数据结构pcb自己的代码和数据。那么单单一个task_struct是什么呢&#xff1f; 我们将单个的task_struct叫做轻量级进程&#xff0c;而这个轻量级进程也叫做线程。以往我们在了解进程的时候&#xff0c;一个进…...

WPF-遵循MVVM框架创建图表的显示【保姆级】

文章速览 1、技术栈实现步骤1、创建WPF工程项目2、引入框架 Caliburn.Micro、数据可视化库ScottPlot.WPF3、创建文件夹&#xff0c;并创建相应的View & ViewModel4、创建启动类5、将启动类设置为启动项6、编写View7、编写VM8、将VM和View中的图表进行绑定9、备注 示例效果 …...

深入详解人工智能数学基础—概率论-KL散度在变分自编码器(VAE)中的应用

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…...

《代码整洁之道》第9章 单元测试 - 笔记

测试驱动开发 (TDD) 是一种编写整洁代码的“规程”或“方法论”&#xff0c;而不仅仅是测试技术。 JaCoCo 在运行测试后生成详细的覆盖率报告的工具&#xff0c; maven 引用。 测试驱动开发 测试驱动开发&#xff08;TDD&#xff09;是什么&#xff1f; TDD 不是说写完代码…...

每日c/c++题 备战蓝桥杯(P2392 kkksc03考前临时抱佛脚)

【题解】期末考试抱佛脚最短时间&#xff08;动态规划 | 二进制背包&#xff09; 题目链接 题目背景 kkksc03 的大学生活非常颓废&#xff0c;临近期末考试才开始疯狂复习。他有 4 门科目需要复习&#xff0c;每一科都有若干道题目&#xff0c;每道题目需要一定的时间完成。…...

徽客松S1 | 合肥首场 AI 黑客松招募

越来越多的黑客松在各个城市出现&#xff01;5 月 10 日&#xff0c;合肥&#xff0c;12 小时极速挑战。 我们和本次「徽客松」发起人 SDL 也是在一个黑客松上相识。当你的城市还没有黑客松可参加&#xff0c;与其等待&#xff0c;不如学习 SDL&#xff0c;自己发起一个&#…...

单片机-89C51部分:6、按键

飞书文档https://x509p6c8to.feishu.cn/wiki/EtkHw8MG0ipz3NkHlZEcwpEnn4g 一、应用场景&#xff1a; 轻触开关、按键、电容开关、光栅传感器、微动、关电开关 二、原理&#xff1a; 轻触按键可以理解为两根导线&#xff0c;按下时导线连接&#xff0c;松开时导线断开。我们可…...

小结: DHCP

交换机的物理接口分批地址池、全局分配地址池 分批地址池&#xff08;接口地址池/局部分配&#xff09; 按物理接口&#xff08;如 VLAN 接口、SVI、物理端口&#xff09;划分&#xff0c;每个接口单独配置一个小型地址池。适合规模较小、子网划分清晰的场景。配置方法示例&…...

matlab simulink中理想变压激磁电流容易有直流偏置的原因分析。

simulink把线性变压器模块拉出来&#xff0c;设置没有绕线电阻的变压器&#xff0c;激磁电感和Rm都有&#xff0c;然后给一个50%占空比的方波&#xff0c;幅值正负10V&#xff0c;线路中设置一个电阻&#xff0c;模拟导线阻抗。通过示波器观察激磁电流&#xff0c;发现电阻越小…...

国产三维CAD皇冠CAD在「通用设备制造业」建模教程:台式起重机

在制造业数字化转型的浪潮中&#xff0c;三维CAD软件已成为装备设计的核心工具&#xff0c;而国产软件的崛起正悄然改变行业格局。皇冠CAD&#xff08;CrownCAD&#xff09;作为中国自主研发的云端三维CAD平台&#xff0c;凭借全栈可控的底层架构、高效协同的设计流程及复杂场景…...

Day 12

文件操作 文件文件操作文件函数课堂笔记 文件 1&#xff09;概述 FILE 所有平台的名字都一样&#xff0c;FILE 是一个结构体类型,里面的成员功能一样,不同平台成员的名字不一样。 FILE *fp 1、fp指针&#xff0c;只用调用了fopen().在堆区分配空间,把地址返回给fp 2、fp指针…...

Lua 第11部分 小插曲:出现频率最高的单词

在本章中&#xff0c;我们要开发一个读取并输出一段文本中出现频率最高的单词的程序。像之前的小插曲一样&#xff0c;本章的程序也十分简单但是也使用了诸如迭代器和匿名函数这样的高级特性。 该程序的主要数据结构是一个记录文本中出现的每一个单词及其出现次数之间关系的表。…...

自然语言处理之机器翻译:注意力机制在低资源翻译中的突破与哲思

## 被忽视的7000种语言 在人工智能翻译技术突飞猛进的今天,一个残酷的事实被刻意掩盖:全球7000种语言中,超过95%缺乏构建现代机器翻译系统所需的基础资源。当我们在庆贺Transformer模型将英德翻译BLEU值推高至40%时,那些承载着人类文明基因的少数民族语言,正在经历着前所未…...

SQL 处理重复数据之技巧(Techniques for Handling Duplicate Data with SQL)

SQL 处理重复数据之技巧 ❝ 在日常数据库操作中&#xff0c;我们经常会遇到重复数据的问题。重复数据不仅会占用存储空间&#xff0c;还可能导致数据分析结果不准确。本文将详细讲解 SQL 中处理重复数据的常用方法&#xff0c;帮助你更高效地管理数据库中的数据。 一、为什么会…...

Redis01-基础-入门

零、文章目录 Redis01-基础-入门 1、认识 NoSQL NoSQL 知识请参考&#xff1a;https://blog.csdn.net/liyou123456789/article/details/132612444 2、认识 Redis &#xff08;1&#xff09;简介 Redis&#xff08;Remote Dictionary Server&#xff0c;远程字典服务&…...

辞九门回忆

2025年月日&#xff0c;13~30℃&#xff0c;挺好的 待办&#xff1a; 《高等数学2》期末试卷 高数重修电子版材料 冶金《物理》期末试卷 《物理[2]》期末试卷 批阅冶金《物理》作业→→统计平时成绩 遇见&#xff1a;遇见一位小姐姐。 感受或反思&#xff1a;不主动推动关系&a…...

全球城市范围30米分辨率土地覆盖数据(1985-2020)

Global urban area 30 meter resolution land cover data (1985-2020) 时间分辨率年空间分辨率10m - 100m共享方式保护期 277 天 5 时 42 分 9 秒数据大小&#xff1a;8.98 GB数据时间范围&#xff1a;1985-2020元数据更新时间2024-01-11 数据集摘要 1985~2020全球城市土地覆…...

java编程式、声明式事务简单介绍

大家吼鸭&#xff01;今天学习新项目的时候&#xff0c;项目中运用了编程式项目&#xff0c;有点不理解什么叫编程式事务&#xff0c;于是我去查询了一些资料&#xff0c;大概了解了一下。现在做一个简单的介绍。 编程式事务和声明式事务的区别 现在想象一个场景&#xff0c;…...

Golang 遇见 Kubernetes:云原生开发的完美结合

Golang 和 Kubernetes 简介 Golang 概述 Golang&#xff0c;也称为 Go&#xff0c;是由 Google 开发的一种开源编程语言。Go 由 Robert Griesemer、Rob Pike 和 Ken Thompson 设计&#xff0c;于 2009 年首次发布&#xff0c;此后在各个领域都获得了广泛的关注&#xff0c;尤其…...

第三章,GRE和MGRE

VPN---虚拟专用网络 VPN的核心技术----隧道技术---封装 GRE---通用路由封装 配置 GRE的配置&#xff1a; R1&#xff1a; [r1]interface Tunnel 0/0/0 ---创建一个虚拟的隧道接口 [r1-Tunnel0/0/0]ip address 192.168.3.1 24 ---给隧道接口分配一个IP地址 [r1-Tunnel0/0/0]t…...

redis常用集合操作命令

在 Redis 的命令行界面&#xff08;redis-cli&#xff09;中&#xff0c; Redis 的集合&#xff08;Set&#xff09;是无序的&#xff0c;且集合中的元素是唯一的。Redis 本身没有直接提供获取集合中某个特定属性的命令&#xff0c;因为集合中的元素是简单的值&#xff0c;而不…...

vue3中ref在js中为什么需要.value才能获取/修改值?

文章目录 [TOC](文章目录) 一、ref定义值什么情况下需要.value1. 情况1:在js中需要使用.value2. 情况2:在html模版中不需要使用.value3. 情况31.代码2.效果3. 二、重新了解一下vue2和vue3的响应式1.vue2&#xff08;Object.defineProperty&#xff09;2.vue3&#xff08;proxy&…...

使用vue2 开发一个纯静态的校园二手交易平台-前端项目练习

这篇文章给大家分享一个适合练习学习前端技术的项目&#xff1a;校园二手交易平台系统。 因为最近在学习vue相关的技术&#xff0c;所以就根据学习的前端技术&#xff0c;来写一些纯前端的项目来练习&#xff0c;这篇文章主要是分享一下 我做的这个项目的一些功能&#xff0c;如…...

使用wavesurferJs实现录音音波效果

效果图展示 插件安装 npm i wavesurfer实现过程 <!-- author: weileiming date: 2025-04-26 14:04:08 description: 悬浮音波层 props:isRecord: 录制状态waveOptions: 音波基础配置overlayStyle: 基础蒙层配置 methods:togglePlay: 切换录制状态 --> <template>…...

Golang 类型方法

在 Go 语言中&#xff0c;方法绑定到任意类型的特性可以称为 “类型方法&#xff08;Type Methods&#xff09;” 或 “接收者方法&#xff08;Receiver Methods&#xff09;”&#xff0c;它体现了以下几种核心编程思想&#xff1a; 1. 官方术语&#xff1a;接收者方法&#x…...

多模态常见面试题

多模态常见面试 一、最近关注的论文&#xff0c;多模态视觉大模型(CLIP,DALLE)&#xff1f;二、blip2的架构&#xff0c;优势和之前多模态模型的区别&#xff1f;三、多模态融合后&#xff0c;怎样知道最终结果受哪种模态影响更大&#xff1f;四、多模态中常见的SOTA模型有哪些…...

LangChain构建大模型应用之RAG

RAG&#xff08;Retrieval-augmented Generation 检索增强生成&#xff09;是一种结合信息检索与生成模型的技术&#xff0c;通过动态整合外部知识库提升大模型输出的准确性和时效性。其核心思想是在生成答案前&#xff0c;先检索外部知识库中的相关信息作为上下文依据&#xf…...

Git 全面解析:从核心概念到生态应用

Git 一、Git 起源与定位 诞生背景&#xff1a;2005 年由 Linus Torvalds 为管理 Linux 内核开发而设计&#xff0c;因 BitKeeper 许可证争议&#xff0c;急需分布式版本控制系统&#xff08;DVCS&#xff09;替代集中式工具&#xff08;如 SVN&#xff09;。核心优势&#x…...

国产免费工作流引擎star 5.9k,Warm-Flow版本升级1.7.0(新增大量好用功能)

国产免费工作流引擎star 5.9k&#xff0c;Warm-Flow版本升级1.7.0&#xff08;新增大量好用功能&#xff09; 主要更新内容项目介绍功能思维导图设计器流程图演示地址官网Warm-Flow视频 之前大家一直吐槽没有撤销、驳回到上一个任务和拿回等功能&#xff0c;此次版本全都带给大…...

camera知识学习

1、DSP DSP&#xff08;数字信号处理器&#xff09;&#xff0c;这个是介于sensor和ISP处理的一个处理阶段&#xff0c;会进行一些传感器方面的偏硬件处理&#xff0c;再进行数据格式的转换&#xff0c;将raw数据转换成RGB数据或者YUV数据...

Java高频常用工具包汇总

Java高频常用工具包汇总 Java生态系统中有许多广泛使用的工具包&#xff0c;以下是一些高频常用的工具包分类汇总&#xff1a; 1. 核心工具包 Apache Commons系列 Commons Lang - 提供各种基础工具类Commons IO - 文件/IO操作工具Commons Collections - 集合扩展工具Commons …...

蓝桥杯 16. 密文搜索

密文搜索 原题目链接 题目描述 福尔摩斯从 X 星收到一份资料&#xff0c;全部是小写字母组成。 他的助手提供了另一份资料&#xff1a;许多长度为 8 的密码列表。 福尔摩斯发现&#xff0c;这些密码是被打乱后隐藏在先前那份资料中的。 请你编写一个程序&#xff0c;从第…...

Spring Boot 中多线程的基础使用

1. 核心机制 Spring Boot 通过 TaskExecutor 和 Async 注解支持多线程编程&#xff0c;结合线程池管理&#xff0c;有效提升应用性能。核心组件包括&#xff1a; EnableAsync&#xff1a;启用异步任务支持。 Async&#xff1a;标记方法为异步执行。 ThreadPoolTaskExecutor&…...

660SJBH企业信息管理系统

第一章 问题来源 1.1 课题提出背景和意义 由于企业规模进一步扩大&#xff0c;企业信息的管理也变得越来越复杂。为此&#xff0c;切实有效的把企业信息管理系统引入企业管理领域中&#xff0c;对于促进企业管理制度和提高企业质量有着显着意义。 Internet的发展使我们的企业…...

OpenCV实验室工具的使用

OpenCV实验室工具是一个调用OpenCV常见函数&#xff0c;让用户调整参数&#xff0c;快速得到试验结果的工具软件。 软件界面中包含三列&#xff0c;第一列是功能菜单&#xff0c;第二列是实现某一功能时需要输入的参数&#xff0c;第三列是图像处理历史。 OpenCV实验室包含了常…...

月之暗面开源-音频理解、生成和对话生成模型:Kimi-Audio-7B-Instruct

一、Kimi - Audio 简介 Kimi - Audio 是一个开源的音频基础模型&#xff0c;在音频理解、生成和对话等方面表现出色。其设计旨在作为一个通用的音频基础模型&#xff0c;能够在单一统一的框架内处理各种音频处理任务&#xff0c;如语音识别&#xff08;ASR&#xff09;、音频问…...

依赖于切片级标签,结合信息瓶颈理论,对弱监督病理切片分类模型进行微调

小罗碎碎念 在医学AI领域&#xff0c;病理全切片图像&#xff08;WSI&#xff09;分析意义重大&#xff0c;但面临诸多难题。 高分辨率的WSI使得获取精确注释极为困难&#xff0c;且计算成本高昂。 多实例学习&#xff08;MIL&#xff09;虽能利用WSI级弱监督缓解注释压力&…...

UE5 NDisplay 单主机打包运行

前言 最近在做UE的左右眼双屏输出&#xff0c;找了半天只有近年来比较火的NDispaly可以做这件事了&#xff0c;看了一下官方的教程写的很全面&#xff0c;但是相对笼统了一些&#xff0c;发现B站和一些博客了也写了有&#xff0c;但是我建议还是好好过一遍官方文档吧&#xff0…...

Kubernetes/KubeSphere 安装踩坑记:从 context deadline exceeded 到成功部署的完整排障笔记

目录 Kubernetes/KubeSphere 安装踩坑记&#xff1a;从 context deadline exceeded 到成功部署的完整排障笔记 一、问题现象 二、第一手日志采集 三、定位思路 四、分步解决 4-1 处理 pause:3.8 4-2 处理 kube-apiserver:v1.31.0 五、再次安装并验证 六、经验总结 七…...

SpringMVC 静态资源处理 mvc:default-servlet-handler

我们先来看看效果,当我把这一行注释掉的时候&#xff1a; 我们来看看页面&#xff1a; 现在我把注释去掉&#xff1a; 、 可以看到的是&#xff0c;这个时候又可以访问了 那么我们就可以想&#xff0c;这个 <mvc:default-servlet-handler />它控制着我们页面的访问…...

2、Linux操作系统下,ubuntu22.04版本安装搜狗输入法

1.添加中文语言支持&#xff0c;打开此窗口的步骤如下&#xff1a; system setting>language and region>language>install/remove language&#xff0c;之后弹出下面的窗口&#xff0c;点击“reminder me later勾选Chinese&#xff08;simplified&#xff09;&#…...

go语言八股文(四)

1.go语言中defer的变量快照在什么情况下会生效 1. 变量在 defer 被注册时的值被捕获 当 defer 被注册时&#xff0c;它会捕获变量在那一刻的值。如果变量是值类型&#xff08;如基本类型、结构体等&#xff09;&#xff0c;defer 会捕获该值的副本&#xff1b;如果变量是指针类…...

烽火HG680-MC_晨星MSO9385芯片-2+8G_安卓9.0_不分地区通刷卡刷固件包

烽火HG680-MC_晨星MSO9385芯片-28G_安卓9.0_不分地区通刷卡刷固件包 刷机教程&#xff1a; 1、准备一个优盘卡刷强刷刷机&#xff0c;用一个usb2.0的8G以下U盘&#xff0c;fat32&#xff0c;2048块单分区格式化&#xff08;强刷对&#xff35;盘非常非常挑剔&#xff0c;usb2.…...

秒杀压测计划 + Kafka 分区设计参考

文章目录 前言&#x1f680; 秒杀压测计划&#xff08;TPS预估 测试流程&#xff09;1. 目标设定2. 压测工具推荐3. 压测命令示例&#xff08;ab版&#xff09;4. 测试关注指标 &#x1f4e6; Kafka Topic 分区设计参考表1. 单 Topic 设计2. 分区路由规则设计&#xff08;Part…...

跨境电商货物体积与泡重计算器:高效便捷的物流计算工具

跨境电商货物体积与泡重计算器&#xff1a;高效便捷的物流计算工具 工具简介 货物体积与泡重计算器是一款免费的在线工具&#xff0c;专门为物流从业者、跨境电商卖家和需要计算货物运输体积重量的用户设计。这款工具可以帮助您快速计算货物的体积和对应的空运、快递泡重&…...