自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [Linux入门]---使用exec函数实现简易shell

运行结果如上,可以让子进程执行替换函数,调用系统程序命令执行!

2024-09-14 22:49:14 216

原创 [Linux入门]---进程等待

通过系统调用,来进行对子进程状态监测与回收的功能!

2024-09-11 09:00:00 848

原创 [Linux入门]---进程创建和进程等待

答案是我们的用户(父进程),现在我们所写的程序都会打印输出,因为我们需要知道程序的执行情况,但不是所有的程序都需要打印输出(比如网络传输),所以程序不打印的时候,当子进程进程开始修改、写入数据的时候,会触发只读权限问题,发生缺页中断,重新申请空间(写实拷贝),然后把父子进程的只读权限设置为读写!通常,父子代码共享,父子再不写入时,数据也是共享的,当任意一方试图写入,便以写时拷贝的方式各自一份副本。系统接口函数结束时,一定会刷新缓冲区,但从上面的结果来看,操作系统并没有那么做,,当控制转移到内核中的。

2024-09-10 08:45:00 846

原创 [Linux入门]---进程替换

①exec系列函数如果调用成功,则加载新的程序从启动代码开始执行不再返回。如果调用出错则返回-1,所以exec函数只有出错的返回值,而没有成功的返回值。②命名理解记忆l(list) : 表示参数采用列表v(vector) : 参数用数组p(path) : 有p自动搜索环境变量PATHe(env) : 表示自己维护环境变量③只有execve函数是真正的系统调用,其它五个函数最终都调用execve函数,所以execve在man手册 第2节,其它函数在man手册第3节。

2024-09-09 11:49:19 944

原创 MySQL库表的基本操作

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。我们还有需求,添加字段,删除字段等等。对数据库的修改主要指的是修改数据库的字符集,校验规则。删除字段一定要小心,删除字段及其对应的列数据都没了。

2024-08-20 08:00:00 1043

原创 MySQL基础知识

存储数据用文件就可以了,为什么还要弄个数据库?文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便磁盘内存①mysql是数据库服务的客服端②mysqld是数据库服务的服务器端③mysql的本质是基于C(mysql)S(mysqld)的一种网络服务。

2024-08-19 08:00:00 1290

原创 MySQL在Centos7环境安装

本次安装与卸载中,⽤⼾全部切换成为root,⼀旦安装,普通⽤⼾能使⽤的。

2024-08-18 22:10:09 1139

原创 [Linux入门]---进程地址空间

看到地址空间布局图,我们就真正理解了内存的地址(即“程序的地址空间”)了吗?它是我们理解的内存真实的地址(物理地址)了吗?int main()// 子进程while(1)sleep(1);printf("子进程change g_val : 100->200\n");cnt--;else// 父进程while(1)sleep(1);return 0;由上面的代码及代码运行的结果,根据我们在fork()

2024-08-11 22:45:21 885

原创 [C++进阶]---AVL树模拟实现

/该节点的左孩子//该节点的右孩子//该节点的双亲int _bf;//该节点的平衡因子,_kv(kv),_bf(0){}①AVL树的删除(了解)因为AVL树也是二叉搜索树,可按照二叉搜索树的方式将节点删除,然后再更新平衡因子,只不过与删除不同的时,删除节点后的平衡因子更新,最差情况下一直要调整到根节点的位置。② AVL树的性能AVL树是一棵绝对平衡的二叉搜索树,其要求每个节点的左右子树高度差的绝对值都不超过1,这样可以保证查询时高效的时间复杂度,即log2Nlog_2(N)

2023-12-13 08:48:23 1084 1

原创 [Linux入门]---进程优先级

竞争性:资源是有限的,而进程有很多个,注定了进程之间是竞争关系;如果我们进程长时间得不到CPU资源,进程的代码将无法推进,在用户层面,表现为该进程应用无法响应;所以操作系统必须保证进程良性竞争,确认进程的优先级。权限决定的是某进程能不能访问资源,优先级是在拥有访问某资源权限的情况下,决定访问该资源的先后顺序。:代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号。:代表这个进程可被执行的优先级,其值越小越早被执行。:代表这个进程的nice值。问题1:权限与优先级的区别。: 代表这个进程的代号。

2023-09-26 07:15:00 299

原创 [Linux入门]---进程状态

操作系统层面上主要三种状态:运行状态、阻塞状态、挂起状态;在Linux操作系统中,R状态可以对应操作系统上的运行状态,S\D\T状态对应操作系统上的阻塞或挂起状态,X/Z状态以此类推也有与操作系统相对应的状态,操作系统之间的状态可能实现(划分)有所不同,状态的原理(概念)是相似的。

2023-09-26 03:00:00 2201 1

原创 [Linux入门]---进程的概念

在很多人的理解中,一个加载到内存中的程序叫做进程,或者正在运行的程序叫做进程,其实这些都是片面的理解!子进程和父进程刚开始指向的数据相同,当操作系统检测到子进程要修改数据时会开空间,会发生写时拷贝,但不是把父进程的数据全部拷贝,子进程只会拷贝自己能使用的数据,避免造成资源浪费。语句,根据父进程返回当前的子进程(返回的值大于0),旧的子进程返回0,实现分流执行不同的代码。返回不同的值,让不同的执行流,执行不同的代码!fork函数创建一个新的进程,让当前的父进程返回当前的子进程,创建新的子进程返回0。

2023-09-25 10:00:00 242 1

原创 [Linux入门]---管理者操作系统

辅导员收集了所有新生的基本信息交给了校长,校长很认真地看了收集上来的新生基本信息,发现有的学生没有电话号码、学号、专业,有的学生甚至把自己的血型、身高、体重、爱好、生活费等信息写上去了,这一多一少地信息表显得很凌乱不堪,作为校长的你本该很生气,但转念一想是你自己没说让辅导员收集的新生信息有哪些,也就气消火熄了,觉得自己应。银行—大家都知道吧?的校长,只需向辅导员下达命令“辅导员帮我收集新生的基本信息,交到办公室给我”,辅导员就会在开学的时候,屁颠屁颠地把新生的信息收集起来交给了校长,辅导员在这充当的就是。

2023-09-24 18:00:00 161 1

原创 [Linux入门]---初识冯诺依曼体系

文件存储在张三的磁盘(输入设备)中,读取到内存,由内存读取到CPU的寄存器上,经过运算器经过封装后处理后再被输出到内存(存储器),再从内存输出到网卡(输出设备),经过网络传送到你电脑的网卡(输入设备)上,你点击文件下载后,存储在网卡(输入设备)上的数据,才会加载到内存,由内存读取到CPU的寄存器中,经过运算器解压处理后的数据被输出到内存(存储器),再由内存输出到你的磁盘上,你才能打开张三的实验报告借鉴!平时我们在键盘上所敲的代码,在编译运行后输出到显示屏上,依赖的就是计算机五大结构的相互合作才能完成。

2023-09-24 08:15:00 68

原创 [Linux入门]---git命令行的基本使用

会出现以下界面,需要配合提示的指令填写你的邮箱(建议和你Gitee上面填写的邮箱保持一致)和你的用户名(任意区),填下完之后,再次。首次填写的git邮箱和gitee上面的邮箱不一致,虽然把代码文件给提交上去了,但是系统不能确认哪个账户才是你的,所以不能进行结算。①安装完git之后,回到刚刚创建的gitee仓库界面,点击“克隆/下载”,选择“HTTPS”协议进行复制。平时我们提交代码文件的时候,同时要提交其他的临时文件,其实我们需要提交进行管理的只有头文件和源文件,此时。是我们国内的网站,访问快,稳定!

2023-09-23 21:15:00 710 1

原创 [Linux入门]---Linux第一个小程序-进度条

函数输出时,会将输出的数据放到输出缓冲区,刷新输出缓冲区,即将输出缓冲区的数据输出。平时我们电脑的时候都会使用到键盘,既然使用到键盘,那就必不可少地会使用到。进度条程序之前,我们可以再学习另一个更简单小程序—倒计时!(休眠函数)让程序休眠2秒,之后程序结束才能刷新缓冲区,将。键,也就是我们所说“回车键”,其实发生了两个动作:回车。停顿一秒再进行下一个数字输出,从而达到停顿的效果。(标准错误流),每个标准流缓冲区;流(显示器)中,此时我们才可以看到输出的数据!刷新缓冲区,在显示屏输出数字,使用。

2023-09-23 09:45:00 95

原创 [Linux入门]---Linux项目自动化构建工具-make/Makefile

1make会在当前目录下找名字叫“Makefile”或“makefile”的文件。2. 如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“test”这个文件,并把这个文件作为最终的目标文件。3. 如果test文件不存在,或是test所依赖的后面的test.o文件的文件修改时间要比test这个文件新,就会执行后面所定义的命令来生成test这个文件。4. 如果test所依赖的test.o文件不存在,那么make会在当前文件中找目标为test.o。

2023-09-22 20:15:00 404 1

原创 [Linux入门]---gdb调试

平时我们在Windows操作系统下写代码的时候经常会写出bug,此时必不可少地会使用我们VS编译器的调试工具,而我们在Linux操作系统使用gcc编译器时,出现了bug又应该怎么进行调试呢?接下来让我们一起学习一下Linux调试器—gdb吧!通过上面的学习,我们可以发现Linux系统gcc编译器gdb调试与windows系统VS编译器调试有相似的地方:run---ctrl+F5执行程序break---F9打断点delete+断点编号---F9+光标指定行数,取消指定行数断点。

2023-09-22 07:45:00 81 1

原创 [Git入门]---gitee注册及代码提交

②选择合适的位置存放克隆的远端仓库,在空白的地方单击右键,点击“显示更多选项”,默认会填写刚刚复制的gitee远端网址以及本地仓库路径,只需要点击“OK”就可以了。点击“管理”界面,点击“删除仓库”,最后输入提示的内容,点击“确认删除”选项即可。②往下拉,点击“开源”,点击“我承诺”,最后点击“保存”,你的仓库便“开源”了。文件,因为该文件隐藏文件,点击“查看”中“显示”选项,勾选“隐藏的项目”的选项。的邮箱地址,如果你的邮箱“不公开邮箱地址”选项被勾选,记得取消勾选。

2023-09-21 20:26:39 1812 2

原创 [Linux入门]---Linux编译器gcc/g++使用

①如果没有静态库,不可以使用-static选项进行静态链接;②如果没有动态库,只有静态库,gcc编译器将会去寻找静态库进行链接;③gcc默认优先动态链接,-static选项改变的是链接的优先级,使用后所有的链接都为静态链接;④我们平时写的代码生成可执行文件时,不一定全部是动态链接或静态链接,而极有可能是动态链接和静态链接混合生成可执行文件;⑤动态链接优点:动态库是共享库,可以有效地节省资源(磁盘空间、内存空间,网络空间等);缺点:动态库一旦缺失,使用动态链接的可执行程序将无法运行!

2023-09-21 19:30:00 177 1

原创 [Linux入门]---文本编辑器vim使用

在使用末行模式之前,请记住先按键确定您已经处于正常模式,再按冒号即可进入

2023-09-21 06:00:00 903 1

原创 [Linux入门]---yum软件安装及vim编辑器配置

我们学会使用vim编辑器写代码时,发现回车不自动缩进、函数、源文件没有进行提示等,这是因为我们还没有对vim编辑器进行配置,这会增加我们使用vim写代码的难度,俗话说“工欲善其事,必先利其器”,所以接下来我们一起学习怎么样配置vim吧!①一般使用Linux操作系统,默认使用国外的yum源,网络访问比较慢,使用虚拟机需要自己更新yum源;官方yum源文件里面,存的是Linux所需要软件的下载链接,所以使用yum指令可以通过网络和下载地址下载存储在远端服务器的软件安装包。,进入自己的主工作目录,执行。

2023-09-20 19:54:38 1619 1

原创 【Linux入门】---Linux权限管理详解

如果目录没有可执行权限,则无法cd到目录中。如果目录没有可读权限,则无法用ls等命令查看目录中的文件内容。如果目录没有可写权限,则无法在目录中创建文件,也无法在目录中删除文件。①目录的可执行权限是表示你可否在目录下执行命令;如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目录,即使目录仍然有-r读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)。②如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。

2023-09-18 06:00:00 391 1

原创 [Linux入门]---Linux指令②

①指令和可执行程序都是可以被执行的,所以指令就是可执行程序;②我们输入指令的时候,会先在系统查找对应的指令;③执行指令的本质就是去系统特定路径下找指令对应的可执行文件,如果找到则指令存在,被执行,如果找到指令不存在,则会显示指令不存在。

2023-09-17 18:00:00 155

原创 [Linux入门]---Linux指令①

的目录结构整体是一个多叉树,他的叶子节点,一定是空目录或非空目录,而他路上的节点一定是一个非空目录,所以我们对所有文件的增删查改,实际上是对这颗多叉树的增删查改;③绝对路径:从根目录到当前目录(文件)的完整路径,往往比较长,在一些场景中使用如配置文件中使用,相对路径:以当前所处的路径为起始参照路径,来进行特定文件的定位(或其他文件(目录)相对于。文件存在的意义,帮用户定位当前目录下的一个文件,如执行某些可执行文件的时候,需要在前面加上路径,编译器才能找不到可执行文件。(大小排序,如何找到目录下最大的文件)

2023-09-17 06:00:00 53 1

原创 [Linux入门]---搭建Linux环境

如有不对欢迎纠正!🎠🎠🎠。

2023-09-16 11:51:45 923 1

原创 [C++入门]---List的使用及模拟实现

list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。list与非常相似:最主要的不同在于t是单链表,只能朝前迭代,已让其更简单高效。与其他的序列式容器相比(arrayvectordeque),list通常在任意位置进行插入、移除元素的执行效率更好。与其他序列式容器相比,list和最大的缺陷是不支持任意位置的随机访问,比如:要访问。

2023-09-16 11:32:39 320 1

原创 C++入门---vector常用函数介绍及使用

了解了string类vector常用函数后,能不能使用代替string类呢?不能,①string类和的主要区别是末尾是否有'\0'vector的查改的情况需要自己考虑‘\0’的情况②string的接口可以插入一个字符串,或者一个string类对象,string类接口函数多,功能齐全。所以不能使用代替string类。

2023-08-23 23:27:20 6530

原创 [C++入门]---vector深度剖析及模拟实现

private://指向vector第一个数据的位置//指向vector最后一个数据的下一个位置//记录最大存储容量的下一个位置①使用类模板,来支持vector类实现不同类型的数组;②通过typedef将对应类型的源生指针实现成vector的迭代器iterator;③自定义类型的成员变量会调用默认构造函数进行初始化,而内置类型的成员变量,不同的编译器实现方式不同,默认内置类型的成员变量为随机值;④C++11中针对内置类型成员不初始化的缺陷打了补丁,即内置类型成员变量在类中声明时可以给默认值;

2023-08-23 23:05:29 138

原创 string类写时拷贝

①string类拷贝构造:在VS编译器,直接为拷贝构造创建对象开辟新空间;②在gcc编译器,string类上读时不拷贝,写时拷贝(修改数据才会拷贝开辟新空间)用来记录资源使用者的个数。在构造时,将资源的计数给成1,每增加一个对象使用该资源。计数增加1,当某个对象被销毁时,先给该计数减1,然后再检查是否需要释放资源,如果计数为1,说对象时资源的最后一个使用者,将该资源释放;否则就不能释放,因为还有其他对象在使用该资源。

2023-08-21 21:05:46 308

原创 C++入门--string类的实现

private://string类的大小//string类的存储容量char* _str;我们定义string类的成员变量有sizecapacity_str,配合我们实现插入、删除、扩容等修改操作函数,并且把我们自己实现的string类成员函数封装在命名空间里面,避免和标准库里面的string类类型、函数冲突。

2023-08-10 18:26:32 1678 1

原创 string类函数--深入浅出了解

🎠🎠🎠。

2023-08-07 12:12:37 287 1

原创 C++模板初阶学习

template < class T1 , class T2 , . . . , class Tn > class 类模板名 {// 类内成员定义 };public :perror("malloc申请空间失败!!!");return;_size = 0;_size ++;} // 其他方法... ~ StackInt() {_size = 0;int _size;public :perror("malloc申请空间失败!!!");return;

2023-07-31 12:39:53 142

原创 C\C++内存管理

/ new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间 //还会调用构造函数和析构函数 A * p1 =(A *) malloc(sizeof(A));free(p1);delete p2;代码运行的结果为:class A {public :} ~ A() {int _a;free(p5);代码运行的结果为:在申请自定义类型的空间时,

2023-07-29 19:15:16 325

原创 类和对象(下篇)

本章我们一起了解了类和对象中初识化列表,`static`成员、友元类、内部类等知识,希望对大家认识类对象有些许帮助,感谢大家阅读,如有不对欢迎纠正!🎠🎠🎠

2023-07-26 16:31:36 118

原创 类和对象(中)--运算符重载

我们使用当前日期,当前月的天数满了,当前月份进位加1,年份进位加1,一年中每个月天数又不一样,而特殊的二月份每逢闰年天数加一,所以我们使用一个函数判断。3.赋值运算符重载函数,用户在没有显示实现时,编译器会默认生成一个默认赋值运算符重载函数以值的方式进行逐字节拷贝,注意:内置类型成员变量是直接赋值的,而自定义类型成员需要调用对应的类赋值运算符重载完成赋值。2.赋值运算符只能重载成类的成员函数,不能直接定义成全局函数,因为会与类里面生成的赋值函数冲突,且不具备构成函数重载的条件。②相比内置类型直接写成。

2023-07-23 21:17:01 435

原创 堆--二叉树的特有形式

在没有学习堆排序之前,我们可能会存在一些问题1.什么是堆的向上调整?2.什么是堆的向下调整?3.堆的向下调整,为啥从最后一个非叶子节点开始调整?而不是从堆顶开始把数据往下调整?4.向上调整和向下调整都可以建堆吗?它们的时间复杂度分别是多少呢?5.为啥使用堆排序–排升序建大堆、排降序建小堆呢?6.topk问题,为啥找前k个最大的数据建小堆,找前k个最小的数据建大堆呢?7.向上调整、向下调整的应用,能不能相互替代呢?int size;

2023-07-15 12:05:26 181 1

原创 数据结构--树和二叉树

本章我们一起学习了树、二叉树的相关概念,以及二叉树的性质若规定根节点的层数为1,则深度为h的满二叉树的最大结点数是2^h-1,深度为h的完全二叉树的结点数范围为。对于任意一棵二叉树,如果度为0的叶子节点个数为n0,度为2的分支结点个数为n2,则有n0=n2+1,在二叉树中度为1的结点数n1,n1为0或1。若规定根节点的层数为1,具有n个结点的满二叉树的深度,是log以2为底,n+1为对数),具有n个结点的完全二叉树的深度范围为。🎠🎠🎠。

2023-07-06 16:53:51 450 1

原创 数据结构--初识栈和队列

int top;//栈的容量 } ST;定义一个STDataType类型的指针,int类型的top变量记录位置,int类型的capacity变量记录栈的容量。

2023-07-03 15:18:43 331 1

原创 C++类和对象--构造函数和析构函数

本章我们一起学习了类和对象的构造函数、析构函数、拷贝构造函数等默认成员函数的相关知识,希望对大家认识C++中的类和对象由些许帮助!!!🎉🎉🎉。

2023-06-22 21:11:44 979 1

空空如也

空空如也

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

TA关注的人

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