- 博客(68)
- 收藏
- 关注
原创 【Linux】进程控制&实现自主shell
思考函数和进程之间的相似性exec/exit就像call/return一个C程序有很多函数组成。一个函数可以调用另外一个函数,同时传递给它一些参数。被调用的函数执行一定的操作,然后返回一个值。每个函数都有他的局部变量,不同的函数通过call/return系统进行通信。这种通过参数和返回值在拥有私有数据的函数间通信的模式是结构化程序设计的基础。Linux⿎励将这种应用于程序之内的模式扩展到程序之间。如下图一个C程序可以fork/exec另一个程序,并传给它一些参数。
2025-03-31 19:20:06
1342
7
原创 Linux_进程概念(B)-环境变量&进程地址空间【Linux】
结构来表示一个独立的虚拟内存区域(VMA),由于每个不同质的虚拟内存区域功能和内部机制都不同,因此一个进程使用多个vm_area_struct结构来分别表示不同类型的虚拟内存区域。在早期的计算机中,要运行一个程序,会把这些程序全都装入内存,程序都是直接运行在内存上的,也就是说程序中访问的内存地址都是实际的物理内存地址。定位mm_struct文件所在位置和task_struct所在路径是一样的,不过他们所在文件是不一样的, mm_struct所在的文件是mm_types.h。可是我们对他并不理解!
2025-03-21 23:37:03
2477
93
原创 Linux_进程概念(A)-进程部分【Ubuntu】
进程概念,基本进程内容在系统当中查找一个最合适调度的进程的时间复杂度是一个常数,不随着进程增多而导致时间成本增加,我们称之为进程调度O(1)算法!
2025-03-10 07:47:32
11264
63
原创 Linux调试器gdb和cgdb的使用【Ubuntu】
执行时监视一个表达式(如变量)的值。如果监视的表达式在程序运行期间的值发生变化,GDB 会暂。按下i键回到调试窗口,进入调试模式,使用的调试指令与GDB几乎一样!• 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上。• 上面的基本调试还是麻烦,虽然是黑屏,但是还是想看到代码调试。选项,如果没有添加,程序无法被编译。更改一下标志位,假设我们想得到。• 程序的发布方式有两种,出来的二进制程序,默认是。停程序的执行,并通知使用者。
2025-03-03 07:48:28
17133
93
原创 Linux版本控制器Git【Ubuntu系统】
注释,内容被 Git 忽略.sample# 忽略所有 .sample 结尾的文件!lib.sample# 但 lib.sample 除外/TODO# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODObuild/# 忽略 build/ 目录下的所有文件doc/.txt# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt[]# 匹配字符列,如 [Ll]ibrary 意为Library或library均满足条件。
2025-02-24 14:00:24
15923
70
原创 Git本地免密码和账号使用三板斧【Git】
以上配置好后,关闭git bash重新打开,之后pull一个项目,首次还是要输入用户名及密码,之后pull成功后,再以后pull和push都不需要在输入用户名及密码了,此后打开新建的.git-credentials文件发现在https://{username}:{password}@gitee.com之上多了一条类似的文本。,一般为C:\users\Administrator,也可是你自己创建的系统用户名目录,反正都在C:\users\中。用touch创建文件 .git-credentials。
2025-02-17 16:03:41
4729
63
原创 linux系统程序--简单进度条实现
缓冲区的使用提高了I/O操作的效率,因为它允许数据批量刷新,而不是每次输出都进行一次I/O操作。综合使用换行和回车字符,可以实现灵活的终端输出效果,特别在实时显示和动态更新场景中非常常见。缓冲区刷新相当于老式打字机或写作文,当从左向右写满了会进行光标向左回退,换行,继续打印。缓冲区的刷新模式决定了什么时候会将缓冲区内容刷新到终端屏幕上。: 在行缓冲模式下起到触发缓冲区刷新的作用,同时将光标移到下一行。: 将光标移动到行首,常用于覆盖当前行的内容,而不触发缓冲区刷新。:将光标移到下一行。
2025-02-11 12:33:20
9826
48
原创 自动化构建-make/Makefile 【Linux基础开发工具】
CC:c编译器的名称,默认值为cc。cpp c预编译器的名称默认值为$(CC) -ECC = gcc回显问题,Makefile中的命令都会被打印出来。如果不想打印命令部分 可以使用@去除回显。
2025-02-03 17:12:38
5528
62
原创 编译器gcc/g++ --【Linux基础开发工具】
在我们的实际开发中,不可能将所有代码放在一个源文件中,所以会出现多个源文件,而且多个源文件之间不是独立的,而会存在多种依赖关系,如一个源文件可能要调用另一个源文件中定义的函数,但是每个源文件都是独立编译的,即每个*.c文件会形成一个*.o文件,为了满足前面说的依赖关系,则需要将这些源文件产生的目标文件进行链接,从而形成一个可以执行的程序。的基本思想是把程序按照模块拆分成各个相对独立部分,在程序运行时才将它们链接在一起形成一个完整的程序,而不是像静态链接一样把所有程序模块都链接成一个单独的可执行文件。
2025-01-27 15:55:16
2248
47
原创 编辑器Vim基本模式和指令 --【Linux基础开发工具】
• 正常模式• 插入模式• 底行模式我们一共有12种总模式,大家下来可以研究一下。
2025-01-20 16:49:37
6576
56
原创 Ubuntu中如何卸载软件 ---【linux】
在Ubuntu系统中要干净地卸载软件,意味着不仅移除软件本身,还包括它的配置文件以及可能存在的依赖关系。
2025-01-18 13:05:02
10190
26
原创 软件包管理器 ---【linux基础开发工具】
•在Linux下安装软件,一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。•但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。•软件包和软件包管理器,就好比“App”和“应用商店”这样的关系.•yum。
2025-01-18 12:53:24
9038
28
原创 技术洞察:C++在后端开发中的前沿趋势与社会影响
在当今快速发展的技术环境中,C++作为一种强大的编程语言,依然在后端开发领域占据着重要的位置。尽管有许多新兴语言和框架相继涌现,C++凭借其高性能和灵活性,仍然是许多大型系统和高负载应用的首选。在这篇文章中,我们将探讨C++在后端开发中的前沿趋势、跨领域技术融合的创新实践,以及其对社会和人文的深远影响。
2025-01-18 10:48:23
1462
16
原创 【EasyX 图形化编程保姆级喂嘴里教程】(C/C++) graphics.h 头文件库安装
EasyX Graphics Library 是针对 Visual C++ 的免费绘图库,支持 VC6.0 ~ VC2022,简单易用,学习成本极低,应用领域广泛。EasyX 采用静态编译,不依赖任何 dll,同传统程序的发布方式没有区别,程序不会因为引入 EasyX 而增添任何发布负担。EasyX 在 C/C++ 学习、编写小游戏、图形学、图像学、分形学、粒子系统、物理模拟等各种场景都有应用。EasyX 含有一些简单的函数集合,几乎不用学习,直接翻看参考手册就可以直接使用。在使用时也可以查看图形库的。
2024-12-30 18:12:44
15556
70
原创 【Linux】基础指令--(xshell - < ubuntu > )
• 目录的可执行权限是表示你可否在目录下执行命令。• 如果目录没有 -x 权限,则无法对目录执行任何命令,甚至无法 cd 进入目, 即使目录仍然有 -r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)• 而如果目录具有 -x 权限,但没有 -r 权限,则用户可以执行命令,可以 cd 进入目录。但由于没有目录的读权限• 所以在目录下,即使可以执行 ls 命令,但仍然没有权限读出目录下的文档。
2024-12-23 15:31:52
11328
71
原创 智能指针--C++
什么是内存泄漏:内存泄漏指因为疏忽或错误造成程序未能释放已经不再使用的内存,一般是忘记释放或者发生异常释放程序未能执行导致的。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对该段内存的控制,因而造成了内存的浪费。内存泄漏的危害:普通程序运行一会就结束了出现内存泄漏问题也不大,进程正常结束,页表的映射关系解除,物理内存也可以释放。
2024-12-09 19:40:04
2166
77
原创 小志的创作纪念日
但是在一年的时间里,没有浪费太多时间,一直坚持学习技术到现在,刷了很多编程题,学过了C和C++的基本语法内容,数据结构,目前开始接触Linux,这些经历的日常代码都用git记录在Gitee上,从“hello world!们的推荐,结识了优快云平台,看到其他博主写的优秀文章,觉得很方便阅读和查找不了解的内容,发现好多博主都是大学生,从那一刻就开始计划成为一个“写作手”。写博客已经成为我生活中的一小部分,在有限的精力下,以学习,自我提升为主,坚持抽时间保证一周一篇博客。可能写的很一般,进步的也比较慢。
2024-12-06 11:05:27
410
36
原创 异常--C++
有时catch到一个异常对象后,需要对错误进行分类,其中的某种异常错误需要进行特殊的处理,其他错误则重新抛出异常给外层调用链处理。捕获异常后需要重新抛出,直接 throw;就可以把捕获的对象直接抛出。
2024-12-02 10:50:16
3707
85
原创 【C++11】可变参数模板/新的类功能/lambda/包装器--C++
成员变量声明时给缺省值是给初始化列表用的,如果没有显示在初始化列表初始化,就会在初始化列表用这个却绳子初始化,这个我们在类和对象部分讲过了,这个在继承和多态部分已经进行了详细讲过了,.可以关注我,看我的主页哦.,可以查看我的主页哦.
2024-11-25 20:26:31
3532
101
原创 【C++11】{}/右值引用/移动语义/类型分类/引用折叠/完美转发--C++
显然是不可能的,因为这里的本质是返回对象是一个局部对象,函数结束这个对象就析构销毁了,右值引用返回也无法概念对象已经析构销毁的事实。C++98的C++语法中就有引用的语法,而C++11中新增了的右值引用语法特性,C++11之后我们之前学习的引用就叫做左值引用。第一个语句就是左值引用,左值引用就是给左值取别名,第二个就是右值引用,同样的道理,右值引用就是给右值取别名。需要注意的是变量表达式都是左值属性,也就意味着一个右值被右值引用绑定后,右值引用变量变量表达式的属性是左值。
2024-11-18 23:03:56
2652
102
原创 用哈希表封装myunordered_map/_set--C++
SGI-STL30版本源代码中没有unordered_map和unordered_set,SGI-STL30版本是C++11之前的STL版本,这两个容器是C++11之后才更新的。iterator实现思路分析。
2024-11-14 22:40:40
2442
46
原创 哈希表的实现--C++
当key是string/Date等类型时,key不能取模,那么我们需要给HashTable增加一个仿函数,这个仿函数⽀持把key转换成一个可以取模的整形,如果key可以转换为整形并且不容易冲突,那么这个仿函数就用默认参数即可,如果这个Key不能转换为整形,我们就需要自己实现一个仿函数传给这个参数,实现这个仿函数的要求就是尽量key的每值都参与到计算中,让不同的key转换出的整形值不同。一般情况下,不断扩容,单个桶很长的场景还是比较少的,下面我们实现就不搞这么复杂了,这个解决极端场景的思路,大家了解一下。
2024-11-13 17:35:01
4703
60
原创 (C++11)委托构造函数--C++
老板让A、B、C三位员工完成将各自资料送交办公室任务.(C++中初始化成员) ,虽然三位员工手中的资料不同(各成员列表), 但是需要完成的操作是相同的(初始化), 都是送往办公室。所谓 委托环(delegation cycle) 是指某类中有一个若多个委派构造函数, 然后在这些若干个的委派构造函数中, 某些目标构造函数可能同时是委派构造函数。在委托构造函数内, 成员初始值列表的唯一入口便是类名本身。, 因此, 构造函数的特性都适合委托构造函数, 比如: 没有返回值, 可以有一个或多个参数, 有函数体等。
2024-11-11 21:43:01
1922
46
原创 unordered_map/set的使用--C++
unordered_set的声明如下,Key就是unordered_set底层关键字的类型unordered_set默认要求Key支持转换为整形,如果不支持或者想按自己的需求走可以自行实现支持将Key转成整形的仿函数传给第二个模板参数unordered_set默认要求Key支持比较相等,如果不支持或者想按自己的需求走可以自行实现支持将Key比较相等的仿函数传给第三个模板参数unordered_set底层存储数据的内存是从空间配置器申请的,如果需要可以自己实现内存池,传给第四个参数。
2024-11-08 23:01:00
793
39
原创 封装红黑树实现mymap和myset--C++
SGI-STL30版本源代码,map和set的源代码在map/set/stl_map.h/stl_set.h/stl_tree.h等几个头文件中。
2024-11-05 23:20:46
1826
21
原创 人工智能:塑造未来生活的强大力量
而在项目实践中,我们尝试将理论知识应用于解决实际问题,如利用AI进行图像识别、文本分类等,这些经历让我深刻体会到人工智能技术的强大与魅力。作为一名计算机专业的大学生,我身处科技发展的前沿,深刻感受到人工智能(AI)技术的迅猛发展及其对社会各领域的深远影响。在此,我将从计算机专业大学生的视角出发,探讨人工智能技术的应用前景,并提出我们这一代人应如何面对和准备。同时,人工智能还将推动新一轮的产业革命。:首先,我们需要不断深化对人工智能相关理论和技术的学习,掌握最新的算法和框架,为未来的职业发展打下坚实的基础。
2024-10-28 21:31:05
1521
10
原创 ASCII码表完整版
第一版标准发布于1963年 ,1967年经历了一次主要修订[5][6],最后一次更新则是在1986年,至今为止共定义了128个字符;其中33个字符无法显示(一些终端提供了扩展,使得这些字符可显示为诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符。在33个字符之外的是95个可显示的字符。ASCII(发音:,American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。
2024-10-25 20:28:23
626
11
原创 (史上超级清晰图解分析版)AVL树的实现--C++
这篇文章是关于AVL树的介绍,主要讲述了AVL树作为最先发明的自平衡二叉查找树,通过控制左右子树高度差保持平衡。文章详细阐述了AVL树的结构、插入操作中的平衡因子更新原则,以及四种旋转操作(左单旋、右单旋、左右双旋、右左双旋)来恢复平衡。AVL树通过这些机制确保了高效的查找、插入和删除操作。
2024-10-24 17:16:40
1013
11
原创 (清晰易懂版)(multi)map和set--C++
本文详细介绍了C++ STL中的序列式容器和关联式容器的区别,主要聚焦于set和map的使用。在序列式容器中,元素根据其存储顺序进行访问,而关联式容器则通过关键字进行访问,具有非线性结构,以提高查找效率。此外,文中还提供了具体的用法示例,包括增删查操作和迭代器的使用,帮助初学者更好地理解这些容器的特性。
2024-10-21 22:53:05
1063
11
原创 (带图易懂版)二叉搜索树(Key/Value)--C++
二叉搜索树是一个具有特定性质的二叉树,其中左子树的所有节点值均小于或等于根节点,右子树的所有节点值均大于或等于根节点。本文分析了二叉搜索树的性能,包括最优和最差情况下的高度及对应的时间复杂度,并提供了插入、查找和删除节点的具体方法与代码实现,以及其在不同场景中的应用案例
2024-10-17 21:21:05
1201
7
原创 (超级清晰易懂版)多态--C++
多态是编程中一种重要的特性,分为编译时多态和运行时多态,主要利用虚函数实现。在 C++ 中,运行时多态通过基类的指针或引用指向派生类对象来实现,不同对象显示出不同的行为。实现多态的条件是必须使用虚函数和基类的指针或引用,这确保了可以根据对象的实际类型来调用相应的函数。
2024-10-12 14:51:24
1182
9
原创 (保姆级喂到嘴里教程)Visual Studio--VS安装配置使用教程
本文介绍了Visual Studio的安装与使用方法。首先,突出Visual Studio作为一个用户友好的集成开发环境(IDE),适合新手学习编程;接着,详细说明了安装过程,包括路径设置和自定义组件选择;最后,通过具体的步骤指导用户创建第一个C++项目并运行简单的程序。
2024-10-11 20:44:22
9222
10
原创 (图解+链接易懂版)继承--C++
文章详细阐述了C++中的继承概念及实现,强调继承作为面向对象编程中的核心机制,使得代码能够重用和扩展。继承的体系结构通过基类和派生类之间的关系展示了对象模型,同时探讨了不同类型的继承、访问权限以及在实际编程中的最佳实践,包括单继承与多继承的比较、菱形继承问题及其解决方案。最后,文章还提出了组合与继承的区别,鼓励开发者在设计中更倾向于使用组合以降低耦合。
2024-10-10 23:22:25
1195
4
原创 (史上最清晰保姆级)小熊猫C/C++的安装使用及配置教程
本文介绍了小熊猫C++集成开发环境的基本情况,包括其背景、下载和安装过程,以及项目创建和编译运行的步骤。小熊猫C++作为轻量级IDE,适合学生和竞赛使用,其功能相比旧版本的Dev C++更加完善,且提供了方便的安装和使用指南。
2024-10-10 18:04:07
6810
7
原创 (超级清晰带链接)STL--stack与queue(deque)--C++
本文主要介绍了栈(stack)和队列(queue)这两种容器适配器,包括它们的基本概念、使用方法以及模拟实现。栈是一种后进先出(LIFO)的数据结构,允许从一端插入和提取元素,而队列则是先进先出(FIFO)的数据结构,通过一端插入元素,另一端提取。文中还提到优先队列(priority queue)作为一种包含最大元素的容器适配器,以及为何选择双端队列(deque)作为栈和队列的底层容器,因为其在性能和空间利用方面的优势。
2024-10-02 12:37:06
1049
9
原创 (超级清晰带图版)STL--list--C++
本文介绍了C++中的list数据结构,包括其构造方法、迭代器使用、容量及元素访问等操作。list的设计允许高效的插入与删除,并且与vector相比在某些情况下具有显著的优势。此外,文中还提到了list与vector的主要区别,帮助读者选择合适的容器。
2024-09-28 19:10:32
985
21
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人