自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 linux信号

以上述代码为例,若flag不是关键字,在捕捉到2号信号进行自定义处理时,会把flag置为1,但是之后while循环还是没有结束,因为为了提高效率,编译器可能直接把初始的flag(0),直接放入到cpu中进行while判断,不会每次判断的时候都从内存中读取flag。键盘会通过中断单元给操作系统发送中断信号,然后操作系统会从中断向量表中查找对应的中断信号(中断向量),就会知道读取键盘的方法,接着操作系统会对读取的数据进行判断,控制ctrl+c转换成为2号信号发送给进程。

2023-12-21 17:49:56 66

原创 linux输入输出重定向

将字符串msg由输出到屏幕上(即显示器文件1)重定向到log.txt文件中,即下面代码执行后本该直接能在屏幕上看到5行"hello linux",但由于输出重定向,不能写到屏幕上直接显示。而是写入到了log.txt文件中。文件描述符struct files_struct,下标从零开始,正常情况下下标0、1、2分别对应键盘文件(stdin)、显示器文件1(stdout)和显示器文件2(stderr)。输入重定向指令为,输入追加重定向指令为

2023-11-20 21:03:12 109

原创 进程地址空间

一个程序在执行过程中,会读取运行一行一行的代码,找到这些代码首先需要通过虚拟地址找到代码的物理地址,但操作系统为了不浪费空间和时间,它将磁盘中的文件加载到内存中的方式是惰性加载,这就可能导致某个程序执行所需要的数据没完全加载到内存中,此时就会导致进程对应的页表中只有对应的虚拟地址,而没有物理地址,就会导致缺页中断。所谓同一个地址指的是虚拟地址,父进程和子进程的虚拟地址虽然相同,但它们的虚拟地址对应的物理地址不同。切换进程时也会切回对应的上下文,这也可以解释为什么每个进程都是独立的,进程之间互不影响。

2023-10-31 16:32:13 83

原创 右值引用,移动拷贝,完美转发forward<T>(t)

右值也是一个表示数据的表达式,如:字面常量、表达式返回值,函数返回值(这个不能是左值引用返回)等等,右值可以出现在赋值符号的右边,但是不能出现出现在赋值符号的左边,右值不能取地址。右值引用就是对右值的引用,给右值取别名。

2023-10-13 18:25:54 92

原创 位图,位运算符

所谓位图,就是用每一位来存放某种状态,适用于海量数据,数据无重复的场景。通常是用来判断某个数据存不存在的。快速查找某个数据是否在一个集合中。求两个集合的交集、并集等。

2023-10-09 20:28:23 40

原创 printf函数底层逻辑,大小端

同时printf函数创建的栈帧是后进先出的,并且以%d十进制的格式打印,一次打印4个字节,所以打印结果为1(01 00 00 00),0(00 00 00 00),2(02 00 00 00)。关于printf函数:在调用是会创建一个栈帧,地址是由高地址向地址增长的,并且对于三个变量a b c是从最右侧的c读取的,然后放入栈帧中的高地址,后面依次放入b a。假设在一个 32 位 little endian 的机器上运行下面的程序,结果是多少?大端:地位存高地址;在小端存储的情况下abc的二进制形式如下。

2023-09-30 12:02:08 188

原创 平衡二叉搜索树(AVL)的旋转

结果:60(curleft)的右边(c)变成了90(cur)的左边,60的左边(b)变成了30(parent)的右边;90的平衡因子就是它的右子树(d)减去60的右边(c),30的平衡因子就是60的左边(b)减去它的左边(a)。以下图为例,在c插入新的节点,会导致右左双旋。

2023-09-19 11:41:30 32

原创 map和set的使用、map统计次数、[ ]重载

【代码】map和set的使用、map统计次数、[ ]重载。

2023-09-18 19:58:18 75

原创 字符串相乘,字符串相加(官方答案解析)

如图所示将三次相乘的结果再相加(利用字符串相加)

2023-09-05 17:26:37 64

原创 前K个高频单词,substr,isupper,tolower

由于sort是非稳定排序,所以在根据单词出现的次数排序后,会打乱之前根据字典序排序的顺序,所以在仿函数中额外进行控制,使得之前根据字典序排序的单词之间的相对位置不变。1.使用map coutmap统计给定单词列表words中每一个单词出现的次数,并且单词之间根据字典序排序。不添加额外控制,使用稳定的stable_sort排序,排序后不会改变单词之间的相对位置。3.题目要求根据出现的次数排序,所以使用仿函数对出现的次数(second)进行比较排序。给一非空的单词列表,返回前。

2023-09-04 16:33:44 50

原创 深入理解C++多态

综上,就可以说明为什么两张虚表中func1的地址不同,原因就是让ptr2在调用func1之前去另一个地址(0062134D / base虚表中func1的地址),在底层做一些处理,即先去修正ptr2的地址。总结一下派生类的虚表生成: a.先将基类中的虚表内容拷贝一份到派生类虚表中 b.如果派生类重写了基类中某个虚函数,用派生类自己的虚函数覆盖虚表中基类的虚函数c.派生类自己新增加的虚函数按其在派生类中的声明次序增加到派生类虚表的最后。所以说虽然两个func1的地址不同,但都是调用同一个函数func1。

2023-08-13 11:31:03 62

原创 C++多态 虚函数 析构函数重写

基类指针指向父类,会在父类的虚函数表找到父类的地址,指向子类,切片以后还是父类格式(子类中的父类),去子类的虚函数表找到子类的地址。的虚函数表中找调用(重写)函数的地址,从而同一个函数接收不同的类对象,出现不同的结果。virtual修饰的类成员函数称为虚函数,子类可以不加virtual,父类必须加。的返回值类型,函数名字,参数列表完全相同),称子类的虚函数重写了基类的虚函数。派生类中有一个跟基类完全相同的虚函数(即派生类虚函数与基类虚函数。存放虚函数的地址,虚函数本质是在代码段。的指针或者引用调用虚函数。

2023-08-10 18:02:28 158

原创 linux进程切换、环境变量、本地变量、内建命令、调试

cpu维护两个队列防止优先级较高的进程一直抢占cpu,两个队列分别为就绪队列和等待队列,一个就绪队列的进程根据优先级经过一段时间等待,会上cpu运行,经过一个时间片(段)运行后,会被放到等待队列。每当一个进程从cpu退出都会由寄存器保存它相关的数据(保存上下文),用于在它下一次上cpu运行,简单来说就是让cpu知道该进程上一次运行到哪一步了(恢复上下文),然后现在接着继续运行。我们所运行的进程都是子进程,bash本身在启动的时候,会从操作系统的配置文件中读取环境变量,子进程会继承父进程交给我的环境变量。

2023-08-05 16:28:57 55

原创 C++继承相关概念

子类实例化对象,由于继承的有父类。除了友元函数,基类中所有成员变量包括静态成员变量都可以被子类继承,但静态成员变量在整个继承体系中只有一份。A.C1中b和c1共8个字节,C2中c2和b共8个字节,D自身成员d 4个字节,一共20字节。C.子类对象不能直接访问最顶层基类B中继承下来的b成员,因为在D对象中,b有两份,一份是从。C1中继承的,一份是从C2中继承的,直接通过D的对象访问b会存在二义性问题,在访问时候,可。子类和父类有同名成员,子类的成员隐藏了父类的成员,调用按照就近原则,先在子类中查找。

2023-08-04 11:54:03 46

原创 linux进程相关概念

一般而言fork之后的代码父子共享,子进程可以很方便找到父进程通过getpid(),给父进程返回子进程pid是父进程需要控制子进程。父进程先退出,子进程的父进程会被改成1号进程(操作系统),父进程为1号的进程称为孤儿进程。该进程被系统领养,因为孤儿进程退出也需要(通过系统)进行释放。进程一般退出的时候,如果父进程没有主动回收子进程,子进程会一直处于Z状态(zombie),进程的相关资源尤其是task_struct结构体不能被释放。1.为什么fork要给子进程返回0,给父进程返回子进程的pid(标识符)?

2023-07-30 10:56:52 36 1

原创 二叉树的层序遍历(C++)

【代码】二叉树的层序遍历(C++)

2023-07-27 17:26:39 62 1

原创 逆波兰表达式求值(C++)

如果为操作符则从栈中读取两个操作数分别为右操作数和左操作数,然后进行相应的运算,结果再压入栈中。首先依次读取容器中每一个string,如果是操作数直接入栈,代码整体思路:题目给出的是一个后缀表达式。直到遍历完整个后缀表达式,输出栈顶元素。

2023-07-27 16:35:12 1130 1

原创 C++ 初始化列表 5.8

内置类型/基本类型:语言本身定义的基础类型如int/char/double/指针等等;自定义类型:用struct/class/等定义的类型。内置类型不做处理,自定义类型会去调用他的默认构造。1、一般情况下,有内置类型成员,就需要自己写构造函数,不能用编译器自己生成的。2、全部都是自定义类型成员,可以考虑让编译器自己生成。以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个“成员变量”后面跟一个放在括号中的初始值或表达式。类实例化对象,类相当于图纸,对象相当于根据图纸建造的房子。

2023-07-08 22:55:41 69 1

原创 linux make git三板斧

把写的文件先拷贝到本地厂库下,在本地厂库下([lrf@iZ2ze7jc5b4j0lmv1ucfknZ linux]$ )输入git add+所要上传的文件名,输入git commit -m "日志",输入git push即可上传到git远程厂库。stat + 文件 :可查1.Access最近访问时间;(文件=文件内容+文件属性);make会根据源文件和目标文件的新旧,判断是否需要重新执行依赖关系进行编译!git statue用来查询是否有新的文件可上传。makefile是一个当前目录下的文件。

2023-07-05 20:45:31 100 1

原创 linux gcc -E -S -C

3.汇编(gcc -c mycode.s -o mycode.o):生成机器可识别码/可重定位目标二进制文件,简称目标文件,虽然已经是二进制了,但不可以独立执行,就算(chmod +x mycode.o) 也不行,需要经过链接才行。4.链接(gcc mycode.o -o mytest):(生成可执行文件或库文件)将可重定位目标二进制文件和库进行链接,形成可执行文件。如果我们没有动态库,只有静态库,而且gcc能找到,就可以进行动态链接,因为gcc默认优先动态链接,-static的本质:改变优先级。

2023-06-30 11:54:03 123

原创 关于vim的一些基础操作

vim一共包含三中模式,分别为命令模式(默认模式)、插入模式和底行模式,三种模式之间的切换方式如下图所示。n+shift+g(nG):定位光标到第n行。(n)p:粘贴(n重复行)到光标所在行下一行。(n)r:对光标字符+之后的n个字符进行替换。shift+g(G):定位光标到结尾行。(n)x:对光标之后的x个字符进行删除。shift+$:定位光标到当前行结尾。shift+^:定位光标到当前行开头。(n)yy:复制光标所在行(n行)gg:定位光标到最开始行。(n)dd:剪切、删除。

2023-06-29 20:00:28 96

原创 linux中目录文件权限,拥有者,所属组,other,umask,粘滞位简述

所以粘滞位就是对共享目录设置(使用chmod +t 设置目录沾滞位),将w改为t,那么就只允许文件拥有者或者root删除这个文件,其他人不允许,并且大家可以在目录进行各自文件的增删改查。首先一个文件能否被删除,并不由文件本身决定,而是由这个文件所处的目录决定,如果我们不想文件被删除,可以去掉共享目录W权限,但我们同时也无法再创建文件!因为目录文件的起始权限为777,普通文件起始权限为666,而系统的umask值为002,那么经过对掩码取反,再相与就得到实际权限。r:是否允许我们查看指定目录下的文件内容。

2023-06-28 13:04:07 218 1

原创 快速排序,前后指针法

快速排序详细过程

2023-04-23 17:10:33 104

原创 堆排序详细过程

堆排序

2023-04-21 16:52:32 154

原创 顺序表的增删查改

【数据结构】顺序表的增删查改。

2023-03-23 11:38:10 51

原创 文件操作函数,fscanf/fprintf,sscanf/sprintf

文件操作函数,fscanf/fprintf,sscanf/sprintf

2023-03-06 14:49:31 94

原创 什么是柔性数组

什么是柔性数组,malloc和realloc使用

2023-02-26 15:33:22 77

原创 大端存储和小端存储的区别,如何判断大小端

大端存储和小端存储的区别,如何判断大小端

2023-02-22 12:58:45 2006

原创 模拟实现qsort函数(冒泡排序)

模拟实现qsort函数,冒泡排序

2023-02-17 10:21:28 85 1

原创 c语言,最大公约数,最小公倍数

c语言,最大公约数,最小公倍数

2022-12-08 17:49:39 488

原创 含有空格的字符串的逆序,scanf,gets

含有空格的字符串的逆序,scanf,gets.

2022-12-01 16:43:35 155

原创 三子棋C语言实现

三子棋,c语言实现

2022-11-19 11:09:39 337

原创 递归实现字符串逆序,strlen的具体介绍

递归实现字符串逆序,strlen函数

2022-11-11 21:56:11 133

原创 分治法求逆序对个数

分治法求逆序对数,归并排序

2022-11-07 15:12:24 2356

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除