后端与数据结构 | 青训营笔记

25 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第8 天

3.2.1 什么是三次握手 ⭐⭐⭐⭐⭐****


3.2.2 为什么三次握手中客户端还要发送一次确认呢?可以二次握手吗? ⭐⭐⭐⭐****


3.2.3 为什么服务端易受到 SYN 攻击? ⭐⭐⭐⭐****


3.2.4 什么是四次挥手 ⭐⭐⭐⭐⭐****


3.2.5 为什么客户端最后还要等待 2MSL ⭐⭐⭐⭐****


3.2.6 为什么建立连接是三次握手,关闭连接确是四次挥手呢? ⭐⭐⭐⭐****


4.2 STL 库相关****

4.2.1 vector list 异同 ⭐⭐⭐⭐⭐****


4.2.2 vector 内存是怎么增长的 vector 的底层实现 ⭐⭐⭐⭐****


4.2.3 vector deque 的比较 ⭐⭐⭐⭐****

头部插入和删除, vector 比较快****

在中间进行 insert erase 由于 deque 第二维内存空间不是连续的,所以在 deque 中间进行元素的 insert ,元素移动的时候比 vector 慢。尽管两个时间复杂度都是 o n

4.2.4 为什么 stl 里面有 sort 函数 list 里面还要再定义一个 sort ⭐⭐⭐****

由于 list 底层是采用双向循环链表实现的,因此, list 的迭代器不能向 vector 迭代器一样进行随机访问, list 的迭代器类型是 Bidirerctional Iterators ,而 STL 提供的算法 sort() 只接受 RamdonAccessIterator ,所以 list 不能使用 STL 提供的算法 sort() ,必须用 list 自己的成员函数 sort() ****


4.2.5 STL 底层数据结构实现 ⭐⭐⭐⭐****


4.2.6 利用迭代器删除元素会发生什么? ⭐⭐⭐⭐****

在通过迭代器来遍历集合元素的同时,增加或者删除集合中的元素,有可能会导致某个元素被重复遍历或遍历不到。不过,并不是所有情况下都会遍历出错,有的时候也可以正常遍历,所以,这种行为称为结果不可预期行为或者未决行为,也就是说,运行结果到底是对还是错,要视情况而定。****


4.2.7 map 是如何实现的,查找效率是多少 ⭐⭐⭐⭐⭐****