随笔分类 -  B.1.1-C/C++ 基础

学习C/C++过程中整理的一些知识点。
摘要:在音视频编码中,I帧、B帧和P帧是用于表示和处理视频帧的三种基本类型。以下是它们的详细解释: I帧(I-frame): 又称内部画面(intra picture)或关键帧(key frame)。 I帧是一个全帧压缩的编码帧,它包含了一幅完整的图像数据。解码时,仅使用I帧的数据就可以重构完整的图像,无 阅读全文
posted @ 2024-05-15 09:20 He_LiangLiang 阅读(184) 评论(0) 推荐(0) 编辑
摘要:使用vscode访问虚拟机里面的代码。代码是在虚拟机的xshell编译的(必须的debug模式)。 现在可以通过在vscode下面安装 gdb插件。 然后就可以在vscode下面使用gdb 来启动这个二进制文件了,还可以在vscode里面,在函数上面打断点。 在vscode左侧栏,点击debug,可 阅读全文
posted @ 2024-04-13 23:25 He_LiangLiang 阅读(372) 评论(0) 推荐(0) 编辑
摘要:当涉及到多字节的数据类型(如 uint16_t、uint32_t 等)时,字节在内存中的存储顺序会影响到数据的解释方式。这个存储顺序可以分为两种:大端对齐(Big Endian)和小端对齐(Little Endian)。 大端对齐(Big Endian): 在大端对齐中,数据的高字节(Most Si 阅读全文
posted @ 2024-04-13 22:03 He_LiangLiang 阅读(180) 评论(0) 推荐(0) 编辑
摘要:有一个工程是用qtcreator编译的 我现在用vscode远程访问的这个工程,目前只能在vscode界面编辑代码。 编译需要在qtcreator下面。 刚开始也只能在 qtcreator下面 调试(debug,打断点) 目前在vscode里面安装了 gdb工具之后,就可以直接调试 qtcreato 阅读全文
posted @ 2024-04-12 19:11 He_LiangLiang 阅读(69) 评论(0) 推荐(0) 编辑
摘要:将一个类的析构函数定义为 protected 保护类型: 这个类就不能在外部被析构,被定义。只能在它的子类,或者它的友元类里面去定义。 定义了 保护类型的 析构函数,它的声明周期在 子类或者 友元类里面自动管理。最主要理解它的限制,理解生命周期就好。 定义为保护类型的好处: 将一个类的析构函数定义为 阅读全文
posted @ 2024-04-10 13:11 He_LiangLiang 阅读(36) 评论(0) 推荐(0) 编辑
摘要:要将模板的定义和声明,都放在同一个文件中!!!要将模板的定义和声明,都放在同一个文件中!!!要将模板的定义和声明,都放在同一个文件中!!! 否则会出现找不到 函数类型的报错。 当模板的声明和定义分别放在不同的文件中时,编译器在使用模板函数的地方需要知道函数的定义以生成相应类型的代码。如果定义不在当前 阅读全文
posted @ 2024-04-09 07:35 He_LiangLiang 阅读(12) 评论(0) 推荐(0) 编辑
摘要:结构体 转 小端对齐二进制流; 二进制流 转 结构体, V2.0版本; 这个版本 添加了要求。字符串长度要求是4的整数倍,不足的地方用0补齐。 #include <iostream> #include <vector> #include <cstring> #include <iomanip> ty 阅读全文
posted @ 2024-04-09 00:03 He_LiangLiang 阅读(17) 评论(0) 推荐(0) 编辑
摘要:现在有一个C++的结构体,需要把它转为二进制流,而且是小端对齐的。 我们还需要将一个小端对齐的二进制流,转为对应的结构体。 appendLittleEndian parseLittleEndian 这2个方法是chatgpt提供给我的,功能能准确实现。代码也比较简洁。 #include <iostr 阅读全文
posted @ 2024-04-08 23:02 He_LiangLiang 阅读(20) 评论(0) 推荐(0) 编辑
摘要:linux 的一个socket 客户端程序 #ifndef __TCP_CLIENT_TEST_1__ #define __TCP_CLIENT_TEST_1__ #include <iostream> #include <cstring> #include <unistd.h> #include 阅读全文
posted @ 2024-04-07 14:04 He_LiangLiang 阅读(19) 评论(0) 推荐(0) 编辑
摘要:windows的一个socket 客户端程序 #include <iostream> #include <WinSock2.h> #include <WS2tcpip.h> #include <chrono> #include <thread> // 链接库 #pragma comment(lib, 阅读全文
posted @ 2024-04-07 14:02 He_LiangLiang 阅读(17) 评论(0) 推荐(0) 编辑
摘要:std::functional 是 C++ 标准库中的一个模板类,它是对可调用对象的一种通用包装器。std::functional 允许你将任何可调用对象(包括函数、函数对象、lambda 表达式、以及其他 std::functional 对象)当作一个统一的对象来处理。它通常与 C++ 的算法库、 阅读全文
posted @ 2024-03-31 23:27 He_LiangLiang 阅读(107) 评论(0) 推荐(0) 编辑
摘要:std::make_shared 和 new 都用于动态分配内存并返回指向该内存的指针,但它们之间有一些重要的区别。下面详细解释它们之间的差异: 内存分配方式: std::make_shared:该函数是一个模板函数,会在内存中分配一块足够大的内存来存储对象及其控制块(用于跟踪引用计数等信息),然后 阅读全文
posted @ 2024-03-31 17:06 He_LiangLiang 阅读(525) 评论(0) 推荐(1) 编辑
摘要:ARM架构和x86架构在多个方面存在显著的区别。 首先,从应用领域来看,ARM架构主要用于嵌入式系统、移动设备和低功耗应用等领域。它特别适用于那些对功耗有严格要求的设备,如智能手机和平板电脑。而x86架构则是PC领域的主流架构,广泛应用于个人电脑和服务器等领域。 其次,从指令集特点来看,ARM架构采 阅读全文
posted @ 2024-03-31 00:57 He_LiangLiang 阅读(122) 评论(0) 推荐(0) 编辑
摘要:https://hwmon.wiki.kernel.org/device_support_status 阅读全文
posted @ 2024-03-27 06:34 He_LiangLiang 阅读(9) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #include <fstream> #include <string> #include <sstream> #include <unordered_map> #include <sys/statvfs.h> #include <string> //物理硬盘 阅读全文
posted @ 2024-03-27 06:20 He_LiangLiang 阅读(262) 评论(0) 推荐(0) 编辑
摘要:获取cpu核数,使用率 #include <sys/sysinfo.h> #include <sys/statvfs.h> #include <fstream> #include <iostream> #include <string> #include <thread> #include <vec 阅读全文
posted @ 2024-03-27 06:19 He_LiangLiang 阅读(334) 评论(0) 推荐(0) 编辑
摘要:CORS(跨源资源共享)是一种网络浏览器的安全功能,它定义了一种浏览器和服务器交互的方式来确定是否允许跨源请求。CORS背后的主要思想是使用额外的HTTP头部来告诉浏览器,一个来自不同源的请求是被允许的。这使得浏览器能够执行跨域请求,而不会受到同源策略的限制。 CORS的详细工作原理如下: 预检请求 阅读全文
posted @ 2024-03-25 06:41 He_LiangLiang 阅读(27) 评论(0) 推荐(0) 编辑
摘要:namespace Core { /** * 创建一个异步任务的包装函数,返回一个指向 std::packaged_task 的 shared_ptr。 * * @tparam F 函数类型 * @tparam Args 参数类型 * @param f 要执行的函数 * @param args 函数 阅读全文
posted @ 2024-03-24 15:30 He_LiangLiang 阅读(27) 评论(0) 推荐(0) 编辑
摘要:在 Git 中设置用户名可以通过以下命令完成: git config --global user.name "Your Username" git config --global user.email "your_email@example.com" ## 添加缓存时间git config --gl 阅读全文
posted @ 2024-03-23 14:31 He_LiangLiang 阅读(657) 评论(0) 推荐(0) 编辑
摘要:自定义字面量操作符是从C++11标准开始引入的。它允许程序员为特定类型定义自定义的字面量表示法,以提供更加直观和灵活的语法。通过定义自定义字面量操作符,可以让程序更容易阅读和理解,同时提高代码的可读性和表达能力。 根据C++标准(C++ Standard),对自定义字面量操作符有如下定义: 自定义字 阅读全文
posted @ 2024-03-22 07:48 He_LiangLiang 阅读(87) 评论(0) 推荐(0) 编辑