自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一篇文章学会进程替换

exec* 系列函数: 功能实际上就是加载器的底层接口,用这样的接口实际上就可以把任何程序加载进来。一定和应用场景有关,我们有时候,必须让子进程来执行新的程序!!

2024-04-09 16:02:05 1356

原创 shell命令行中脚本特殊注释指定脚本解释器

是一个特殊的注释,通常称为"shebang" 或 “hashbang”。用于指定脚本的解释器。,后面跟着解释器的路径,你告诉系统应该使用哪个解释器来执行脚本。通过在脚本的第一行使用。在Linux系统中,

2024-04-09 15:55:50 222

原创 关于exec系列函数中的argv以及命令行参数的指针类型为什么是char* const,而不是const char*、const char* const和char*

在真正的exec函数执行之前可以根据需求,更改传递的参数来适应不同的需求。显然ls没有 hello这个选项,因此,为了防止这种错误也为了安全性。那么这种情况下,程序执行就变成了: ls hello -l。,就不能在函数调用期间修改字符串内容了!

2024-04-08 21:29:54 179 1

原创 解决obsidian中图片链接复制到CSDN或者typora后无法识别

这样设置后,每次写完笔记,只需要鼠标右键,选择Regex Pipeline:你起的名字执行一下,自动就把图片的格式更改了即使用typora打开或是复制到csdn都没有问题了!

2024-04-07 18:22:41 586

原创 【Linux篇】makefile一次形成两个可执行

当makefile从上到下被扫描时,要生成的目标文件第一个遇到的就是all,然后他就知道了这个all依赖的是exec和mycmd,然后就分别推导式地执行下面的两个执行生成mycmd和exec。然后all的依赖条件具备了,想执行all的依赖方法,但是由于是伪目标不需要依赖方法,所以makefile至此就结束。首先要知道,正常的makefile文件,在执行的时候,遇到第一个目标文件,就只生成这一个。上面的makefile只会生成exec,因为第一次遇到的目标文件是exec。的时候,直接删除那两个可执行即可。

2024-04-05 16:50:11 379 1

原创 【Linux篇】认识冯诺依曼体系结构

还记得我们说内存是连续的,一般来说,加载某些数据的时候,其周围的数据也会被加载进来。因此,操作系统的作用就发挥了,操作系统会把可能用到的数据提前加载到内存中,这样CPU就直接可以去内存中找数据啦。小红的网卡作为输入设备,接收到消息,然后将消息加载到内存,CPU去内存读取数据,把消息解包,得到消息里的内容,重新写回内存。当小明给小红在输入框中输入消息之后,就已经被写入了内存,然后当小明点击发送的时候,CPU读取内存中的数据,对消息进行打包(如指定发送到哪里),然后输出到网卡。如果要运行必须要加载到内存,

2024-04-05 09:19:39 1211 2

原创 【入门C++编程的艺术】重载cin和cout

cout和cin是作为运算符重载的第一个参数的,所以如果把运算符重载定义在类的内部,是不可以的因为在类里面默认第一个参数是隐藏的this,我们无法更改。写在类的外部又必须涉及到访问类的成员,成员一般是私有的,所以需要把重载的cout和cin声明为。虽然理论上我们可以写在ostream类的内部和istream类的内部。但是,这两个类是标准库中的类,我们无法访问。,需要返回值,返回值为cout 和 cin。cin需要修改成员,第二个参数为 对象的引用。cout和cin经常调用,我们设置为内联。

2024-04-02 15:33:09 300 1

原创 【入门C++编程的艺术】构造函数和析构函数的优化问题

Linux现在g++整体是偏激进优化的和vs下release下一样都是优化到5次,中间冗余对象也优化了 debug下也是。因为Linux下 默认是64位+release环境,拷贝构造5次。上面的第一个题(左):1次构造,4次拷贝构造。g++下面可以看到完全关闭优化的本来次数。第二个题(右):1次构造,7次拷贝构造。先利用int类型构造一个临时对象。然后再用临时对象拷贝构造出w2。编译器优化为: 直接构造出w2。❤️码字不易,给个赞吧~❤️。然后再拷贝构造一个形参对象。本来会先构造一个匿名对象。

2024-03-10 10:45:01 540 1

原创 【Linux篇】gdb的使用

显示mytest的源代码,后面直接回车即可(因为gdb会记住最近的一条命令,如果命令无变化,可以直接回车),每次显示十行。注意:until是函数内跳转,不会调到函数外部,如果该函数在main函数中的位置是第18行,那么你输入的行数超过18行,他还是会停在18行。如果此时进入了一个函数,但是不想继续一步一步走了,想直接运行完这个函数,就用finish。(没有找到调试信息)在循环中,我们时常要查看循环变量的值是多少,可以用长显示让循环变量一直显示着。并且跳到下一个断点的时候,两个断点中间的代码是被执行了的。

2024-03-07 22:03:50 631

原创 【Linux篇】Linux下利用git同步到gitee

举个例子,A和B同时克隆了一个Gitee远程仓库,A提交并推送了一个文件testA.c,此时B也在写代码。有时候我们不需要提交某些后缀的文件到我们的远程仓库,比如在Visual Stdio中除了我们自己建的。文件把以这些为后缀的文件加入"黑名单",这样提交的时候,git就会自动忽略"黑名单"里的文件。出现的原因是建立仓库的时候信息不完善,让你完善一下自己的信息,方便git来追溯。这是因为,B的本地仓库已经和远程仓库不同步了,就会发生提交冲突 问题。把本地仓库中的内容,推送到云仓库。

2024-03-07 07:58:01 968

原创 【Linux篇】Linux下的第一个小程序--进度条 & 蹦迪炫彩进图条

C语言给我们提供了输出缓冲区,输出的内容先流入缓冲区中,而缓冲区按照一定的刷新策略来刷新,刷新后才会显示到 屏幕。而其实在语言中的’\n’是被当作回车+换行的,所以在语言中有’\n’就自动来到下一行的最开始了。其实,printf是输出到stdout(标准输出流)的,对应的就是显示器。:‘\n’和’\r’只有到了显示器才会有效果,在缓冲区只是个字符。程序的运行结果:先等待三秒,然后输出hello,world!所以,当前行输入之后,来到下一行的最开始其实是:回车+换行。但是如果把’\n’换成’\r’,如下图。

2024-03-06 07:42:34 1104 1

原创 【Linux篇】Linux项目自动化构建工具-make/Makefile

在实际工作中,一个项目可能有很多源文件,比如有200个源文件,那么用gcc/g++编译的时候,我们应该先编译哪一个呢?而且,这么多源文件需要我们一个个去gcc来编译吗?而makefifile就定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作makefifile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

2024-02-17 12:35:30 1283 1

原创 【Linux篇】yum

并且Linux起源于国外,所以该软件发布平台也是国外的平台,我们国家是有墙的,无法直接访问外网,所以如果要直接去软件发布平台下载,有时候就会打不开链接或者下载很慢等问题。这里解释一下软件发布平台,众所周知,Linux是开源精神的先驱,因此很多Linux上的软件也是开源的,所以软件发布平台中大部分都是一些开源精神爱好者所维护的。上面所说的手机app的下载模式模式同样适用于Linux系统中的下载软件的方式,而手机的App Store就相当于Linux中的yum。那么此时下载的如何进行下载的?

2024-02-06 15:32:41 804 1

原创 【Linux篇】gcc和g++的使用

gcc是一个专门用来编译链接C语言的编译器g++则是编译链接C++,也可以编译链接C语言注意:gcc不能编译C++

2024-02-04 12:00:25 792 1

原创 【Linux篇】(一文搞定Linux权限)Shell外壳程序 | Linux权限 | 粘滞位 | umask

当然,正常情况下不同的用户有各自的工作目录,一个用户的工作目录只有自己有读、写、执行权限,所属组以及other都是没有任何权限的。既然umask中出现的权限,都不应该出现在最终权限中,这就意味着umask与起始权限经过某种运算之后,保留起始权限中没有在umask中出现的权限。如果umask中某个位置是1,也就是umask中有这个权限,那么取反后就是0,与起始权限做与运算就可以去掉这个在umask中出现的权限。​ 即:首先判定你是谁,如果你是拥有者,那么只看拥有者权限,和你是否是所属组没关系。

2024-01-29 13:38:57 858

原创 【Linux篇】vim的基本使用 | vim配置

通常使用的如VS2019等工具,具有以下特点可以写C、C++、python、网页等多种语言集编辑、调试、编译、链接等功能于一体类似的这种工具叫做IDE:集成开发环境相比之下,vim的功能就简单得多vim是一款纯编辑器:只负责写代码。

2024-01-27 12:04:27 966 1

原创 【Linux篇】Linux基本指令

Linux下一切皆文件,管道是一个内存级别的文件(作用类似于一个临时文件),用于传导资源(主要是数据),管道有入口,有出口。数据经过管道传输出去。

2024-01-26 15:36:54 1077 1

原创 【入门C++编程的艺术】C++内存管理 | new和delete | operator new | operator delete | 定位new

new和delete针对内置类型与C的malloc/free无大区别但是对于自定义类型,区别很大!这也是引入new/delete的原因new/delete针对自定义类型,与malloc/free最大的区别就是new的时候会自动调用 默认构造函数(如果无默认构造会报错)delete的时候会自动调用析构函数单个自定义类型对象的构造/析构//malloc只是申请空间exit(-1);//1. new申请空间 2. 调用默认构造函数初始化// 显示传递参数来构造free(p1);

2024-01-25 14:42:18 843

原创 【入门C++编程的艺术】类和对象 | 类的六个默认成员函数 | 初始化列表 | 友元 | explicit关键字 | static成员

初始化列表是在函数体的前面,以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式C++规定,在初始化列表的时候对成员变量进行初始化内置类型:如果不给显示初始化,默认是随机值(不做处理)自定义类型:如果不给显示初始化,调用自定义类型的默认构造函数如果给了显示初始化,那么就按照显式初始化的值所以由该规定可知,上面的代码会出错!因为Time没有默认成员函数,会出现找不到默认成员函数的错误:_t() //此处自动调用_t类型的默认构造函数。

2024-01-24 11:43:10 1101

原创 【入门C++编程的艺术】类和对象的引入(类和对象基础知识)

C++中虽然对struct进行了升级,struct变成了类,但是C++中并不怎么使用它,相比struct,class更贴合"类"这个名称。所以C++中更为官方的类 用 class定义// 类体:由成员函数和成员变量组成//注意一定要有分号!class : 定义类的关键字className:类的名字{ } 内部为类的主体 ,包括成员变量和成员方法类定义了一个新的作用域,在{}内部就是类的作用域,类的所有成员都在类的作用域中。在类体外定义成员时,需要使用作用域操作符指明成员属于哪个类域//全局变量。

2024-01-23 11:07:14 891

原创 【入门C++编程的艺术】C++基础(下)

以**inline修饰的函数叫做内联函数,编译时C++编译器会在**调用内联函数的地方展开,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。

2024-01-22 14:52:36 855

原创 【入门C++编程的艺术】C++基础(上)

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。简单来说 ,就是 可以有多个相同函数名的函数, 但是这些函数的参数个数 或者参数类型 或者参数的类型顺序是不一样的.通常来处理类似的功能,但是数据个数或者类型不同的情况如:计算器就是一个例子 ,加法可以是任何个数任何类型的数的加法但是都只按一个 " + "号就可以完成如以下示例: 不同类型的加法//下面两个 不同类型的参数的顺序不同return 0;注意。

2024-01-21 22:39:37 877 1

空空如也

空空如也

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

TA关注的人

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