什么是RAII?
RAII是Resource Acquisition Is Initialization(wiki上面翻译成 “资源获取就是初始化”)的简称,是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的对象最终会被销毁的原则。RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使之始终保持有效,最后在对象析构的时候,释放构造时获取的资源。
通过构造函数获取资源,通过析构函数释放资源。
进程相关
进程简说:进程就是程序的一次执行。
弄懂“进程”(上):3个组成部分、4个基本特征、4个基本状态_进程有哪四个特征-CSDN博客
同一进程下的线程共享资源
线程和进程的区别(面试必备)_进程和线程的区别-CSDN博客
哈希表
哈希表hash table(key,value) 的做法其实很简单,就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。
而当使用哈希表进行查询的时候,就是再次使用哈希函数将key转换为对应的数组下标,并定位到该空间获取value,如此一来,就可以充分利用到数组的定位性能进行数据定位。
时间复杂度为 O(1)。如果只知道数据或者数据中的部分内容,想在数组中找到这个数据,还是需要遍历数组,时间复杂度为 O(N)。
拉链法优点:删除更方便,直接在对应的链表中到照
缺点:需要额外的空间去维护链表
线性探测法的优点在于其实现简单且时间复杂度较低。由于其基于开放寻址法,因此不需要额外的空间来存储元素和键值对。此外,当哈希表大小固定时,线性探测法的查找效率较高。然而,线性探测法也存在一些缺点。当发生大量冲突时,可能会导致哈希表中的元素分布不均匀,从而降低查找效率。此外,如果发生哈希表已满的情况,可能需要重新哈希或扩容操作,这会增加额外的计算和空间开销。
堆栈:阿秀
内存泄漏