- 博客(42)
- 收藏
- 关注
原创 Linux进程替换与自定义shell详解
进程是程序的一次执行实例- 每个进程拥有独立的地址空间、资源和状态- Linux使用轻量级进程模型,进程创建和调度高效- 命令读取循环(REPL - Read, Evaluate, Print, Loop)- 命令解析器- 命令执行器- 内置命令处理器// 一个简单shell的主循环if (!// 空命令// 处理内置命令// 执行外部命令- 使用打印语句跟踪程序执行- 检查返回值和错误信息- 隔离测试各个功能模块- 使用strace追踪系统调用。
2025-04-13 16:46:43
788
原创 Linux虚拟内存详解
虚拟内存是一种内存管理技术,它为每个进程提供一个假象:每个进程都拥有一个连续的、私有的地址空间,而这个地址空间的大小通常远大于物理内存的实际容量。在现代Linux系统中,32位架构通常提供4GB(2^32)的虚拟地址空间,而64位架构理论上可提供高达2^64的地址空间(实际实现通常限制在较小范围内,如48位或57位寻址)。虚拟内存是现代操作系统的核心组件,它:1. 提供了进程独立的地址空间2. 实现了内存保护和隔离3. 允许运行超过物理内存大小的程序4. 优化了物理内存的使用效率。
2025-04-13 16:27:14
732
原创 Linux环境变量详解
环境变量是在操作系统中存储有关系统运行环境信息的变量。它们是由操作系统维护的一组动态命名值,可以影响运行在系统中的进程的行为。# 创建快捷方式# 在脚本中使用环境变量环境变量是Linux系统中强大而灵活的工具,掌握它们的使用可以提高你的工作效率并自定义你的操作环境。本文涵盖了从基础概念到高级应用的各个方面,希望能帮助你更好地理解和使用Linux环境变量。环境变量的关键要点:1. 环境变量是存储系统环境信息的键值对2. 它们可以在不同级别(会话、用户、系统)设置。
2025-04-11 23:55:05
635
原创 C++字符串操作详解
C++提供了丰富的字符串处理功能,从C风格的底层操作到高级的string类。掌握这些功能可以让你的代码更加简洁、高效和安全。
2025-04-11 23:28:43
943
原创 Linux操作系统与冯·诺依曼体系结构详解
冯·诺依曼体系结构作为现代计算机的基础架构,其核心思想在Linux操作系统中得到了充分的体现和发展。Linux通过其强大的内核功能,实现了对计算机硬件资源的高效管理,并通过各种优化技术,缓解了冯·诺依曼瓶颈带来的性能限制。理解冯·诺依曼体系结构与Linux操作系统的关系,有助于我们更深入地掌握计算机系统的工作原理,为系统编程和性能优化提供理论基础。同时,Linux作为一个开源操作系统,也为我们提供了研究和实践计算机科学理论的绝佳平台。
2025-04-03 21:49:06
899
原创 Linux进程管理与进程间通信
进程是程序的一次执行过程,是操作系统分配资源的基本单位。每个进程都有自己独立的地址空间、数据栈以及用于记录运行轨迹的程序计数器等。
2025-04-03 21:17:02
445
原创 计算机组成原理与存储系统知识总结
计算机存储系统是计算机体系结构中的重要组成部分,它采用层次化设计来平衡性能和成本。高速缓存和虚拟存储器是两项关键技术,前者通过利用程序的时间局部性和空间局部性提高访问速度,后者则通过将部分数据存放在磁盘上来扩展可用内存空间。理解存储系统的工作原理对于编写高效的程序、优化系统性能以及解决内存相关问题都有重要意义。在实际应用中,我们可以通过合理组织数据结构、优化访问模式等方式来充分利用存储系统的特性,提高程序的执行效率。
2025-03-28 16:21:09
811
原创 操作系统内核与进程管理知识总结
1. 操作系统的层次结构操作系统是计算机系统的核心软件,它管理计算机硬件和软件资源,为用户程序提供服务。从层次结构上看,操作系统可以分为:- **内核层**:直接控制硬件,提供最基本的功能- **系统调用层**:为应用程序提供接口- **应用程序层**:用户可见的应用程序2. 内核的类型- **单内核(Monolithic Kernel)**:- 所有系统服务都运行在内核空间- 优点:效率高,组件间通信快- 缺点:结构复杂,一个模块崩溃可能导致整个系统崩溃。
2025-03-28 15:12:12
745
原创 Linux中的make与Makefile详解
makefile# 定义变量CC = gcc# 使用变量$@:当前目标$<:第一个依赖项$^:所有依赖项$*:不包含扩展名的目标名称make和Makefile是Linux系统中强大的自动化构建工具,通过定义规则和依赖关系,可以大大简化复杂项目的编译过程。进度条的实现可以直观地了解编译进度。
2025-03-21 21:26:39
1317
原创 Linux权限管理详解
Linux的权限管理系统是保障系统安全的重要组成部分。通过合理设置文件和目录的权限,可以有效控制用户对系统资源的访问。掌握权限管理的基本概念和操作方法,对于系统管理和安全维护至关重要。
2025-03-21 21:03:22
511
原创 Linux中的yum和vim工具使用总结
VIM (Vi IMproved) 是一个高度可配置的文本编辑器,旨在高效地创建和更改任何类型的文本。它是vi编辑器的增强版,提供了更多的功能和灵活性。
2025-03-21 20:45:06
992
原创 计算机网络:从“你好“到“世界“的奇妙旅程
想象一下,当你发送一条微信消息时,这条消息是如何从你的手机到达朋友手机的?它并不是像超能力一样瞬间传送,而是经历了一段精彩的"旅行"!### 网络的本质网络就像一个巨大的快递系统,你的消息被包装成"数据包",通过各种"快递站"(路由器)传递,最终到达目的地。只不过,这个快递比顺丰还快,通常只需几毫秒!### 网络拓扑结构网络的连接方式多种多样:- 总线型 :像一条公交线路,所有设备连在同一条线上(想象一下宿舍里的同学都连接在一个WiFi上)
2025-03-13 22:58:46
889
原创 数据库系统概念全面解析
数据库系统可能看起来很抽象,但其实它们就像我们生活中的许多事物一样,有着清晰的结构和规则。让我们通过一些有趣的生活例子来理解这些概念。
2025-03-13 22:49:45
293
原创 Linux进程基础知识
进程就是运行中的程序,是系统资源分配的基本单位每个进程都有唯一的PID(进程ID)进程有父子关系,通过ps -ef可以查看。
2025-03-11 23:20:00
548
原创 Linux学习之旅:基础开发工具重点知识整理
在Linux下,软件包是将预先编译好的软件进行封装形成的文件,类似于Windows上的安装程序。通过包管理器,用户可以方便地获取并安装这些软件包。
2025-03-08 20:39:11
1316
原创 Linux(2)
为了解决目录下文件被随意删除的问题,Linux引入了粘滞位概念,设置粘滞位后,目录下的文件只能由超级管理员、目录所有者或文件所有者删除。文件类型:包括普通文件(-)、目录(d)、软链接(l)、块设备文件(b)、管道文件(p)、字符设备文件(c)、套接字文件(s)。文件访问者分类:所有者(u)、所有者所在组的用户(g)、其他用户(o)。超级用户(root):可以做任何事情,不受限制,命令提示符为“#”。:查看或修改文件掩码,影响新建文件和目录的默认权限。基本权限:读(r)、写(w)、执行(x)。
2025-03-08 20:38:32
161
原创 Linux第一课
企业级Linux发行版,基于红帽企业级Linux的免费源代码构建,外观和行为与红帽企业级Linux相似,适合不想支付高额费用又想体验红帽企业级Linux的用户。Linux的低成本、强定制功能和良好移植性,使其在嵌入式系统中广泛应用,如手机、平板电脑、路由器、电视和电子游戏机等。Debian的衍生版,最受欢迎的免费操作系统之一,在服务器、云计算、移动设备上都很常见,对新手用户较为友好。使计算机更好用,这是操作系统的根本要义,Linux系统也不例外,旨在提供高效、稳定、安全的计算环境。
2025-03-08 20:32:59
1123
1
原创 string类(2)
写时拷贝就是一种拖延症,是在浅拷贝的基础之上增加了引用计数的方式来实现的。,说明该对象时资源的最后一个使用者,将该资源释放;否则就不能释放,因为还有。引用计数:用来记录资源使用者的个数。在构造时,将资源的计数给成。,当某个对象被销毁时,先给该计数减。,然后再检查是否需要释放资源,,每增加一个对象使用该。其他对象在使用该资源。
2025-03-06 19:20:01
210
原创 string类
可以自动推导变量的类型编译器根据初始化表达式自动推断类型特性浅拷贝 (Shallow Copy)深拷贝 (Deep Copy)内存分配不分配新内存,直接拷贝指针为新对象分配新的内存性能快,因为只是简单地拷贝指针较慢,因为需要分配内存并拷贝数据安全性低,可能导致野指针问题高,避免野指针问题适用场景不需要动态内存分配的对象需要管理动态内存的对象通过深拷贝,可以确保每个对象都有自己的独立内存,避免了野指针问题和数据共享问题。
2025-03-06 17:37:06
851
1
原创 c语言练习(2)
第一次循环:a = 4,b=10--->b小于20,if不成立,b%3==10%3==1成立,b=b+3, 此时b的值为13。第一次循环:a = 3,b=7--->b小于20,if不成立,b%3==7%3==1成立,b=b+3, 此时b的值为10。第一次循环:a = 1,b=1--->b小于20,if不成立,b%3==1%3==1成立,b=b+3, 此时b的值为4。第一次循环:a = 2,b=4--->b小于20,if不成立,b%3==4%3==1成立,b=b+3, 此时b的值为7。
2025-03-04 15:29:43
534
原创 C语言练习
而上题中arr是一个字符数组,不是一个有效的字符串,因为后面没有放置'\0',因此strlen在求解时,将有效字符检测完之后,还会继续向后检测,直到遇到'\0'是才终止,因此答案为不确定,就看紧跟在't'之后的第一个'\0'在什么位置。注释还是非常有用的,要学会写注释,能写注释,写好注释对工程中多人协作很关键的,写注释是一个程序员的好习惯。面试写代码,如果加上注释也是好的加分项。B.库函数是C语言标准约定的,由各个C语言编译器的厂商实现的,所以各个编译器的库函数使用和功能是一样的,但是内部实现是有差异的。
2025-03-03 13:29:14
456
原创 汉诺塔问题详解:递归与分治的经典案例
嘿,小伙伴们!今天我可算撞见了个超有意思的东西,就是那大名鼎鼎的汉诺塔问题!我这好奇心一下子就被勾起来了,迫不及待地想深挖一下,然后把那些好玩的、烧脑的、让人拍案叫绝的解题思路和奇妙故事都分享给大家,咱们一起在这汉诺塔的“迷宫”里找找乐子,看看能不能把这看似不可能的任务变得超简单!快来一起探索吧!
2025-02-17 23:29:20
813
原创 情人节爱心代码
又是一年一度的情人节,空气中弥漫着甜蜜的气息。在这个充满爱意的日子里,大家是否都已经找到了那个特别的人,准备一起度过这个浪漫的时刻呢?无论你是单身还是恋爱中,情人节总能唤起我们内心深处对爱的渴望和对美好事物的追求。对于程序员来说,表达爱意的方式或许与众不同。我们习惯用代码来构建世界,用逻辑来解决问题。那么,为什么不能用代码来表达我们对爱情的热爱呢?在这个特别的日子里,让我们一起探索如何用代码编织出浪漫的爱心图案,为情人节增添一份独特的科技感。
2025-02-14 23:31:27
341
原创 c++:STL介绍
定义:STL(Standard Template Library)是C++标准库的重要组成部分,是一个可复用的组件库,包含数据结构和算法的软件框架。版本原始版本:由Alexander Stepanov和Meng Lee在惠普实验室完成,开源,允许任意使用和修改。P. J. 版本:由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不可公开或修改,可读性低。RW版本。
2025-02-14 22:19:34
782
原创 c++内存管理
/ 动态分配并初始化对象delete p1;// 释放对象并调用析构函数new:调用分配内存,然后调用构造函数。delete:调用析构函数,然后调用释放内存。// 分配内存// 调用构造函数p2->~A();// 调用析构函数// 释放内存return 0;
2025-02-04 22:57:40
313
原创 “用代码点亮圣诞:创建你的虚拟圣诞树”
一年一度的圣诞节又到啦,你还在学习怎么做圣诞树嘛,正好我在学习c++,那今天就用c++来写一个简单的圣诞树的代码
2024-12-25 16:07:24
875
原创 类和对象(下)
当类中有动态分配的资源(如指针),则必须自定义拷贝构造函数和赋值运算符,以防止多次释放相同内存导致的未定义行为。2类型转换在C++中,类型转换是将一种数据类型的值转换为另一种数据类型的过程。这在处理不同类型的变量和对象时非常常见。C++提供了多种类型转换的方式,主要包括隐式转换、显式转换和类型转换运算符。以下是对这些不同类型转换的详细讲解。
2024-12-24 19:15:02
655
1
原创 类和对象(中)
1.类的默认成员函数(Default Constructor):如果类中没有定义任何构造函数,编译器会自动提供一个默认构造函数,允许对象被创建而不需要提供任何参数。如果类定义了其他构造函数,编译器不会再提供这个默认构造函数。(Copy Constructor):如果类中没有定义复制构造函数,编译器会自动提供一个默认的复制构造函数,进行逐成员复制。(Destructor):如果类中没有定义析构函数,编译器会自动提供一个默认的析构函数。它不会执行任何特殊的清理操作,通常只是释放对象的内存。
2024-11-13 11:44:34
925
原创 类和对象(上)
在C语言中,栈的实现通常更加底层,使用结构体和函数,通过手动管理内存和索引来实现。而在C++中,栈的实现则更为优雅,利用类和容器的特性简化了代码逻辑,同时加强了数据的封装性和可维护性。C++的实现通常更易于理解、使用和扩展。
2024-10-12 14:06:24
964
1
原创 初识c++(2)
上次我们说到了缺省参数,接下来让我们接着学习下一个内容:1.函数重载:在C++中,函数重载是指在同一个作用域中定义多个同名的函数,这些函数的参数列表必须不同(参数的数量或类型不同)。函数重载允许根据传入参数的不同来调用不同的函数实现,从而提高代码的灵活性和可读性。
2024-10-10 11:24:37
641
原创 数据结构----二叉树
树是一种模拟具有层次关系的数据集合的非线性数据结构。它由节点和连接节点的边组成,具有一个称为根的起始节点,每个节点可以有零个或多个子节点,但只能有一个父节点。二叉树是树的一种特殊形式,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。这种结构限制使得二叉树在搜索、排序和许多其他算法中非常有用。本文详细介绍了树和二叉树的基本概念、结构特点以及C语言实现。此外,还探讨了一些高级二叉树概念,如完全二叉树、二叉搜索树、平衡二叉树等,并通过代码示例展示了它们的实现。
2024-06-06 20:24:49
769
1
原创 栈和队列:数据结构中的经典之选
栈(Stack)和队列(Queue)是计算机科学中常用的数据结构,它们都属于线性结构,但在操作方式上有所不同。本文将介绍栈和队列的定义、特点、操作以及使用Python实现的代码示例。
2024-05-14 11:11:39
357
1
原创 数据结构------链表OJ
在单向链表中,它们的实现方法如下:删除头节点:将头节点的指针指向下一个节点,释放原来的头节点即可。删除中间节点:遍历链表找到要删除的节点的前一个节点,将其指针指向要删除的节点的后一个节点,释放要删除的节点即可。在中间插入:遍历链表找到插入位置的前一个节点,将新节点的指针指向插入位置的后一个节点,将插入位置的前一个节点的指针指向新节点即可。接下来,我们来演示链表的插入操作。假设我们有一个包含以下元素的链表:1 -> 2 -> 3 -> 4 -> 5,现在我们要在链表的中间位置插入一个新的节点,值为6。
2024-05-09 20:28:37
438
2
原创 指针的讲解
通过以上的讲解和示例代码,希望能帮助大家更好地理解指针的概念和用法。指针在C语言中是非常重要的,掌握好指针的操作可以提高编程效率和灵活性。希望大家能够多多练习和应用指针,在实践中不断加深对指针的理解和掌握。通过指针,我们可以有效地操作内存中的数据,提高程序的灵活性和效率。指针变量必须初始化为一个有效的地址,可以使用取地址运算符&来获取变量的地址并将其赋给指针变量。数组名实际上就是一个指向数组首元素的指针常量,所以可以使用指针操作数组元素。通过指针访问其指向的内存地址中存储的值称为解引用操作,使用*操作符。
2024-03-25 15:39:03
280
原创 c语言---扫雷游戏1
我们递归调用这个函数来检查这个范围内的每个格子,如果找到一个地雷,我们就停止递归并返回结果。然后我们可以使用一个递归函数来遍历整个游戏板,检查每一个格子,标记已经出现地雷的格子,并且在安全区域旁边添加标记。接下来,我们需要定义一个代表游戏板的二维数组,并且设定一些规则来确定每个格子的状态。} else if (board[y][x] == 0) { // 如果格子是空的或者已经被检查过,返回true。if (board[y][x] == -1) { // 如果格子被标记为地雷,返回false。
2024-01-25 21:07:16
309
原创 c语言的循环与分支(2)
通过在每个代码块前添加case标签,我们可以根据表达式的不同值选择执行相应的代码。- 通过指定循环变量的初始值,设置循环条件和更新循环变量,我们可以重复执行一段代码。- if-else语句在条件为真时执行if代码块,在条件为假时执行else代码块。- 在循环内部,使用if语句对条件进行判断,根据条件的不同值执行不同的操作。- 在循环内部,使用switch语句根据表达式的不同值选择执行不同的代码。- 如果条件为真,则执行if代码块;- 在循环内部,我们可以通过改变循环条件的值来控制循环的执行次数。
2023-12-11 10:50:12
55
1
原创 c语言的分支和循环语句
在每次循环迭代时,先执行初始化语句,然后判断条件是否满足,如果满足则执行循环体,然后执行更新语句,再次判断条件,如此反复直到条件不满足为止。需要注意的是,每个case后面的break语句用于结束当前的case分支,如果没有break语句,程序将会继续执行下一个case分支。需要注意的是,if-else语句中的代码块可以嵌套使用,形成多层的条件判断。在每次循环迭代时,先判断条件是否满足,如果满足则执行循环体,然后再次判断条件,如此反复,直到条件不满足为止。在C语言中,最常用的分支语句是if-else语句。
2023-12-04 21:28:08
46
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人