- 博客(46)
- 收藏
- 关注
原创 Linux进程信号
在我们进行系统学习进程信号之前,要对信号这东西有点了解。所以,当各位怀揣着激动的心,颤抖的手打开百度百科搜索信号时,发现了如下的术语:信号是表示消息的物理量,是信息传递的载体。它可以通过多种形式存在,包括光信号、声信号和电信号等。信号的主要功能是运载消息,使信息能够在不同实体之间传递。通过以上的术语,我们明白了信号的特点:传递性以及通知的作用。这一点不难理解,我这里用以下简单的例子帮助各位理解什么是信号:在过路口时,红灯亮起,我们明白该停下了,绿灯亮起,我们就可以前进了。
2025-03-16 13:02:13
881
原创 【计算机组成原理 | 第一讲】计算机系统概述
计算机硬件发展是指计算机硬件技术的不断进步和发展,包括计算机的中央处理器(CPU)、内存、存储器、输入输出设备和通信设备等方面的发展。第一代计算机硬件发展于20世纪40年代末到50年代初,采用电子管作为主要的元件,体积较大,功耗高,速度较慢。第二代计算机硬件发展于20世纪50年代到60年代,采用晶体管替代了电子管,体积减小,功耗降低,速度提高。第三代计算机硬件发展于20世纪60年代到70年代,采用集成电路(IC)技术,将多个晶体管集成在一个芯片上,进一步减小了体积,提高了性能。
2024-12-02 21:17:53
998
原创 数据结构——排序【下】
计数排序是一个非基于比较的排序算法,元素从未排序状态变为已排序状态的过程,是由额外空间的辅助和元素本身的值决定的。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。(Merge sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。再最后排序时,一定要加的是 + ,如果加的为 tmp[i] 会导致出现问题,其原因为:tmp[i],在不断的变化,会导致排序出错。
2024-09-03 08:00:00
592
原创 深入理解并实现——归并排序【C语言】
这个本身的话,就是每次循环结束,在拷贝数组和临时数组的值进行交换,之后就是在临时数组改变之后的情况下,在进行第二次循环排序,之后。把拷贝后的数据在进行分组合并,每次循环里面都是对a合并后的数据在做处理,如果说全部执行完再拷贝,那a每次并没有啥变化,当然就不可能完成归并排序整个过程。关于这个问题,我们给出以下情景:在今年,你怀着忐忑的心情去参加秋招,顺利通过了笔试,在面试时,面试官的问题你都对答入流,直到最后一题:给你1G的空间,你如何使10G的数据有序,这时,你看过本博主写得TOP-K问题(
2024-08-30 20:07:16
1752
原创 深入理解并实现——快排【C语言版】
快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法。1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。
2024-08-28 19:43:12
1639
原创 如何处理在学校Linux连接不上服务器
当我们在周末在图书馆背着室友偷偷学习时,准备好好学习Linux,争取在日后大展拳脚时,却突然尴尬的发现,连接不上服务器,总是出现以下画面:那么,我们该如何解决问题呢?
2024-08-27 20:45:15
498
原创 Linux指令学习(一)
目录前言:一、目录类指令 1.1 whoami 1.2 pwd 1.3 ls 1.4 touch 1.5 mkdir 1.6 rmdir 1.7 rm 1.8 cd 二、目录 三、man指令 在今天的学习中,我们将会学习到ls,touch,mkdir,rmdir,cp,pwd,man等指令用法以及所属知识点讲解,在Linux所使用的环境为:Ubuntu 20.04 serve
2024-08-27 20:35:24
968
原创 初入Linux
比如,张三和李四合资买了一个服务器,由张三进行购买,那么,李四该如何使用呢?对于链接服务器,我们可发出以下指令:ssh root@你的服务器的公网ip, 输入后就可以进入看到要输入你的服务器密码了, 这个密码就是上面服务器配置的时候重置的密码, 如果没有重置密码就进不去。linux在开源后,世界上的顶级工程师和其他编程大牛们都自愿的建设linux, 至今, linux已经有几千万行的代码量。找到后,进行安装,一路next即可,第一次打开xshell会有填写姓名和邮箱, 然后填写自己的邮箱就行。
2024-08-23 05:00:00
1456
原创 【C++】String常见函数用法
string总共占28个字节,内部结构稍微复杂一点,先是有一个联合体,联合体用来定义string中字符串的存储空间: 当字符串长度小于16时,使用内部固定的字符数组来存放 当字符串长度大于等于16时,从堆上开辟空间。这种设计也是有一定道理的,大多数情况下字符串的长度都小于16,那string对象创建好之后,内部已经有了16个字符数组的固定空间,不需要通过堆创建,效率高。从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置 rfind从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置。
2024-08-17 21:49:58
901
原创 [C++] STL简介
STL(Standard Template Library,标准模板库)是一种C++的模板类库,提供了一系列通用的数据结构和算法。STL包括了一些容器(如vector、list、map等)、算法(如排序、搜索等)和迭代器等,可以帮助开发人员快速地实现各种常用的数据结构和算法操作。我们即将开始STL部分的学习,相信大家学系完后会有爽到飞起这样的感觉!完!
2024-08-16 22:06:29
1036
原创 模板——从初级到进阶
优快云接下来,我们一起来学习更加深刻的内容吧。一个程序(项目)由若干个源文件共同实现,而每个源文件单独编译生成目标文件,最后将所有目标文件链 接起来形成单一的可执行文件的过程称为分离编译模式。【优点】1. 模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生2. 增强了代码的灵活性【缺陷】1. 模板会导致代码膨胀问题,也会导致编译时间变长2. 出现模板编译错误时,错误信息非常凌乱,不易定位错误。
2024-08-14 23:58:29
1304
原创 【C++】——初识模板
在内容开始之前,大家且听一个小故事:屏幕前的各位都是勤奋好学之人,今日你仍像往常一样继续学习,可突然困了。当你再次醒来发现自己穿越了,成为了书店的店小二。书店老板的女儿肤白貌美的,符合你的审美,你不由得想得到其芳心。你突然注意到:书店所有的书都是手写的,效率低下。你身为现代人不由得想到了法子:我能不能把文章印到一个板子上,客人要什么,就印什么,这样不仅提高了效率,还能获得最大收益。你把想法告诉了老板,老板听后决定采取你的建议,结果大赚特赚。在此情景下把女儿许配给你,就在洞房花烛夜之时,你醒了过来。
2024-08-14 14:48:52
1030
原创 类和对象【下】
默认成员函数从名字就告诉我们何为默认成员函数,即:用户没有实现,编译器默认自动实现的函数。这时你不禁一喜,还有这好事,编译器给我打工,那么,我们今天都来了解一下都有哪些牛马函数,但是提醒一下,有的函数在某些情况下需要手动实现!
2024-07-31 21:36:32
636
原创 深入理解类和对象【上】
这就要引出访问限定符这个东西来保护我们的代码了,我们可以只提供能改变的变量,不能变的“藏起来”不就好了的。可这样理解:我们这时就好比是设计师,我们设计出的类就好比是图纸,明确各个地方的功能,但是看不见实物,对吧?函数指针是不需要存储的,函数指针是⼀个地址,调⽤函数被编译成汇编指 令[call 地址], 其实编译器在编译链接时,就要找到函数的地址,不是在运⾏时找,只有动态多态是在 运⾏时找,就需要存储函数地址,当然不是,它虽然是空,但我们没用它,就好比:你看见一只野狗,你没去挑逗它,它此时不具备攻击性。
2024-07-26 21:58:15
1073
原创 初始C++
在C语言我们学习函数的时候,我们学习过生命周期这个概念。那么,什么是生命周期呢?生命周期通常指的是一个对象或变量从创建到销毁所经历的时间段。那么,命名空间是什么?咱们可以这样理解:在这个空间的生命周期内,对这个空间内的全部标识符起一个名字,可对其进行引用,可类似与C语言中的结构体。#include<stdlib.h>//此处不包此头文件代码可正常运行,那该如何解决此处情况呢?int main()//此处编译不通过原因为:在不包头文件前为变量,包含后为函数。return 0;
2024-07-08 21:32:26
903
1
原创 数据结构——排序【上】
以上便是本文的内容,希尔排序看着抽象,实际也不好理解,大家下去要多画图经行理解。其余的排序会在后续文章发出,期待下篇文章再见。
2024-05-30 21:04:55
791
3
原创 二叉树——经典练习题
二叉树的学习,我们目前就告一段落了,后续的进阶内容会在c++部分讲解。今天讲解的题目中最后三道难度较大,还望各位读者在学习完后能够多多练习,这样才能够掌握。如在学习中,有啥问题可在评论区交流,也可私信。期待与读者再会。完!
2024-05-27 06:00:00
2648
2
原创 二叉树详解
以上,便是我所有说的二叉树的大部分内容了,剩下的部分会在明天我为大家准备的练习题中进行讲解。如果今天讲出来,不太利于大家的理解。希望大家能把今天讲的知识拿去练习,好好理解巩固一下,我们明天再会!完!
2024-05-26 08:00:00
1326
3
原创 二叉树——堆详解
之前我们已经学习过了二叉树的基本知识,接下来我们就要上些“硬菜”了,话不多说,开始我们今天的学习吧!今天的学习到这里就结束了,我们明天将开始二叉树的学习。到时候再会!完!
2024-05-25 19:03:01
1234
原创 二叉树——基础知识详解
对于二叉树基础的理论知识,我们就学习到这里,虽然这些知识相对后面来说简单一点,但别忘记复习。有了这些预备知识才能够更好的理解后面知识。另外对于递归理解还不够的读者一定要去尽可能的去理解,对于二叉树的学习非常重要。今天的学习就结束了,有问题可在评论区交流,也可私信。我们下篇见!完!
2024-05-22 18:47:12
1377
原创 栈和队列经典练习题
前面已经为大家讲解了栈和队列的概念以及如何实现,接下来本博主为大家整理了几道题目,帮助大家更好的理解栈和队列,请大家看完本文后不要忘记练习哦。以上便是全部内容,记得练习。如有问题可私信也可评论区见!完!
2024-05-13 07:30:00
2744
2
原创 数据结构之——队列详解
我们前面已经学习了栈,今天我们来学习队列,队列和栈一样,相对来说比较简单,随后,会为大家准备OJ练习题,敬请期待!只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出进行插入操作的一端称为队尾进行删除操作的一 端称为队头这里简单给大家解释一下:大家肯定都排过队(别说没有,我不信),大家在排好队先前前进时,是不是先站到队伍里的先走。队列的原理何其类似。因为,你可以猜一猜它为什么叫队列。可用下面图片帮助大家理解。明白了,基础知识,那就一起来实现一下队列吧。
2024-05-12 06:30:00
1562
原创 数据结构深入理解--栈
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除 操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out) 的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。栈可以这样理解:相信大家都对枪械有一定粗略的了解,咱们就用压子弹来帮助大家进行理解。压栈,大家可以想象为压子弹,子弹是一发一发往下压,那压栈就是在容量之内一个数据一个数据往下压。
2024-05-11 18:07:36
1597
原创 时间复杂度和空间复杂度
从今天开始,我们将正式进入数据结构这个专题,在数据结构中主要以:数组,指针,结构体为主。这三大模板未熟练的可以看看博主之前的文章,有一定基础的可以跟着继续学习。在数据结构中,有着众多的算法,比如查找算法,排序算法等。在查找算法中有顺序查找、折半查找、分块查找等,排序算法中有冒泡排序、快速排序、希尔排序等,而面对这么多的算法,是怎样去衡量算法的执行效率呢?而这也就是此篇文章的重点:时间复杂度和空间复杂度。话不多说,开始我们今天的学习吧。时间复杂度是一种衡量算法执行时间随输入规模增长而增长的速度的度量。
2024-05-02 23:57:02
1115
2
原创 链表经典练习题
本篇文章到这里就结束了,如果有不理解的题目,可私信或在评论区留下问题,记得一定要练习,这是非常重要的。再强调:大部分题目解法只为了抛砖引玉。希望对大家有所启发。完!
2024-05-01 13:46:38
1122
2
原创 单链表与双链表实现
/使用目的:方便更改数据类型}SLTNode;注意:在定义节点(写成此结点也无所谓)时不要写成:SLTNode* next;因为编译器把结构体读完时才能达成重写条件。2.2为什么使用一级指针而不用二级指针?1.传入数据之前,链表要进行初始化,为了保护哨兵位,使用一级指针即可,若使用二级指针不会改变哨兵位也可以使用,不过还是推荐使用一级指针。2. 保持接口一致性,减少记忆成本。此链表接口过多,如若一会一级指针,一会二级指针会造成记忆成本。
2024-04-13 20:28:07
1230
原创 顺序表应用——通讯录实现
通讯录实现的基础是基于顺序表的实现,对于顺序表如有疑惑之处可翻看之前文章。本篇文章是基础顺序表的扩展,如若觉得不大理解,可翻阅顺序表,顺序表明白了此篇文章也会明白的。完!
2024-04-07 17:00:54
1109
原创 数据结构——顺序表(C语言)
这里说明一下:数据结构这方面主要是:数组、指针、结构体这方面内容,因此数据结构可以让我们更好的理解以上内容。我们实现顺序表一共会用两个源文件和一个头文件,具体为什么,扫雷里说过可自行查阅。//大家可想一想把int 命名成seqlist的好处seqlist* a;int size;//有效数据个数//总容量}sl;//结构体命名。
2024-04-05 23:32:07
1418
原创 玩转C语言——文件操作、预处理、编译、链接
define reg register //为 register这个关键字,创建⼀个简短的名字;) //⽤更形象的符号来替换⼀种实现case //在写case语句的时候⾃动把 break写上。// 如果定义的 stuff过⻓,可以分成⼏⾏写,除了最后⼀⾏外,每⾏的后⾯都加⼀个反斜杠(续⾏符)。到这里我们对于#define的讲解就结束了。想必此时有人觉得这句话有点问题,怎么讲?明明目录还有,你却告诉我结束了,这莫过于你在看视频的时候,你才看一半,告诉你结束了,这不纯纯恶心人吗?
2024-04-03 16:31:39
1683
1
原创 动态内存管理
但是,在函数中p为局部变量,运行结束时会销毁,所以,它的地址传不回来,就会开辟失败。有时会我们发现过去申请的空间太⼩了,有时候我们⼜会觉得申请的空间过⼤了,那为了合理的时 候内存,我们⼀定会对内存的⼤⼩做灵活的调整。当是情况2 的时候,原有空间之后没有⾜够多的空间时,扩展的⽅法是:在堆空间上另找⼀个合适⼤⼩ 的连续空间来使⽤。内存释放函数为free函数,如果参数 ptr 指向的空间不是动态开辟的,那free函数的⾏为是未定义的。数组在申明的时候,必须指定数组的⻓度,数组空间⼀旦确定了⼤⼩不能调整。
2024-03-29 17:06:23
1122
原创 深入理解并模拟实现函数
我们前面已经学习了函数、指针等一系列知识,接下来,咱们一起来模拟实现strlen、qsort、strcpy、strcat、strcmp、strstr、memmove、memcpy、atoi,以及strncat、strncmp、strtok、strerror、memset、memcmp的使用。
2024-03-27 16:14:07
1350
原创 自定义类型——结构体、联合体、枚举
1. 结构体的第⼀个成员对⻬到和结构体变量起始位置偏移量为0的地址处2. 其他成员变量要对⻬到某个数字(对⻬数)的整数倍的地址处。对⻬数 = 编译器默认的⼀个对⻬数 与 该成员变量⼤⼩的较⼩值。- VS 中默认的值为 8- Linux中 gcc 没有默认对⻬数,对⻬数就是成员⾃⾝的⼤⼩3. 结构体总⼤⼩为最⼤对⻬数(结构体中每个成员变量都有⼀个对⻬数,所有对⻬数中最⼤的)的 整数倍。
2024-03-24 12:05:45
775
原创 玩转C语言——C语言中内存存储
我们知道:整数的2进制表⽰⽅法有三种,即 原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分,符号位都是⽤0表⽰“正”,⽤1表⽰“负”,⽽数值位最 ⾼位的⼀位是被当做符号位,剩余的都是数值位。正整数的原、反、补码都相同。负整数的三种表⽰⽅法各不相同。原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。补码:反码+1就得到补码。对于整形来说:数据存放内存中其实存放的是补码。
2024-03-21 06:00:00
673
原创 C语言符号——操作符详解
即使有了操作符的优先级和结合性,我们写出的表达式依然有可能不能通过操作符的属性确定唯⼀的 计算路径,那这个表达式就是存在潜在⻛险的,建议不要写出特别负责的表达式。以上就是全部内容,如果对你有帮助的话希望得到你的三连支持!
2024-03-17 06:30:00
1579
1
原创 加深理解函数递归
程序调用自身的编程技巧称为递归做为一种算法在程序设计语言中广泛应用。一个过程或函数在其定义或说明中有直接或间接的一种方法,。
2024-03-16 16:45:16
949
1
原创 玩转C语言——深入理解函数
自定义函数是由程序员自主设计的函数,和库函数一样有函数名、返回类型、形式参数等,今天我们的目标就是学习如何写自定义函数。函数的定义就是指函数具体的实现过程,交代函数具体功能的实现5.2 函数声明函数的调⽤⼀定要满足,先声明后使⽤是,而函数的定义也是⼀种特殊的声明,所以如果函数定义放在调⽤之前也是可以的。我们今天的学习到这里就结束了,有什么问题可在评论区留言,希望大家可以学到知识。完!
2024-03-14 07:30:00
899
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人