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

原创 Linux-线程概念与控制

本文摘要: 本文系统性地介绍了Linux线程相关概念及实现机制。首先阐述了线程作为进程内部执行流的基本概念,分析了线程相比进程在创建、切换和资源占用方面的优势。随后详细讲解了分页式存储管理机制,包括虚拟地址与页表的关系、物理内存管理、多级页表结构以及TLB快表的作用。文章还深入探讨了线程控制相关API的使用方法,包括线程创建、终止、等待和分离等操作,并通过代码示例演示了线程封装实现。最后对比了进程与线程的关系,指出线程共享进程地址空间但拥有独立栈和寄存器等特性。整体内容涵盖Linux线程的核心原理和实践应用

2025-12-22 17:01:32 787

原创 Linux-进程间通信

本文主要介绍了进程间通信(IPC)的几种方式。首先阐述了进程间通信的四大目的:数据传输、资源共享、事件通知和进程控制。然后详细讲解了管道通信机制,包括匿名管道和命名管道的创建、使用方法和特点。匿名管道适用于具有亲缘关系的进程间通信,而命名管道可用于不相关进程间的通信。文章还介绍了System V共享内存机制,这是最快的IPC形式,并给出了具体实现代码示例。最后通过实例演示了如何使用管道实现访问控制版的共享内存,展示了server和client进程间的通信过程。这些IPC机制为Linux系统中进程间数据交换提

2025-12-05 23:05:45 850

原创 Linux-Ext系列文件系统

本文深入解析了Linux文件系统的核心概念与实现原理。首先从磁盘物理结构入手,详细介绍了CHS和LBA地址转换机制。随后重点阐述了ext2文件系统的设计:将分区划分为多个块组,每个块组包含超级块、组描述符表、块位图、inode位图等关键数据结构。文章详细说明了inode如何通过15个指针映射数据块,并解释了目录文件存储文件名与inode映射关系的特性。最后对比了软硬链接的实现差异:硬链接共享inode节点,而软链接是独立的快捷方式文件。全文系统性地揭示了从物理磁盘到文件访问的完整处理流程,包括路径解析、挂载

2025-10-21 22:13:21 631

原创 Qt-信号与槽机制

本文介绍了Qt框架中的信号与槽机制原理及其实战应用。信号是由对象在特定事件发生时发出的通知,槽是普通成员函数,可通过connect()函数与信号建立连接。文章详细说明了信号与槽的四种连接方式,并分析了该机制的优势(松散耦合)和性能损耗(多线程排队、参数传递等)。最后通过一个计算圆球体积的GUI程序实例,展示了如何实现当文本框内容变化时,自动触发计算并显示结果的完整流程,包括界面布局、信号槽连接和具体计算逻辑的实现。

2025-09-16 21:53:44 468

原创 Linux-基础IO

本文探讨了文件操作的系统级实现与缓冲区机制。从系统角度看,文件是属性与内容的集合,所有操作本质都是进程通过系统调用完成的。文件描述符作为数组下标指向打开的文件,默认分配规则是使用最小可用整数。Linux通过"一切皆文件"理念将设备抽象为文件对象,统一了操作接口。缓冲区机制则通过减少系统调用次数提高效率,分为全缓冲、行缓冲和无缓冲三种类型。文章还分析了C语言文件接口与系统调用的关系,并通过实验展示了缓冲区在重定向和fork场景下的特殊表现,阐明了库函数与系统调用的缓冲差异。

2025-09-07 22:21:54 1045

原创 Qt-Qt程序的创建

本文介绍了Qt项目开发的基本流程。首先需要选择构建工具(qmake或CMake),qmake适合纯Qt项目,CMake适合更复杂的跨平台项目。然后说明了.pro文件的作用和基本配置,包括指定Qt模块、目标文件名、源文件等。最后展示了一个简单的"HelloWorld"程序示例,包含主窗口设置和标签控件的基本配置,演示了如何调整窗口大小、标题以及控件的样式、字体和位置。程序运行后会显示一个带有绿色背景、红色文字的"HelloWorld"标签窗口。

2025-09-01 10:38:31 202

原创 Linux-进程控制

本文介绍了Linux进程管理的核心概念和技术。主要内容包括:1)进程创建:通过fork()创建子进程,实现写时拷贝技术保证进程独立性;2)进程终止:正常终止方式(return、exit、_exit)和异常终止,以及退出码的含义;3)进程等待:wait/waitpid方法防止僵尸进程,获取子进程状态;4)进程替换:exec函数簇实现程序加载替换;5)自主Shell实现:整合上述技术构建命令行解释器。文章详细讲解了相关系统调用的使用方法和原理,并提供了代码示例。这些技术是Linux系统编程的基础,也是理解进程管

2025-08-13 19:10:23 1068

原创 Linux-进程概念

本文系统介绍了计算机系统的核心概念,包括冯诺依曼体系结构、操作系统、进程管理和虚拟内存。重点解析了进程的PCB结构(task_struct)、五种状态转换(运行/睡眠/停止/僵尸/死亡)以及父子进程关系;深入探讨了虚拟地址空间的实现原理(mm_struct管理),揭示同一虚拟地址映射不同物理地址的机制;最后分析了环境变量的作用与访问方式。全文通过代码示例和内核数据结构解析,展现了操作系统如何通过虚拟内存和进程调度实现资源管理、进程隔离和内存保护,为理解现代计算机系统提供了理论基础。

2025-08-09 15:23:05 1043

原创 Linux-基础开发工具

本文介绍了Linux开发环境中常用的工具链,包括:1)软件包管理器yum/apt的基本使用;2)vim编辑器的三种模式及常用操作;3)gcc/g++编译器的工作流程和动静态链接区别;4)Makefile自动化构建规则;5)进度条程序实现中的缓冲区问题;6)Git版本控制基本操作;7)gdb调试器使用方法。这些工具构成了Linux下C/C++开发的基础环境,涵盖了从代码编辑、编译构建到版本控制的完整开发流程。

2025-07-24 17:49:24 606

原创 Linux-权限

当我们查询一个文件或或者目录详情时会显示包括权限,占用内存,修改时间以及文件名第1个字母为文件类型,后面9个字母每3个为1组为3个角色的权限。后面显示的是文件的拥有者和所属组名• ⽬录的可执⾏权限是表⽰你可否在⽬录下执⾏命令。• 如果⽬录没有-x权限,则⽆法对⽬录执⾏任何命令,甚⾄⽆法cd进⼊⽬,即使⽬录仍然有-r读 权限(这个地⽅很容易犯错,认为有读权限就可以进⼊⽬录读取⽬录下的⽂件)• ⽽如果⽬录具有-x权限,但没有-r权限,则⽤⼾可以执⾏命令,可以cd进⼊⽬录。但由于没有⽬录的读权限。

2025-07-11 17:39:22 962

原创 C++智能指针

如果。

2025-07-06 15:37:11 1316

原创 Linux基础指令

本文总结了Linux常用命令的使用方法,包括文件操作、目录管理、信息查询等核心功能。重点介绍了ls、pwd、cd、stat等基础命令的语法和选项,详细解析了文件时间戳(atime/mtime/ctime/btime)。通过touch、mkdir、rm等命令演示了文件创建与删除操作,并讲解了cp/mv的文件复制移动技巧。还包含cat/more/less等文本查看命令,find/grep等搜索工具,以及zip/tar压缩解压命令的使用说明。最后补充了热键操作、关机指令和系统信息查询命令,为Linux初学者提供了

2025-07-03 19:15:17 1099

原创 C++异常处理

在大型软件项目中,异常处理是确保程序健壮性和稳定性的关键组成部分。然而,如果团队成员随意抛出异常,可能会导致代码难以维护和理解。为了解决这个问题,许多公司和开发团队选择定义一套自定义的异常体系,以实现规范的异常管理。自定义异常体系的核心思想是创建一个统一的异常基类,所有的自定义异常都从这个基类继承。这种设计模式不仅有助于统一异常的处理方式,还可以在基类中定义一些通用的属性和方法,如错误代码、错误消息等。

2025-06-28 13:56:11 575 2

原创 C++11新特性

摘要: 本文介绍了C++11的5个关键特性:1)初始化列表(std::initializer_list)统一了各类对象的初始化语法;2)类型推导(decltype)增强了模板编程的灵活性;3)右值引用(&&)实现了移动语义和完美转发,优化资源管理;4)lambda表达式简化了匿名函数的定义,支持捕获上下文变量;5)包装器(function和bind)提供了通用的可调用对象适配机制。这些特性显著提升了C++的代码简洁性、运行效率和泛型编程能力,如移动构造减少拷贝开销,lambda替代仿函数,b

2025-06-25 23:27:13 973

空空如也

空空如也

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

TA关注的人

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