- 博客(95)
- 收藏
- 关注
原创 【C++基本语法】C++11——可变参数模版&&可变参数模版&&lambda
摘要 C++11引入了多项新特性:1) 类功能增强,包括自动生成的移动构造/移动赋值(条件严格,需未定义析构/拷贝相关函数),以及default/delete关键字显式控制默认函数生成;2) 可变参数模板,支持接受任意数量模板参数,可通过递归或逗号表达式展开参数包;3) lambda表达式,提供简洁的匿名函数定义方式,语法为capturemutable->ret{body},可自动推导类型并通过auto接收。这些特性提升了代码灵活性,简化了资源管理、参数处理和函数对象创建。
2025-11-24 19:43:49
700
原创 【QT笔记】常用控件——按键类和显示类控件
本文介绍了Qt中常用控件的关键特性。主要内容包括:按键类控件如QPushButton、QRadioButton和QCheckBox的使用方法,重点讲解了为按钮添加图标/快捷键、单选按钮分组等功能;显示类控件QLabel的多种属性设置,包括文本格式、伙伴机制等实用技巧。文章通过示例代码和属性表格详细说明了这些控件的核心功能,帮助开发者快速掌握Qt界面开发的实用技术。
2025-11-20 13:00:00
754
原创 【QT笔记】常用控件——QWidget 核⼼属性
Qt常用控件开发指南 摘要:本文介绍了Qt中常用控件的核心属性和使用方法。内容包括QWidget的核心属性: enabled - 控制控件可用状态 geometry - 管理控件位置和尺寸 window frame - 窗口框架相关特性 windowTitle - 设置窗口标题 windowIcon - 设置窗口图标 文章详细讲解了每个属性的API使用方法、注意事项和实际应用场景,帮助开发者快速掌握Qt控件开发的基础知识。特别强调了控件状态管理、坐标系统、窗口框架处理等关键概念,为构建图形界面应用提供了实用
2025-11-16 13:00:00
1540
原创 【Linux笔记】网络部分——NAT-代理-网络穿透
摘要 本文系统介绍了NAT技术及其衍生解决方案。NAT(网络地址转换)通过将私有IP转换为公有IP,实现内网设备访问公网资源。NAPT技术进一步引入端口转换,支持多设备共享同一公网IP。文章详细解析了NAT/NAPT的转换过程、映射表机制和数据包转发原理,同时也指出其破坏端到端通信等局限性。为突破NAT限制,文中探讨了内网穿透(如FRP工具)和内网打洞技术,分析其在远程控制、直播等场景的应用。最后对比正向代理与NAT的区别,指出代理工作在应用层而非网络层的特点。这些技术共同构成了现代网络互联的基础架构。
2025-11-14 19:30:41
837
1
原创 【QT笔记】信号和槽
文章摘要:Qt信号与槽机制详解 Qt中的信号和槽是一种强大的对象间通信机制,用于替代传统回调函数。当特定事件发生时(如按钮点击),对象会发射信号,关联的槽函数自动执行。信号本质是事件,槽本质是响应函数。Qt信号与Linux信号有相似之处,都包含信号源、类型和处理方式三要素。 使用信号槽需注意: 通过connect函数关联信号与槽 槽函数可以是普通成员函数 信号只需声明,槽需实现 支持带参和重载 UI设计器可自动生成匹配命名规则的槽函数 自定义信号需声明在signals区域,返回void且不需实现;自定义槽函
2025-11-09 09:23:04
705
原创 【Linux笔记】网络部分——数据链路层mac-arp
本文介绍了数据链路层的基本概念和关键技术。数据链路层解决相邻主机间的通信问题,核心是以太网协议。以太网通过MAC地址唯一标识局域网设备,帧格式包含源/目的MAC地址和校验字段。MTU限制了数据帧最大长度,影响UDP/TCP传输效率。局域网通信采用碰撞检测机制,交换机通过学习MAC地址表优化转发效率。ARP协议实现IP地址到MAC地址的转换,确保网络层与链路层协同工作。文章还探讨了网卡混杂模式在网络分析中的应用。整体呈现了数据链路层如何支撑上层网络通信的技术原理。
2025-11-08 09:26:08
2614
4
原创 【Linux笔记】网络部分——网络层IP协议
本文系统介绍了网络层IP协议的核心概念与工作机制。首先阐述了IP协议在网络分层中的定位及其与TCP协议的关系,指出IP协议主要负责跨网络的数据包转发和路由选择,而可靠性保障则由传输层实现。重点解析了IP地址的结构与网段划分机制,详细说明了子网掩码的原理及其在网络号与主机号区分中的作用。通过分析IP协议报头结构,揭示了网络层报文转发的基本流程,包括解包、封包和分用过程。文章以运营商网络建设为背景,阐明了IP地址分配与路由表管理的重要性,并论述了主机如何通过目的IP地址判断数据传递路径,实现局域网与跨网段通信。
2025-11-02 12:16:37
1208
2
原创 【Linux笔记】网络部分——传输层协议TCP(2)
本文介绍了TCP传输层协议中的连接管理机制,重点分析了三次握手和四次挥手过程,以及各种异常状态的处理。文章首先解释了TCP报头中的ACK、SYN和FIN标志位的作用,详细阐述了三次握手建立连接和四次挥手断开连接的状态转换过程。针对连接异常情况,讨论了ACK丢失导致的连接不一致、CLOSE_WAIT状态堆积、进程异常终止等问题及其处理机制。特别强调了TIME_WAIT状态的作用和重要性,指出该状态能确保最后一个ACK可靠到达并处理网络中滞留的历史报文。文章还提及了TCP保活机制、半关闭操作等高级特性,全面剖析
2025-11-01 11:51:14
767
2
原创 【Linux笔记】网络部分——传输层协议TCP(1)
TCP协议是传输层可靠通信的核心协议,具有以下关键特性:1)通过发送/接收缓冲区和自主发送控制实现可靠传输;2)标准20字节报头含端口号、序号、确认序号等字段,支持解包分用;3)确认应答机制确保数据可靠接收,捎带应答提高效率;4)16位窗口大小实现动态流量控制;5)超时重传机制处理丢包问题,采用指数退避策略;6)连接管理通过SYN/FIN等标志位实现三次握手和四次挥手。这些机制共同构成了TCP面向连接、可靠有序的传输特性,并通过序号确认、滑动窗口等技术优化传输效率。
2025-10-30 15:11:23
642
原创 【Linux笔记】网络部分——传输层协议UDP
摘要:UDP协议是传输层非连接协议,具有简单高效的特点。其16位报头包含端口号、长度和校验和字段,支持全双工通信但无可靠传输机制。UDP适用于直播等可容忍丢包场景,报文独立传输且收发次数一致。与TCP不同,UDP不保证顺序、不拆分合并数据,接收缓冲区满时会直接丢弃新报文。协议通过校验和保证数据合法性,内核使用sk_buff队列管理接收缓冲区。UDP的简单性使其在实时性要求高的领域具有优势。
2025-10-27 23:59:25
996
原创 【Linux笔记】网络部分——应用层协议http核心概念
HTTP协议核心概念摘要 HTTP是客户端与服务器通信的基础应用层协议,用于传输超文本及各类数据。其特点包括无连接(HTTP/1.0)和持久连接(HTTP/1.1),以及无状态性。URL由协议、域名、路径组成,通过IP+资源路径定位网络资源。HTTP本质是文件传输协议,将服务器特定路径文件内容传输给客户端。协议格式包含请求/响应行、报头、空行和正文四部分,支持结构化和序列化处理。关键状态码包括200(成功)、404(资源不存在)及301/302重定向(依赖Location头部)。HTTP作为成熟协议,其设计
2025-10-26 09:49:55
680
原创 【Linux笔记】网络部分——基于Socket套接字实现最简单的HTTP协议服务器
本文介绍了一个基于C++实现的轻量级HTTP服务器项目。项目采用模块化设计,核心组件包括日志系统、线程池、TCP套接字封装和HTTP协议解析模块。服务器支持多线程并发处理请求,能够解析HTTP请求并生成响应,同时提供静态文件服务和动态路由功能。通过Socket实现底层通信,使用线程池优化请求处理效率,并内置日志记录功能。项目结构清晰,包含网络层、并发层和协议层的分层设计,可通过浏览器访问测试服务器功能。
2025-10-24 15:01:59
855
原创 【Linux笔记】网络部分——守护进程与后台任务管理
文章摘要:守护进程与后台任务管理 本文介绍了Linux系统中后台任务和守护进程的管理方法。主要内容包括: 后台任务管理:通过ctrl+z暂停前台任务并放入后台,使用jobs查看后台任务,bg继续执行,fg调回前台 进程组概念:每个进程属于一个进程组(PGID),组长进程PID等于PGID,进程组生命周期独立于组长进程 会话机制:登录时创建新会话和bash进程,会话ID为bash的PID,一个会话可包含多个进程组 守护进程创建:使用setsid创建新会话,要求调用进程不能是进程组组长,创建后进程将成为新会话的
2025-10-21 13:45:39
681
原创 【Linux笔记】网络部分——应用层自定义协议与序列化
应用层协议与序列化技术摘要 本文深入探讨了应用层协议与序列化技术在网络通信中的关键作用。主要内容包括: 协议本质:协议是通信双方对数据格式的共识,确保发送和接收的结构化数据能被正确解析。网络计算器案例展示了两种协议实现方式:字符串约定格式和二进制结构体传输。 序列化与反序列化:为解决二进制兼容性问题,提出将结构化数据转换为字符串传输的方法。序列化合并多个数据字段为单一字符串,反序列化则逆向还原数据,如聊天消息合并发送后再拆分处理。 TCP缓冲机制:详细解析了TCP套接字的发送/接收缓冲区工作原理,对比了TC
2025-10-19 13:51:37
723
原创 【Linux笔记】网络部分——socket 编程 TCP实现多台虚拟机使用指令访问云服务器
摘要:本文介绍了使用TCP协议实现多台虚拟机访问云服务器的socket编程方法。相比UDP,TCP需要先建立连接才能通信,服务器需创建套接字、绑定、监听并等待客户端连接。文章详细说明了相关API接口(socket、bind、listen、accept、connect等)的使用方法,并解释了监听套接字与通信套接字的区别。最后给出了服务端实现的核心代码框架,包括TCP数据收发模块和任务处理模块的设计思路。
2025-10-10 19:00:55
852
原创 【Linux笔记】网络部分——Socket编程 UDP实现网络云服务器与本地虚拟机的基本通信
本文介绍了使用UDP协议实现网络云服务器与本地虚拟机通信的Socket编程方法。主要内容包括:1) 关键API函数说明,如创建套接字的socket()、绑定地址的bind()、接收数据的recvfrom()和发送数据的sendto();2) 展示了UDP服务器类的实现代码,通过InitServer()初始化套接字和绑定,Start()方法循环接收客户端数据并回显;3) 说明了网络字节序转换函数htons()和inet_addr()的使用。该实现可作为基本的UDP通信模型,服务器接收客户端消息后记录日志并返回
2025-10-08 16:39:04
1115
原创 【Linux】系统部分——线程安全与线程的单例模式
线程安全与单例模式 摘要:本文探讨了多线程编程中的线程安全和单例模式实现。线程安全指多线程访问共享资源时程序能正确执行,不出现数据干扰或异常。可重入函数与线程安全概念不同,前者强调函数被重复调用时的安全性,后者关注线程间资源冲突。文章分析了线程安全和可重入性的关系,并列举了常见线程不安全的情况。最后详细介绍了线程安全的单例模式实现,包括懒汉式和饿汉式两种方式,重点讲解了如何通过加锁机制和静态成员变量实现线程安全的懒汉式单例模式,并提供了线程池改造为单例模式的具体代码实现。
2025-10-06 19:32:23
846
原创 【QT】概述补充——对象树
摘要 Qt的对象树机制通过parent-child关系管理内存,自动释放子对象避免内存泄漏。QObject构造函数接收parent指针,创建的对象会加入父对象的children列表。当父对象析构时,所有子对象也会被销毁。QWidget继承此机制,子组件在父组件坐标系中显示,随父组件一起删除。典型应用场景是对话框关闭时自动删除其包含的按钮等子组件。Qt还提供了QString和qDebug工具自动处理字符编码问题,避免乱码。窗口坐标体系以左上角为原点(0,0),X向右、Y向下增加,嵌套窗口坐标相对于父窗口定位。
2025-10-05 22:43:51
684
原创 【C++语法】C++11——新的类功能&&可变参数模版&&lambda表达式
本文主要介绍了C++11引入的几项重要特性: 新的类功能:包括移动构造和移动赋值函数,编译器在特定条件下会自动生成默认版本;新增default和delete关键字,用于显式控制默认函数的生成或禁用。 可变参数模板:允许函数和类模板接受可变数量的参数,介绍了递归函数和逗号表达式两种展开参数包的方法。 lambda表达式:一种匿名函数语法,基本结构为捕获列表mutable->返回类型{函数体},可简化函数对象的创建,特别适用于需要临时函数的场景。 这些特性增强了C++的表达能力,提高了代码的简洁性和灵活性
2025-10-01 10:52:41
891
原创 【C++语法】C++11——右值引用
C++11核心特性摘要 C++11引入了多项重要特性:1) 统一的列表初始化,支持所有类型的初始化;2) auto自动类型推导和decltype类型获取;3) nullptr替代NULL作为空指针;4) 新增array静态数组和forward_list单向链表容器。最重要的右值引用机制,通过区分左值(可寻址)和右值(临时对象),实现移动语义。右值引用允许资源转移而非拷贝,提升效率,特别是在容器操作和返回值优化场景。const左值引用可绑定右值,而右值引用可通过move()绑定左值,为资源管理提供了更灵活的方
2025-09-28 18:49:18
876
原创 【Linux】网络部分——网络基础(Socket 编程预备)
本文介绍了Socket编程的基础知识,包括端口号的作用、TCP/UDP协议特性、网络字节序转换以及Socket编程接口。端口号与IP地址共同标识网络中的进程,TCP提供可靠传输而UDP侧重实时性。网络通信使用大端字节序,系统提供转换接口。Socket编程通过统一的数据结构sockaddr实现不同通信方式的接口统一,并介绍了创建、绑定、监听等基本API。这些概念是网络编程的基础核心。
2025-09-26 11:36:19
842
原创 【QT】概述
摘要 Qt是一个跨平台C++图形用户界面框架,支持Windows、Linux、Android等多种操作系统。它具有接口简单、开发效率高、内存管理简化等优势,适用于嵌入式开发和桌面应用程序构建。本文介绍了Qt Creator(5.12版本)的安装配置要点,包括断网安装、路径选择和环境变量设置。同时概述了Qt Creator的界面布局和功能模块,详细说明了新建项目时的模板选择(如Widgets Application、Quick Application等)和基类选项(QMainWindow、QWidget、QD
2025-09-25 20:48:31
940
原创 【Linux】网络部分——网络基础(协议与网络传输)
网络协议与传输基础摘要 协议是计算机通信的基本约定,分为硬件和软件层面。OSI七层模型和TCP/IP五层模型是主流的分层架构,通过模块化解耦提高通信效率。网络通信本质是应用程序间的交互,协议作为操作系统间的数据结构(结构体)实现跨平台通信。局域网通过MAC地址直接通信,采用碰撞检测机制避免冲突。数据传输时进行分层封装与解包:发送方从上到下添加协议报头,接收方从下到上剥离报头并交付给对应协议处理。每层报头包含分离信息和上层协议标识,确保数据正确路由。
2025-09-24 16:38:24
1122
原创 【Linux】系统部分——线程池的基本设计思路
线程池设计与实现摘要 线程池通过预先创建并管理多个线程来提高任务处理效率,避免频繁创建销毁线程的开销。核心设计包括:任务队列存储待处理任务,线程容器管理工作线程,以及互斥锁和条件变量实现线程同步。线程池提供启动(Start)、停止(Stop)、任务入队(Equeue)和线程回收(Wait)等接口。实现采用固定线程数模式,工作线程通过条件变量等待唤醒,从任务队列获取任务执行。关键点包括:任务队列的线程安全操作、线程休眠与唤醒机制、以及线程池状态管理。该设计适用于需要并发处理大量短生命周期任务的场景,能有效控制
2025-09-22 20:26:44
986
原创 【C++语法】继承
继承机制概述 本文系统介绍了面向对象编程中的继承机制,主要内容包括: 继承概念:允许在保持原有类特性的基础上进行扩展,实现代码复用,形成类层次结构 继承方式:详细分析了public、protected、private三种继承方式对成员访问权限的影响,重点说明基类private成员在派生类中的不可见性 类型转换:解释派生类向基类"切片"赋值的规则,以及指针/引用转换时的注意事项 作用域规则:阐述同名成员隐藏现象,强调通过基类::成员方式显式访问 默认成员函数:深入分析派生类中构造函数、拷贝
2025-09-21 15:35:27
638
原创 【Linux】系统部分——线程同步与生产者消费者模型
本文探讨了线程同步与生产者消费者模型。通过自习室钥匙分配的例子说明了互斥锁的局限性及同步机制的重要性,介绍了条件变量及其使用方法。重点分析了生产者消费者模型,将其类比为超市作为生产者和消费者之间的缓冲机制,阐述了该模型的优点:解耦、支持并发和忙闲不均。文章详细讨论了生产者与消费者之间的三种关系:生产者间互斥、消费者间竞争、生产者和消费者间互斥与同步,强调了同步机制在保证数据安全和提高系统效率方面的关键作用。
2025-09-20 18:48:24
717
原创 【Linux】系统部分——线程互斥
以下为文章摘要(147字): 本文探讨了多线程编程中的线程互斥机制。首先介绍了临界资源、临界区等核心概念,指出多线程并发操作共享变量可能导致数据不一致问题。通过一个抢票系统的代码示例,展示了因非原子操作导致的票数减为负数的现象。文章详细分析了问题根源在于线程切换导致的中间状态,并提出使用互斥锁作为解决方案。重点讲解了pthread_mutex_t的定义初始化、加锁解锁操作及其实现原理,强调互斥锁能确保临界区代码的原子性执行。最后给出了添加互斥锁后的正确代码实现,解决了多线程竞争问题。
2025-09-18 19:48:59
664
原创 【Linux】系统部分——线程控制
本文介绍了进程控制中的线程创建与管理。主要内容包括:单线程与多线程的创建方式,线程ID的唯一性保证了线程独立性;线程执行顺序的不确定性及其时间片分配机制;线程函数返回值处理及线程间的数据共享机制,包括全局变量、堆区和共享区的访问;特别指出线程栈虽然独立但可通过地址访问其他线程栈的风险;最后强调线程等待的必要性,避免类似僵尸进程的问题。多线程编程需注意共享资源访问和数据同步问题。
2025-09-16 19:24:35
695
原创 【C++语法】模版初阶
本文介绍了C++模板的基础知识,重点讲解了函数模板的概念和使用方法。函数模板通过参数化类型实现代码复用,能根据不同实参类型生成特定版本的函数。关键点包括:模板使用typename/class关键字;编译器根据实参类型推导生成函数;模板实例化时允许隐式类型转换;函数模板与非模板函数共存时的匹配优先级规则。文章还通过多个代码示例展示了模板的实际应用场景和注意事项,如const修饰符的作用、返回值类型推导等。
2025-09-14 23:18:18
339
原创 【Linux】系统部分——线程概念与地址空间
线程与地址空间摘要 本文主要介绍了线程的基本概念和Linux系统下线程的实现方式。线程是进程内部的执行分支,比进程执行粒度更细,是操作系统调度的基本单位。Linux系统将线程实现为轻量级进程(LWP),共享进程地址空间但拥有独立执行流。通过pthread_create接口创建线程时,实际是在进程地址空间内创建task_struct结构体。虚拟地址空间通过页表映射解决了物理内存碎片化问题,将不连续的物理内存映射为连续的虚拟地址空间。Linux线程设计复用进程管理机制,避免单独维护线程数据结构,提高了系统效率。
2025-09-13 22:01:42
829
原创 【Linux】系统部分——信号的保存和捕捉
本文介绍了Linux系统中信号的保存和处理机制。信号从产生到递达之间存在未决状态,进程可选择阻塞信号。信号在内核中通过block、pending标志位和handler函数指针表示。文章详细讲解了信号集操作函数如sigemptyset、sigaddset等,以及信号屏蔽设置函数sigprocmask的使用。 信号捕捉流程涉及用户态和内核态切换,当进程从内核态返回用户态时检查pending表决定是否处理信号。对于自定义信号处理,需经历四次状态切换。最后介绍了强大的信号捕捉函数sigaction及其使用方法。文章
2025-09-11 18:38:37
1025
原创 【C++语法】内存管理
本文介绍了C++中的内存管理机制,重点对比了new/delete与malloc/free的区别。文章首先分析了C/C++程序的内存分布,包括栈、堆、数据段和代码段等区域。随后详细讲解了new和delete的使用方法,指出对于内置类型二者功能与malloc/free类似,但对自定义类型会自动调用构造/析构函数。文章还深入探讨了new的实现原理,解释其底层通过operator new调用malloc,并分析了new[]多出的4字节计数空间。最后总结了malloc/free与new/delete的六大区别,包括初
2025-09-10 20:47:27
796
原创 【Linux】系统部分——信号的概念和产生
信号是进程间异步通信的软中断机制,由操作系统内核预先定义。信号处理方式包括默认操作、忽略或自定义捕捉。信号产生后不会立即处理,而是由OS写入进程PCB的位图。信号产生方式包括:1) 系统指令如kill命令;2) 系统调用如kill()、raise()、abort();3) 软件条件如定时器(alarm)或管道异常(SIGPIPE);4) 硬件异常如除零错误(SIGFPE)或非法内存访问(SIGSEGV)。9号信号不可自定义捕捉。程序员可通过signal()函数修改信号处理方式,实现异步事件处理。
2025-09-09 13:35:27
970
原创 【Linux】系统部分——进程间通信3(消息队列、信号量)
本文介绍了Linux系统中的两种进程间通信机制:消息队列和信号量。消息队列是一种结构化的通信方式,允许进程通过内核维护的队列交换数据。信号量则是一种资源预订计数器,用于实现进程间的同步与互斥。文章详细阐述了临界资源、互斥与同步的概念,解释了信号量的本质和PV操作原理,并比较了System V和POSIX信号量的接口实现。内核通过统一的数据结构管理这些IPC资源,确保操作的原子性和安全性。
2025-09-08 17:17:06
866
原创 【Linux】系统部分——进程间通信2(共享内存)
共享内存区是最快的IPC形式。⼀旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执⾏进⼊内核的系统调⽤来传递彼此的数据。
2025-09-07 14:44:52
754
原创 【Linux】系统部分——进程间通信1(管道)
摘要 本文介绍了进程间通信(IPC)的核心机制之一——管道。管道本质上是操作系统提供的内核缓冲区,通过两个struct file对象分别管理读端和写端,实现父子进程间的数据共享。文章详细讲解了管道创建的系统调用pipe(),并通过代码示例展示了父子进程如何利用管道进行单向通信。同时补充了标准输出流std::cout与标准错误流std::cerr的区别及重定向技巧。管道作为IPC的重要方式,其特点是进程共享同一块内核缓冲区资源,而非实际磁盘文件,确保了通信效率。
2025-09-05 19:51:32
1136
1
原创 【Linux】系统部分——ELF文件格式与动态库加载
摘要:动态库在程序运行时链接,多个程序共享库代码,通过页表映射到进程地址空间的共享区。ELF是可执行文件格式,包含ELF头、程序头表、节头表等部分,通过偏移量定位不同区域数据。使用readelf命令可查看ELF文件结构信息,如程序入口地址和各段映射关系。动态库加载涉及进程地址空间管理,利用ELF格式实现代码共享。
2025-08-31 19:20:40
697
原创 【Linux】系统部分——软硬链接&&动静态库的使用
本文介绍了Linux中的软硬链接和动静态库的使用。软链接是独立文件,保存目标文件路径,类似Windows快捷方式;硬链接共享inode,增加引用计数,常用于文件备份。静态库以.a为后缀,通过ar工具创建,使用时需将.h文件拷贝到/usr/include,库文件放到/lib64目录下。动态库以.so为后缀,运行时加载。文章详细演示了创建软硬链接、静态库打包及安装到系统目录的过程,并比较了两种链接方式的区别与应用场景。
2025-08-30 21:10:09
732
原创 【Linux】系统部分——磁盘存储结构与文件系统
磁盘存储结构与文件系统摘要: 磁盘物理结构:机械硬盘通过磁极变化存储数据(N/S极代表1/0),SSD速度更快但成本高。数据销毁需彻底消磁,格式化无法完全清除。 核心结构:盘面划分为同心圆磁道,磁道分割为512字节的扇区(最小存储单位),多个盘面同半径磁道组成柱面。CHS寻址通过柱面、磁头、扇区定位数据,LBA地址提供线性访问方式。 文件系统: 操作系统以"块"(通常4KB)为单位读写磁盘 分区是磁盘管理的基本单元,支持不同文件系统 ext2文件系统将分区划分为块组,包含: 超级块:记录
2025-08-20 20:49:46
1136
原创 【linux 系统】基础IO——文件缓冲区
本文探讨了文件缓冲区在Linux系统中的工作机制及其对文件操作的影响。主要观点包括: 重定向操作应由子进程执行,进程程序替换不会影响已打开的文件描述符; Linux内核通过多层结构(task_struct、files_struct、file等)管理文件资源; 文件缓冲区分为语言级缓冲区和内核级缓冲区; 实验表明:使用语言接口写入后若直接系统调用关闭文件,内容可能丢失,需手动刷新(fflush)或使用语言级关闭操作(fclose)才能确保写入; 系统调用直接写入不受此问题影响。 缓冲区机制通过减少系统调用次数
2025-07-11 07:54:45
784
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅