自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 IEEE TRANSACTIONS ON MULTIMEDIA(TMM) 投稿记录 (已接受)

记录第三篇论文投稿过程

2024-06-05 09:21:15 1157 10

原创 近几年视频取证、视频篡改检测技术发展现状及挑战

整理数字多媒体取证、视频篡改/伪造/生成检测近几年的好文章,想要找idea的可以参考参考

2024-04-29 09:21:36 2183 7

原创 HEVC(H.265)视频压缩编码格式与基础概念

HEVC(H.265)视频压缩编码格式介绍

2023-02-13 20:39:08 11181 1

原创 TinyWebSever项目面试题整理

互斥锁:就像房间钥匙,防止多个线程同时修改资源。读写锁:像图书馆,多个读者能同时看书,但改书时只能一个人来改。条件变量:像会议室,大家等老板发话才能行动。信号量:像停车场,限制同时进入的车的数量。自旋锁:像排队等车,短时间等锁,不用休息。屏障:像比赛,所有线程都到达一个点后才继续。原子操作:快速操作一个变量,不用上锁。Future 和 Promise:像点外卖,等任务完成拿结果。任务队列:像流水线,生产者放任务,消费者取任务做。

2024-09-23 15:36:14 602

原创 TinyWebSever源码逐行注释(六)_ sql_connection.cpp

Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器.sql_connection.cpp用于实现数据库的连接池。

2024-09-09 21:39:54 414

原创 TinyWebSever源码逐行注释(五)_ http_conn.cpp

根据状态转移,通过主从状态机封装了http连接类。其中,主状态机在内部调用从状态机,从状态机将处理状态和数据传给主状态机。http_conn.cpp利用一个主从状态机来处理客户端的htttp连接并生成相应的响应。Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器.

2024-09-09 21:14:24 1074

原创 TinyWebSever源码逐行注释(四)_log.cpp

log.cpp用于配置web服务器的同步/异步日志系统。该系统主要涉及了两个模块,一个是日志模块,一个是阻塞队列模块,其中加入阻塞队列模块主要是解决异步写入日志做准备。Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器.

2024-09-09 16:38:26 486

原创 TinyWebSever源码逐行注释(三)_ thread_pool.cpp

thread_pool.cpp用于配置web服务器的线程池,使用一个工作队列完全解除了主线程和工作线程的耦合关系:主线程往工作队列中插入任务,工作线程通过竞争来取得任务并执行它。Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器.

2024-09-09 16:35:44 617

原创 TinyWebSever源码逐行注释(二)_lst_timer.cpp

Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器.

2024-09-09 10:47:49 560

原创 TinyWebSever源码逐行注释(七)_简单代码的整合

项目简介:Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器.

2024-09-05 18:26:42 631

原创 TinyWebSever源码逐行注释(一)_webserver.cpp

项目简介:Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器.

2024-09-05 18:09:23 504

原创 网络编程_sockaddr_in结构体

通常定义在头文件中。// 地址族 (Address family),通常是 AF_INET// 16-bit 端口号 (Port number),需要使用 htons() 转换为网络字节序// 32-bit IPv4 地址 (IPv4 address)// 填充字节 (Padding),为保持与 `struct sockaddr` 一致是一个结构体,包含有关 IPv4 地址的信息,没有成员函数,只有成员变量。你可以通过使用这个结构体,它通常用于网络编程中,特别是在设置和处理套接字的地址时。

2024-09-04 20:32:11 387

原创 万字解析qinguoyi / TinyWebServer项目的源码

这个函数完成了服务器在启动时所需的各项初始化工作,包括创建监听套接字、设置套接字选项、初始化epoll、设置信号处理的管道和定时器等。最终,服务器准备好监听来自客户端的连接,并可以处理各种事件和信号。这个eventLoop函数是Web服务器的核心,它使用epoll机制来处理多种类型的事件,包括新客户端连接、信号处理、客户端数据读写等。通过这种事件驱动的模型,服务器可以高效地处理大量并发连接,而不会阻塞在某个特定的操作上,保证了服务器的高性能和稳定性。

2024-09-02 19:19:27 1153

原创 计网_整体概念逻辑简单过一遍

虽然 DNS 的层次化查询在表面上看似增加了通信开销,但通过分布式管理、缓存机制、灵活性和安全性等优点,实际提高了整个互联网系统的效率和可靠性。如果所有域名的 IP 地址都集中存储在根域服务器上,反而会导致更严重的网络资源浪费和潜在的性能瓶颈。三次握手的目的:保证双方都有发送和接收数据的能力,确保通信是可靠的。就像双方打电话前,确认对方都听得清楚,电话线路没问题,然后才开始正式通话。图中的每一步都表示了一个状态转换,保证数据包的顺序和确认,避免出现通信错误或数据丢失。

2024-08-30 15:41:42 1300

原创 IEEE Transactions on Dependable and Secure Computing(TDSC)投稿记录

TIFS投稿经历太坎坷了 其他审稿人都是小修和A 但第二个审稿人一直给拒 且第二轮拒的理由实在是让人无语 于是转投TDSC了。

2024-08-30 09:54:25 445

原创 C++_11特性

作用域控制enum class的枚举成员不再污染全局作用域,必须通过枚举类型名称来访问枚举成员。这种强类型控制避免了命名冲突。禁止隐式转换enum class的枚举类型是强类型的,不能隐式转换为整数或其他枚举类型。这种设计增加了类型安全性,避免了不必要的类型转换错误。C++11 是对C++语言的一次大升级,带来了许多现代化的特性,使得C++编程更加简洁、高效和安全。在面试中提到C++11特性,通常是希望考察你对这些新特性的理解和应用能力。

2024-08-26 10:14:10 596

原创 C++_内存错误

要知道进程的虚拟地址空间中有较大的空洞,没有映射到任何有意义的数据。如果我们试图间接引用一个指向这些洞的指针,那么操作系统就会以段异常中止程序。而且,虚拟内存的某些区域是只读的,试图写这些区域将会以保护异常中止这个程序。间接引用坏指针的一个常见示例是经典的 scanf 错误。假设我们想要使用 scanf 从 stdin 读一个整数到一个变量。然而,对于不少 C/C++ 初学者而言(对有经验者也是如此!在这种情况下,scanf 将把 val 的内容解释为一个地址,并试图将一个字写到这个位置。

2024-08-24 08:36:34 329

原创 C++_内存泄露相关

检测内存泄露的方法:手动检查代码:仔细检查代码中的内存分配和释放,确保每次分配内存后都有相应的释放操作。比如 malloc和free、new和delete是否配对使用了。使用调试器和工具:有一些工具可以帮助检测内存泄露。例如:Valgrind(仅限于Linux和macOS):Valgrind是一个功能强大的内存管理分析工具,可以检测内存泄露、未初始化的内存访问、数组越界等问题。

2024-08-23 16:24:50 303

原创 C++错题整理

A错误,因为a++操作通过临时量返回其值,该值是一个常量,因此不能被修改(不是左值),而后缀++需要对左值进行操作,所以会引起编译错误。所谓的左值,说通俗一点就是可以被修改和引用的值,左值可以取地址。与之相对的就是右值。在使用时,左值可以作为右值,但右值不能作为左值。

2024-08-21 15:12:57 204

原创 C++_malloc、new,free、delete的差异

new 操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。自由存储区是 C++ 基于new操作符的一个抽象概念,凡是通过 new 操作符进行内存申请,该内存即为自由存储区。而堆是操作系统中的术语,是操作系统所维护的一块特殊内存,用于程序的内存动态分配,C语言使用malloc从堆上分配内存,使用free释放已分配的对应内存。那么自由存储区是否能够是堆(问题等价于new是否能在堆上动态分配内存),这取决于operator new 的实现细节。

2024-08-21 14:59:13 357

原创 2025 IEEE International Conference on Acoustics, Speech, and Signal Processing(ICASSP) 投稿记录

第三篇论文转投记录

2024-08-13 11:35:48 1383 13

原创 C++_手写share_ptr

但是这个实现并不完整,它缺少了很多 std::shared_ptr 的高级功能,例如自定义删除器、std::make_shared() 和 std::allocate_shared() 函数以及线程安全性等。这个简化版的 shared_ptr 实现了基本的共享所有权和引用计数功能,方便我们学习了解原理。在实际项目中,还是使用 C++ 标准库提供的 std::shared_ptr。

2024-08-08 22:18:23 322

原创 AAAI Conference on Artificial Intelligence 2025 (AAAI 2025)投稿记录

不含参考文献页数要求7页投稿截止当日下午我才上传的摘要 我的论文编号已经超过了1.1W。

2024-08-08 16:01:16 2915 14

原创 C++_内存相关知识点

上面的问题,就是为了引出指针解引用的。pa中存储的是a变量的内存地址,那如何通过地址去获取a的值呢?这个操作就叫做解引用,在 C 语言中通过运算符就可以拿到一个指针所指地址的内容了。比如pa就能获得a的值。我们说指针存储的是变量内存的首地址,那编译器怎么知道该从首地址开始取多少个字节呢?这就是指针类型发挥作用的时候,编译器会根据指针的所指元素的类型去判断应该取多少个字节。如果是 int 型的指针,那么编译器就会产生提取四个字节的指令,char 则只提取一个字节,以此类推。

2024-08-08 15:03:15 919

原创 C++_虚函数相关知识点

虚函数的主要目的是实现多态,即允许在派生类中覆盖基类的成员函数。举个例子:在这段代码中, 类中有一个虚函数 , 类重写了这个虚函数。在 类的构造函数中调用 时,实际调用的是 类的 ,而不是 类的 。这就说明了为什么构造函数中不需要使用虚函数来实现多态。构造函数负责初始化类的对象,每个类都应该有自己的构造函数。在派生类中,基类的构造函数会被自动调用,用于初始化基类的成员。因此,构造函数没有被覆盖的必要,不需要使用虚函数来实现多态。构造函数的职责是初始化对象,确保所有成员变量都得到正确初始化。因此,每

2024-08-07 15:06:43 641

原创 C++_隐藏

隐藏(Hiding):子类中的同名函数会隐藏父类中的同名函数,无论是虚函数、非虚函数还是静态函数。重写(Overriding):子类可以重新定义父类的虚函数,允许在运行时动态调用子类的实现,实现多态性。重载(Overloading):在同一作用域中,可以定义多个同名函数但参数列表不同的函数,用来处理不同的参数类型或数量。静态函数相关静态函数不受重写影响静态函数在类的继承中不会被重写。无论在基类中如何定义静态函数,在派生类中重新定义同名的静态函数,不会形成重写关系。

2024-08-06 15:51:40 395

原创 C++_内联函数

常规函数调用需要保存现场、跳转、传递参数等操作,这些操作会带来额外的时间开销和内存消耗。内联函数通过直接插入代码替换函数调用,避免了这些开销,因此在函数体较小、频繁调用时能显著提高性能。内联函数展开并非在所有情况下都适用,特别是对于递归函数、函数体较大或复杂的函数,编译器可能不会选择内联展开,因为这可能导致代码膨胀和执行效率降低。当然,我们可以通过一个具体的代码示例来帮助你理解内联函数和常规函数调用的区别。

2024-08-06 14:46:04 381

原创 C++_字节序

在网络传输中,通常使用大端字节序(网络字节序)。在具体的操作系统中,字节序取决于底层硬件架构。例如,Linux和Windows操作系统主要运行在x86和x86_64(Intel和AMD处理器)架构上,这些处理器使用小端字节序。而其他硬件平台,如PowerPC和SPARC等,可能使用大端字节序。

2024-08-06 11:14:21 445

原创 C++_Const的相关知识点

当 const 修饰函数参数时,表示函数内部不会修改该参数的值。这样做可以使代码更加安全,避免在函数内部无意中修改传入的参数值。尤其是 引用 作为参数时,如果确定不会修改引用,那么一定要使用 const 引用。

2024-08-05 21:12:59 409

原创 C++_sizeof的相关知识点

简单笔记

2024-08-05 19:44:35 213

原创 简述机器学习中常用的一些统计量

数据集中所有值的总和除以值的个数。

2024-07-17 10:10:15 795

原创 HEVC编码中的MPM(最可能模式,Most Probable Mode)

最近看到有文章用视频编码时的MPM参数来映射特征并用于数字取证,故做该文章记录。HEVC(高效视频编码)中的MPM(最可能模式,Most Probable Mode)用于预测帧内块的模式,以提高编码效率并减少比特率。MPM的选择过程涉及多个步骤,下面结合你的图详细说明这些步骤。

2024-07-17 09:47:25 424 1

原创 用FFMPEG对YUV序列进行编辑的笔记

还是单独开一个吧 每次找挺烦的。

2024-06-07 13:54:22 364

原创 C++学习资料整合

侵权删C++音视频开发。

2024-04-29 09:47:56 204

原创 算法刷题笔记以及基础模版

【代码】算法刷题笔记。

2024-03-31 21:42:19 288

原创 数据集视频编码(第三篇论文自用)

第三篇文章数据集准备

2024-03-31 21:41:43 342

原创 简述经典特征检测算法-SIFT(尺度不变特征变换)

SIFT(尺度不变特征变换)是一种计算机视觉中的算法,用于检测和描述图像中的局部特征。它由David Lowe在1999年提出,并在2004年详细发表。SIFT特征对旋转、尺度缩放、亮度变化保持不变,对视角变化、仿射变换和噪声也具有一定程度的稳定性。SIFT(Scale-Invariant Feature Transform,尺度不变特征变换)是一种用于图像处理和计算机视觉领域的特征检测算法。SIFT特征对图像的缩放、旋转和部分光照变化保持不变性,因此在多视角、多尺度的场景下非常鲁棒。

2024-02-27 10:45:34 1502

原创 HDR视频与SDR视频的一些基本概念

定义:关键特征:技术要求:定义:关键特征:兼容性:总结来说,HDR视频是一种较新的技术,能够提供更高质量的视觉体验,特别是在对比度和颜色表现方面。而SDR视频则是更为传统和普及的格式,具有更广泛的兼容性和更低的技术要求。随着技术的发展,HDR正在逐渐成为高端电视和视频制作的标准。HDR(High Dynamic Range)视频和SDR(Standard Dynamic Range)视频的差异主要体现在它们能够捕捉和显示的亮度范围、颜色深度以及对比度上。以下是它们的主要区别:亮度范围:颜色深度:颜色空间:元

2024-01-30 15:15:03 2059

原创 视频编码指令(自用)

第二篇论文 1.26

2024-01-26 10:02:09 395

原创 耳机与音频基础知识

这部分通常指的是声音频谱中的低端,大约在20 Hz到250 Hz之间。低频对应于我们可以听到的最低音调,通常与音乐中的低音和节奏部分相关,如贝斯和鼓等乐器的声音。低频响应好的耳机能够提供深沉、有力且不失真的低音。:中频通常覆盖了250 Hz到2000 Hz(或2 kHz)之间的频率范围。这个范围包含了大部分乐器和人声的主要音调。中频质量高的耳机能够准确还原声音的自然质感和清晰度,使声音更加温暖和丰满。:高频涵盖了大约2 kHz到20 kHz的频率范围,这是人耳听觉的高端。

2024-01-17 15:46:46 1571

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除