分析了套接字创建到连接过程中,一些关键的函数调用以及数据结构,同时分析了connect()过程中tcp三次握手状态变化。
网络协议栈收包过程小结
linux网络协议栈学习小结
并发
《OSTEP》线程并发小结
内存虚拟化
《OSTEP》 内存虚拟化部分小结
文件系统的持久化
《OSTEP》文件持久化部分阅读笔记
滑动窗口小结
滑动窗口可以用来优化一些暴力求解问题,将时间复杂度降低到线性。
数据流算法题目小结
由于数据是动态的,按照一般的做法,比如遍历,当新数据的加入,处理单个操作的时间复杂度为O(n)
,这样往往造成TLE
通过使用合理的数据结构来存储,比如堆,能够将时间复杂度降低到 logn
shared_from_this解决了什么问题
enable_shared_from_this 含义
如果一个T类型的对象t,是被std::shared_ptr管理的,且类型T继承自std::enable_shared_from_this
,那么T就有个shared_from_this
成员函数,这个函数返回一个新的std::shared_ptr
的对象,也指向对象t
如果不这么做, 会出现什么问题,看下面一段代码
1 | struct obj{ |
上述场景是 对象希望获得管理自己的智能指针,但是直接通过成员函数返回一个shared_ptr
,造成了被管理对象的重复删除。
系统调用open(),read(),write()具体发了什么?
本文主要想探究的是我们平时说的IO系统调用与inode
,文件系统等之间的交互,或者说,在做文件IO时候,有那些底层的数据结构参与进来。
最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。