自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 手撕AVL树

AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是logn。它是基于二叉搜索树的以及一系列旋转来实现的。{}// 该节点的左孩子// 该节点的右孩子// 该节点的双亲T _data;int _bf;// 该节点的平衡因子。

2023-09-23 18:18:26 124

原创 Linux进程优先级与环境变量

我们把cpu资源分配的先后顺序称为进程的优先权。优先权高的进程有优先执行权利。优先权低的进程执行顺序就偏后。我们配置进程优先权对多任务环境的linux很有用,可以改善系统性能。还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。

2023-04-04 21:07:45 268 3

原创 Linux进程状态

进程状态就是进程目前所处的状态。为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。一个进程可以有几个状态(在Linux内核里,进程有时候也叫做任务)。一般我们把进程分为六种状态

2023-03-29 21:54:57 241

原创 Linux进程概念

冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。

2023-03-28 18:09:30 172 3

原创 C/C++内存分布及管理

在c语言中,我们已经知道了可以通过malloc和calloc去开辟动态内存空间。用realloc去对动态内存空间进行扩容,然后free用于动态内存空间的销毁。C语言内存管理方式在C++中可以继续使用,但有些地方就无能为力,而且使用起来比较麻烦,因此C++又提出了自己的内存管理方式,即通过new和delete操作符进行动态内存管理。

2023-03-15 21:33:17 1294 15

原创 类和对象(下)

虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。

2023-03-09 22:43:49 63 6

原创 类和对象(中)

类的成员函数(简称类函数)是函数的一种,可以把它看为一个出现在类体中的函数。与一般的函数不同,它是独属于这个类的。当一个类中没有任何成员的时候,我们就称它为空类。但它却并不是什么都没,因为编译器在类创建的时候会自动生成6个函数,我们称这函数为默认成员函数。按照这6个默认函数的功能,我们有可以把他们分为三种。

2023-02-19 22:01:16 93 3

原创 类和对象(上)

C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。而类和对象就是面向对象编程技术中的最基本的概念。

2023-02-10 22:20:50 102 7

原创 Linux开发工具

大家平时使用手机的时候因该也没少下载过APP吧,如果我们想要使用具有某个功能的软件,我们就需要重应用商店里去下载对应的软件。我们在Linux上下载软件也类似,需要通过一个类似于应用商店的东西去进行下载。我们平时比较常见的就是`yum`了。它主要应用在Fedora,RedHat,Centos等Linux的发行版,在我前面几期博客里面也有用到这个指令。

2023-01-26 16:33:49 137 7

原创 Linux基本权限详解

所谓Linux的权限顾名思义就是别你是否允许你去做一件事情。举个例子,你在哔哩哔哩上看动漫,如果你不是大会员,那么有许多的番剧你都没法看。所以,所以权限是约束你的,它决定一件事是否允许被特定的人做。换而言之,权限=人+事物属性。,人在Linux里面就是用户,而事物属性就相当于Linux下的文件。在linux中,权限是无处不在,访问文件需要权限,进入目录需要权限,更改文件也需要权限。所以,了解权限对于学习以及使用Linux系统是一件十分重要的事情。

2023-01-16 18:06:58 787 7

原创 Linux基本命令详解

Linux系统是一款不同于我们一般所用的Windows 系统和苹果等的操作系统,它主要是应用于服务器和大型计算机领域。举个例子吧,我们平时最常用的网页和APP软件都是基于Linux系统运行的。而Linux系统相较于Windows系统的最大区别就是它的的开发模式是开源,这也极大地提高了Linux的安全性、稳定性以及效率,使其成为主流的操作系统之一。

2023-01-12 21:41:44 225 15

原创 双向链表的增删查改

双向链表也叫双链表,是链表的一种,它是单链表的升级版,与单链表不同的是,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。而单链表只有一个指针,指向后继。双链表示意图首先创立一个结构体,其中包含一个prev指针,一个val值以及一个next指针。如图可以看出其中prev指针指向的是上一个结构体,而next指针指向的是下一个结构体。结构体代码。

2022-12-30 22:29:26 115 1

原创 详解c语言文件操作

文件:通俗来讲,文件就是指一个在电脑磁盘上的一个有序数据集,它能在内存中开辟一块空间用来存放信息。数据流:c语言中是用来形容程序与数据的交互的。数据流又分为输入流和输出流两类。其中,输入流只能读不能写,而输出流只能写不能读。输入流可以是键盘或文件等,输出流可以是显示器、打印机或文件。缓冲区:在程序运行的时候,电脑为了提高运行效率,会开辟一块额外的内存,用来暂时存放数据。而这一块额外的内存就是缓冲区。fopen():用来打开内存中的文件。fclose():用来关闭已经打开的文件。

2022-10-18 17:54:19 301

原创 c语言中常见的条件编译指令

上述代码通过运行可以发现输出了1,其中#if会首先判断JUD1是否为真(非0),如果是真就会执行相应操作,然后跳到#endif。#ifndef和#endif的功能与#ifdef和#endif的功能类似,是用于判断是否定义了该标识符, #ifndef表示的是如果没有定义标识符则会进行相应操作。上述代码最终输出的是2,因为JUD并没有定义,所以不会执行#idedf,执行的是#else所以最终结果为2。2、#elif:类似于 elseif 的用法,当前面条件为假,再判断该条件是否为真,如果是真,则执行相应操作。

2022-10-16 17:44:04 4143

原创 带你彻底分清什么是结构体,联合体以及枚举

在C语言中,结构体指的是一种数据结构,是C语言中聚合数据类型的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员,且这些成员可以为不同的类型,成员一般用名字访问。也就是说,结构体是由多种原宿所构成的数据结构。如何建立结构体struct s {char a;char b;int c;short d;上图就是我定义的一个结构体,其中struct表示定义的是一个结构体,s表示的是结构体名。

2022-10-13 20:01:59 1437

原创 帮你弄清数组名在各种情况下的表示的意义

(int)arr + 1表示先把arr转化成int类型,然后对它+1。其本质是把arr的16进制地址转化成int再加1。类型,p1[-1]表示指针向前跳一位。指向的就是04 00 00 00 ,按16进制打印出来就是4。

2022-09-21 18:47:57 374

原创 手把手教会你KMP算法

KMP算法是一种改进的字符串匹配算法,KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。相较于暴力算法来说能够极大程度地节约时间。

2022-09-20 17:29:11 404

原创 整形提升与截断

整形提升:整型提升是C程序设计语言中的一项规定,通常在表达式计算时,计算机为了方便是进行32个bit位计算,那么对于不够32个bit位的类型就会进行整形提升,然后再执行表达式的运算。

2022-08-09 20:03:21 359 1

原创 小游戏——扫雷

笔者以99一共81个格子的扫雷为例,我们可以把每一个格子中的数据都对应到一个99的二维数组的相应位置之中。而二维数组相关的知识也就给予了我们把扫雷游戏实现下去的可能性。首先我们需要两个二维数组,一个用来存放生成的雷的位置,一个则用来生成玩家看到的截面。对两个数组进行初始化,把第一个数组全部放入‘0’,第二个数组全部放入‘*’。但如果我们是要做99的扫雷的话数组就要是1111的数组,因为当你选定一个坐标后是会显示这个坐标周围8个格子中雷的数目。...

2022-07-29 18:41:50 598

原创 小游戏——三子棋

三子棋又叫九宫棋、圈圈叉叉、一条龙、井字棋等,将正方形对角线连起来,或者将自己的三个棋子走成一条线,那么就算赢了。在传递二维数组时一定要注意最好不要使用指针来对二维数组进行接收,与一维数组传参形式容易搞混,从而导致二维数组自动降维。同时写出程序运行的大体逻辑,通过dowhile循环来实现玩家下棋到判断输赢到电脑下棋到判断输赢再到玩家下棋这么一个循环。我仅仅讨论了三子棋的判断方式,当判断有一方获胜或者平局之后则会返回0,从而跳出dowhile循环,游戏结束,选择是否进行下一把,否则继续进行游戏。...

2022-07-28 19:26:25 1391

原创 与c语言的初识

一个来自准研一狗的迷茫与期望。

2022-07-15 16:10:39 700 1

空空如也

空空如也

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

TA关注的人

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