自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++仿函数详解

仿函数是重载了operator()的类对象,兼具函数调用特性和类成员存储能力。相比普通函数,仿函数能封装状态(通过成员变量),适配STL算法更灵活,支持多参数类型重载。其本质是用类模拟函数行为,核心价值在于解决普通函数无法携带状态、复用性差等问题。无状态仿函数需加const修饰operator(),有状态仿函数则需避免const以修改成员变量。STL算法会拷贝仿函数实例,建议接收返回值确保状态更新。仿函数通过operator()重载实现函数式调用,完美平衡了函数行为与对象特性。

2025-12-02 13:17:54 972

原创 vector深度剖析及模拟实现

本文模拟实现了C++标准库中的vector容器核心功能。通过三个指针(_start、_finish、_end_of_storage)管理动态数组,实现了构造/析构、迭代器、元素访问、容量操作和元素修改等核心接口。重点包括:1) 采用现代写法实现拷贝构造和赋值重载;2) 提供安全的元素访问方法;3) 实现动态扩容机制(默认4开始,2倍增长);4) 正确处理迭代器失效问题。测试用例验证了各种操作的正确性,包括基本类型和自定义类型的处理。

2025-11-27 01:16:44 846

原创 C++中const的核心作用及用法

C++中const关键字的核心作用是限定变量不可修改,保障代码安全性和可读性。主要应用场景包括:1)修饰普通变量(全局/局部),使其成为只读常量;2)修饰指针时,通过位置区分是限制指针指向(const)还是指向内容(const);3)在类中修饰成员变量、成员函数和对象,限制成员修改;4)修饰函数参数和返回值,特别是引用/指针类型,防止意外修改。const与指针结合时需注意位置语义,在类中使用时要注意初始化方式和成员函数重载规则。合理使用const能提高代码健壮性,是C++重要的类型安全机制。

2025-11-24 23:42:10 735

原创 C++ vector 容器详解(1)

本文介绍了C++标准库中的vector容器及其使用方法。vector是一个可变大小的动态数组,支持高效的随机访问和尾部操作。主要内容包括:1.vector的定义方式,包括无参构造、指定数量构造、拷贝构造和迭代器初始化;2.迭代器使用,包括正向/反向遍历和const迭代器;3.空间管理函数,如size()、capacity()、resize()和reserve();4.常用操作,包括push_back/pop_back尾插尾删、find查找、insert/erase插入删除、swap交换,以及operator

2025-11-17 21:57:23 1038

原创 Linux上下文详解

摘要: 上下文是程序或系统的执行环境和状态信息,分为进程上下文和中断上下文两种类型。进程上下文包含CPU寄存器、进程控制块、内存空间等核心信息,用于进程切换时的状态保存与恢复,支持多任务并发执行。中断上下文则是在硬件中断时创建的临时执行环境,具有无进程关联、不可阻塞等特性,需要快速处理中断请求。两种上下文在数据结构、调度方式和应用场景上存在显著差异,理解其机制对操作系统开发和性能优化至关重要。本文详细剖析了二者的组成结构、生命周期和切换流程,并提供了Linux内核代码示例加以说明。

2025-11-11 22:35:33 883

原创 Linux进程(3)

简单来说,程序是“剧本”,进程是“舞台上正在表演的剧目”,地址空间就是对应的“舞台布局”——剧本的布局是纸上的蓝图,而剧目的布局是真实搭建的、可供演员(指令和数据)活动的空间。进程地址空间和程序地址空间的核心区别在于:程序地址空间是静态的、磁盘上的文件结构;:每个进程拥有独立的虚拟地址空间,进程间无法直接访问对方内存,彻底杜绝“进程A写坏进程B数据”的情况,是现代操作系统稳定运行的基石。:即使两个进程运行同一个程序,它们的进程地址空间也是独立的,相同的虚拟地址会映射到不同的物理内存。

2025-11-09 23:27:33 1099

原创 C++中lower_bound 与 upper_bound 函数详解

摘要: 本文系统介绍了C++标准库中的lower_bound和upper_bound函数。这两个二分查找算法用于在有序区间高效定位元素:lower_bound返回第一个≥目标值的元素位置,upper_bound返回第一个>目标值的元素位置。使用前提是区间必须有序(默认升序),参数包括迭代器区间和目标值,支持自定义比较函数。主要用途包括:判断元素存在性、统计重复元素次数、有序插入元素以及处理降序序列。通过比较两个函数的返回值差可获取目标值出现次数。使用时需注意升序/降序对应的不同比较逻辑。

2025-11-05 21:17:47 1134

原创 Linux环境变量(2)

本文详细介绍了程序命令行参数(argv)和环境变量(env)的机制及使用方法。argv存放命令行参数数组,env存储环境变量键值对,两者均由操作系统在程序启动时传入。文章对比了二者的异同,并提供了通过main函数参数、第三方变量environ以及标准库函数(getenv/setenv/putenv)获取和设置环境变量的多种方法。同时解释了环境变量的作用域特性,区分了本地属性和全局属性的差异,说明环境变量仅在当前终端会话内全局有效。

2025-11-04 17:55:43 551

原创 Linux环境变量(1)

Linux环境变量操作指南 本文系统介绍了Linux环境变量的概念和操作方法。内容包括:常见环境变量(如PATH、HOME等)的作用,查看变量的三种方式(单个/全部/含局部变量),修改变量的临时与永久设置方法。特别提供了四种故障排查场景:命令找不到(PATH异常)、动态库缺失(LD_LIBRARY_PATH问题)、变量不生效、批量检查变量。最后说明了环境变量的存储结构是字符指针数组。通过export、unset等命令可以灵活管理环境变量,通过修改~/.bashrc或/etc/profile可实现永久配置。

2025-11-03 01:20:37 1000

原创 Linux进程(2)

本文介绍了Linux系统中进程的几种状态(R/S/D/T/X/Z)及其转换关系,重点分析了僵尸进程的危害和四种解决方法:父进程主动等待、注册信号处理函数、父进程先退出和使用fork()两次。同时讲解了进程优先级机制,包括PRI和NI值的概念及调整方法,以及nice/renice命令的使用。最后阐述了进程的竞争性、独立性以及并行与并发的区别,为理解Linux进程管理提供了基础概念框架。

2025-10-29 23:01:40 945

原创 Linux进程(1)

本文摘要: 操作系统(OS)是计算机系统的核心管理软件,负责管理硬件资源并为用户程序提供执行环境。其核心功能包括进程管理、内存管理、文件系统等。在Linux系统中,进程信息存储在task_struct结构体中,通过/proc目录或ps/top命令可查看进程状态。系统调用是操作系统提供的接口,fork()是最重要的进程创建函数,它会复制父进程资源生成子进程,并通过返回值区分父子进程(父进程返回子进程PID,子进程返回0)。理解操作系统管理机制和进程概念对系统编程至关重要。

2025-10-26 19:58:58 877

原创 冯诺依曼体系结构

冯诺依曼体系结构是现代计算机的基础设计框架,其核心特点是将程序指令和数据以二进制形式统一存储在内存中。该体系包含五大基本组件:运算器、控制器、存储器、输入设备和输出设备。CPU只能直接访问内存,所有外设必须通过内存与CPU交互。内存的引入解决了CPU与低速外设之间的速度不匹配问题,在性能和成本之间取得平衡。目前绝大多数计算机,从个人笔记本到大型服务器,都遵循这一经典架构。

2025-10-23 13:27:47 428

原创 Linux基础开发工具(1)

在Linux下安装软件, ⼀个通常的办法是下载到程序的源代码, 并进⾏编译, 得到可执⾏程序.但是这样太⿇烦了, 于是有些⼈把⼀些常⽤的软件提前编译好, 做成软件包(可以理解成windows上 的安装程序)放在⼀个服务器上, 通过包管理器可以很⽅便的获取到这个编译好的软件包, 直接进⾏安装.软件包和软件包管理器, 就好⽐ "App" 和 "应⽤商店" 这样的关系.

2025-10-22 14:47:14 753

原创 linux基本指令

cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。公历是现在国际通用的历法,又称格列历,通称阳历。-a或–all 详细输出所有信息,依次为内核名称,主机名,内核版本号,内核版本,硬件名,处理器类型,硬件平台类型,操作系统名称。

2025-10-21 17:56:19 660

空空如也

空空如也

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

TA关注的人

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