自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程互斥与同步

经过上面的例子,大家已经意识到单纯的i++或者++i都不是原子的,有可能会有数据一致性问题为了实现互斥锁操作,大多数体系结构都提供了swap或exchange指令,该指令的作用是把寄存器和内存单元的数据相交换,由于只有一条指令,保证了原子性,即使是多处理器平台,访问内存的总线周期也有先后,一个处理器上的交换指令执行时另一个处理器的交换指令只能等待总线周期。

2023-05-25 13:35:53 179 1

原创 Linux-基础IO

一定有一个结构体是用来描述这个文件的,而且这个结构体的一个实例一定作为了PCB的一个成员,而其结构体内部一定会有像pid类似的描述符来描述这个文件,那么下面就是我们的草图,博主画风比较抽象,请接受一下博主的抽象画风,耐心观看,大家也可以根据以上这段文字描述结合PCB,地址空间,页表,物理地址来自己画一下。2、程序在执行的时候,数据往往不单单只是我们进行输入的,有可能是提前准备好的一串数据,或者我们的执行结果不仅仅是要展示在显示器上,也有可能要进行存储供之后查看,比如日志。是如何进行读、写的?

2023-05-14 09:51:13 130

原创 进程控制-创建、退出、等待、替换

这个语句是在进程里面进行进程替换的,那么回顾之前的进程替换原理,此刻进行了替换之后,执行的还会是之前的父进程吗?答案显而易见,父进程还是之前的父进程,父进程还存在着并没有因为进程替换而创建了新的进程,但是此时的父进程的血液已经被人换了,而且换得很彻底,虽然是原先的躯壳却不再是原先的灵魂了,因为代码和数据在发生进程替换的时候已经完完全全被新来的替换了,所以原先的代码数据也就不再是有效的,所以只执行了一次被加载到代码段和数据段的新进程,然后这个进程如果没有循环语句,就会瞬间die。所以我们要说的是什么呢?

2023-05-05 11:29:18 224 1

原创 进程地址空间

地址空间进行了各种代码的区域划分,如果每个进程的各个区域的首地址都不相同,那么进程就需要在每个进程里面以不同的方式去查找相同区域的内容,这使得查找的方式不够统一,使得实现方法变困难,而如果将每个区域的首地址都进行相对的确定,那么查找方式也会相对统一,也就是虚拟地址是相对统一的,不一样的知识虚拟地址与物理地址的映射关系不同。这张图的虚拟地址便是进程地址空间的分布,由下至上,需要注意的是:堆区的地址是从下至上增长,栈区是从上之下增长,也就是说,开辟的第一个堆空间的地址,便是当前进程的堆区最小地址;

2023-05-05 10:05:55 85

原创 Linux 权限的理解

这里以一个较为形象的例子作为对权限的理解,一村子里面有一媒婆,这媒婆呢专门负责说媒之事,村东头有一年轻小伙看上村西头的一漂亮姑娘,而小伙自己为人羞涩矜持,着实像个娘们,便拜托媒婆前去说媒,媒婆听后,二话不说就前去拜访村西头的那位姑娘,可人家姑娘根本不愿意,媒婆便实打实的跟小伙说了情况,隔了几天,在小伙极力坚持之下,又让媒婆前去一番,可得到的结果依然还是姑娘的拒绝,媒婆心想,这可咋办呢,这要在做不成不就坏了我名声吗?八进制的666 - 002也确实是得到664,可以验证出确实是将umask的值减去了。

2023-04-24 17:11:51 112

原创 C++内存管理

realloc的功能是在原有的地址基础之上,也就是意味着首地址没有变,再申请额外的连续的一片空间,此处需要注意的有两点,realloc可以对没有申请空间的变量名进行直接开辟空间,其原型是直接调用malloc,另一点是realloc如果开辟的空间此处不够,则会重新找一片空间足够的地方去开辟,在开辟之前会将之前的内容拷贝至新地址处(memcpy)原地址释放掉,然后再申请额外的空间。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。

2023-04-23 18:55:52 75 1

原创 C++ 函数模板 类模板

重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数,已然无法实现一个函数适应多类型参数代码的可维护性比较低,一个出错可能所有的重载均出错

2023-04-22 22:27:32 63

原创 类与对象 (上)

3.1 声明函数声明了可以不定义变量是声明还是定义?就看是否开辟了空间,在类的实例化的时候是开辟空间全局变量的声明与定义头文件定义全局变量全局变量:如果在头文件里面定义了全局变量,当预处理的时候会将同名全局变量直接嵌入到cpp文件头部,他们会在头文件里面有一个全局变量,其变量就会在编译的时候加在每个文件的字符表里,具体可以看往期文章,在多个cpp文件有一个同名的全局变量,此时符号表里面有两个或多个同名的变量,就会报错重定义。

2023-04-15 21:24:34 51

原创 C++入门篇_笔记1

需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。我们可以看到,虽然能够使用rand了,但是打印出来的是随机值,这显然不符合我们的心意,那么该怎么去使用呢?

2023-04-13 14:01:31 73

原创 深入结构体——内存对其

1. 平台原因(移植原因): 不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2. 性能原因: 数据结构(尤其是栈)应该尽可能地在自然边界上对齐。 原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。

2023-04-05 00:17:27 112 3

原创 C/C++的编译链接——深入浅出

一个C/C++程序要想从源代码变为可执行文件,经过了哪些过程呢?大体分为编译链接在编译阶段需要编译环境的支持:GCC,Cl等等,在运行阶段需要执行环境的支持,Windows,LInux等等。

2023-04-03 22:48:02 131 2

原创 传引用,传地址,传值的区别与深入剖析

传值会创建独立空间,在函数调用结束释放栈帧的时候,会通过临时变量将值传送回来,其地址就具有了不可测性,一旦栈销毁就无法溯源,并且比传引用消耗更多时间与空间传地址于传引用相比最大的区别就是写法上不同,引用能实现的功能指针也能实现传引用可以通过返回值来修改原值,但是当引用实体地址被覆盖的时候,这种方法就会失误,会导致随机值。

2023-04-02 23:58:46 1360

原创 直接插入排序,希尔排序,选择排序,堆排序

今天学到排序这一块了,就来也总结一下今天学到的4个排序,直接插入排序,希尔排序,选择排序,堆排序,若表述有错误,恳请指正!

2023-03-27 22:39:18 104 1

原创 栈与队列的实现,初阶:用顺序表是先栈、用单链表实现队列;进阶:用栈实现队列、用队列实现栈

目录栈的定义​编辑函数实现栈是受限制的线性表具有后进先出的特性(LIFO:Last In First Out),又称为LIFO结构只能在一端进行一端插入操作、删除操作插入数据与删除数据称为压栈与出栈,在栈顶操作进行插入删除操作的一端称为栈顶,另一端称为栈底上面的表现形式更为抽象,其物理内存实际上是一片连续的空间从上面两张图可以直到,压栈,出栈都是栈顶在移动,栈底保持不变,那么根据这个逻辑,就好实现增删函数了,下面给出几个常用的栈函数功能。

2023-03-26 21:52:04 116 2

原创 找出链表中的入环点

这道题的思路和追击问题一个思路,跟找一个链表的中点思路一致,使用两个快慢指针,快指针一次走2步,慢指针一次走1步,当fast指针进入环的起点的时候,假设此刻fast指针走了L个单位距离,那么此时该点距离slow指针就还有L/2个单位距离,然后让slow再继续走L/2个单位距离,此刻,fast与slow就都在环内部了,而此刻就由fast来追slow,设他们的距离为N个单位距离,因为他们没走一次,距离差值就会减1,那么最终肯定会相遇。设:进入环点之前的距离为L,slow走的距离为X,环的距离为C。

2023-03-21 12:48:05 80

原创 链表的快速排序笔记,画图分析对学习很有帮助

没进行一次范围比较就将该范围的值进行一次排序,而后下一次的大范围比较每组数据的值都是相对有序的,那么在进行一个值的插入即可,直到排序完。可见,2在单独的范围类,保持着相对有序,所以对尾部进行一个排序+链接即可。先上草稿图,如果能够能看懂就更好了,整个循环全都在这张草稿上。先来谈一下我对这道题的理解。

2023-03-20 19:29:26 238 3

原创 初闻链表深似海,再回眸已入心

初闻链表深似海,再回眸已入心。做事讲究个循序渐进,而学习也不例外。不积跬步无以至千里,不积小流无以成江海。

2023-03-17 23:23:36 152 1

原创 初遇malloc,free,calloc,realloc,通过实例带你一起理解动态内存函数

初遇malloc,free,calloc,realloc,通过实例带你一起理解动态内存函数

2023-03-15 23:57:54 132 1

空空如也

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

TA关注的人

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