- 博客(97)
- 收藏
- 关注
原创 磁盘存储下红黑树、B 树与 B + 树的原理、操作及对比
本文围绕计算机系统中磁盘与内存的存储特性展开,深入阐述了数据读写的原理。在此基础上,着重探讨了 B 树和 B + 树的产生原因,详细介绍了 B 树的定义、插入、删除及范围查找的原理,同时给出了部分 B 树的代码实现示例。通过与 B 树对比,说明了 B + 树在数据存储结构、查询方式、插入删除操作等方面的特点。最后,以表格形式对红黑树、B 树和 B + 树从定义、结构特点、查找效率、插入删除效率、空间利用率、适用场景等多个维度进行了综合比较,清晰地展现了三者的差异,旨在揭示数据库、文件系统中高效数据存储与检
2025-04-11 18:50:36
392
原创 树、二叉树、二叉查找树、AVL 树及红黑树的深入解析
本文系统阐述了树的基本概念、术语及常见结构,包括树的定义、遍历方式等内容。详细介绍了二叉树的定义、性质、分类,对比了二叉树与度为 2 的树的区别。对二叉查找树进行了代码实现与性能分析,指出其在理想与最坏情况下的性能差异。深入讲解了平衡二叉搜索树(AVL 树)的特点与性能优势。重点探讨了红黑树,从定义、性质、代码实现,到左旋右旋操作的原理及代码展示,还列举了其在数据结构、操作系统、数据库、网络服务器等多领域的应用场景,并对比了二叉搜索树、AVL 树和红黑树在定义特性、平衡策略、操作时间复杂度、适用场景、空间复
2025-04-11 15:57:03
215
原创 c++新特性 多线程
std::chrono::nanoseconds:纳秒时长。std::chrono::microseconds:微秒时长。std::chrono::milliseconds:毫秒时长。std::chrono::seconds:秒时长。std::chrono::minutes:分钟时长。std::chrono::hours:小时时长。
2025-04-11 09:38:30
564
原创 关于“网络编程“组件之 “Buffer“
发送缓冲区(Send Buffer):存储应用程序发送但尚未被 TCP 协议确认的数据。接收缓冲区(Receive Buffer):存储从网络接收到但尚未被应用程序读取的数据。
2025-04-10 09:49:03
449
原创 FFMEPG常见命令查询
in][sub]overlay=x=20:y=20:将输入视频流([in])和子视频流([sub])进行叠加(overlay)。x=20 和 y=20 参数指定了子视频在主视频上的起始位置,即子视频左上角的 x 坐标为 20,y 坐标为 20。y=abs(sin(t))*0.7:设置水印的 y 坐标,使其根据正弦函数 sin(t) 的值在视频高度的 0.7 倍范围内上下波动。t,main_w):设置水印的 x 坐标,使其在视频宽度内按时间 t (以秒为单位)进行周期性移动。不指定 就是整个视频。
2025-04-09 18:25:43
450
原创 如何深刻理解Reactor和Proactor
前言:网络框架的设计离不开 I/O 线程模型,线程模型的优劣直接决定了系统的吞吐量、可扩展性、安全性等。目前主流的网络框架,在网络 IO 处理层面几乎都采用了I/O 多路复用方案(又以epoll为主),这是服务端应对高并发的性能利器。进一步看,当上升到整个网络模块时,另一个常常听说的模式出现了 ---- 「Reactor 模式」,也叫反应器模式,本质是一个事件转发器,是网络模块核心中枢,负责将读写事件分发给对应的读写事件处理者,将连接事件交给连接处理者以及业务事件交给业务线程。可以看到,网络请求先后经历
2025-04-07 11:15:47
959
原创 Ubuntu 20.04 中 Git 的安装、配置和基本操作指南
Ubuntu 中的 Git 初始化:安装 Git。配置用户名和邮箱。创建 SSH 公钥并添加到 GitHub。本地 Git 操作,包括添加、修改、提交文件,以及版本回退。工作区和暂存区的概念。删除文件与恢复文件的操作。GitHub 远程操作,包括添加远程仓库、提交仓库和输入令牌。Git 本地操作:创建和初始化 Git 仓库。添加和提交文件到仓库。修改文件内容并提交更改。查看文件改动和版本回退。理解工作区、暂存区和版本库的关系。删除和恢复文件。GitHub 远程操作:添加远程仓
2025-04-02 10:30:55
965
原创 从零开始:Makefile 与 CMake 的基础入门与实践
Makefile 是一种具体的构建工具,直接用于编译和链接代码。CMake 是一个构建工具生成器,它通过生成 Makefile 或其他构建系统文件来简化构建过程。关系:CMake 是 Makefile 的“上层工具”,它生成 Makefile,而 Makefile 是实际执行构建任务的工具。
2025-03-31 18:21:31
501
原创 FFmpeg 命令参数详解:多媒体处理的强大工具
FFmpeg 是一个功能强大的多媒体框架,能够处理视频和音频数据。本文详细介绍了 FFmpeg 的各种命令参数,包括如何查看版本信息、编译配置、支持的格式、编解码器、过滤器等。通过这些命令,用户可以了解 FFmpeg 的功能和如何使用它来处理多媒体文件。文章还解释了像素格式、声道布局、音频采样格式和颜色名称等多媒体处理中的关键概念。此外,提供了如何查询特定类型(如容器、解码器、过滤器)支持的所有命令的方法,帮助用户更有效地使用 FFmpeg 进行多媒体处理。
2025-03-31 08:57:38
547
原创 c++内存管理-实例
我们使用 lambda函数来捕捉这self,一旦这个这个异步操作执行,这个就会捕捉share-ptr,使其计数+1,执行完毕就减一。服务器端与客户端,在单个服务器端如何对多个客户端,保证每一个对话安全?使用 std::make_shared 来管理会话。这个方法是用来管理对象。
2025-03-29 10:46:29
158
原创 深入解析音频:格式、同步及封装容器
文全面介绍了音频和视频编解码的基础知识,包括物理音频和数字音频的转换、音频编码的基本概念,以及视频的GOP结构和帧类型。详细解释了RGB与YUV颜色编码的原理和应用场景,探讨了音频的采样频率、采样精度和通道数对音质的影响。进一步,文章阐述了视频的I、P、B帧及其在编码过程中的作用,以及DTS(Decoding Time Stamp)和PTS(Presentation Time Stamp)在音视频同步中的重要性。此外,还讨论了不同的音频和视频封装格式如WAVC、AAC、MP3GP、FLAC等,以及它们在多媒
2025-03-29 09:01:11
894
原创 深入理解视频编码:RGB与YUV格式、采样帧
本文深入探讨了视频编码中的核心技术,包括RGB与YUV颜色编码格式、采样帧的概念及其在视频处理中的应用,以及GOP(图像组)结构对视频压缩效率的影响。文章首先解释了RGB格式的直观性和广泛支持,以及YUV格式在视频压缩中的优势。接着,讨论了采样帧的定义、类型及其在视频分析和编辑中的重要性。此外,文章还详细阐述了GOP结构,包括I帧、P帧和B帧的作用和特点,以及它们如何共同提高视频压缩效率。通过本文,读者将获得关于视频编码和压缩的全面理解,为进一步的视频处理和分析打下坚实的基础。
2025-03-28 18:36:29
670
原创 深入剖析 C++ Boost.Asio 库:异步编程、io_context 与原子操作的奥秘
在 C++ 编程领域,高效处理并发与异步操作至关重要。本文专注于基础概念,深入解析了 Boost.Asio 库中的核心组件 ——io_context,以及异步编程和原子操作的关键知识。详细介绍了异步操作的概念、特点和回调机制,让你明白如何在不阻塞程序的情况下处理任务。同时,全面阐述了 io_context 的工作原理、内部结构以及在单线程和多线程环境中的线程交互方式。此外,还讲解了原子操作的概念及其在异步编程中保证数据一致性、实现无锁数据结构和同步异步任务的重要作用。通过丰富的示例代码,助你轻松掌握这些复杂
2025-03-28 11:32:21
546
原创 boost/asio的同步网络核心组件(完善中)
boost::asio::ip::tcp::endpoint(upd类似)类用于表示一个 TCP 网络通信的端点,它封装了 IP 地址和端口号的信息。在网络编程中,端点是通信双方进行数据交换的基础,通过指定端点,程序可以确定与哪个 IP 地址和端口进行连接或监听。io_context 本质上是一个事件循环(Event Loop)管理器,它负责跟踪和调度所有注册到其中的异步操作,当这些操作完成时,会触发相应的回调函数。
2025-03-26 11:27:02
817
原创 你人生中的第一个‘‘http‘‘服务器-详解tinnyhttp和修改函数
本篇文章需要你要两个前置知识第一 你需要了解网络编程基础知识 和socket、bind、listen和accept函数第二 你需要了解什么是http协议参考1.
2025-03-26 09:58:07
703
原创 讲解vita-clip论文
Vita-CLIP: Video and text adaptive CLIP via Multimodal Prompting由 Syed Talal Wasim 等人撰写。文章提出多模态提示学习方案 Vita-CLIP,以平衡视频识别任务中监督学习和零样本学习的性能,通过引入额外可学习参数,在保持预训练骨干网络冻结的情况下,实现优异的零样本性能和有竞争力的监督性能。下面从研究背景、创新点、实验结果和不足四个方面详细讲解。
2025-03-25 18:56:26
894
原创 基于 CLIP 的文本与视频编码及相关知识解析
本文详细阐述了基于 CLIP(Contrastive Language-Image Pretraining)的文本与视频编码过程。在文本编码方面,介绍了输入文本前的分词操作,如何根据文本提示组成特定长度的上下文,以及 nn.embeding 函数生成词嵌入向量等步骤,还提及 CLIP 文本编码器对数据维度的变换。在视频编码部分,深入讲解了训练和验证阶段的采样方式,视频塑形操作以及将视频输入图像编码器的原理,包括帧作为独立图像和逐帧处理的方法。此外,补充了 VIT(Vision Transformer)在视频
2025-03-25 18:38:48
802
原创 HTTP 协议中请求与响应的详细解析
本文详细介绍了 HTTP 协议中请求与响应的相关内容。HTTP 请求由请求行、请求头和可选的请求体组成,请求行包含请求方法(如 GET、POST、HEAD 等)、Request-URI(指定所请求资源的字符串,由路径、查询字符串、片段标识符组成)和 HTTP 版本;请求头以键值对形式向服务器传递附加信息,包括通用、实体、客户端等请求头字段;请求体用于发送额外数据,数据格式有表单数据、JSON 数据、二进制数据等。还给出了 Python 使用requests库发送请求的实战示例。HTTP 响应则由状态行(含
2025-03-25 17:36:02
935
原创 深入了解epoll模型(特别详细)
无疑是有记忆和无记忆的区别水平触发(LT):有记忆行为特点水平触发模式下,只要文件描述符的状态满足条件(例如可读或可写),epoll 就会一直报告该事件,直到状态改变。例如,如果一个文件描述符可读,epoll_wait 会反复返回该事件,直到数据被读取完,或者文件描述符不再可读。“有记忆”:LT 模式下,epoll 会持续跟踪文件描述符的状态,只要状态满足条件,就会一直触发事件。即使程序没有立即处理事件,epoll 也会在后续调用中继续报告该事件。边缘触发(ET):无记忆行为特点。
2025-03-24 19:10:51
1345
原创 详解io复用技术之select
select 是一种用于 I/O 复用的系统调用,它允许程序同时监视多个文件描述符(file descriptors),以确定它们是否处于可读、可写或异常状态。select 是最早出现的 I/O 多路复用技术之一,广泛应用于 Unix、Linux 和 Windows 等操作系统中select 的主要功能是检查一组文件描述符的状态,判断它们是否准备好进行 I/O 操作。它通过轮询的方式检查每个文件描述符的状态,并在某个文件描述符准备好时返回。
2025-03-24 11:21:28
941
原创 一文了解 分布式训练
分布式训练是指将深度学习模型的训练任务分散到多个计算节点上进行并行处理。通过这种方式,可以充分利用多个硬件资源,从而显著加快训练速度,提高训练效率。
2025-03-21 18:13:23
669
原创 详解C++函数对象和谓词
在自然语言的世界里,无论是汉语还是英语,都有 “谓词”(谓语)的概念,像汉语里的 “是”,英语中的 “is”,它们在句子中承担着表达动作、状态等关键语义的重要角色。那在计算机语言的领域中,是否也存在谓词呢?答案是肯定的!计算机语言里的谓词和函数、函数对象紧密相连。函数对大家来说或许并不陌生,不过函数对象,可能就有很多人不太了解了。接下来,我们就把关注点聚焦在函数对象上,深入探究它的奥秘。
2025-03-19 19:53:27
497
原创 详解加实操C++之分配器
使用自定义// 自定义分配器模板类public:// 定义分配器的类型别名// 用于分配内存的函数if (!// 用于释放内存的函数// 构造对象的函数// 销毁对象的函数p->~U();// 特化 std::allocator_traits 以支持自定义分配器// 使用自定义分配器创建 std::vector 容器i < 10;++i) {// 输出容器中的元素return 0;
2025-03-19 19:52:21
907
原创 c++stl之常见算法
综述:在 C++ 的标准模板库(STL)中,算法可以分为质变算法(Mutating Algorithms)和非质变算法(Non - Mutating Algorithms)。
2025-03-17 17:49:40
925
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人