自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 进程优先级和环境变量

命令行是由bash提供的,我们创建的进程也是由bash来创建的。在命令行输入执行程序命令,bash就会创建一个argv来存放字符串,上一篇内容里提到过父进程的数据是可以被子进程访问到的,所以进程中main的参数是由父进程提供的。它的功能是让用户在执行一些操作(进程)或拿到操作系统的某些数据时,不用看到底层的实现,快速完成这些操作(如我们使用的指令,本质都是在执行进程)。可以看出它的组织方式于main函数的argv是一样的,同样的main函数也可以获取它,因为子进程可以访问到父进程的数据。

2024-07-15 13:51:31 596

原创 Linux 进程概念和状态

我们在使用计算机本质上都是对数据进行处理,将数据输入到计算机,计算机在输出到一些设备上让我们看到。计算机在处理这些数据上都基本遵循着冯诺依曼体系。输入设备:键盘、鼠标、磁盘、网卡、话筒...存储器:内存中央处理器:cpu输出设备:显示器、声卡、磁盘、网卡...这个过程就是对数据的流动加工,先将数据输入到输入设备中,输入设备再拷贝到存储器上,存储器将数据给运算器来进行基本运算处理数据,再把加工后的数据返给存储器,由存储器给输出设备。整个过程都是由控制器来控制的。

2024-04-25 08:11:47 1149 1

原创 linux开发环境的使用(vim、gcc和g++、make和makefile)

在window中写代码一般会使用像vs这样的集成开发环境软件,vs里写完代码就会自动编译链接然后执行。linux中一般是将这几个步骤分开的,vim就是用来编辑写代码的。vim是一款多模式的编辑器,常用的模式有三种:命令模式、插入模式、底行模式。插入模式:用来在输入信息命令模式:对文本内容进行编辑,就像我们在用window写笔记,会使用鼠标对文本内容进行复制、删除、选中等操作一样。

2024-04-09 10:44:25 903

原创 linux权限

权限就是通过一定条件,来限制一部分人,给一部分人权力来访问某些资源。权限 = 角色 + 事物的属性例如腾讯视频的vip,小区的门禁都会限制一部分的人。我们能进小区本质不是我们是谁,而是我们有个身份是小区的住户,有这层“角色”让我们有权利进小区。我们有腾讯的vip,但不能在腾讯视频里刷题,因为腾讯视频没有这种功能,它只能看视频,这是事物的属性。

2024-03-26 19:53:36 932 1

原创 linux的基本指令(二)

在Linux中的指令本质是一个个的程序,它们也是作为文件放在系统下的,which就是查看这些指令是否存在,存在则显示它的所在路径,。

2024-03-21 15:54:44 653

原创 OJ——栈和队列

使用两个队列实现Queue p1;Queue p2;} MyStack;使用两个栈实现Stack q1;Stack q2;} MyQueue;s:循环队列是固定的大小,使用连续的空间来储存数据最好。front/rear:在使用两个变量来指向队头下标和队尾的下一块数据的下标。k:队列开辟了几个元素。int front;int rear;int k;

2024-02-06 23:14:07 751

原创 linux的基本指令(一)

在操作系统中,同一目录下不能存在相同的名字,不同目录可以,而这些目录都具有唯一的路径。2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它 将所给的源文件或目录重命名为给定的目标文件名。一个空文件是指文件的内容为空,但文件的属性是一定存在的在磁盘中占有空间。可以看到直接使用 ls,只会显示a b两个文件,无法显示前缀有.的文件,使用 -a 就可以将这些隐藏文件显示出来。可以将一个或多个文件和目录复制到指定的目录中,指定的目标目录必须是存在的,否则会报错。

2023-11-30 09:18:10 825

原创 栈和队列的实现

栈是一种特殊的线性表,其结构的特性和内存中的栈是一样的,。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。出栈:栈的删除操作叫做出栈。出数据也在栈顶。5先放入,再依次当如1和8,出栈时只能从8开始出栈,后进入的先出。

2023-11-29 09:31:10 940

原创 OJ——单链表练习题(二)

思路:有两种遍历方法一、先遍历两个链表算出长度,再将长度小的链表向后走两链表长度差个节点,如图这时再开始同时遍历两个链表,如果中途cur1==cur2,那么两个链表就有叫点,返回cur1。cur1或cur2为空那么链表没有相交点。二、先判断,两个链表一个为空直接返回NULL(没有节点),然后同时遍历两个链表,遍历到下一个节点为NULL时,直接开始遍历另一个链表,两个链表都是。情况一:A和B节点个数不同。

2023-11-28 22:42:15 734

原创 OJ——单链表练习题(一)

思路:我们可以直接暴力求解:遍历一遍链表,将不是val的节点存放到新的链表当中,返回新的链表。在LeetCode做这些OJ题malloc一般不会创建失败,可以不进行判断。

2023-11-23 14:37:36 856

原创 链表的定义和单向链表的实现

SListNode;SLDateType:与顺序表相同我们存储值data的类型typedef一下,这样在使用链表存储其他类型时,只需要改变被typedef修改的类型就行。next:存储下一个结构体的地址。

2023-11-15 14:25:11 28 1

原创 顺序表的实现

顺序表是线性表的一种,我们需要先大概了解一下线性表。

2023-10-31 16:45:52 28 1

原创 空间复杂度

空间复杂度也是一个数学表达式,是对一个算法在运行过程中临时占用存储空间大小的量度。空间复杂度不是程序占用了多少bytes的空间,因为这个也没太大意义,所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟实践复杂度类似,也使用大O渐进表示法。这里的变量创建的空间大小都是确定,确定大小的值都统为1。空间复杂度:O(1)空间复杂度不需要看懂代码的思路,只需要观察开辟空间是否变量,然后进行计算就可以。

2023-10-31 08:45:59 31 1

原创 C语言文件操作(2)

stream:文件指针;offset:文件光标(文件指针操作的位置)的偏移量;whence:文件光标的位置。whence有三种方式指定光标的位置:SEEK_SET:文件的开头SEEK_CUR:文件当前的位置SEEK_END:文件的末尾代码:只能在指定光标位置后进行修改,不能直接添加。

2023-10-31 08:07:41 36 1

原创 算法的时间复杂度

一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。在计算机发展的早期,计算机的存储容量很小。这个函数在不考虑递归时时间复杂度是O(1),递归是将这个函数重新调用,调用几次就有几个O(1),将所有O(1)加起来就是它递归后的时间复杂度。在实际中一般情况关注的是算法的最坏运行情况,所以在有不确定值时,都会取那个值的相关的最高项。基本执行次数:i循环每次执行end次,也就是第一层循环内每次都会执行end次循环,而每次循环end都--,执行次数就是一个等差数列的和。

2023-10-30 11:14:01 29 1

原创 C语言文件操作(1)

在执行程序时。而我们要想保存这些数据使它们可以持久化使用,可以存放在等。先使用简单的使用C语言将数据存放在文件内,并可以读取文件。在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。

2023-10-26 08:46:03 25

原创 动态内存管理

头文件:这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针;size是这块空间的大小(字节为单位);如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。如果开辟成功,则返回一个指向开辟好空间的指针。如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。int main()//arr操作//...

2023-10-24 11:19:57 19

原创 自定义类型

struct Stu//名字int age;//年龄//性别//学号//分号不能丢 全局变量//全局变量int main()//局部变量p1是不需要在写类型的,因为它定义在类型定义的后面。在p1后也可以多次定义。这种不给结构体名字的类型只可以在声明后的;前使用,出了这里就没有这个类型了。

2023-09-30 16:18:50 33 1

原创 指针笔试题

a+1跳到了数组后面第一块地址,将地址给了int* ptr。*(a+1):a+1 == 首元素地址+1 == 2的地址,*就是2。*(ptr-1):ptr-1是向后跳过4个字节,它是int类型,ptr-1 == 5的地址,*就是5。

2023-09-21 18:08:01 31

原创 指针和数组笔试题解析

一、一维数组​ int a[] = { 1,2,3,4 }; printf("%d\n", sizeof(a)); printf("%d\n", sizeof(a + 0)); printf("%d\n", sizeof(*a)); printf("%d\n", sizeof(a + 1)); printf("%d\n", sizeof(a[1])); printf("%d\n", sizeof(&a)); printf("%d\n", sizeof(*&a)); p

2023-09-21 16:18:42 21

原创 【c语言】指针进阶(2)

我们已经知道元素的字节大小了(size),那每次访问跳过size个字节就可以,而char*每次加几也就是跳过几个字节,这样一来我们访问第几个元素就加几个size。在交换时也是不知道数组的类型,但每个类型它都是以字节为单位的,可以再次使用char*,每次只交换1个字节交换size次,也就刚好是这个数组的元素大小。在实现qsort时,那个程序员并不知道后面人使用时会排序什么类型数组,而每个类型的比较又是不同的,所以需要我们自己实现compar(比较函数)。y-x,y大于x就交换它们两个,这时它是降序函数。

2023-09-13 09:43:08 42 1

原创 【c语言】指针进阶(1)

这里有人会想能不能这样写void(*)(int) signal(int,void(*)(int),这样c规则是不允许的。

2023-09-06 22:00:19 27 1

原创 【c语言】 扫雷游戏

不是雷则排查它周围雷的个数,如果周围没有雷则会展开去排查周围雷的周围雷的个数,排查的位置周围有雷就不会在展开。需要创建4个常宏量,两个用来初始化,两个用来打印和排查,初始化的数组要比打印的棋盘大一圈,这个在后面会说用法。这里排查的是它周围8个坐标,如果排查的坐标是在边缘的位置(例:1.1 1.2),创建数组没有扩大就会越界,这也是创建数组范围大的原因。展开排查的坐标可以确定不是雷,先排查它周围雷个数,将这个个数赋值到对应的展示数组内。排查的坐标周围没有雷,就展开排查周围的坐标。坐标得在数组范围内。

2023-09-05 15:26:52 31 1

原创 数据在内存的存储

那么,S=1,M=1.01,E=2。现负数的,所以IEEE 754规定,存入内存时E的真实值必须再加上一个中间数,对于8位的E,这个中间数。现负数的,所以IEEE 754规定,存入内存时E的真实值必须再加上一个中间数,对于8位的E,这个中间数。比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即。比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即。对于64位的浮点数,最高的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M。

2023-08-06 14:22:07 51

原创 【c语言】 三子棋游戏

第二个for控制(---|),它被if控制最后一行不打印,(---|)的 | 最后一列也不打印。输入坐标后,先判断坐标是否有效,其他人下棋输入坐标时,不知道数组的下标是上什么,通常会认为坐标从1开始,横纵范围都在1至3之间,出了范围则提醒后重新输入。坐标正确后进入if,这时判断坐标对应的数组内容是否为‘ ’,是,那就放入 * 退出循环,不是,就提醒后重新输入。玩家赢返回 *,电脑赢返回 #,平局返回 Q,继续返回 C,返回的结果不为 C都应跳出循环,判断结果结束游戏。有三中情况,行三连,列三连,斜三连。

2023-07-28 11:39:13 42

原创 c语言小游戏——猜数字 思路讲解

c语言中给了一个函数rand,它的返回值就是一个随机数,但rand函数也是通过计算来返回的值,所以使用rand前,要先调用srand来给rand设置起点;我们需要一个随机值,但又要有一个随机值设置起点来得到一个随机值,看起来很绕,其实我们给起点一个随时在变化的值就可以;使用switch来显示玩家输入的结果,玩家输入1开始游戏,输入0退出游戏,输入其他,则重新选择。3.接下就开始猜数字,使用if开控制,如果猜大了就提醒猜大了,如果猜小了就提醒猜小了,猜对了那就恭喜你猜对了,并跳出循环。

2023-07-19 11:31:23 92

原创 scanf吃空白行为

在读取数据符后面加空格、制表符和回车(简称空白符)时;输入数据后回车不会执行下一条代码,此时的回车会与scanf内的空白符相匹配。空白符在scanf内默认为多组输入的分割标志,会等待你输入下一个非空白符,中间无论输入多少个空白符都是无效的(这里输入任意长的空白符都会与scanf内的空白符相匹配),这就是吃空白行为。

2023-06-19 16:32:39 428 1

原创 第一篇博客——启航

我是来自晋城职业技术学院的一名学生,我叫郭世昌,我以后每周会将自己所学知识与大家分享一起研究技术提升自己。

2023-06-12 20:45:24 75 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除