- 博客(20)
- 收藏
- 关注
原创 Week 5 Day 3 定制执行简报:配置解析器实现(INI格式)
INI解析器是配置管理系统的核心模块,负责将文本配置文件转换为内存中的结构化数据。今日学习的核心要点包括:学习目标:掌握INI文件格式规范,理解解析器设计模式,能够独立实现一个健壮的INI解析器。INI(Initialization)文件是一种简单的文本配置文件格式,具有以下特点:解析器设计需要遵循软件工程原则,合理应用设计模式:INI解析的核心是行解析状态机,处理不同行类型:cpp状态机需要处理行首尾空白、等号位置、转义字符等细节。健壮的解析器应具备错误恢复能力:现代应用需支持多语言环境:解析后的配
2026-02-25 20:54:33
625
原创 Week 5 Day 2 代码挑战任务:核心数据结构与接口实现
今日实战目标是实现配置管理系统的核心数据结构与接口,为完整的配置管理系统奠定基础。ConfigValue类:支持多种数据类型(int、double、bool、string、嵌套对象)的配置值容器ConfigSection类:管理配置节(section)内的键值对ConfigManager核心类:提供统一的配置管理接口,支持单例模式通过本挑战,你将深入理解现代C++类型系统、智能指针管理、接口设计原则以及工厂模式在实际项目中的应用。
2026-02-24 21:29:21
628
原创 Week 3 Day 6 代码挑战:实现简易网络聊天室
在本挑战中,你将实现一个简易的网络聊天室系统,包含服务器端和客户端。TCP套接字编程核心机制(socket、bind、listen、accept、connect)客户端-服务器架构设计与实现多客户端连接管理与消息转发网络字节序与地址转换处理错误处理与资源管理背景:网络聊天室是理解网络编程的经典案例,涉及套接字创建、连接管理、并发处理等核心概念。本挑战将引导你从零实现一个支持多客户端通信的聊天室系统,为后续学习更复杂的网络应用开发打下坚实基础。
2026-02-14 18:11:54
689
原创 Week 3 Day 5 定制执行简报:线程与同步机制
填写执行卡片:记录 3 个核心收获、1 个疑问/困难、1 个感悟/调整。预习明日主题:了解网络编程基础概念,为 Week 3 Day 6 实战做准备。简报制作者:扣子 Worker生成时间:2026年2月13日 08:15适用阶段:第一阶段 Week 3 Day 5(线程与同步机制)
2026-02-13 20:57:34
660
原创 Week 3 Day 4:信号安全日志系统实现挑战
在Linux系统编程中,信号处理是一个关键且复杂的主题。信号是进程间通信的一种基本方式,用于通知进程发生了某些事件(如用户中断、定时器到期、子进程终止等)。然而,在信号处理函数中编写代码需要格外小心,因为信号可能在程序执行的任何时刻异步到达,包括在非信号安全的函数执行过程中。核心挑战:实现一个信号安全的日志系统,能够在信号处理函数中安全地记录信号信息,而不引入死锁、数据竞争或其他未定义行为。背景知识信号概念与分类:标准信号(1-31)、实时信号(34-64)
2026-02-12 22:12:32
1098
原创 Week 3 Day 3: 进程间通信(IPC)机制深度解析
进程间通信是操作系统核心概念,从简单的管道到复杂的共享内存,每种机制都有其适用场景和权衡取舍。现代系统开发中,IPC不仅是技术选型问题,更是系统架构设计的关键考量。未来发展趋势性能极致化:随着硬件发展(更快互联、更大内存),IPC性能将持续提升安全性强化:在云原生、多租户环境下,IPC安全隔离愈发重要编程模型简化:语言和框架层提供更抽象的IPC接口,降低使用复杂度异构计算支持:CPU、GPU、FPGA等不同计算单元间的高效通信。
2026-02-11 20:37:11
691
原创 Week 3 Day 2 代码挑战:实现简化版shell(命令执行)
在本挑战中,你将实现一个简化版的shell,能够解析用户输入的命令,创建子进程执行命令,并支持基本的管道功能。Linux进程管理与创建机制(fork、exec、wait系统调用)命令解析与参数处理技术管道(pipe)通信原理与实现进程间关系管理与资源回收错误处理与异常情况管理背景:Shell是用户与操作系统交互的核心接口,理解其工作原理是系统编程的重要基础。本挑战将引导你从零实现一个具备基本功能的shell,为后续学习更复杂的系统编程概念打下坚实基础。
2026-02-10 20:06:14
502
原创 Week 3 Day 1:文件I/O操作深度解析简报
本简报基于《第一阶段:查漏补缺》学习路径中的Week 3 Day 1内容编写,旨在提供系统化的文件I/O操作学习指南。文件I/O是Linux系统编程的核心基础,理解其机制对开发高效可靠的系统软件至关重要。文件描述符是进程级别的整数索引,指向内核维护的文件表项。Time-of-Check to Time-of-Use漏洞,检查与使用之间的时间窗口被攻击者利用。命令的简化版本,支持基本文件复制功能,包含完善的错误处理和用户反馈。《Linux/UNIX系统编程手册》(第4-5章)
2026-02-09 21:41:36
678
原创 Week 2 Day 6 代码挑战:实现线程安全的单例模板类
基于设计模式原则与现代C++特性,实现一个线程安全的单例模板类。你需要掌握单例模式的核心思想,理解线程安全的重要性,并能够通过模板技术实现可复用的单例基类。挑战包含两种经典实现方式:Meyers单例(现代C++推荐)和懒汉式单例(使用std::call_once)。:设计模式、模板元编程、线程安全、现代C++特性。:★★★★☆(中等偏高)
2026-02-07 21:51:31
682
原创 Week 2 Day 5:单例模式与工厂模式深度解析
概念定义设计模式是针对软件设计中常见问题的可复用解决方案模板,是经验丰富的开发者总结的最佳实践。分类体系创建型模式:关注对象创建机制(单例、工厂、建造者等)结构型模式:关注类与对象的组合方式(适配器、装饰器、代理等)行为型模式:关注对象间的通信与职责分配(观察者、策略、命令等)解决的问题提高代码复用性增强系统可维护性降低模块间耦合度提升设计灵活性。
2026-02-06 22:05:44
938
原创 Week 2 Day 4 代码挑战:实现图形绘制类层次
基于面向对象设计原则,实现一个完整的图形绘制类继承体系,通过虚函数机制支持运行时多态。你需要创建一个抽象基类。:面向对象设计、继承与多态、虚函数机制、现代C++特性。),并实现多态绘制与面积计算功能。和至少三个具体派生类(:★★★☆☆(中等)
2026-02-06 20:13:59
584
原创 Week 2 Day 3:继承与多态机制定制执行简报
运行时多态通过基类指针或引用调用虚函数,实际执行派生类覆盖版本,实现接口统一、实现各异的设计目标。继承是面向对象三大特性之一,允许新类(派生类)基于现有类(基类)构建,继承其成员并添加新功能或修改现有功能。公有继承实现"是一个"(is-a)关系,派生类对象可被当作基类对象使用。若基类析构函数非虚,通过基类指针删除派生类对象时,只会调用基类析构函数,派生类特有资源泄漏。虚函数允许派生类覆盖基类实现,实现运行时多态。基类析构函数应声明为虚函数,确保通过基类指针删除派生类对象时正确调用派生类析构函数。
2026-02-04 21:24:45
624
原创 Week 2 Day 2 代码挑战:实现自定义字符串类(支持移动语义)
深入理解现代C++的类设计原则、拷贝控制与移动语义。通过这个练习,你将建立起面向对象设计的坚实基石。如何为右值对象优化拼接操作,避免不必要的内存分配?:建议1小时内完成基础版,额外时间挑战进阶功能。如何用C++17/20特性改进String类?你的String类实现了哪种异常安全保证?如何改进以达到强异常安全级别?
2026-02-04 09:37:15
890
原创 Week 2 Day 1:类与对象设计原则
通过访问控制(public/private/protected)隐藏实现细节,暴露最小必要接口,增强模块化与安全性。)打破封装边界,应谨慎使用,主要用于运算符重载或特定性能优化场景。:实现自定义字符串类(支持移动语义)
2026-02-02 16:32:37
534
原创 Week 1 Day 6 代码挑战:实现简化版weak_ptr(解决循环引用)
深入理解 的工作原理及其在解决循环引用问题中的关键作用。通过实现简化版 ,你将掌握:需要修改现有的 实现,添加弱引用计数支持:实现 基本功能:支持 :线程安全版本:自定义删除器支持:推荐的控制块结构: 的关键是原子操作,确保线程安全:提示:使用 Valgrind 或 AddressSanitizer 检查内存泄漏,确保循环引用被正确打破。完成挑战后,在今晚的 执行卡片 中记录:祝你挑战成功!
2026-02-01 18:01:10
809
原创 Week 1 Day 5 :右值引用与移动语义原理
深入理解移动语义的底层机制,掌握右值引用、std::move、移动构造函数/赋值运算符的实现要点,建立移动语义与异常安全的关联认知。:将“将亡值”(xvalue)所持有的资源(如堆内存、文件描述符)安全、高效地转移到新对象,同时保证源对象处于。将参数按原始值类别传递给其他函数,实现零开销的泛型包装。std::vector::push_back 移动优化。:移动后源对象不应再被使用(除非重新赋值或重置)。它可根据实参的值类别推导为左值引用或右值引用。若资源池中的资源对象不可拷贝、仅可移动,如何设计。
2026-01-30 21:06:12
594
原创 Week 1 Day 4 代码挑战:实现简化版shared_ptr(引用计数)
掌握引用计数智能指针的核心实现原理,深入理解共享所有权的内存管理机制,并初步了解线程安全考虑。基于Week 1理论知识,实现简化版。
2026-01-29 21:14:16
651
原创 Week 1 Day 3 :Lambda表达式与函数对象设计
Lambda表达式是现代C++函数式编程的基石,其简洁语法背后是复杂的类型系统和编译器优化。虽然今日理论主题是Lambda表达式,但今日的实战练习是实现shared_ptr的引用计数机制。Lambda表达式是现代C++函数式编程的核心特性,它通过简洁的语法实现了匿名函数的定义与传递。:Lambda的本质是编译器生成的匿名类,捕获列表对应类的成员变量,函数体对应类的operator()实现。Lambda不仅改变了C++的编码风格,更是现代软件设计思想(如响应式编程、数据流处理)在语言层面的体现。
2026-01-28 21:01:26
1242
原创 Week 1 Day2 :实现简化版unique_ptr(独占所有权)
cppprivate:// 存储指针和删除器// ...支持自定义删除器(如文件句柄、网络连接等资源的特殊释放逻辑)删除器可通过构造函数传入,或使用默认的正确处理删除器的移动和销毁C风格文件句柄(FILE*,使用fclose关闭)动态链接库句柄(void*,使用dlclose关闭)线程对象(,需要调用join()或detach()问题如何为每种资源设计合适的自定义删除器?unique_ptr的删除器是如何在编译时确定的?这带来什么性能优势?对比unique_ptr与。
2026-01-27 09:49:19
867
原创 Week 1 Day 1 :auto、decltype与类型推导机制
auto是C++11引入的类型说明符,通过初始化表达式自动推断变量类型,其推导规则与模板类型推导基本一致(三种情况)。
2026-01-27 09:44:34
1181
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅