- 博客(113)
- 收藏
- 关注

原创 初识C语言
本篇博主以自己在学习C语言的一些内容为基础,结合自己的学习经验将这些内容拓展成对C语言小白具有一些推动认识作用的文章。本篇的出发点是意在帮助C语言小白更好的上手C语言。 本篇的题目是 初识C语言 ,也就是说,本篇是对C语言基础内容的一些了解,在看完本篇之后,C语言小白们能够对C语言有一些大致的认识就可以,毕竟没吃过猪肉,也得见见猪跑吧。 对C语言的更多内容将会在后面的文章中更新。
2022-04-11 13:35:00
718
原创 Ubuntu 根目录扩容
删除所有快照,关闭镜像,在 vm 上找到该镜像的硬盘设置,进行扩容;物理机:MacBook Air M2 Sonoma 14.4.1。虚拟机:VMware Fusion Player 13.5.0。(以我的实际情况为例)和扩容之后未分配的分区。重新打开 GParted 或者单击窗口的左上角。开启镜像,进行快照,防止扩容失败导致数据丢失;的右边有个锁,此时直接对分区。,可以观察到该分区挂载到了目录。能够看到挂载到根目录的分区。单击右键,再点击选项。进行扩容是扩不了的;单击左键,进行扩容。
2024-04-30 10:26:11
890
1
原创 深度剖析Linux信号机制
首先pending位图该标志位置1,然后当信号检测时发现该信号到来了,那么就把该标志位置0同时block的该标志位置1,再去执行该信号的动作,假设该动作持续时间很长(比如handler中一直在循环),然后又有同种信号来了,此时pengding位图此标志位仍然置1,但此时该信号已经被阻塞(屏蔽)了,此后如果一直来同种信号,那么该标志位一直置1。当我们每次从内核态切换的时候,都会进行一次信号检测,检测pending位图中有没有需要处理的信号,当这些信号的动作是默认动作或者忽略动作时,直接就又返回用户态了。
2023-09-15 09:51:29
313
原创 ProtoBuf的学习并且制作了一个网络通讯录项目
本文章介绍了ProtoBuf的安装、学习,比较了ProtoBuf和Json的性能,并且基于ProtoBuf制作了一个通讯录项目。
2023-07-11 22:45:05
495
原创 【进程间通信】共享内存(Shared Memory)
共享内存是System V系列的一种进程间通信的方式。共享内存允许多个毫不相干的进程读取和写入同一块物理内存,当某个进程往共享内存中写入数据时,其它进程就能够立马读取到共享内存中的数据,从而达到进程间通信的目的。这也是所有进程间通信方式中最快的一种。
2023-02-20 16:06:40
2676
1
原创 使用和制作动、静态库
从一开始的helloworld,到现在熟练使用编程,我们在无时不刻的使用库。可以想一下,我们明明没有写printf函数的实现,但是加上头文件后,却可以使用它。我们想一下可执行程序的生成过程,预处理、编译、汇编、链接。前三步是将一个源文件(.c)变成一个可重定向目标二进制文件(.o),最后一步的链接是将无数个.o文件集合成一个可执行程序。那么如果使用者只持有自己的.c文件和别人的.o文件和.h文件,这不就成了。.h文件供使用者查看方法,.o文件供使用者调用方法。
2023-02-17 16:58:02
1091
原创 二叉树的统一迭代方式
之前的方法记录过很多二叉树的迭代遍历方法,但是没有一种是能够统一前中后序的代码的,也就导致要写前中后序的迭代遍历需要有不同的思维方法。所以这里给出一种统一的迭代方式。
2023-02-08 21:15:43
205
原创 虚函数的复杂(继承)内存布局
继承关系一般分为:单继承和多继承,而多继承的出现就又导致了一种特殊的继承关系菱形继承,为了解决菱形继承的冗余和二义性,又有了菱形虚拟继承的解决方案。本篇主要介绍以上四种继承关系的类对象虚函数内存布局。
2023-02-03 22:24:04
953
原创 C++继承
概念:C++的继承机制是面向对象程序设计使代码可以复用的最重要的手段,允许用户在保持原类的特性的基础上进行拓展,这样新产生的类叫做派生类(父类),原类叫做基类(子类)。
2023-02-01 23:57:57
486
原创 C++模版的全特化与偏特化
全特化:对模版所有类型参数做处理;偏特化:对模版部分类型参数做处理;函数模版没有偏特化;函数模版的全特化与函数重载很像,但并不是一回事类模版特化由于会导致代码量剧增,所以一般作用于仿函数编译器选择模版的顺序为(先寻找最合适的模版):模版全特化——>模版偏特化——>普通模版。
2023-01-08 19:13:34
527
原创 linux下软硬链接到底是什么?
在Linux下,系统标识文件的唯一方式就是inode号,而对于人来说,看数字来标识文件是极其困难的,所以就有了文件名,通过文件名与inode号的相互映射,我们人就能很方便的标识文件,而文件名与inode号的相互映射就叫做硬链接。
2023-01-07 11:59:01
705
原创 vector的实现和使用中的常见错误
因为该代码的原意是调用fill(2)函数,但实际上调用的是range(3)函数,因为我们的参数10和3都是int类型,而fill(2)的两个参数类型分别是size_type和const value_type&,range(3)的两个参数类型都是InputIterator。当该函数删除position位置上的数据后,由于vector是个数组,所以该位置后面的元素会向前移动,就会导致position位置上仍有数据,linux下g++就是这样实现的。STL库中的做法是这样的:重载更适合的参数类型的构造函数。
2023-01-06 18:32:48
2292
1
原创 Linux文件管理---磁盘上文件如何管理(inode)
一块磁盘中有很多的磁片,每片都有两面,每面都有很多环磁道组成,每环磁道分为很多扇区,每个扇区的大小为512byte,而这就是磁盘的最小存储单元了。每一面都有一个磁头,磁头的左右摆动配合磁片的高速旋转可以使得磁头锁定磁盘的每一个扇区,从而能够找到磁盘上的文件。(所有的磁头都是一起绑定运动的)
2023-01-05 13:16:30
379
原创 缓冲区的深刻理解
我们无论往显示器里读写、文件里读写、网卡里读写等等,都是在访问外设,而一旦访问外设速度就很慢。假设不存在缓冲区的话当前进程在进行IO时只能够当前进程去等待,就会导致当前进程的效率降低;而此时如果当前进程不自己等待,而是将需要IO的数据拷贝到缓冲区里,由缓冲区决定IO的时间、次数等,这样就会提高当前进程的效率。
2023-01-05 10:47:21
565
1
原创 Linux文件描述符fd详解&&重定向原理
一个系统中,会打开非常非常多的文件,这些文件OS也是需要进行管理的,而管理的方法就是先描述再组织,将所有文件共有的属性描述成结构体struct file __rcu,而在进程的PCB里有一个指针struct files_struct *files 指向结构体struct files_struct,该结构体中有一个指针数组struct file __rcu * fd_array[NR_OPEN_DEFAULT];属于当前进程的所有文件的结构体指针都在该数组中,而该数组的下表就是文件描述符fd!
2023-01-04 18:47:20
1248
原创 Linux文件操作(系统调用函数)
C库函数对文件进行操作时往往会传入w、r、w+、r+、a等参数,这些参数决定了文件打开以及访问的方式,但是这些都是对系统调用函数的封装,真正的系统调用函数并没有这些参数,有的只是一个参数flags。
2023-01-04 17:28:51
392
原创 Linux利用fork&&exec系列函数执行其它程序
fork函数可以创建子进程,子进程会以父进程为模版拷贝PCB,并且执行父进程的代码,但是有一种情况我们并不想子进程执行父进程的代码,而是想让子进程去执行其它程序,这时就需要用到exec系列函数了。
2023-01-04 16:25:58
497
原创 LInux僵尸进程的解决方法
一个进程在退出后,操作系统会释放该进程对应的资源,但仍会保留一些信息(pid、退出状态、运行时间等),此时父进程必须主动去获取该信息,若父进程不获取则会导致该信息一直在内存中保留,而该进程就被称为僵尸进程。
2023-01-04 15:19:47
851
原创 Linux进程地址空间
计算机运行时,内存中同时存在很多的进程,但每个进程都认为自己是独占内存的!在32位机器上,每个进程都认为这16G的内存全部属于自己,为了实现这一思想,于是每个进程PCB里都存在一个结构体指针struct mm_struct *mm,该指针指向的结构体就是进程地址空间。
2023-01-03 21:38:30
531
原创 Linux环境变量
环境变量是进程中的一种变量,它具有各种特殊的意义,但作用一般是为用户和OS提供他们想要的信息。环境变量是能够被子进程继承下去的。
2023-01-03 21:37:04
2448
原创 理解Linux中的进程状态
一个CPU同时只能调度一个进程,所以操作系统就维护起了一个运行队列runqueue,在这个队列中排队的进程就称为运行(R)状态,并不是正在被CPU调度的进程称为运行(R)状态。
2022-12-27 10:44:54
801
原创 理解操作系统(Linux)
操作系统是一款对软硬件资源进行管理的软件!操作系统通过合理的管理软硬件资源的手段,为用户提供良好的(稳定的、高效的、安全的)执行环境。
2022-12-22 22:09:17
800
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人