- 博客(80)
- 收藏
- 关注
原创 XFS Algorithms & Data Structures
b+ 树的叶块具有相同的通用格式:一个描述块中数据的头和一个记录数组。XFS 文件系统被分成许多大小相等的块,称为分配组。XFS 使用 b+ 树来索引所有元数据记录。
2024-07-29 00:50:48 396
原创 EXT4 数据结构
结构 ext4_inode 实际使用的超出最初 128 字节 ext2 inode 的字节数记录在每个 inode 的 i_extra_isize 字段中,这使得结构 ext4_inode 可以在新内核中增长,而无需升级所有磁盘上的 inode。ext4 开始,flex_bg 中几个块组被捆绑在一起作为一个 逻辑块组,bitmap 空间和 inode Table 空间 flex_bg 的第一个块组被扩展为包括位图以及 flex_bg 中所有其他块组的 inode 表。没有 inode 0。
2024-07-25 16:50:09 478
原创 Boost 智能指针
weak_ptr 被设计为与 shared_ptr 协同工作,可以从一个 shared_ptr 或另一个 weak_ptr 对象构造以获得资源的观测权。头文件<boost/smart_ptr/make_unique.hpp>里实现了make_unique()函数,位于名字空间 boost 而不是 std,为了避免潜在的冲突。引用计数型的智能指针,可以被自由地拷贝和赋值,可以在任意的地方共享它,当没有代码使用它时(引用计数为0),才删除被包装的动态分配的对象。不能被复制或赋值给其他。
2024-07-01 17:57:29 459
原创 C++面试题精选-2024/06/26
多态(Polymorphism):在编程语言和类型论中,多态指为不同数据类型的实体提供统一的接口。多态类型可以将自身所支持的操作套用到其它类型的值上。多态是面向对象编程的重要特性之一,它允许我们为不同的数据类型提供统一的接口,并在运行时根据对象的实际类型来决定执行哪个方法。通过多态,我们可以提高代码的复用性、扩展性和可维护性,但也需要注意其可能带来的性能开销和复杂性增加等问题。
2024-06-26 21:24:42 965
原创 Qt 信号和槽机制
槽的本质就是类的成员函数,其参数可以是任意类型,可以是虚函数,可以被重载。槽通常和信号连接在一起,当信号被发出时,与这个信号连接的槽函数就会被调用。当返回值为 void,或者函数体中只有一处返回的地方(此时编译器可以自动推断出返回值类型)时,这部分可以省略。“()” 标识重载的操作符的参数,没有参数时,这部分可以省略。信号和槽是多对多的关系,可以一个信号连接多个槽,也可以多个信号连接同一个槽。“{}” 标识函数的实现,这部分不能省略,但函数体可以为空。Qt 提供了一种新的对象间的通信方式,即信号和槽机制。
2024-06-25 03:47:54 555
原创 Redis 数据结构
Redis 3.0 的 List 对象在数据量⽐较少的情况下,会采⽤「压缩列表」作为底层数据结构的实现,它的优势是节省内存空间,并且是内存紧凑型的数据结构。然后在 Redis 5.0 设计了新的数据结构 listpack,沿⽤了压缩列表紧凑型的内存布局,最终在最新的 Redis 版本,将 Hash 对象和 Zset 对象的底层数据结构实现之⼀的压缩列表,替换成由 listpack 实现。Redis 只有在 Zset 对象的底层实现⽤到了跳表,跳表的优势是能⽀持平均 O(logN) 复杂度的节点查找。
2024-06-17 23:52:57 1034
原创 网络流媒体协议——HLS协议
HTTP 实时流媒体(HTTP Live Streaming,HLS)协议是苹果公司提出的主要用于直播的流媒体协议。一个完整的基于HLS协议的流媒体直播系统由四部分组成,即音视频采集器、媒体服务器、媒体分发器和播放客户端。
2024-06-09 23:27:56 452
原创 网络流媒体协议——RTMP
流媒体协议常用实时信息传输协议(Real-Time Messaging Protocol,RTMP)和 HLS 协议。RTMP 为应用层协议,由 TCP 提供传输层的连接和传输服务,默认端口为1935。
2024-06-09 17:06:52 1270
原创 MP4文件格式
保存了二进制的音频流或视频流数据。每路音频流或视频流的音视频码流包在媒体数据结构中的位置都由媒体信息头结构中的信息指定。Box 结构为一种由头结构(Box Header)和负载数据(Box Data)组成的能容纳特定信息的数据结构。ISO 媒体文件所必备的,用于说明当前媒体文件的类型、版本号及兼容的协议类型。包含了音频文件和视频文件的总体描述信息,以及音视频流的播放控制信息等。MP4 文件中保存的每一路媒体流的底层参数信息都保存在 mdia。MP4 格式的文件是由一个个嵌套形式的“Box 结构”构成的。
2024-06-08 16:37:05 786
原创 FLV 文件格式
FLV文件头的最后,用 4 Byte 表示整个 FLV 文件头的长度,如 FLV Version 1,该值通常为9。头部信息中的标签类型为9时,在视频标签头之后所保存的就是视频标签体,即视频码流数据。与视频标签类似,在一个音频标签中,紧随StreamID之后的为音频标签头和音频标签体。FLV标签头部信息包含当前标签的 类型、体积、时间戳 等信息,FLV标签载荷数据保存了一个完整的 音频、视频或参数数据类型 的标签。头部信息中的标签类型为9时,该标签的载荷数据中保存了一个视频标签。视频 Tag 标识位。
2024-06-07 23:42:50 684
原创 C++面试问题精选 0513
局部变量时,该变量的初始化是延迟到该函数第一次被调用时进行的。在 C++11 之前,如果多个线程同时调用该函数,可能会导致竞争条件,使得静态变量被初始化多次或者初始化过程出现不一致的状态。在32位系统中,对象的地址的前4个字节(在64位系统中是8个字节)是虚函数表的地址。成员变量,并且这个类的构造函数中包含一个死循环(即无限循环),那么这通常不是一个好的设计选择,因为这会导致任何尝试创建该类实例的操作都被阻塞。采用了开放寻址法,即在发生冲突的位置形成一个链表,并将冲突的元素插入到这个链表中。
2024-05-15 02:30:36 852 1
原创 Markdown 语法支持测试
With Typora斜体Abc 加粗Abc 斜体加粗Abc删除线Abc 下划线Abc颜色大小Abc居左Abc居右Abc 全角缩进Abc 半角缩进Abc锚点尾 (一级标题)链接Abc注脚语法Abc1转意符 Todo list Todo list谷歌又名Google酷安又名CoolAPKcxplay@qq.comKaTeX parse error: Can't use function '$' in math mode at position 249: …\end{vmatrix}$̲{$tep1}
2022-06-09 00:32:30 1810 2
原创 markdown
Markdown 基本语法 | Markdown 官方教程Emoji大全 | Emoji表情符号词典 📓 | EmojiAll中文官方网站mermaid - Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs. (mermaid-js.github.io)...
2022-06-09 00:30:07 217
原创 HFS+文件系统
HFS+文件系统用B-树结构组织数据,B-树包含若干节点(Node),每个节点包含记录(Records),记录由**关键字(Key)和数据(data)**组成。节点分为4种:节点号 = 节点在B-树文件中的偏移量 / 每节点字节数节点结构:节点描述符、节点记录列表、节点记录起始偏移量列表[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NhEJrAtl-1654443952167)(.\节点结构图.png)]............
2022-06-05 23:46:24 1591
原创 数据恢复资源
《数据重现 : 文件系统原理精解与数据恢复最佳实践》《识数寻踪 : WinHex应用与数据恢复开发秘籍》《数据恢复技术深度揭秘》《大话存储(终极版)》存储安全与高可用技术
2022-06-05 21:22:31 370
原创 Mermaid从入门到入土
特定的Mermaid渲染器:mermaid-live-editor集成了Mermaid渲染功能的Markdown编辑器:Mermaid图类型3%4%93%为什么总是宅在家里?喜欢宅天气太热或太冷穷流程图实例#mermaid-svg-012hniB2aQehD5gw {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-012hniB2aQehD5gw .error-icon
2022-06-02 01:58:58 611
原创 拉勾教育-求职技巧总结
求职技巧文章目录求职技巧把握投递简历的黄金时间段读懂职位 JD,精准投递简历做好充分的准备去面试电话沟通如何全面的介绍自己内容关键工作离职原因职业规划工作中更看重的是什么还有什么问题捕捉HR微表情,做出应对策略沟通时需注意的小细节微表情面试时需改掉不好的习惯声音的大小或者语速的快慢判断公司背景,做出合理选择网站上展示的相关信息来判断面试时通过面试官的言行举止判断了解行业情况,清晰找准定位Java/C++薪资拉勾Java岗招聘统计挑选命中率高的好工作自我评估技术工作经验个人提升求职方向确定岗位流程自我提问心
2022-05-13 03:24:45 1093
原创 Linux模块化增加设备驱动程序
Linux模块化增加设备驱动程序目录文章目录Linux模块化增加设备驱动程序目录目的开发环境实验步骤关键代码打开设备释放设备,解除占用读取设备缓冲区内容到终端输入字符串,从终端读取,写入设备缓冲区注册字符设备注销字符设备添加模块宏定义和许可协议调试记录目的采用模块方法,添加一个新的字符设备驱动程序,实现打开/关闭、读/写等基本操作编写一个应用程序,测试添加的驱动程序开发环境操作系统: ubuntu 16.04LTS 64位内核版本:linux-4.14.141内存:8G处理器: I
2022-05-09 23:28:00 1826
原创 Linux编译内核和添加系统调用
Linux编译内核和添加系统调用文章目录Linux编译内核和添加系统调用目的环境和步骤开发环境步骤核心代码添加系统调用例程syscalls.h文件中添加新增系统调用例程函数声明syscall_64.tbl系统调用表中添加新增系统调用号测试测试代码目录说明目的采用编译内核的方法,添加一个新的系统调用,实现文件拷贝功能编写一个应用程序,测试新加的系统调用环境和步骤开发环境操作系统:ubuntu 16.04 LTS 64位内核版本:linux-4.14.141内存:8G处理器:I
2022-05-08 01:32:50 948
原创 字节序(Byte Order)
字节序(Byte Order)“endian”这个词出自讽刺小说《格列佛游记》。小人国的内战就源于吃水煮鸡蛋时究竟是从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过6次叛乱,其中一个皇帝送了命,另一个丢了王位。实例大小端与CPU有关,与编译器和操作系统类型无关;x86、arm是小端,MAC是大端,MIPS可以配置;TCP/IP协议、Java虚拟机规定为大端模式。定义MSB(Most Significant Bit/Byte)通常用来表明在一
2022-05-06 22:42:40 2133
原创 PPT技巧
PPT技巧一 默认设置无限撤回 文件→更多→选项→高级→最多可取消150次自动保存 文件→更多→选项→保存→自动恢复保存时间字体嵌入 文件→更多→选项→保存→勾选 将字体嵌入文件→仅入…多格式导出 导出→更改类型参考线 视图→勾选 网格线 参考线统一文字 设计选项卡→变体→其他→字体→自定义字体默认样式 设置一个样式→点击右键→设置默认样式删除占位符 视图→母版幻灯片→删除占位符#mermaid-svg-PJqC3WGzF4dyLi18 {font-family:"tr
2022-05-05 11:22:27 152
原创 LeetCode704 二分查找
LeetCode704 二分查找文章目录LeetCode704 二分查找题目解法暴力遍历二分查找相关题目参考资料题目704. 二分查找 - 力扣给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。限制条件:你可以假设 nums 中的所有元素是不重复的。n 将在 [1, 10000]之间。nums 的每个元素都将在 [-9999, 9999]之间。解法暴力遍历c
2022-05-02 22:50:19 429
原创 XUbuntu安装
XUbuntu安装⚠️ 注:根据网络资料整理,尚未实践,仅作为记录以供后续实践参考制作U盘映像:UltraSO 制作 iso 映像xubuntu.orgxubuntu磁盘清理为空闲盘:傲梅分区助手BIOS 关闭 secure boot,设置UEFIUbuntu boot 按e,设置 nomodeset选择最小安装选择其他安装,进行分区名称分区格式大小EFI引导(或/boot)主分区无2048MB/逻辑分区EXT4100
2022-05-02 10:48:29 892
原创 list源码剖析
list源码剖析文章目录list源码剖析定义模板参数成员函数特殊函数元素访问迭代器容量修改器操作非成员函数参考资料定义定义:支持常数时间从容器任何位置插入和移除元素的容器。不支持快速随机访问。通常实现为双向链表。template< class T, class Allocator = std::allocator<T>> class list;模板参数T - 必须满足可拷贝赋值 (CopyAssignable) 和可拷贝构造 (CopyConstructi
2022-05-01 12:55:10 363
原创 vector源码剖析
vector源码剖析文章目录vector源码剖析定义成员类型成员函数特殊函数元素访问迭代器容量修改器非成员函数参考资料定义定义:封装动态数组的顺序容器。template< class T, class Allocator = std::allocator<T>> class vector;**模板参数 **T 必须满足可拷贝赋值(CopyAssignable)和可拷贝构造(CopyConstructible)的要求。Allocator 用于获取/释放内存
2022-04-30 22:55:06 894
原创 十大排序算法
十大排序算法分类稳定:冒泡、插入、归并非稳定:快排,选择,希尔,堆排序复杂度常见考点🔥🔥🔥快速排序描述从数列中挑出一个元素,称为 “基准”(pivot)重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序代码/**********************
2022-04-29 14:16:24 438
转载 ubuntu中文支持,及中文乱码问题
来源:ubuntu中文支持,及中文乱码问题ubuntu中文支持,及中文乱码问题对服务器同样有效。状况:所用的ubuntu系统不支持中文,遇见中文就???。ORZ…目标:使系统/服务器支持中文,能够正常显示。首先,安装中文支持包 language-pack-zh-hans:$ sudo apt-get install language-pack-zh-hans然后,修改 /etc/environment(在文件的末尾追加):LANG="zh_CN.UTF-8"LANGUAGE=
2022-04-26 21:49:57 4207 1
原创 GCC编译实践
GCC文件扩展名文件名称+扩展名GCC 编译器识别的文件类型file.c尚未经过预处理操作的 C 源程序文件。file.i经过预处理操作、但尚未进行编译、汇编和连接的 C 源代码文件。file.cpp file.cp file.cc file.cxx file.CPP file.c++ file.C尚未经过预处理操作的 C++ 源代码文件。file.ii已经预处理操作,但尚未进行编译、汇编和连接的 C++ 源代码文件。file.s经过编译生成的汇编代码
2022-04-25 11:20:49 1117
原创 GDB调试实践
GDB调试实践调试实例 huhan@HuHan ~/cpp/coredump lstest.cpp huhan@HuHan ~/cpp/coredump huhan@HuHan ~/cpp/coredump g++ -o test test.cpp -g huhan@HuHan ~/cpp/coredump ulimitunlimited huhan@HuHan ~/cpp/coredump ulimit- c unlimitedzsh: command not fou
2022-04-24 21:37:27 478
原创 基础数据结构与算法(C++描述)
基础数据结构与算法(C++描述)数组基本概念数组可以存储一个固定大小的相同类型元素的顺序集合。声明数组指定元素的类型和元素的数量,arraySize必须是一个大于零的整数常量,type可以是任意有效的 C++ 数据类型。type arrayName [ arraySize ];初始化数组使用一个初始化语句。double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};省略掉了数组的大小,数组的大小则为初始化时元素的个数,使用sizeof求数组大小
2022-04-22 08:45:02 765
原创 图解设计模式
图解设计模式UML依赖:对类 B 进行修改会影响到类 A 。关联:对象 A 知道对象 B。类 A 依赖于类 B。聚合:对象 A 知道对象 B 且由 B 构成。类 A 依赖于类 B。组合:对象 A 知道对象 B、由 B 构成而且管理着 B 的生命周期。类 A 依赖于类 B。实现:类 A 定义的方法由接口 B 声明。对象 A 可被视为对象B。类 A 依赖于类 B。继承: 类 A 继承类 B 的接口和实现, 但是可以对其进行扩展。对象 A 可被视为对象 B。类 A 依赖于类 B。SOLID原
2022-04-21 17:01:06 287
原创 C++ Template
C++ Template❓为什么要使用模板不用模板方式实现功能重复实现相同功能:针对每个所需相同行为的不同类型,一次又一次地实现它,做了许多重复的工作,会犯同一个错误;还会舍弃复杂但更好用的算法:因为复杂算法通常都趋向于引入更多的错误。继承基类:把通用代码放在一个诸如Object或者void*的公共基础类里面。借助公共基类来编写通用代码,将失去类型检查这个优点。另外,对于以后实现的许多类,都必须继承自某个特定的基类,这会令代码的维护更加困难。使用特殊的预处理程序:使用了一个诸如C或C++预处理器
2022-04-20 18:01:48 789
转载 I/O多路复用(select/poll/epoll)
I/O多路复用(select/poll/epoll)Socket编程服务端服务端首先调用 socket() 函数,创建网络协议为 IPv4,以及传输协议为 TCP 的 Socket ,接着调用 bind() 函数,给这个 Socket 绑定一个 IP 地址和端口调用 listen() 函数进行监听,此时对应 TCP 状态图中的 listen,如果我们要判定服务器中一个网络程序有没有启动,可以通过 netstat 命令查看对应的端口号是否有被监听。服务端进入了监听状态后,通过调用 acc
2022-04-19 20:09:31 248
原创 C++内存模型与名称空间
C++内存模型与名称空间主要内容单独编译存储持续性、作用域、链接性定位(placement)new运算符名称空间单独编译程序文件结构头文件:包含结构声明和使用这些结构的函数的原型函数原型使用#define或const定义的符号常量结构声明类声明模板声明内联函数源代码文件:包含与结构有关的函数的代码源代码文件:包含调用与结构相关的函数的代码注意:<myhead.h>代表在标准头文件的目录中查找;包含自定义头文件,使用"myhead.h",代表在
2022-04-17 21:25:33 107
转载 常见面试题 - 5(C++)
C++基础知识static关键字有什么作用?持久化、隐藏和默认初始化为0修饰局部变量时,使得该变量在静态存储区分配内存;只能在首次函数调用中进行首次初始化,之后的函数调用不再进行初始化;其生命周期与程序相同,但其作用域为局部作用域,并不能一直被访问;修饰全局变量时,使得该变量在静态存储区分配内存;在声明该变量的整个文件中都是可见的,而在文件外是不可见的;修饰函数时,在声明该函数的整个文件中都是可见的,而在文件外是不可见的,从而可以在多人协作时避免同名的函数冲突;修饰成员变量时,所有的对象都只
2022-04-14 20:03:53 514
原创 STL函数库
STLvector函数成员函数功能begin()返回指向容器中第一个元素的迭代器。end()返回指向容器最后一个元素所在位置后一个位置的迭代器,通常和 begin() 结合使用。rbegin()返回指向最后一个元素的迭代器。rend()返回指向第一个元素所在位置前一个位置的迭代器。cbegin()和 begin() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改元素。cend()和 end() 功能相同,只不过在其基础上,
2022-04-14 10:50:12 811
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人