- 博客(35)
- 收藏
- 关注
原创 Linux | 守护进程
守护进程的主要目的是提供某种服务或功能,例如网络服务、系统监控等。它们通常以root用户身份运行,并且具有较高的权限来执行特定的任务。守护进程通常不与用户进行交互,它们在后台默默地运行,并在需要时响应特定的事件或请求。
2023-09-16 10:30:33
399
1
原创 创建型模式之原型模式
原型模式(Prototype Pattern)是一种创建型设计模式,它允许通过复制已有对象来创建新对象,而无需显式地使用构造函数。原型模式通过克隆(或复制)已有对象来创建新对象,从而避免了创建对象时的复杂初始化过程。在原型模式中,原型对象是被复制的对象,它定义了一个克隆方法(通常是一个虚函数),用于创建新对象。具体的原型类实现了克隆方法,根据自身的属性创建一个新的对象,并返回该对象的指针。客户端代码通过调用原型对象的克隆方法来创建新对象,而无需了解具体的创建过程。
2023-09-14 17:42:20
50
1
原创 创建型模式之建造者模式
建造者模式(Builder Pattern)是一种创建型设计模式,它可以将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。需要创建一个复杂对象,该对象由多个部分组成,且这些部分的创建过程相对独立。需要创建的对象有多个不同的表示,而不同的表示之间可以共享部分相同的构建步骤。建造者模式的核心思想是首先创建一个指挥者对象,然后创建一个具体建造者对象,并将其传递给指挥者的construct方法。指挥者根据具体建造者的实现来调用相应的构建方法,最终得到一个完整的产品对象。
2023-09-14 11:50:42
49
原创 创建型模式之工厂模式
工厂模式的优点包括将对象的创建与使用分离、封装了对象的创建逻辑、提供了灵活性和可扩展性等。它常用于复杂对象的创建,或者在创建对象时需要进行一些额外的逻辑处理的情况下。
2023-09-13 17:28:38
63
原创 创建型模式之单例模式
单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。
2023-09-13 16:20:57
63
原创 Linux | 进程间通信之socket
Socket(套接字)是一种用于网络通信的编程接口,它提供了一组函数,可以用于创建网络连接、发送和接收数据等操作。通过Socket,可以在不同的计算机之间建立网络连接,进行数据的传输和通信。在 UNIX/Linux 系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作。你也许听很多高手说过,UNIX/Linux 中的一切都是文件!那个家伙说的没错。
2023-09-12 13:16:42
1102
原创 Linux | 进程间通信之信号
Linux信号是一种进程间异步通信机制,用于在进程之间传递信息。信号可以用于通知进程发生了某个事件,或者要求进程执行某个特定的操作。Linux系统中有很多不同的信号,每个信号都有一个唯一的编号和一个特定的含义。在内核中,每个进程都有一个PCB,在PCB内部有一个用于表示该进程收到的信号描述符集。信号描述符集是一个位图,每个位代表一个信号,当对应的位为1时,表示进程收到了该信号,当对应的位为0时,表示进程没有收到该信号。在Linux操作系统中我们可以用 kill -l 命令来查看所有的信号集:其中一共有62个
2023-09-08 17:11:47
70
原创 Linux | 进程间通信之信号量
信号量其实是内核中的一个计数器和阻塞队列,通过信号量来对临界资源的访问进行控制,主要用于实现进程间的互斥与同步,而不是用于缓存进程间通信的数据。多个执行流为了访问临界资源会竞争式的申请信号量,因此信号量是会被多个执行流同时访问的,也就是说信号量本质也是临界资源。信号量本质就是用于保护临界资源的,我们不可能再用信号量去保护信号量,所以信号量的PV操作必须是原子操作。
2023-09-07 16:44:05
282
1
原创 Linux | 进程间通信之消息队列
消息队列是一种在分布式系统中用于异步通信的机制。它允许不同的应用程序、服务或组件之间通过发送和接收消息来实现解耦和异步通信。消息队列的基本原理是发送者将消息发送到队列中,而接收者从队列中获取消息并进行处理。消息队列中的消息通常按照先进先出(FIFO)的顺序进行处理,确保消息的顺序性。通常情况下多个进程可同时向一个消息队列发送消息,也可以同时从一个消息队列中接收消息。发送进程把消息发送到队列尾部,接受进程从消息队列头部读取消息,消息一旦被读出就从队列中删除。
2023-09-07 11:55:31
502
1
原创 Linux | 进程间通信之共享内存
共享内存的建立大致包括以下两个过程:在物理内存当中申请共享内存空间。将申请到的共享内存挂接到地址空间,即建立映射关系。共享内存的释放大致包括以下两个过程:将共享内存与地址空间去关联,即取消映射关系。释放共享内存空间,即将物理内存归还给系统。
2023-09-05 19:10:11
706
1
原创 Linux | 进程间通信之管道
管道(Pipe)是一种用于进程间通信的机制,它可以将一个进程的输出直接连接到另一个进程的输入,从而实现数据的传输和共享。1//who用于查看当前云服务器的登录用户(一个用户一行),wc -l 用于统计当前的行数其中,who命令和wc命令都是两个程序,当它们运行起来之后就变成的两个进程,who进程通过标准输出将数据打到 ” | “(管道)中,wc进程再通过标准输入从” | “(管道)中读取数据,至此便实现了数据在不同进程间的传输。
2023-09-05 13:18:19
210
1
原创 Linux | 文件系统 基础IO
首先,我们复习了C语言文件的IO操作,从而引出了文件描述符fd,通过fd再次理解重定向。之后我们又学习了文件的储存机制,理解了inode,从而明白了文件的创建,删除,恢复。再理解了inode之后,学习软硬链接是简单的。最后我们学习了动态库和静态库的基础知识,并创建了属于我们自己的动,静态库。以上就是今天要讲的内容,本文介绍了进程的相关概念。本文作者目前也是正在学习Linux相关的知识,如果文章中的内容有错误或者不严谨的部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。
2023-09-04 10:43:19
235
1
原创 Linux | 虚拟地址空间
虚拟内存是计算机操作系统中的一种技术,它允许程序使用比实际物理内存更大的内存空间。虚拟内存通过将部分数据从内存转移到硬盘上的交换文件中,来释放物理内存空间,并提供了更大的可用内存空间。虚拟内存的工作原理是将内存划分为固定大小的页面(通常为4KB),并将页面映射到物理内存或交换文件中。当程序需要访问一个页面时,操作系统会将该页面加载到物理内存中,如果物理内存已满,则会根据一定的页面置换算法将不常用的页面转移到交换文件中,以腾出空间给新的页面。
2023-08-31 09:46:25
237
原创 Linux | 进程(基础介绍)
我们双击打开一个可执行文件时,这个可执行文件就会被加载到内存当中去,因此,内存中被加载的可执行程序就是进程,我们可以在Windows下打开任务管理器可以看到相对于的进程。我们可以发现,进程占用了cpu与内存的空间,并且我们知道:cpu有强大的指令集,可以处理很多很多指令,但是cpu只能被动的接收别人的指令,然后处理别人的数据。
2023-08-31 09:45:17
156
原创 C语言程序设计 | 大小端
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。...
2022-08-09 19:33:35
4094
1
原创 将两块球形橡皮泥揉在一起,捏成一个正方体。请编程,完成下述功能:从键盘读入2个球形橡皮泥的直径,直径为浮点数;求正方体的边长,并保留两位小数输出;
化球为正方体作者:c++课程组单位:湖州师范学院输入格式:第一个球的直径 第二个球的直径(中间用一个空格隔开)输出格式:输出正方体的边长,并保留两位小数输出; 具体格式见样例。样例">输入样例:3.0 5.0输出样例:length of the side is:4.30.提示:圆球的体积V=4/3∗πr3代码:#include <stdio.h>#include <math.h>int main(){
2022-01-14 22:01:04
5346
1
原创 本题要求格式化输入数据三个数据,第一个是整数,第二个是实数,第三个是一个字符。然后格式化输出这三个数据。
题目来源:兴义民族师范学院 王元华输入格式:在一行输入三个数据,a是整数,b是实数,c是字符。格式为: a=整数,b=实数:c=字符。输出格式:输出为a=整数,b=实数,c=字符 。其中整数的宽度为10,左对齐,并且数字的前面带正负号;实数的宽度为20,其中小数3位;字符不做特别要求。样例">输入样例:a=3,b=5.5:c=A输出样例:a=+3 ,b= 5.500,c=A代码:#include <std
2022-01-12 23:50:16
4002
1
原创 判断成绩等级
题目要求:给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,81~89分为B,70~ 79分为C,60~69分为D,60分以下为E。C语言代码:#include <stdio.h>int main(){printf("输入成绩(0-100)");int grade;scanf("%d", &grade);grade /=10;switch ( grade ) {case 10:case 9:printf("A\n
2021-12-01 22:34:14
7202
原创 判断一个给定的三位数是否为水仙花数。三位水仙花数,即其个位、十位、百位数字的立方和等于该数本身。
题目来源:浙大城市学院颜晖输入格式:输入在一行中给出一个需要判断的整数N(100≤N≤999)。输出格式:如果N是水仙花数,则在一行中输出Yes,否则输出No。如果N不是三位数,则输出Invalid Value.。输入样例1:153结尾无空行输出样例1:Yes结尾无空行输入样例2:500结尾无空行输出样例2:No结尾无空行输入样例3:-2结尾无空行输出样例3:Invalid Value.结尾无空行代...
2021-11-22 16:34:50
4791
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人