- 博客(55)
- 收藏
- 关注
原创 日志系统的进化之路
本文介绍了从C语言宏定义到C++17折叠表达式的日志系统实现方案。首先明确了日志系统的核心需求:分级控制、上下文完备、类型安全、轻量无依赖和易用性强。文章依次展示了三个版本:V1.0使用C语言宏定义实现轻量灵活的日志系统;V2.0基于C++11递归模板解决类型安全问题;V3.0利用C++17折叠表达式实现极致简洁的日志输出。每个版本都分析了核心设计思路和优缺点,最终实现了一个轻量、高效且类型安全的日志工具。
2025-11-22 23:44:15
718
原创 高性能 Buffer 类
本文介绍了一个高性能Buffer类的设计思路,采用std::vector<char>作为底层内存容器,通过读写偏移量(_reader_idx和_writer_idx)实现高效数据管理。核心特性包括:智能内存策略(优先合并碎片再扩容)、读写分离操作(支持预览和消费模式)、灵活接口适配不同场景(原生数据、字符串、按行读取等)。相比直接使用vector或数组,该设计减少了内存拷贝和扩容开销,特别适合网络编程和高频IO场景。
2025-11-22 20:06:59
474
原创 分布式文件存储服务设计与实现优化
摘要 本文介绍了一个高性能分布式文件存储系统的设计与实现,该方案采用brpc+MinIO+Redis+etcd全栈技术架构。系统通过分层设计实现核心功能: 基于MinIO的对象存储层,支持S3协议兼容及分布式部署 Redis缓存热点文件数据和管理分块上传元数据 etcd实现服务注册发现,支持动态扩容 brpc框架保障高性能RPC通信 系统支持单文件/多文件/分块上传三种模式,具备完善的错误处理和资源管理机制。通过MinIOClient封装存储操作、MultipartManager管理分块元数据等核心模块,实
2025-11-02 23:03:00
1363
64
原创 应用层网络协议深度解析:设计、实战与安全
本文深入解析应用层网络协议的设计与实现,包含两大核心内容:一是自定义协议的开发实践,通过JSON序列化和TCP粘包处理实现可靠通信;二是HTTP协议的核心特性与报文格式详解,包括无连接、无状态等特点,以及请求/响应报文的完整结构。文章采用代码示例与理论分析相结合的方式,帮助开发者掌握从协议设计到安全传输的完整流程,适用于网络计算、Web服务等场景开发。
2025-10-23 20:52:18
1096
35
原创 C++微服务实战中好友管理子服务的全面解析
本文将深入解析基于C++的IM好友管理子服务实现,从服务定位到完整部署方案。该服务作为IM系统的核心枢纽,负责管理用户社交关系和聊天会话容器,采用brpc+Protobuf+ODB技术栈实现。文章详细拆解了服务接口设计(10个核心ProtoBuf接口)、数据模型(4个ODB映射表)和关键业务逻辑流程,如好友申请处理包含关系校验、事件管理和会话创建。同时分享了高可用部署实践,包括负载均衡和服务发现机制。通过实际项目代码演示,帮助开发者理解如何构建解耦可靠的微服务架构。
2025-10-23 20:32:37
1557
50
原创 即时通讯系统核心模块实现
摘要(149字): 本文深入剖析了即时通讯(IM)系统的核心架构设计与技术实现方案。系统采用微服务架构,划分为消息传输服务和存储检索服务两大模块,通过MySQL+Elasticsearch混合存储方案实现消息的可靠持久化与高效检索。消息传输服务基于brpc框架实现消息转发逻辑,采用Protobuf定义标准接口;存储层通过封装ES操作实现全文检索功能,MySQL负责结构化数据存储。系统整体通过etcd实现服务治理,利用RabbitMQ异步处理消息持久化,构建了一个高并发、低延迟的IM系统完整解决方案。
2025-10-19 20:48:37
2086
54
原创 C++微服务 UserServer 设计与实现
C++微服务实战:IM用户服务设计与实现 本文分享了IM系统中用户服务(UserServer)的实战开发经验,涵盖核心设计思路和关键实现细节。 设计要点 核心职责:用户认证、信息管理、为其他服务提供基础支撑 架构设计:采用依赖注入模式,避免硬编码外部服务 组件分工: MySQL(ODB ORM)存储用户数据 Redis管理会话和验证码 ElasticSearch实现用户搜索 模拟短信服务(MockSmsClient)解决开发测试需求 关键实现 用户注册:严格校验密码格式和昵称唯一性,同时写入MySQL和ES
2025-10-15 15:58:23
1260
56
原创 网络层:从 IP 协议到路由转发
网络层通过 IP 协议给数据包 “贴标签”(源 / 目 IP),用 CIDR 和 NAT 解决 “IP 地址不够用” 的问题,靠路由表规划 “配送路径”,用分片组装解决 “MTU 限制”,最终实现跨网络的数据包传输。如果想加深理解,建议动手实操:用ipconfig(Windows)或ifconfig(Linux)看自己的 IP 和子网掩码;用(Windows)或route -n(Linux)看路由表;用测试环回地址,用ping 百度IP测试公网连通性。
2025-10-12 14:06:20
1709
53
原创 分布式文件存储 RPC 服务实现
本文详细介绍了基于BRPC+Protobuf+Etcd的分布式文件存储RPC服务实现方案。系统采用五层架构设计:协议定义层使用Protobuf规范通信接口;业务逻辑层实现文件读写核心功能;服务封装层简化BRPC服务管理;服务治理层依托Etcd实现服务注册发现;客户端测试层确保服务可用性。 协议定义层通过Protobuf明确定义了文件上传下载的消息结构和服务接口,支持单文件和多文件操作。业务逻辑层实现文件存储核心功能,包括文件ID生成、路径处理和读写操作。服务封装层采用构建者模式,将服务创建与使用解耦,便于配
2025-10-11 16:15:18
1781
50
原创 【MySQL 从入门到精通】一文吃透 MySQL 核心基础:数据类型、约束、CRUD 与聚合查询
MySQL是主流开源关系型数据库,凭借免费、高性能、跨平台和易用性成为开发者必备技能。本文从数据类型、表约束、CRUD操作等核心概念入手,结合实战案例讲解MySQL基础。重点包括:数值类型(整数、小数)的选择与优化;文本类型(char/varchar)的存储差异;时间日期类型的应用场景。通过实际SQL演示,帮助读者快速掌握MySQL基础操作,实现从入门到精通的平滑过渡。
2025-10-08 21:25:36
1080
27
原创 MySQL从入门到实战:库表操作、数据类型与性能优化全指南
本文系统介绍了MySQL数据库的核心操作与优化实践,内容涵盖字符集选择、备份恢复策略、表设计规范、存储引擎选型和数据类型优化等关键知识点。文章重点解析了utf8与utf8mb4的区别、全量+增量备份方案、三大存储引擎对比以及时间类型的2038问题解决方案,并提供了实用的技术场景案例和避坑指南。通过原理讲解与实战操作相结合的方式,帮助开发者建立规范的MySQL操作习惯,避免常见的基础性问题,提升数据库性能和可靠性。
2025-10-08 21:07:07
789
10
原创 C++:异常处理与智能指针实战指南
本文深入探讨C++错误处理与资源管理的核心技术。首先分析C语言错误码处理的局限性,引入C++异常机制,详细讲解try/throw/catch语法与栈展开原理,强调异常安全注意事项。然后介绍企业级异常体系设计方法,通过继承实现统一处理。最后针对资源管理痛点,讲解智能指针的自动回收机制,包括unique_ptr、shared_ptr等核心用法,帮助开发者编写更健壮的C++代码。
2025-10-07 20:55:47
883
9
原创 c语言贪吃蛇游戏开发
本文介绍了如何使用C语言和Win32 API开发经典贪吃蛇游戏。文章从项目结构、核心函数到游戏逻辑进行全面解析,适合编程新手学习。主要内容包括:项目采用三文件结构(snake.h、snake.cpp、test.cpp);使用链表管理蛇身动态变化;通过Win32 API实现控制台交互;详细讲解关键函数如光标定位、地图绘制、蛇移动逻辑等。该项目能帮助开发者巩固C语言基础,掌握数据结构应用和游戏逻辑设计,文中还特别强调了宽字符处理、按键检测等实用技巧。
2025-10-07 20:02:02
3183
12
原创 C++分布式语音识别服务实践
摘要 本文介绍了一个基于brpc+etcd+百度AI SDK的分布式语音识别服务实践。该系统采用模块化设计,核心功能包括:通过RPC接口接收PCM音频并返回识别结果,使用etcd实现服务注册与发现,集成百度AI语音SDK提供识别能力。 服务端采用Builder模式构建,包含RPC服务实现、语音识别封装、服务注册等模块;客户端通过etcd发现服务并实现负载均衡。文章详细解析了Protobuf接口定义、ASRClient封装、RPC服务实现等关键代码,以及基于etcd的服务发现机制。 该系统具有高可用、易扩展的
2025-10-06 23:43:23
3576
47
原创 用 C++ 快速搭建 WebSocket 服务及踩坑记录
本文介绍了如何使用C++的WebSocketpp库快速搭建WebSocket服务。主要内容包括:WebSocket相较于HTTP轮询的优势(低延迟、双向通信、资源节省);Ubuntu环境下安装Boost和WebSocketpp的步骤;服务器端核心代码实现(连接管理、消息处理回调函数);HTML+JS客户端测试代码;以及完整的联调测试流程。文章还提供了常见问题的解决方案,如编译错误、连接失败等。通过这套方案,C++开发者可以快速实现实时数据交互功能,无需切换技术栈即可对接现有业务逻辑。
2025-10-05 14:57:36
1029
16
原创 RabbitMQ C++ 客户端封装与实战
本文介绍了基于 AMQP-CPP 库的 RabbitMQ C++ 客户端开发实践。首先分析了 AMQP-CPP 的优势:完全异步、灵活网络层、现代 C++ 兼容和轻量级特性。然后详细讲解了 RabbitMQ 服务端安装配置和 C++ 客户端库的安装步骤,包括解决 SSL 版本冲突问题。文章重点剖析了一个线程安全的 MQClient 封装类,该类基于 libev 实现异步事件循环,提供了声明交换机/队列、发布消息和订阅消费三大核心功能,并确保线程安全性。最后展示了构造函数如何初始化 AMQP 连接、通道并启动
2025-10-03 22:59:01
1611
34
原创 ODB 2.5 从安装到实战:C++ ORM 工具手把手教程
本文详细介绍了C++ ORM工具ODB的安装与使用。主要内容包括:1. ODB 2.5在Linux环境的安装步骤及常见问题解决;2. 通过Person类示例演示从定义持久化类到生成数据库操作的完整流程;3. ODB核心功能解析,包括类型映射、常用指令和核心API;4. 提供可直接复用的DAO层封装方案,包含连接池和事务管理。文章还总结了ODB的优势:自动生成SQL、类型安全查询、支持事务等,能显著提升C++项目数据库开发效率。适合需要提升数据库操作效率的C++开发者参考。
2025-10-02 12:14:12
1195
43
原创 上手 cpp-httplib:轻量级 C++ HTTP 库的安装与实战指南
cpp-httplib是一个轻量级的C++ HTTP库,具有单头文件、零依赖、跨平台等优势,适合快速开发小型Web服务和API调用。它支持同步/异步操作、HTTP/1.1特性及HTTPS,API设计直观易用。安装只需克隆GitHub仓库并引用头文件即可。核心功能围绕Request、Response、Server和Client四个类展开,支持路由注册和请求处理。文中通过一个返回"Hello World"的HTTP服务器示例,展示了如何编译运行代码,并提供了跨平台编译、端口占用等注意事项。该
2025-09-26 20:06:07
1792
28
原创 从环境搭建到代码落地:ES C++ 客户端封装的实践笔记
本文介绍了在C++项目中封装Elasticsearch客户端的实践过程。主要内容包括:1. 环境搭建,包括Elasticsearch安装配置、IK分词器安装和elasticlient客户端编译;2. 封装动机,解决了原生SDK需要手动处理JSON、HTTP请求和错误检查的问题;3. 核心封装实现,包括JSON工具类、日志类和业务操作类(索引创建、数据增删改查);4. 完整示例和使用过程中遇到的典型问题及解决方案。通过封装简化了ES操作,提高了开发效率,统一了代码规范,使团队能够更专注于业务逻辑开发。
2025-09-26 19:15:24
1013
24
原创 实战:基于 BRPC+Etcd 打造轻量级 RPC 服务 —— 从注册到调用的完整实现
本文介绍了一个基于BRPC和Etcd的轻量级RPC服务实现方案。该方案解决了服务跨进程通信中的常见痛点,包括服务地址硬编码、僵尸节点调用等问题。系统采用服务自动注册与发现机制,支持负载均衡和实时节点变更感知。核心模块包括日志模块、Etcd注册发现模块、BRPC服务模块和信道管理模块。文章详细阐述了各模块的实现细节,包括服务端注册、客户端发现、信道管理和负载均衡策略,并提供了完整的部署和测试步骤。该方案特别适合中小型项目,具有代码复用性强、核心逻辑清晰等特点,同时为后续添加熔断、监控等功能预留了扩展空间。
2025-09-24 18:25:23
1302
60
原创 C++ 多态:从概念到实践,吃透面向对象核心特性
本文深入讲解C++多态机制,包括基本概念、实现原理和实际应用。多态通过"一个接口,多种实现"的方式,使不同对象对同一行为产生不同结果。实现多态需要满足两个条件:通过基类指针/引用调用虚函数,且派生类重写虚函数。文章详细分析了虚函数表机制,解释了多态的动态绑定原理,并比较了单继承和多继承下的虚表差异。最后给出了框架设计、图形绘制和支付系统等典型应用场景,以及10个常见面试问题解答。掌握多态能提升代码扩展性和可维护性,是C++面向对象编程的核心技能。
2025-09-21 18:31:01
1525
14
原创 C++后台开发工具链实战
C++后台开发工具链实战指南 本文介绍了C++后台开发所需的完整工具链,包含环境搭建和核心组件落地两大部分: 基础开发环境搭建:推荐Linux环境下使用vim+gcc/g++工具链,配合gdb调试器、cmake构建工具和git版本管理,形成高效开发基础。 核心开发组件: gflags:用于命令行参数解析,支持多种数据类型和自动帮助文档生成 gtest:Google测试框架,提供丰富的断言和事件机制,保障代码可靠性 spdlog:高性能日志库,支持多输出目标和异步日志,满足后台程序需求 文中详细介绍了各组件的
2025-09-20 18:59:16
1526
38
原创 从C++98到C++11:10个改变开发习惯的核心特性
C++11 是一次里程碑式的升级,从 C++98/03 的 10 个痛点切入,重点介绍了列表初始化、智能指针和类型推导三大核心特性。列表初始化通过统一的{}语法和 initializer_list 机制解决了初始化混乱问题;智能指针(unique_ptr、shared_ptr、weak_ptr)基于 RAII 思想彻底解决了内存管理难题;auto 和 decltype 则大幅简化了复杂类型的声明。这些特性共同使 C++ 代码更简洁、安全且高效,标志着现代 C++ 开发范式的确立。
2025-09-19 16:40:40
1289
12
原创 深入理解传输层协议:UDP 与 TCP 的核心原理与应用
本文深入解析TCP/IP协议栈中的传输层协议,重点对比了UDP和TCP的核心特性与应用场景。UDP采用轻量级设计,无连接、不可靠但高效,适合实时性要求高的场景;TCP通过确认应答、重传、流量控制等机制确保可靠性,但开销较大。文章详细拆解了端口号作用、TCP三次握手/四次挥手、滑动窗口、拥塞控制等关键技术,并针对粘包问题提出解决方案。最后指出协议选型应基于业务对可靠性和实时性的需求,为网络开发提供理论基础。
2025-09-18 21:43:52
1220
11
原创 一文吃透 HTTP:从基础到实战,读懂互联网通信的 “语言”
本文深入浅出地解析了HTTP协议的核心原理与工作机制。作为互联网通信的基础协议,HTTP通过"请求-响应"模式实现客户端与服务器的交互,具有无连接、无状态的特性。文章详细拆解了URL结构、HTTP报文格式、请求方法、状态码等核心概念,并通过C语言实现了一个简易HTTP服务器。同时梳理了HTTP从0.9到3.0的版本演进历程,重点介绍了各版本在性能与安全方面的改进。掌握HTTP的"请求-响应"基本模型、标准报文格式以及方法/状态码等核心要素,是理解现代网络通信的重要基础
2025-09-17 22:47:27
1348
9
原创 基于 TCP 协议的 C++ 计算器项目实现:从网络通信到协议封装
本文介绍了一个基于C++的TCP计算器项目,通过模块化设计解决网络编程中的核心问题。项目包含五大模块:日志系统(支持多级别日志输出)、网络通信(封装Socket API)、自定义协议(处理TCP粘包/拆包)、业务逻辑(实现计算器功能)和服务端框架(多进程处理)。项目支持加减乘除取模运算,包含完善的错误处理机制,并提供了JSON和自定义两种序列化方式。文章详细解析了各模块的设计思路和关键代码,展示了服务端和客户端的实现方式,最后提出了线程池优化、Protobuf替代等改进方向。该案例完整呈现了C++网络编程的
2025-09-17 09:31:30
1745
41
原创 继承与组合:C++面向对象的核心
C++继承机制详解:本文深入讲解了C++面向对象编程中的继承概念,包括基础语法、访问权限控制、基类与派生类对象转换、作用域隐藏问题以及派生类默认成员函数规则等核心知识点。通过丰富的代码示例,重点剖析了继承的本质是代码复用与功能扩展,详细说明了三种继承方式(public/protected/private)的权限差异,并强调了实际开发中应优先使用public继承。文章还特别提醒了继承中容易出现的陷阱,如同名成员导致的隐藏问题、对象切片转换规则等,为开发者提供了全面的继承技术指南和实践建议。
2025-09-15 16:57:22
1142
28
原创 UDP Socket 实战:用线程池实现多客户端聊天室,搞定并发与消息路由
本文介绍了如何实现一个基于UDP的多线程聊天室系统。核心要点包括:1)服务器管理在线用户列表,通过线程池并发处理消息转发;2)客户端采用双线程模式,分离收发功能实现全双工通信;3)使用互斥锁保护共享数据,确保线程安全。系统实现了消息群发功能,支持多客户端实时通信,并提出了优化方向如用户退出机制、消息可靠性等。文章提供了完整的代码实现方案,从Socket基础到并发处理,展示了UDP网络编程的核心技术。
2025-09-15 09:24:10
1264
3
原创 UDP Socket 进阶:从 Echo 到字典服务器,学会 “解耦” 网络与业务
摘要:本文介绍如何将UDP服务器改造为字典服务,实现网络层与业务层解耦。核心内容包括:1)封装Dict类加载字典文件并用哈希表存储,实现高效查询;2)使用std::function将业务逻辑与网络通信分离,UdpServer仅负责数据传输;3)可选封装Socket操作提升代码复用性。通过函数对象机制,服务器可灵活切换不同业务逻辑(如回显、查字典等),无需修改网络代码。测试表明客户端可成功查询单词翻译,为后续实现多线程并发处理奠定基础。
2025-09-14 11:05:24
965
2
原创 UDP Socket 编程入门:手把手实现你的第一个 Echo 服务器(客户端)
本文介绍了基于UDP协议的Echo服务器实现方法,适合网络编程新手入门。文章首先解释了UDP的核心特性(无连接、不可靠、面向数据报),然后详细拆解了代码结构,包括防止对象拷贝的nocopy类、UDP服务器的初始化(socket创建和端口绑定)和运行流程(消息收发)。特别说明了客户端无需显式绑定的原因,并提供了完整的编译和测试步骤。通过这个简单示例,读者可以掌握UDP网络编程的基本原理和实现方法,为后续开发更复杂的网络应用打下基础。
2025-09-14 11:01:35
743
原创 网络基础入门:从“断网焦虑”到数据跨洋过海 (1)
网络基础入门:从孤岛到全球互联 本文用生活化比喻讲解计算机网络的基础知识:(1)网络发展四阶段:从单机孤岛到全球互联;(2)协议的本质是通信规则,由权威机构制定;(3)重点讲解TCP/IP五层模型,每层对应不同功能;(4)数据通过封装/解包在不同层间传输;(5)地址体系包含MAC(局域网内)、IP(全球定位)和端口号(进程标识);(6)网络编程需了解字节序和Socket概念。文章将复杂网络原理转化为快递系统等日常比喻,帮助读者理解数据如何跨越网络到达目的地。
2025-09-13 18:13:42
985
原创 Linux 线程同步与互斥:从 “抢票乱象” 到 “井然有序” 的实战指南
文章摘要:本文深入探讨了Linux多线程编程中的同步与互斥问题。通过抢票系统的案例,分析了多线程并发访问共享资源导致的"负票"现象,并提出了解决方案:1)使用互斥量保护临界区;2)采用RAII风格封装锁机制避免死锁;3)引入条件变量实现线程同步。文章还展示了线程池的工业级实现,结合单例模式优化资源管理。最后总结了避免死锁、区分线程安全与可重入等关键点,强调多线程编程的核心在于有序、高效地利用线程资源。
2025-09-13 17:38:35
876
原创 Linux 进程信号入门:像用手机通知一样理解进程通信
这篇文章用生活化的比喻和代码示例,系统讲解了Linux进程信号机制。主要内容包括: 信号本质:进程间的异步通知机制,类比微信消息通知方式 信号产生:5种来源(终端按键、kill命令、代码函数、软件条件、硬件异常) 信号处理:保存机制(未决/阻塞)、3种处理方式(默认/忽略/自定义) 实际应用:使用sigaction函数、避免可重入函数问题、volatile关键字使用 典型案例:通过SIGCHLD信号清理僵尸进程 文章通过Ctrl+C、alarm计时等直观例子,配合代码演示,生动展示了信号的整个生命周期和处理
2025-09-12 21:17:53
1058
1
原创 深入理解 Linux 进程间通信(IPC):从管道到共享内存的实用指南
Linux进程间通信(IPC)是连接独立进程的重要机制,本文系统介绍了常用IPC方式的原理和使用场景。主要包括:匿名管道和命名管道实现进程间数据流传输;共享内存作为最快的IPC方式实现零拷贝通信;消息队列提供结构化消息传递;信号量解决进程同步问题。文章结合代码实例详细讲解了管道和共享内存的实现,并对比分析了不同IPC方式的优缺点:管道适合简单数据传输,共享内存适合高性能场景,消息队列支持结构化消息,信号量用于同步控制。最后强调实践是掌握IPC的关键,建议通过实际项目加深理解。
2025-09-12 19:45:04
1530
1
原创 C++ 线程池实战:从代码解析到多任务处理原理
本文介绍了一个基于POSIX线程库的线程池完整实现方案,包含任务封装、线程池管理和同步机制等关键技术。线程池采用单例模式确保全局唯一性,通过任务队列实现生产者-消费者模型,使用互斥锁和条件变量保证线程安全。核心组件包括:1)Task类封装算术运算任务;2)ThreadPool类管理线程生命周期和任务调度;3)主程序生成随机任务。实现中运用了双重检查锁定、运算符重载等技巧,解决了线程资源复用、任务分发和同步控制等问题,有效提升了多线程程序的性能和稳定性。
2025-09-11 22:10:55
984
2
原创 一文搞懂 Linux 动静态库:从制作到加载原理,小白也能看懂
本文介绍了Linux系统中库的概念与使用方法,重点讲解了静态库和动态库的制作流程及底层原理。静态库(.a)会在编译时拷贝到程序中,使程序独立运行;动态库(.so)则运行时加载,支持多程序共享。文章详细演示了从编写简单库函数到编译打包的全过程,包括解决动态库路径问题的四种方案。通过分析ELF文件格式,解释了程序加载库的机制,特别是动态库使用的GOT表重定位技术。最后对比了两种库的优缺点:静态库移植性好但体积大,动态库节省资源但依赖环境。建议读者动手实践,使用readelf、ldd等工具加深理解。
2025-09-11 20:34:40
894
1
原创 Ext 系列文件系统怎么工作?从结构到实战全解析
本文深入解析Ext系列文件系统的核心机制:采用块组结构管理分区,将大分区划分为标准化块组,每个包含超级块、位图、inode表等组件;通过inode的15个指针实现高效文件寻址,支持小文件直接访问和大文件间接映射;路径解析采用目录文件存储"文件名-inode"映射的方式;并详细对比了硬链接(共享inode)和软链接(存储路径)的实现差异。这些设计使Ext文件系统能够高效管理磁盘空间和文件访问,是Linux系统稳定运行的重要基础。
2025-09-10 18:47:02
864
2
原创 存的文件去哪了?从磁盘底层看懂文件系统基础
本文深入浅出地讲解了Linux文件系统的底层原理。首先拆解机械硬盘的物理结构,将盘片比作CD光盘、磁头比作读写头、扇区比作切好的蛋糕块。然后介绍两种寻址方式:早期的CHS三维寻址和现代的LBA逻辑块寻址。最后阐述操作系统的三大优化:将扇区打包成4KB块提高效率、通过分区划分独立存储空间、使用inode记录文件属性和数据位置。这些基础概念构成了Ext文件系统的"地基",为理解文件存储机制提供了清晰的框架。
2025-09-10 18:22:37
840
1
原创 彻底搞懂 Linux 基础 IO:从文件操作到缓冲区,打通底层逻辑
本文深入解析Linux基础IO机制,从文件概念到系统调用全链路。首先阐明Linux"一切皆文件"的哲学,包括磁盘文件和设备抽象。然后对比C语言文件接口(fopen/fwrite)与系统调用(open/write)的关系,揭示库函数是对系统调用的封装。重点讲解文件描述符(fd)的本质是内核数组下标,并演示如何通过操作fd实现重定向功能。最后剖析缓冲区的三种类型及其对IO性能的影响,通过实例展示库函数与系统调用在缓冲行为上的关键差异。全文串联用户程序、系统调用、内核和硬件的协作逻辑,帮助读者构建完整的Linux
2025-09-09 21:35:40
1097
2
原创 Linux 进程控制全解析:从创建到 Shell 实现,搞懂核心原理
进程创建fork()复制父进程,写时拷贝技术节省内存;进程终止exit()优雅退出,_exit()紧急退出,退出码传递执行结果;进程等待waitpid()回收子进程,避免僵尸进程,解析退出信息;程序替换exec函数簇替换进程代码,实现 “执行新程序”;Shell 实现:循环 “获取命令→解析→执行”,内建命令 Shell 自己处理,外部命令 fork+exec。进程控制是 Linux 系统编程的 “基石”,掌握这些技术后,就能看透它们的底层逻辑。
2025-09-09 21:07:35
944
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅