自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux系统入门:线程概念与控制

本文系统介绍了Linux线程的概念、实现原理与控制方法。主要内容包括:线程的基本概念,Linux通过轻量级进程模拟线程的机制;分页式存储管理原理,包括虚拟地址、页表和物理内存管理;线程的优缺点分析;Linux线程控制API(创建、终止、等待、分离等);线程ID与进程地址空间布局的关系;以及C++对POSIX线程库的封装实现。文章详细阐述了Linux线程的核心机制,包括资源划分与共享、线程异常处理、线程用途等,并通过代码示例展示了线程创建、同步和管理的具体方法。

2025-11-25 16:07:27 738

原创 Linux系统入门:进程控制

本文摘要:本文详细介绍了Linux进程管理的核心概念和操作,包括进程创建、终止、等待和程序替换四个主要部分。1. 进程创建:重点讲解fork函数的工作原理和写时拷贝技术。2. 进程终止:分析进程退出的三种场景,介绍exit、_exit等终止方法及退出码机制。3. 进程等待:阐述wait和waitpid函数的使用,包括阻塞/非阻塞等待方式。4. 程序替换:解析exec系列函数(如execl、execvp等)的功能差异和使用场景。文章通过代码示例演示了每个概念的实际应用,为理解Linux进程管理提供了全面指导。

2025-11-05 19:43:43 771

原创 Linux系统入门:进程信号

本文系统介绍了Linux信号机制,从信号的基本概念、产生方式到信号的处理流程。信号是进程间异步通信的一种方式,可分为硬件异常(如除零错误)和软件条件(如定时器)产生。文章详细讲解了信号的保存(未决和阻塞状态)、捕捉(用户态与内核态切换)以及相关系统调用(如signal、sigaction)。此外还探讨了可重入函数、volatile关键字的作用,以及SIGCHLD信号在子进程回收中的应用。通过生活化的快递类比,生动说明了信号的异步处理特性。

2025-11-02 22:38:38 778

原创 Linux 系统入门:环境变量&&虚拟地址空间

本文主要介绍了操作系统中的环境变量和程序地址空间两大核心概念。第一部分详细阐述了环境变量的基本概念、常见命令(PATH、HOME等)及其全局特性,说明了如何通过代码获取环境变量。第二部分深入讲解了程序地址空间,包括虚拟地址空间的组织结构(mm_struct)、页表机制和写时拷贝原理,分析了虚拟内存管理的优势:进程隔离、内存保护以及实现虚拟内存技术。文章通过大量代码示例演示了环境变量的使用方法和虚拟地址的特性,揭示了操作系统如何通过虚拟地址空间为进程提供统一的内存视图,同时确保系统稳定性和安全性。

2025-10-30 23:02:55 676

原创 Linux系统入门:System V进程间通信

System V标准的三种资源 -- 共享内存、消息队列、信号量的认识

2025-10-25 22:17:29 954

原创 Linux系统入门:匿名管道&命名管道

本文介绍了进程间通信(IPC)的概念和实现方式,重点讲解了管道通信机制。主要内容包括: IPC的基本概念和目的:数据传输、资源共享、事件通知和进程控制。 IPC分类: 管道(匿名管道和命名管道) SystemV IPC POSIX IPC 管道通信: 匿名管道:用于有亲缘关系的进程间通信,通过pipe()创建,fork()共享 命名管道:通过mkfifo创建,允许无亲缘关系进程通信 详细讲解了管道的读写规则、特点和内核实现机制 实践应用: 通过代码示例展示了父子进程如何使用管道通信 实现了进程池模型,展示多

2025-10-23 22:46:07 1023

原创 Linux系统入门:动静态库的理解与加载

本文系统介绍了编程中的库概念及其实现原理。主要内容包括:1.库的分类:静态库(.a/.lib)和动态库(.so/.dll),前者在编译时链接到可执行文件,后者在运行时加载共享;2.库的生成与使用:详细说明了静态库和动态库的生成命令及使用方法;3.ELF文件格式:深入解析了可执行文件的结构,包括节(section)合并为段(segment)的机制;4.链接加载原理:分别阐述了静态链接和动态链接的工作机制,重点分析了动态库的GOT(全局偏移量表)和PLT(过程链接表)实现原理。文章通过技术细节揭示了库在程序运行

2025-10-18 18:38:36 1066

原创 Linux系统入门:文件系统

本文系统介绍了Linux文件系统的核心概念与实现机制。首先从磁盘物理结构入手,详细讲解了CHS与LBA地址转换原理。随后阐述文件系统基本概念,包括块、分区和inode的引入。重点分析了ext2文件系统的结构设计,包括块组划分、超级块、GDT、位图表等核心组件,以及inode与数据块的映射关系。深入探讨了目录文件的本质、路径解析过程、路径缓存机制和分区挂载原理。最后对比了硬链接与软链接的实现差异。全文通过技术细节揭示了Linux如何组织和管理磁盘文件,为理解文件系统工作原理提供了清晰的技术框架。

2025-09-27 23:25:11 1203

原创 Linux 系统入门:文件操作&&基础IO

本文主要介绍了Linux文件系统的基本概念和操作接口。首先从狭义和广义角度理解文件,包括磁盘文件和设备文件;然后讲解了C语言的文件操作接口(fopen/fwrite/fread等)以及底层的系统调用(open/write/read等);重点分析了文件描述符的分配规则和重定向机制;阐述了"一切皆文件"的设计理念;最后讨论了缓冲区的类型和作用,比较了库函数和系统调用在缓冲区处理上的差异。文章通过代码示例展示了文件描述符的重定向操作,并解释了缓冲区在不同情况下的刷新机制。

2025-09-23 15:22:53 930

原创 C++:现代C++异常体系设计:C++11从基础语法到自定义异常层次结构

本文介绍了C++异常处理机制的核心概念与应用。异常通过抛出对象实现错误传递,将问题检测与处理分离。文章详细讲解了异常抛出(throw)与捕获(try/catch)机制、栈展开过程、异常类型匹配规则,并提供了除零异常等示例代码。同时探讨了异常安全、重新抛出、异常规范等高级话题,展示了如何通过继承体系设计异常类层次结构。最后介绍了C++11的noexcept关键字及其检测方法,帮助开发者更好地控制和管理程序中的异常行为。

2025-07-18 17:13:23 759

原创 C++:现代 C++ 编程基石,C++11核心特性解析与实践

本文系统介绍了C++11引入的多项重要特性:1. 列表初始化{}实现了统一的初始化语法,支持内置类型和自定义类型;2. initializer_list类支持容器通过{x1,x2,x3...}形式初始化;3. 右值引用和移动语义优化资源管理,减少拷贝开销;4. 可变参数模板支持参数包,实现更灵活的泛型编程;5. 类功能新增默认移动构造/赋值,defult/delete控制默认函数生成;6. lambda表达式简化匿名函数定义,支持多种捕获方式;7. function包装器和bind适配器统一可调用对象处理。

2025-07-16 20:53:26 1064 2

原创 C++:多态机制详解

c++多态详解。静态多态​​:通过函数重载和模板实现;​​动态多态​​:依赖虚函数(virtual)和继承,运行时通过​​虚函数表(vtable)​​ 动态绑定函数地址。动态多态需满足:继承关系、子类重写虚函数、父类指针/引用指向子类对象。override 和 final关键字。

2025-06-09 02:03:56 1294

原创 Linux 系统入门:操作系统&&进程详解

认识冯诺依曼体系结构和操作系统OS(Operator System) ,进程的详解,进程基本概念与基本操作 ,进程状态,进程切换和Linux下真实的调度算法

2025-05-04 22:28:39 569

原创 C++:继承机制详解

继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许我们在保持原有类特性的基础上进行扩展,增加方法(成员函数)和属性(成员变量),这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的函数层次的复用,继承是类设计层次的复用。

2025-04-25 18:30:49 1049

原创 C++模板学习(进阶)

非类型模板参数的学习,函数模板和类模板的特化的认识,模板分离编译

2025-04-22 22:26:16 992

原创 Linux系统入门:基础开发工具(下)git,cgdb操作指南

最详细的git,cgdb操作学习指南

2025-04-20 16:35:44 1317 1

原创 C++ std::stack,queue和priority_queue的超详细指南

C++ std::stack,queue,priority_queue,deque和仿函数的认识和学习

2025-04-15 22:02:35 1056

原创 Linux系统入门:基础开发工具(上)vim,gcc/g++,make/makefile

详细介绍了Linux的基础开发工具vim,gcc/g++,make/makefile的使用和说明

2025-04-01 22:12:32 1173

原创 Linux系统入门:权限的认识和学习

Linux权限的学习,cannot open directory '.': Permission denied解决方法

2025-03-17 22:12:16 1612

原创 C++ std::list超详细指南:基础实践(手搓list)

本文详细介绍了C++标准模板库中的list容器。主要内容包括:1. list的核心特性是采用双向循环链表结构,支持O(1)时间复杂度的插入删除;2. 构造函数的多种形式及迭代器的使用方式,包括正向/反向迭代器;3. 关键接口如empty()、size()、front()等操作方法;4. 迭代器失效问题及注意事项;5. 通过List.h和test.cpp示例展示了list的模拟实现;6. 对比分析了list与vector在底层结构、访问效率、空间利用率等方面的差异。list适合频繁插入删除的场景,而vecto

2025-03-13 22:01:18 1630

原创 Linux系统入门:常用命令速查手册

本文摘要: 本文系统介绍了Linux常用命令及其功能,包括文件操作(pwd、ls、touch、mkdir等)、目录管理(cd、rm)、文本处理(cat、less、grep)、压缩解压(zip、tar)、系统信息查询(date、uname)等。同时讲解了Linux核心概念:文件系统结构(树状组织)、路径分类(绝对/相对路径)、文件属性、重定向机制等。重点强调Linux"一切皆文件"的设计哲学,命令本质是可执行文件,并详细说明了各命令参数选项的使用场景(如ls的-l、-a等)。还涉及实用技巧

2025-03-09 19:54:30 1182

原创 C++ std::vector 超详细指南:基础实践(手搓vector)

本文全面介绍了C++ STL中的vector容器。主要内容包括:vector的基本概念(动态数组特性、随机访问、自动扩容等);常用接口(构造方法、容量操作、迭代器使用、增删查改等);重点讲解迭代器失效问题及其典型场景(插入/删除元素、容量调整时的风险);最后展示了vector类的模拟实现代码,包括内存管理、迭代器设计等核心功能。文章通过大量示例代码演示了vector的正确使用方式,并特别强调了迭代器失效等易错点,为开发者提供了vector从基础使用到底层实现的完整知识体系。

2025-03-05 21:21:04 3335

原创 C++ std::string 超详细指南:基础实践(手搓string)

本文主要介绍了C++中auto关键字和范围for循环的使用方法,以及string类的常用接口和模拟实现。内容包括:auto的限制条件和应用场景;范围for的底层实现原理;string类的构造、容量操作、访问遍历、修改操作等接口说明;并通过string.h和string.cpp展示了string类的模拟实现过程,重点分析了浅拷贝和深拷贝的区别及实现方式。最后提供了一些经典问题的解决方案,如浅拷贝导致的内存问题及深拷贝的正确实现方法。

2025-02-27 17:55:26 1268

原创 C++模板学习(初阶)

class 类模板名// 类内成员定义public:,_size(0){}~Stack()private:T* _array;// 模版不建议声明和定义分离到两个文件.h 和.cpp会出现链接错误int main()// 类模板都是显示实例化// intreturn 0;

2025-02-23 16:09:29 1182

原创 C/C++内存管理

概念行为new1. 调用分配内存2. 调用构造函数初始化对象仅负责分配原始内存(不调用构造函数)delete1. 调用析构函数销毁对象2. 调用释放内存仅负责释放内存(不调用析构函数)new T[N]1. 调用operator new[]函数,在operator new[]中实际调用operator new函数完成N个对象空间的申请2. 在申请的空间上执行N次构造函数delete[]1. 在释放的对象空间上执行N次析构函数,完成N个对象中资源的清理。

2025-02-20 19:36:56 1082

原创 C++类和对象的认识(下)

5.尽量使用初始化列表初始化,因为那些你不在初始化列表初始化的成员也会走初始化列表,如果这个成员在声明位置给了缺省值,初始化列表会用这个缺省值初始化。3.内部类本质也是⼀种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使用,那么可以考虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其他地方都用不了。1.如果⼀个类定义在另⼀个类的内部,这个内部类就叫做内部类。6.友元类的关系是单向的,不具有交换性,比如A类是B类的友元,但是B类不是A类的友元。

2025-02-16 01:27:59 398

原创 C++类和对象的认识(中)

要求调用这个成员变量的默认构造函数初始化。如果这个成员变量,没有默认构造函数,那么就会报错,我们要初始化这个成员变量,需要用初始化列表才能解决。注:C++把类型分成内置类型(基本类型)和自定义类型。内置类型就是语言提供的原生数据类型,如:int/char/double/指针等,自定义类型就是我们使用class/struct等关键字自己定义的类型。

2025-02-16 01:13:00 935

原创 C++类和对象的认识(上)

class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。C++中struct也可以定义类,C++兼容C中struct的用法,同时struct升级成了类,明显的变化是struct中可以定义函数,⼀般情况下我们还是推荐用class定义类定义在类面的成员函数默认为inline{}public:void Pop(){}int Top()return 0;

2024-12-13 17:29:05 808

原创 C++入门基础

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接⼀对{}即可注意不用在括号后面加;),{}中即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各自独立,不同的域可以定义同名变量,所以下面的rand不在冲突了。C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。局部域和全局域除了会影响编译查找逻辑,还。

2024-12-06 18:22:52 806

原创 C语言:使用fwrite和fread实现一个音乐或者视频文件的拷贝

at+”——读写打开一个文本文件,允许读,或在文件未追加数据。“ab”——追加打开一个二进制文件,并在文件尾部追加数据。“wt+”————读写打开或建立一个文本文件,允许读写。“wb+” ——读写打开或建立一个二进制文件,允许读和。“wb”——只写打开或建一个二进制文件,只允许写数据(“rt+”——读写打开或建立一个文本文件,充读读写。“rb+”——读写打开一个二进制文件,允许读和写。音频文件(MP3/WAV/FLAC)视频文件(MP4/AVI/MKV)可执行文件(EXE/SO/DLL)

2024-07-31 20:56:38 311

原创 C语言:使用c语言画表格

前提注意:不要设置太大的格子,控制台放不下的话会乱掉。

2024-07-19 15:51:37 1235

原创 环形链表——快慢指针的使用

(2).slow走一步,fast走3步,4步,n步,也一定能追上吗?(1).为什么题目1中一定会相遇,有没有可能会错过,永远追不上?问题(2)(3):假设fast走3步,slow走1步。的条件不能同时出现,永远追不上的条件不能成立。(3).为什么一定相遇?当fast与slow的距离为0时就追上了。问题(1):fast走2步,slow走1步。使用一个指针来进行判断经过同一个点。此时题目就变成了追击问题。N是奇数且c是偶数时。N是奇数且c是偶数时。

2024-05-04 19:49:51 436

原创 C语言:结构体的认识

使用方法:结构体变量.成员名。

2024-03-24 14:02:24 467 1

原创 C语言:指针的认识

指针是存储变量内存地址的变量。通过指针可以直接操作内存中的数据。

2024-03-10 15:45:07 741 1

原创 C语言:sizeof和strlen的计算分析

数组名是数组首元素(第一个元素)的地址//但是有2个例外:

2024-03-05 15:52:52 783 1

原创 C语言:分支循环语句

用于初始化表达式,然后检查条件,并在条件为真时重复执行代码块,改变初始值。当条件为真时执行一个代码块,为假时执行另一个代码块。至少执行一次代码块,然后当给定条件为真时重复执行。用于根据变量的值选择要执行的代码块。当给定条件为真时,重复执行代码块。用于在多个条件之间选择。

2024-02-03 00:54:25 705 1

简单易懂的c或c++语言,课程设计-图书管理系统

简单易懂的c或c++语言,课程设计-图书管理系统

2025-05-12

基于springboot-书籍管理系统-java

书籍管理系统-java,前端:thymeleaf 后端:springboot,mybatis-plus,lombok,druid 数据库:mysql

2025-05-11

空空如也

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

TA关注的人

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