自定义博客皮肤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)
  • 收藏
  • 关注

原创 【linux】进程间的通信--管道

本文介绍了三种进程间通信方式:匿名管道、命名管道和SystemV共享内存。重点分析了前两种管道的特点和实现方法:匿名管道仅限有血缘关系的进程间通信,通过pipe系统调用创建,遵循单向通信机制;命名管道可实现任意进程间通信,使用mkfifo创建管道文件,同样保持单向通信特性。文章通过代码示例演示了父子进程间匿名管道通信,以及客户端-服务器模式下的命名管道通信实现。两种管道都是内核级文件,数据不写入磁盘,具有阻塞、原子性等特性。最后指出命名管道通过共享文件路径实现跨进程通信,而双向通信需创建两个管道。

2025-07-14 17:25:55 669 1

原创 【linux】程序地址空间

本文探讨了进程地址空间的虚拟内存机制。通过分析父子进程对同一变量的修改实验,解释了虚拟地址与物理地址的映射关系,以及写时拷贝的实现原理。文章介绍了操作系统如何通过mm_struct结构体管理虚拟地址空间区域划分,并说明页表在地址转换和内存保护中的作用。最后总结了虚拟地址空间的优势:节省物理内存、解耦进程管理、增强数据安全性,以及通过页表权限控制实现对内存访问的保护机制。

2025-06-27 23:07:02 934

原创 【linux】环境变量

环境变量是操作系统中用于指定运行环境的重要参数,常见的有PATH(命令搜索路径)、HOME(用户主目录)和SHELL(当前Shell路径)。通过命令如echo $变量名、export(设置变量)、env(显示所有环境变量)、set(显示所有变量和函数)和unset(删除变量)可以查询或修改环境变量。修改PATH时需注意避免覆盖原有变量,建议使用export PATH=$PATH:新路径的方式。环境变量具有全局特性,父进程的环境变量会被子进程继承。本地变量仅限当前Shell使用,不会被继承。

2025-06-26 20:01:30 848 1

原创 初步认识linux操作系统与进程

本文介绍了操作系统管理硬件资源的基本原理,重点讲解了进程的概念和管理机制。文章从冯·诺依曼体系结构入手,说明CPU通过内存与输入输出设备交互的工作方式。然后阐释操作系统"先描述后组织"的管理方法,即通过PCB结构体组织进程信息。详细分析了进程状态(运行态、阻塞态等)、fork()创建子进程的原理,以及进程优先级设置的意义。文章还解释了单核CPU如何通过时间片轮转实现多任务并发执行的机制,并强调了操作系统通过系统调用为用户程序提供安全接口的设计理念。最后指出进程具有独立性、竞争性等特征,操

2025-06-21 15:15:10 995

原创 【C++】智能指针

摘要:C++11引入智能指针解决资源管理问题,基于RAII设计思想自动释放资源。文章详细介绍了三种智能指针:auto_ptr(存在所有权转移缺陷)、unique_ptr(禁止拷贝仅支持移动)和shared_ptr(引用计数共享资源)。重点剖析了shared_ptr的实现原理,包括引用计数机制和定制删除器功能,并指出循环引用问题需用weak_ptr解决。通过对比手动资源管理与智能指针的差异,展示了智能指针在防止内存泄漏方面的优势,为C++开发者提供了安全高效的资源管理方案。(150字)

2025-06-16 09:24:09 1300

原创 Linux文件权限详解:从入门到精通

Linux权限管理摘要:权限本质是对用户行为的控制,通过角色(拥有者/所属组/其他用户)和操作权限(读/写/执行)实现。关键点:1)权限修改用chmod命令;2)文件所有者变更需root权限;3)用户隔离机制限制目录访问;4)共享协作需使用粘滞位(t权限)目录。特别说明:文件删除权限取决于所在目录的写权限,而非文件本身权限。

2025-06-14 00:01:20 1731 2

原创 Linux初学者指令

本文介绍了Linux系统初学者需要掌握的常见命令及用法。主要内容包括:1)文件操作基础概念;2)目录操作命令(pwd、ls、cd);3)文件管理命令(touch、mkdir、rmdir、rm);4)文件查看与搜索命令(cat、more、less、find);5)压缩解压命令(zip/unzip、tar);6)系统信息查询命令(uname)。每个命令都配有格式说明和具体使用示例,特别说明了混合使用选项的方法。文章还解答了初学者常见疑问,如隐藏文件标识、tree命令安装等,为Linux入门提供了实用指导。

2025-06-12 04:00:00 1274

原创 C++异常处理

本文介绍了C++异常处理的基本机制,重点阐述了异常处理的"三剑客":throw、try和catch。通过示例代码演示了栈展开过程,说明异常对象如何在不同函数调用层级间传递并匹配处理。文章还探讨了多态体系下的异常处理、异常安全问题及其解决方案。其中特别指出资源管理的重要性,建议使用智能指针避免内存泄漏。异常处理机制将错误检测与处理分离,是程序健壮性的重要保障。

2025-06-10 00:00:00 808

原创 C++11新增重要标准(下)

C++11新特性摘要:主要介绍了右值引用、完美转发、可变参数模板、emplace接口、移动语义、lambda表达式、function包装器和bind绑定等核心功能。右值引用通过std::forward实现完美转发;可变参数模板支持参数包扩展;emplace系列接口比传统push/insert更高效;新增移动构造和移动赋值语义;lambda表达式提供匿名函数对象;function可统一包装各类可调用对象;bind可修改参数位置和固定参数值。这些特性显著提升了C++的编程效率和性能,特别是emplace系列接口

2025-06-08 00:00:00 1523

原创 C++11新增标准讲解(上)

一切对象均可用 {} 初始化,例如下面代码,不管是自定义类型或者内置类型都可以使用{}初始化,还能将=省略。需要注意的是当我们使用vector<Data>时不能用{}来初始化,可以发现下图使用{}初始化时,只有年份被初始化了,其他都是使用的缺省值。如果需要初始化vector<Data>的话就需要使用来初始化容器可以看到push_back也可以使用隐式类型转来插入数据。

2025-06-06 21:25:37 755

原创 平衡的艺术:深入理解AVL树的插入操作

摘要: AVL树是一种自平衡二叉搜索树,通过平衡因子确保树的高度平衡,使查找效率保持在O(logN)。插入节点时,AVL树根据平衡因子变化(0/±1/±2)采取不同操作:若平衡因子为0则无需调整;为±1则向上更新;为±2则进行旋转调整。旋转分为四种情况:左左失衡(单次右旋)、右右失衡(单次左旋)、左右失衡(先左旋后右旋)和右左失衡(先右旋后左旋)。每种旋转后需重新计算平衡因子,确保树始终保持平衡状态,从而保证高效查询性能。(149字)

2025-05-29 20:37:21 805

原创 八大排序算法(C++)

先说结论,该排序算法在实践中没有意义,但是对初学者有较好的教学意义该算法时间复杂度为O(N*2)空间复杂度为O(1)最好情况下时间复杂度为O(N)当数据原本是有序时。

2025-05-19 22:58:56 446

原创 《C++基础第二篇---类(下篇)》

类中的默认成员函数包括构造函数、析构函数和拷贝构造函数。构造函数用于初始化对象,其函数名与类名相同,无返回值,可重载并可设置参数缺省值。若未定义构造函数,编译器会调用默认无参构造函数。析构函数用于释放资源,函数名前加~,对象生命周期结束时自动调用。若未定义析构函数,系统会调用默认析构函数。拷贝构造函数用于将一个对象的值复制给另一个对象,参数必须为同类对象的引用。若类成员包含自定义类型,需自定义拷贝构造函数以避免共享资源的问题。这些函数在对象实例化、销毁和复制时自动调用,确保对象的正确初始化和资源管理。

2025-05-09 16:05:11 1094

原创 《C++基础第二篇---类(上篇)》

如上面代码所示类的定义与C语言中结构体的定义非常的相似,C++中为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_或者m 开头,注意C++中这个并不是强制的。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或 者成员函数,这些成员默认是私有的,外部不能直接访问,如下图所示。可以按需求直接在类里面添加访问权限。

2025-05-05 16:59:07 1498

原创 C++——错题总结-1

A.引用必须初始化,指针不必B.引用初始化以后不能被改变,指针可以改变所指的对象C.不存在指向空值的引用,但是存在指向空值的指针D.一个引用可以看作是某个变量的一个“别名”E.引用传值,指针传地址F.函数参数可以声明为引用或指针类型。

2025-05-01 16:21:19 590

原创 《初识C++——第一篇》

C++是一种高效、灵活的通用编程语言,由Bjarne Stroustrup于1983年扩展自C语言,支持面向对象(OOP)、泛型编程和底层内存操作。

2025-04-29 22:37:00 1308

原创 《C语言实现快速排序:原理、代码与优化全解析》

快速排序是20世纪十大算法之一,因其高效性被广泛应用于C/C++标准库、数据库内核等场景,理解它不仅能提升编程能力,还能深入掌握分治思想。 在理解快排之前可以先回顾一下二叉树的前序遍历,与我们接下来要讲的快排有相似之处,二叉树每次遍历时分为根,左,右依次递进,快排也差不多是这样的。在快排中,每次选一个数为基准点,每次围绕这个基准点进行操作,利用这个基准将数组分为两个区间,将小于基准的分在左边,大于基准的分在右边,这样一直递归直到数组有序。 快排有好几种方法能够实现,我们在这里重点

2025-04-27 17:25:19 1172

原创 结构体,联合体在内存中是如何存储的呢

结构体与联合体都存在着对齐规则,但两种对齐规则有相似也有不同,这些规则都是为了更高效率的访问成员而设计的。更多细节请自行查找资料,欢迎在评论区讨论。

2025-04-24 10:29:58 850

原创 链表与顺序表的优缺点

链表(双向循环链表)存储空间:物理上不一定连续,逻辑上连续顺序表存储空间:物理和逻辑上都是连续的扩展: 链表 顺序表元素高效存储 低 高链表跟顺序表都是在内存上创建的,cpu在访问时会先判断能否存的下,如果链表与顺序表的内存过大,则会通过存储量更大的缓存器来暂时存储,因为顺序表的

2025-04-22 22:57:17 429

原创 C语言小笔记之——易忘,易错,易搞混1.0

将num个字节的内容复制到目标位置,可以是任何类型的数据(注:strcpy只能拷贝字符串),用memcpy来移动自身数据时会发生覆盖,例如下图,将des位置开始往后三个元素拷贝到src位置开始,会发生覆盖。该字符串长度为7,因为\t为转义字符算一个字符,\t是制表符,\121表示ASCLL码值。该函数实现时分为两种情况,一种是当des地址小于src时也就是说。数组名代表的是首元素的地址,但是有两种特殊情况,当数组名在用。strlen计算字符串长度时只会计算有效的字符串,操作符时代表的是整个数组的地址,

2025-04-22 09:35:17 388

原创 C语言基础之——求字符串中最长回文字符串的长度

是指从左向右和从右向左读完全相同的。例如:121、1331、5等。其特点是数字的排列关于中心对称,如12321,123321,也是一样的,例如"abcba","aba"等等。我们知道了这些之后就能去求回文数字符串的长度了,求长度的方法有很多种,比如从字符串开始向延申,分别比较两边的字符,当两边返回长度,当然这是当我们不知道这个字符串是不是回文数的情况下,知道是回文数的话直接求长度了哈哈,刚刚的方法是求解标题题目的方法,用这个方法时我们还需要判断给定字符串长度是为奇数还是偶数。

2025-03-29 23:19:48 525

原创 用C语言基础实现三子棋小游戏

通过这个项目的实践,可以巩固C语言的数组操作、函数封装和逻辑控制等基础知识,同时为更复杂的棋类游戏开发打下基础。数组越界:坐标转换时需严格验证范围输入处理:需要处理非数字输入的情况平局判断:必须在所有格子填满且没有胜者时才判定平局随机数生成:注意在使用rand()前初始化随机种子。

2025-03-25 22:54:54 608

空空如也

空空如也

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

TA关注的人

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