- 博客(46)
- 收藏
- 关注
原创 【Linux】线程控制
讲解了控制线程的几个接口pthread_create()、pthread_exit()、pthread_join()、pthread_cancel()、phtread_sel()
2024-04-22 21:08:20
998
原创 【Linux】进程间通信——system V版本 信号量
举例:购买电影票,一个放映厅有100个座位,最多就只能卖100张票,每卖一张,票就少一张。所有执行流可以同时去申请信号量(只有一个会成功,就像买火车票,不会有相同的座位),但是所有。举例:进程A和进程B在通信,A写了一部分,B拿走了,就导致了收和发的数据不一致的问题。如上,每一个执行流要访问临界资源(电影院)的时候,需要申请信号量(买电影票)。:是指共享的,任何时刻只允许一个执行流访问(就是执行访问代码)的资源。——> 信号量是共享的!也就是两态的,要么不做,要么做完,没有正在做的概念。
2024-04-12 18:50:56
179
原创 【Linux】进程间通信——匿名管道|命名管道
进程间通信,顾名思义就是两个进程互相通信。可是进程是独立的,该如何通信呢?类比你和你的朋友在网上聊天,你们两个人也是独立的,是如何通信的呢?因为你能看到你朋友给你发的消息,你朋友也能看到这份消息。这个消息就是一个公共的资源。所以进程间如果要进行通信,就需要两个进程看到同一份资源。那么,通信的地点在哪里呢?很明显,因为进程之间是独立的,所以通信的地点肯定不能在进程中,只能在操作系统中。结论:进程间通信的地点是操作系统。进程间通信的方式有很多,一般有三种:1.管道:通过文件系统通信。匿名管道。
2024-04-07 14:03:40
638
原创 【C++】const限定符|const引用
1.理清const引用的内容,临时变量具有常性,权限的放大缩小和平移。2.讨论const指针的两种情况,顶层const和底层const3.了解const修饰this指针
2024-03-30 16:26:50
640
原创 【Linux】gcc与make、makefile
讲解了gcc命令:预处理、编译、汇编、链接。链接中详细阐述了动态链接和静态链接。将make和makefile详细说明。
2024-03-09 16:51:17
903
原创 【Linux】访问文件的本质|文件描述符|文件重定向
讲述了Linux下访问文件的本质,说明了什么是文件描述符的,阐述三种文件重定向,并介绍了dup2()函数的使用方法
2024-03-05 16:24:00
837
原创 【Linux】进程(PCB,fork函数,运行状态)
本篇文章讲解了进程PCB,讲解了如何查看进程,组织进程;对fork函数进行非常深入的解释,描述了进程的基本状态。
2023-12-28 20:47:40
915
原创 c++继承(万字详解)画图+原理解说
继承的定义继承关系和访问限定符从这里可以看出,共有3*3 = 9种组合方式。那么,这些方式有什么区别呢?类成员/继承方式public 继承protected继承private继承基类的public成员派生类的public成员派生类的protected成员派生类的private成员基类的protected成员派生类的protected成员派生类的protected成员派生类的private成员基类的private成员派生类中不可见派生类中不可
2023-11-24 00:46:00
833
1
原创 前缀和与差分
本来这里只需要一个循环就可以解决,但是如果使用前缀和,就可以将O(n)的时间复杂度降为O(1)现在这里有一个数组,是a[1],a[2]…a[i]假设这个数组的和为s[i].因为也就等于。
2023-11-19 00:08:28
27
原创 list模拟实现
前面介绍list是带头双向循环链表,所以list就需要_prev,_next, _val三个成员.T _val;//构造函数//val = T()中T()是缺省参数,本来是不允许int a = int()这样的定义方式//可以理解为了构造函数开了一次后门,_val(val){}类比vector的迭代器,迭代器++就跳转到下一个位置.但是这对于vector有效,因为vector的地址空间是连续的,对于list就没有效果,因为list的地址空间是不连续的.但是为了使用迭代器该怎么办?
2023-11-18 00:27:18
24
1
原创 string类的模拟实现
如果是i1 < _size这个条件违背了,就代表,i1走到了字符串的末尾,就对应着举例的三种情况的前两种,则返回false。如果不能比较出结果,例如刚才举例的三种结果,就接着比较字符串长度就行。如果 n < _size ,就需要扩容,并且把后面的补上c ,如果c没有赋值,就补空字符’\0’,如果给了,就赋给的值。先比较短的字符串,如果短的字符串就能比较出结果,例如’‘aaa’'和“bb‘比较,就直接返回比较结果。比较字符串的大小,除了最普遍的情况:某一个字符串不相等,最后比较大小出结果。
2023-10-16 21:24:01
26
1
原创 模板的介绍
问题:目前需要实现一个能够对任何数据类型都能使用的交换函数,该怎么做?上述代码只能实现int类型的交换,如果想要实现double类型的交换,又需要再写一份代码。这是不是太麻烦了。泛型编程:编写与类型无关的代码,是代码复用的一种手段。模板是泛型编程的基础。通俗的理解泛型编程就像一个模子。比如雕版印刷,有了这样的模具,就可以印刷出很多的文章。泛型编程也是这样的道理。那么为了解决问题,该怎么做呢?这就又需要引入一个新的概念,那就是。
2023-10-10 22:10:05
24
1
原创 静态成员详解
普通成员变量:属于每一个类对象,存储在对象里面。静态成员变量:属于类,属于类的每个对象共享,存储在静态区。因为:初始化列表是类的成员定义的地方,但是静态成员不是类的成员,是每个对象所共享的,所以静态成员不能在初始化列表中定义,也不能在类中定义。那么,静态成员变量要在哪里定义呢?静态成员变量在类外面定义。例如:因为:缺省值是给初始化列表的,静态成员函数没有初始化列表静态成员函数如何定义?在类中定义或者在类中声明类外定义在类中声明,类外定义静态成员函数里面能不能访问普通成员函数?不能,因为没
2023-09-22 15:12:36
65
1
原创 初始化列表
必须使用初始化列表。创建对象:对象整体定义初始化列表:对象成员定义在创建对象的时候,对象整体定义了,但是对象成员还没有定义,那么,对象的成员在哪里定义呢?private中是对对象成员的声明,并不是定义。所以对对象成员定义,就是在初始化列表中。为什么是引用成员变量、const成员变量、自定义类型成员呢?因为:1.引用成员变量和cosnt成员变量必须在定义的时候初始化,必须在定义的时候赋值,所以放在初始化列表中进行定义并且赋值。
2023-09-21 15:28:00
23
原创 实现日期类
需要完成的函数如上所示。但是,对于默认成员函数,内置类型编译器会自动生成。在日期类中,_year,_month,_day都是int类型,所以其实不需要写构造函数,拷贝构造函数,赋值运算符重载和析构函数。但是为了学习的必要,这里还是要显示一下。
2023-09-20 20:01:02
28
1
原创 解决Linux中创建的git仓库和本地克隆仓库之间分支或提交历史不一致的问题
我猜想问题可能是 : 我之前在本地仓库也提交过东西,所以导致了本地仓库和git仓库不一致的问题。我在输入了git add . 和git commit -m 命令之后,并没有出现意料之中的结果,而是报了一堆hint。这里需要注意的是,后面的master是你所在的分支的名字,如果你所在的分支不是master,而是其他的名字,填其他的名字即可。如果在输入上面的指令之后跳出already up-to-date,表示你所有的东西都提上去了。我当时疑惑的是我明明还有文件没有提交上去,但是显示了这个。
2023-09-13 21:55:18
124
原创 Linux的权限
现在,我们要学习,每个字母代表什么意思。我们首先来了解每个字母的意思:每个位置上只能表示两种意思: 是/否。举个例子,比如说在第一组中,代表是own的权限,即这个位置上的三个字母决定了文件的拥有者拥有什么样的权限。如果你想要own可读可写可修改,那这三个字母就是rwx。可是如果你想own可读可写不可修改,那就是rw-。
2023-08-23 16:00:52
40
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人