- 博客(63)
- 收藏
- 关注
原创 Linux-页(page)和页表
页page的概念,页帧,页框和页表的详细介绍,虚拟地址空间vm_area_struct的资源细粒度划分介绍
2024-05-11 16:11:57
1525
2
原创 Linux-进程调度器
了解进程如何调度,进程调度器schde_class,进程调度类,运行队列rq,之间有何关系,调度器调度流程,CFS和实时调度类浅谈
2024-05-01 17:55:17
1180
4
原创 Linux-system V共享内存
system V 共享内存概念,优势和弊端,使用方法:shmget ftok shmctl shmat shmdt
2024-04-29 12:00:00
1042
5
原创 Linux-程序地址空间
但当需要改变num的值时,子进程就在物理空间上重新开了一块空间,拷贝父进程,OS也会更新对应的页表映射关系。Linux下的进程管理PCB:task_struct就有一个指针指向mm_struct,程序和虚拟地址空间联系起来了。用户申请的物理空间,malloc和new其实是在虚拟地址上申请的,OS通过延迟分配,提高物理内存的利用率。因为地址空间和页表是OS创建并维护的,凡是想用地址空间和页表进行映射,都需要在OS的监管下来进行访问。上面的地址空间分布就是虚拟地址,每个进程被创建,就会有对应的虚拟地址表。
2024-04-04 18:07:03
1194
原创 Linux-环境变量
如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。(在linux中,程序运行的时候会通过默认路径就是类似于/usr/lib和/lib这种的在系统库中的动态链接库文件。全局特性。
2024-04-04 15:12:08
600
原创 C++ 11
目录1. 统一的列表初始化1.1 {}初始化1.2 std::initializer_list2. decltype3. 右值引用和移动语义3.1 左值引用和右值引用3.2 左值引用与右值引用比较3.3 右值引用使用场景和意义3.4 右值引用引用左值及其一些更深入的使用场景分析3.5 完美转发4 新的类功能在C++98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。C++11扩大了用大括号括起的列表(初始化列表)的使用范围,使其可用于所有的内置类型和用户自 定义的类型,使用初始
2024-03-18 23:32:40
880
原创 Hash应用
一种支持删除的方法:将布隆过滤器中的每个比特位扩展成一个小的计数器,插入元素时给k个计 数器(k个哈希函数计算出的哈希地址)加一,删除元素时,给k个计数器减一,通过多占用几倍存储 空间的代价来增加删除操作。首先哈希切割,felti = Hashfunc(log)%1000,相同的 log算出来的felti一定是一样的,所以需要相同的文件标号进行比较就可以。2.先遍历一个文件放到一个位图中,然后读取第二个文件的值去查询,如果存在就是交集,然后还要把位图对应的位置置零,为了去重。分别给出精确算法和近似算法。
2024-03-16 16:38:28
651
原创 C++ 哈希
3. 开散列增容 桶的个数是一定的,随着元素的不断插入,每个桶中元素的个数不断增多,极端情况下,可 能会导致一个桶中链表节点非常多,会影响的哈希表的性能,因此在一定条件下需要对哈希 表进行增容,那该条件怎么确认呢?对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比较,若关键码相等,则搜索成功。如果该位置中没有元素则直接插入新元素,如果该位置中有元素发生哈希冲突, 使用线性探测找到下一个空位置,插入新元素。中,元素关键码与其存储位置之间没有对应的关系,因此。
2024-03-11 15:15:07
689
原创 C++ AVL树
3.2.平衡因子更新节点删除了,被删除节点的父亲节点的平衡因子也更新了,但是是否需要继续更新,当前位置是否平衡都需要考虑平衡因子的正常范围是[-1,1]
2024-02-07 18:19:12
611
原创 C++ 搜索二叉树的删除
情况1和情况2:如果这个父亲只有一个孩子要照顾,或者一个也没有,那么他想要脱身,只需要把这个孩子托付给他的长辈,没有就是nullptr,我们可以把这个过程叫托孤。2.情况三,月嫂的托孤,月嫂不一定是父亲的右孩子(左子树最大值的前提下),月嫂可能就是要被删除节点的左孩子,所以也要妥善处理。其次,他要满足照顾这两个孩子的条件,这个节点的key值要比左子树的每个节点key都要大,比右子树的每个节点key都要小,1.就不需要再找父节点了,这样还少了判断,被删除节点是父亲节点的左孩子还是右孩子。
2024-02-06 18:00:13
745
原创 C++ map和set
因为其底层为的数据结构,里面存储的是元素本身,比如:vector、list、deque也是用来存储数据的,与序列式容器不同的是,其里面。判断大小关系,建立的容器。
2024-02-06 16:29:40
950
原创 二叉树oj笔记
给你二叉树的根节点root,请你采用前序遍历的方式,将二叉树转化为一个由括号和整数组成的字符串,返回构造出的字符串。空节点使用一对空括号对"()"表示,转化后需要省略所有不影响字符串与原始二叉树之间的一对一映射关系的空括号对。无法省略第一个空括号对,否则会破坏输入与输出一一映射的关系。首先在顺序上符合前序遍历:1 2 4 3如果在递归遍历子树之前和之后都加括号 预期结果:1(3()())判断省略条件a. root->right == nullptr 要省略。
2024-02-04 01:16:19
1104
原创 C++多态
多态是在不同继承关系的类对象去调用同一函数,产生了不同的行为。那么在继承中要构成多态还有两个条件1. 必须通过基类的指针或者引用调用虚函数2.被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数:即被virtual修饰的类成员函数称为虚函数。在虚函数的后面写上 =0 ,则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口类)抽象类不能实例化出对象。派生类继承后也不能实例化出对象只有重写纯虚函数,派生类才能实例化出对象。纯虚函数规范了派生类必须重写,另外纯虚函数更体现出了接口继承。
2024-01-27 01:06:18
780
原创 C++继承
定义格式:类成员/继承方式public继承protected继承private继承基类的public成员派生类的public成员派生类的protected 成员派生类的private 成员基类的protected 成员派生类的protected成员派生类的protected 成员派生类的private 成员基类的private成员在派生类中不可见在派生类中不可见在派生类中不可见不可见是指基类的私有成员还是被继承到了派生类对象中,但是。
2024-01-23 21:28:40
1122
1
原创 reverse_iterator反向迭代器(萃取版)
在第三个里函数的返回值是reverse_iterator类型,而返回的对象是一个iterator对象。4. operator* 其实是类成员先找到前一个再--返回解引用后的内容。5.operator-> 其实是类成员先找到前一个再--返回取地址后的内容。这里iterator内部就是一个指针,可以用指针构造一个iterator对象。那么是不是所以的满足这个条件的迭代器本身也有满足反向迭代器的潜质。能用上反向迭代器, 说明容器支持双向读取,双向迭代器。所以反向迭代器是一个。
2023-11-24 23:14:39
906
原创 priority_queue优先级队列
优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元素)优先队列被实现为容器适配器容器适配器即将特定容器类封装作为其底层容器类底层容器可以是任何标准容器类模板,也可以是其他特定设计的容器类。容器应该可以通过随机访问迭代器访问标准容器类vector和deque满足这些需求。默认情况下,如果没有为特定的priority_queue类实例化指定容器类,则使用vector。
2023-11-24 21:37:40
1146
原创 STL-list学习笔记
当函数的返回值是内置类型int,double等,返回值产生的临时对象其实是const int ,const double。显然这不行,const_iterator迭代器,目的是date的内容不能被改变,需要可以++和--在链表节点之间访问。当类包含一个指针指向一个对象,那么const 这个类,这个指针指向不能改变,指向的对象反而可以修改。--end()可行,因为自定义类型的临时对象具有常性,但不是真正的具有常性,可以被修改。链表在空间不连续,指针的加减不能很好的访问,通过类定义,内部实现运算符重载。
2023-11-18 23:48:41
135
原创 STL_vector关于迭代器和深拷贝的学习
vector其实是表示可变大小数组的序列容器。是在连续空间下的,可以随机访问。满足数组的特性。在vs和g++的vector迭代器其实本质都是指针,但是vs对指针进行了封装。Linux下g++编译器,vector的迭代器就是原生态指针T*。(T是模板)
2023-11-16 00:38:59
190
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人