- 博客(14)
- 收藏
- 关注
原创 线程的同步之认识条件变量
先来一个例子弄明白什么是线程间同步,如图,假设有一个VIP自习室,所有人都可以进入这个自习室自习,但是自习室一次只能由一个人在自习,小明有一天起大早,第一个到自习室,拿着钥匙,将门反锁,自己在里面自习,等到其他人来到自习室以后,发现自习室们被反锁,于是众人只能在外面排队等待,而小明又不愿意离开,即使自己已经完成学习任务了,他吃饭上厕所或者干什么事情都要带着要是,将门反锁,只为了确保自己能一直拥有自习室,这样子就造成了其他人无法自习,而自己的学习效率又不高,导致整个学校的学生的学习效率都不高的情况!
2025-02-10 11:08:17
304
原创 C++中的智能指针
RAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时候释放资源。借此,我们实际上把管理一份资源的责任托管给了一个对象。这种做法有两大好处: 不需要显式地释放资源、采用这种方式,对象所需的资源在其生命期内始终保持有效。
2025-02-08 11:01:48
535
原创 Linux进程控制
它是一个输出参数,用来输出进程的退出信息看看这段代码的结果我们可以看到退出信息是256当然,在上述,我们可以知道,进程退出的时候,我们要关注进程退出的原因,我们只需要关心它的退出码和退出信号就行了。而这个256就代表了这两个数字。查看两个数字的方法。
2025-02-02 16:35:07
812
原创 Linux中进程的地址空间
其实,在内存中,地址空间就是一个结构体对象。而地址空间中的属性基本上都是start和end的值,用start和end来表示区间的范围。
2025-02-01 12:39:41
870
原创 Linux中的环境变量
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性查看所有环境变量的命令env命令查看单个环境变量echo $环境变量名PATH之外其他几种环境变量HOME :指定用户的主工作目录即用户登陆到。
2025-01-28 17:08:56
338
原创 进程的优先级
指定进程获取资源的先后顺序,优先级的表示方式其实就是进程控制块中的一个字段,也就是一个数字。在Linux中优先级数字越小,优先级越高。
2025-01-28 14:12:36
216
原创 详解进程状态
为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。一个进程可以有几个状态。进程的状态其实就是进程描述结构体task_struct中的一个属性。S休眠状态(sleeping)有时候也叫不可中断睡眠状态(),在这个状态的 进程通常会等待IO的结束。可以通过发送SIGSTOP信号给进程来停止(T)进程.这个被暂停的进程可 以通过发送 SIGCONT信号让进程继续运行。这个状态只是一个返回状态,你不会在任务列表里看到这个状态。
2025-01-27 21:53:54
992
原创 C++内存管理
内核控件:属于操作系统,用户的代码是不能直接读写的栈:非静态局部变量、函数参数、返回值通常都是在栈上创建的内存映射段:高效的I/O映射方式,用来装载一个共享的动态内存库,用户可以创建共享内存,实现进程间通信。堆:通过new或在C语言中通过malloc等开辟内存的函数开辟的内存通常都是在堆上开辟内存数据段:存储静态变量或全局变量代码段:可执行代码、只读常量
2024-12-09 10:00:30
819
原创 视频点播系统(后端)
视频点播系统的实现,其实就是对存放在文件中的视频在网络中进行管理,即增删查改,而这些功能,我们可以通过MySql数据库来实现,在该项目中,我们需要用到几个第三方库,其中包括实现视频信息序列化和反序列化的Json库,快速实现http网络服务的httplib库,对视频信息进行管理的MySql库。
2024-11-07 15:15:55
1113
原创 超全面!Qt的常用基础控件
在Qtcreator中,访问UI设计界面,左侧的控件列表中就是我们Qt开发所使用到的常用控件,通过这些空间,我们可以设计出丰富美观的前端界面,对于单个控件而言,我们还可以添加槽函数,根据控件不同的信号,定义不同的槽函数,从而可以给控件添加不同的功能。
2024-09-25 16:25:54
1144
1
原创 C++之多态
多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。比如Student继承了Person。Person对象买票全价,Student对象买票半价。将购买火车票看成一个函数,学生和普通人看成两个不同的对象,调用同一个函数,会有两种结果,那么这个函数绝非普通函数,绝对有要满足的条件才能达到此种效果,需要满足什么条件呢?
2024-05-10 12:43:07
557
原创 C++之继承
在学校通常会有两种身份,老师和学生,给两个身份分别封装一个类,老师类的成员包括姓名、年龄、性别、工号,学生包括姓名、年龄、性别、学号,那么对比一下这两个类,我们会发现,两个类只有学号和工号的差别,剩下的都没有差别,那么我们就可以在单独定义一个person类,这个类中包含姓名、年龄、性别,从而在我们定义学生类和老师类的时候就可以直接继承person类的元素,再单独添加一个学号或工号成员变量即可。
2024-05-06 10:31:54
886
2
原创 详解希尔排序
直接插入排序是相比于前一个元素,那么当我们引入gaps以后,我们就要开始进行预排序,相比于之前一次对比前一个元素,引入gaps后,我们要一次对于相较于此元素的前gaps个元素,之前我们从该数组第二个元素考试对比,那么引入gaps后我们将从第gaps+1个元素开始对比,进行一轮对比交换之后,我们使gaps自减,再进行下一轮的对比,进行完下一轮之后在自减,直至gaps减小到1之后,就是直接插入排序,此时是经过gaps-1次预排序之后的直接插入排序,速度将会非常快。时间复杂度O(n^2)那么什么是希尔排序呢?
2024-01-17 18:37:26
388
1
原创 sizeof和strlen的区别
sizeof和strlen的区别就在于sizeof只是一个关键字,他的作用对象可以是数据类型、变量,他的作用就是计算数据类型和变量在内存中所占字节的大小,而strlen是一个库函数,他的参数是字符串,作用是计算该字符串的长度。
2023-09-19 18:00:15
67
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人