- 博客(113)
- 收藏
- 关注
原创 C++中typename基本用法
在使用模板类中定义的类型的时候,且该模板参数并没有定死(编译写死)的时候,必须使用typename;而在后来开发的时候根据需求对T模板类型已经确定下来,如vector<int>就不需要加typename
2025-08-01 22:36:35
500
原创 Linux物理内存模型、内存管理架构
物理内存被最底层的page结构体管理。由于物理内存可能并非连续,由此引出了三种物理内存模型,特别提到稀疏内存模型可以支持动态热插拔等功能。最后谈到了物理内存模型的上层管理结构---Node、Zone、Page三层内存管理结构。其中每一个NUMA节点都会有自己的Node节点,而Node又划分为多个Zone区域,Zone区域由PFN关联到page,从而访问到真实的物理内存。
2025-07-30 00:25:59
976
原创 mmap的调用层级与内核态陷入全过程
mmap的层级调用详解,用户态是如何转换到内核态的?syscall是什么?同时与之前文章中的内核数据相结合,方便理解记忆。且注意mmap对于文件映射,必须要是已经打开的文件;对于匿名映射fd传入-1。
2025-07-27 22:55:17
569
原创 Linux内存映射原理
普通文件每一次读写都需要3次拷贝:上层应用、C语言、内核态、磁盘。而文件映射则是把磁盘中的数据拷贝到物理内存之后,在内存中读写,适合的机会写回磁盘,大大减少了从物理内存拷贝到磁盘的步骤。最后,匿名映射则根本不会有写回磁盘的操作,纯内存,通信效率最高。
2025-07-23 23:42:30
843
原创 Linux打开、读写一个文件内核做了啥?
files_struct是一个进程管理其打开文件的结构体,在他之中核心在于文件描述符表和文件描述符与file的映射。而file则是真正描述一个打开文件的各种信息的结构体。然后引出了读写文件时候的3层缓冲区,以及fork函数对于files_struct的写时拷贝
2025-07-22 22:01:48
1003
原创 用户虚拟地址空间布局架构
vm_area_struct的作用是给每个区域的详细描述,而mm_struct仅仅是在整个进程层次上进行描述,宏观作用。
2025-07-21 16:31:00
855
原创 实时调度类
Linux实时调度类,采取优先级队列数组来管理调度实体,从而做到抢占式调度。同时还分为FIFO和RR两种类型,以适应对时间敏感情况不同的实时进程。
2025-07-16 20:38:31
973
原创 数据结构---跳表
skiplist本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的,可以作为key或者key/value的查找模型。
2025-04-14 11:36:35
1194
原创 数据库的数据类型
因为时间戳实际上存储的是一个4字节的整数,需要查看的时候再由Mysql自动转化为字符串类型,而timedate本身就是一个字符串这导致了他们字节数的不同。当然由于时间戳只有4字节,他能表示的范围肯定是有限的(varchar这里却是字节长度了,这是因为varchar是一个可变长度的char,他会随着你插入的字符串的长度二动态分配。比如(在utf-8下,每个汉字3个字节)你要存“中国人”,他就会给你分配3*3+1=10个字节。时间戳是一个自动由Mysql维护的字段,每次当你增改这一行的时候,时间戳会自动更新。
2025-03-31 16:22:56
427
原创 多路转接epoll
1.调用epoll_create创建一个epoll句柄;2.调用epoll_ctl, 将要监控的文件描述符注册到红黑树;3.调用epoll_wait, 等待文件描述符就绪后, 去队列中拿;
2025-03-27 19:37:40
670
原创 多路转接Poll
在之前我们讲过select是最古老的多路转接方案,古老就意味着他不是很方便使用,他需要用户手动保存fd_set这个位图结构,来表示读写事件的关注与否或者就绪性。而且由于fd_set的大小是固定的,这就意味着他能管理的套接字文件描述符是有限的。针对这两个问题,人们研究出来了poll,他一方面不需要用户手动保存位图了,还能让poll管理的文件描述符是无限多的,只要你的内存足够大。
2025-03-25 19:15:36
436
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人