- 博客(24)
- 收藏
- 关注
原创 C++语法—引用
右值引用解决了,左值引用中函数内变量不能引用返回需要强行深拷贝的场景和传右值作为参数,仍然使用深拷贝的场景。使用右值引用减少了很多没有必要的深拷贝,大大提高了效率。
2024-09-27 21:00:00
976
原创 位图与布隆过滤器
思路1:排序+二分查找思路2:哈希或红黑树因为40亿个整数要占用16GB102410241024Byte 约等于10亿Byte=1GB40亿*4Byte = 16GB16G太大放不进内存,就算我们用归并排序对文件排序,也无法对文件使用二分查找,如果一段一段的放进内存里面查找的话,还不如在读取的时候就直接把他那个数挨个查找,放在内存,所以用哈希桶和红黑存储就更加不可能了,毕竟红黑树和哈希桶存储还有导致其他的内存开销。
2024-09-22 17:06:57
1086
原创 HashTable哈希表
散列表(Hash Table),又称哈希表。是一种数据结构,特点是:数据元素的关键字与其存储地址直接相关在顺序结构以及树型结构中,数据元素的关键字与其存储位置没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O(log2N),搜索的效率取决于搜索过程中元素的比较次数。那么在哈希中是如何建立关键字与存储地址的联系呢?通过散列函数(哈希函数):hash(key) = key % capacity;
2024-09-12 19:57:36
1176
原创 进程地址空间
在计算机硬件存储中,如图:数据的存储空间由这样的一个金字塔形成越上面的存取速度越快,越下面的存取数据越慢,为什么这样设计呢?1.节省成本,如果这个电脑存储都用cache,价格昂贵,无法让计算机平民化,如果只用存取速度慢的,就会大大的影响CPU的速度。就好像你在微信发文件给a同学,你的网络速度快,而他的网络速度慢,进而导致文件传输慢一个道理。这里讲得地址空间是指内存,而在电路中,以高低电平作为数据表示,一组二进制排列组合则表示一个存储单元,你的地址总线返回一般为[0,2^32),
2024-09-12 02:15:00
788
原创 数据结构红黑树
enum colorRED,BLACK//枚举的使用必须先初始化,_col(RED)color _col;标准的三叉链(左右子树指针和父结点指针),模版的含义后面封装map,set的时候再详述。
2024-09-07 13:29:05
723
原创 进程——状态与优先级
运行队列:一个CPU就会有有一个运行队列,和数据结构中的队列一个东西,里面的元素是进程,调度器:选择下一个要运行的进程、进行上下文切换、处理进程的创建和终止、响应中断和信号的一个函数。是调度器把进程放到到运行队列中的。时间片:每一个进程的运行时间,运行完到运行队列中的下一个(10ms)根据上面的概念:我们进程不是在CPU一直运行到进程结束,而是轮流运行一段时间,在这个轮流切换进程就叫做进程切换,在一段时间内所有的进程代码都被执行就叫做并发执行。我们会把在运行队列中的进程的状态称之为运行状态。
2024-09-06 17:50:37
734
原创 环境变量、命令行参数
PATH : 指定命令的搜索路径HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)PWD:记录当前进程的工作路径的SHELL : 当前Shell,它的值通常是/bin/bashSSH TTY:记录当前的终端路径OLDPWD:当前路径的上一次的路径USER:用户名向量表结构图示:命令行参数表的作用:为指令、工具,软件等提供命令行选项的支持环境变量是系统提供的一组name=value形式的变量环境变量可以被子进程继承,所以通常具有全局属性。
2024-09-05 21:44:34
952
原创 数据结构(堆)
现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。
2024-07-26 17:33:01
301
原创 linux权限
root: 超级用户(基本不受权限的限制)普通用户:我们新建的用户如果我们想暂时的对一条指令进行提权:sudo command。
2024-07-26 11:32:12
1085
原创 栈和队列(C语言)
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头。
2024-07-21 14:42:18
524
原创 Linux指令
操作系统是一款做软硬件管理的软件。计算机系统自下而上可以大致分为4部分:硬件、操作系统、应用程序和用户。操作系统管理各种计算机硬件,为应用程序提供基础,并且充当计算机硬件与用户之间的中介。重点:我们在计算机上的所有行为都会通过操作系统转换成为硬件行为。
2024-07-15 23:35:36
559
原创 二叉搜索树(BST)
一棵树,可以为空,如果不为空,则需要满足一下性质:1.非空左子树的所有键位小于其根节点的键值。2.非空右子树的所有键大于其根节点的键值。3.左右子树都是二叉搜索树。
2024-07-15 23:30:00
1135
原创 Qt信号与槽
信号的处理方式:注册信号处理函数 在Qt中把这种函数称为槽,一个信号和一个槽关联起来,本质上也是一个回调函数,后续只要信号触发了,Qt就会自动的执行槽函数。信号的类型:用户进行不同的操作,就可能触发不同的信号,比如:输入框的光标,点击按钮等。系统内部的通知机制,进程间通信的方式。信号源:由哪个控件发送的信号。
2024-07-10 23:25:11
208
原创 C++多态
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如:有一个考试类,学生a和学生b跟考试都是has-a的关系所以继承了考试类,但是学生a和学生b的学习情况不同,所以得到的分数也不一样。1多态的条件:1. 虚函数的重写 2.父类的指针或引用去调用虚函数。
2024-06-12 21:27:55
826
原创 C++继承
现在有两个类,一个是学生类,一个老师类,对于这两个类来说,有很多的共同点,比如:他们都有姓名、性别等,但是对于这两个类来说,他们也有不同点,比如:工号,学号等,对于共同点来说,我们是不是可以帮归类成一个类叫做人,然后再去大类里面分出老师和学生,这样的关系就叫做学生类和老师类继承了人这个类。
2024-06-08 00:31:21
656
原创 C++模板
模板参数分类类型形参与非类型形参。类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参:就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。110上面代码中,可以看到有一个模版中有一个类型参数T用于处理实例化不同内置类型场景,但是这里还有一个问题,如果我想sl1是10个元素而sl2是100个元素呢?我们可以在模版参数中加入一个常量作为模版的第一个参数,在类中可将该参数当成常量来使用。1。
2024-06-04 11:05:03
244
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人