- 博客(14)
- 收藏
- 关注
原创 Poll原理
首先,在do_sys_poll函数中,会开辟内存用于存放pollfd,如左下角PAGE所示,所有的pollfd集合构成一个单向链表,一个PAGE包括一个链表头和一个连续存储的pollfd实体,PAGE之间通过链表指针相连,PAGE内通过连续的存储索引。然后,初始化poll_wqueue队列,在do_poll函数中遍历pollfd链表,通过pollfd中的文件描述符获得文件,调用文件系统的poll函数。
2024-05-30 10:55:52 946
原创 select原理
select和poll几乎差不多,select底层也是通过文件系统的poll方法构建等待实体。首先调用core_sys_select,select会有三个文件集合,包括读集合、写集合和异常集合,select会先构建一个6集合的bitmap结构体,包括输入的三个集合和需要输出的三个集合。这个bitmap并没有限制在1024大小,struct结构体只是6个long long指针指向bitmap,而bitmap大小则是根据输入的文件数量开辟的bitmap。
2024-05-30 10:55:41 592
原创 select 1024限制
文章主要来自,原作者通过源码和实验解释select真的是受1024限制吗,但是原作者的代码似乎有些问题(好像跑不通,但是思想表达的很明晰),这篇文章主要是对那篇文章的一个简单的解释,以及遇到的奇怪问题的记录。
2024-05-28 22:20:20 894
原创 CMake示例——muduo库的CMake、libco的CMake和marl的CMake
前面把CMake基本一些变量和语言简单的学了一下,但是,肯定很表面,学习语言嘛,就是学习语法,看别人的代码,最后自己写代码。所以,第二步,就是看别人的CMake怎么写的。选这几个库是因为后面想学习学习这几个库的源码,这三个库没什么逻辑关系,一个网络库,两个协程库。
2024-05-25 23:16:02 767
原创 CMake学习
camke是用来配置并产生makefile文件的(可与以提前看一下makefile语法,不过;makefile语法挺复杂的,而且不同的平台是有差异的),但是cmake语法相对简单,并且与平台无关。这些变量是CMake系统预定义的,不用set可以直接使用PROJECT_SOURCE_DIR 工程顶层目录,也就是顶层 CMakeLists.txt 源码所在目录PROJECT_BINARY_DIR 工程 BINARY_DIR, 也就是顶层 CMakeLists.txt 源码的 BINARY_DIR。
2024-05-24 23:30:24 851
原创 关于namespace中的奇怪错误
对于main.cpp,编译得到的.o文件符号表如下(通过nm .o文件就能查看重定位文件的符号表)符号的名命包括namespace t2,符号的名称可以和main.o的符号表对应因此能链接成功。也就是展开namespace t1,编译的得到的符号表并不包含namespace。对于编译失败的情况,a.cpp文件得到的a.o文件符号表是。而编译成功的情况符号表如下。
2024-05-17 23:23:12 178
原创 HEAD FIRST设计模式(二)———观察者模式
观察者模式似乎没有什么好说的,毕竟,我也没有工程经验,学习cpp的小白,所以,也说不出啥,倒是有对比观察者模式和发布-订阅模式对比,这个观察者模式 vs 发布订阅模式下面的评论讲的也挺好的,毕竟没实际使用过解决问题,确实只知道基本的东西,不过,最近开始看《linux多线程服务端编程:使用muduo C++网络库》,这本书是陈硕大佬写的,第一章在写多线程对象的生命期管理的时候用的示例恰好也是观察者的一个框架,这里挖个坑,有时间写个那本书的读书笔记。
2024-04-26 21:43:51 998 1
原创 HEAD FIRST设计模式(一)————设计模式入门
最近开始看设计模式,找个一本入门的书,就是这本《HEAD FIRST设计模式》,这本书中的示例是用java写的,本以为没有任何java基础会看着相当费劲,但是这本书只用了很简单的java语言就将明白了,小白也能理解书中的代码。
2024-04-25 16:19:15 793 3
原创 “迷人”的多态
上述三个例子已经跑完了,那么关于多态为什么只能用指针实现?在c++中,指针存储一个对象的地址,同时指针还有指向的类型,但是如果我们从cpu执行的汇编指令来看,汇编中可以操作比特、一个字、两个字、四个字、甚至八个字,但是一个对象可能占用十几甚至更多的内存,cpu处理的时候依然是一个字节或者等等处理,指针的类型是编译器在将高级语言翻译成机器语言的时候判断要读取4字节还是8字节,类型是对编译器而言的。上面那个例子。
2024-04-23 21:52:09 932
原创 C++的public、protected、private和友元
结果如下: 如果把数据换成data3,data4,data5,data6会报错,所以在类外只能够访问public成员。对于类的成员函数 类外可以访问public成员函数,所以在类外只能够访问public成员。那么成员函数访问有权限吗?没有,成员函数可以访问类的任意数据。那么静态成员函数呢? 虽然static不属于任何一个类,但是对于protected和
2024-04-21 17:26:17 400
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人