三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

【创作128天纪念】从新手村踏上征途

【创作128天纪念】从新手村踏上征途

【创作128天纪念】从新手村踏上征途

前言:2026年4月1日,我发表了第一篇技术博客《菜刀小试之我才刚进新手村》。不知不觉,今天是我成为 C/C++ 创作者的第 128 天。回首这段旅程,从最初敲下第一个指针示例,到文章荣幸入选《C/C++领域内容榜》第 6 名,创作见证了我的每一次技术蜕变。


一、机缘:为何踏上创作之路

还记得 2026 年 04 月 01 日,我怀着忐忑与期待的心情发布了博客生涯的第一篇文章——《菜刀小试之我才刚进新手村》。

最初选择写博客的初心非常纯粹:

  1. 啃硬骨头的记录:C/C++ 语言博大精深,动态内存管理、指针与引用、泛型编程、数据结构底层实现……每一个知识点都充满挑战。每当在一个内存泄漏(Memory Leak)或悬挂指针(Dangling Pointer)上折腾很久并最终解决后,我都希望能系统地记录下来,避免重复踩坑。
  2. “倒逼输入”的输出机制:学习编程最怕“看懂了但写不出来”。把一个复杂的底层技术点用清晰的逻辑、图文和规范的代码讲明白,是检验自己是否真正掌握的最有效方式。
  3. 技术交流与共同成长:开源社区和技术博客是开发者最好的精神家园。我希望将自己在日常学习与实践中的心得分享出来,与广大的技术同行一起交流探讨。

二、收获:汗水浇灌出的数据与同伴

这 128 天的坚持与沉淀,带来了远超预期的反馈与惊喜:

  • 🏆榜单突破:文章荣幸入选《C/C++领域内容榜》第 6 名
  • 📈数据沉淀
    • 总点赞:984 次
    • 互动评论:252 次
    • 文章收藏:616 次
    • 代码片分享:1386 次
    • 博客总排名:18106 名
    • 原力等级:Level 4(原力分 536)

比数据更珍贵的,是正向的技术反馈。每当看到评论区有读者回复“这篇文章帮我彻底搞懂了动态内存分配”、“代码结构写得很规范优雅”,或是与同好们在评论区深度探讨算法优化与底层机制时,那种技术共鸣带来的成就感是无可替代的。


三、日常:平衡学习与创作的节奏

很多人常问:“在有限的精力下,如何平衡日常学习与博客创作?”

对我而言,创作早已不再是额外的负担,而是学习流程中自然顺畅的最后一环

  • “复盘即创作”:我从不专门花大块时间去凑字数,而是在完成一个代码模块、搞懂一个复杂数据结构(如顺序表、自定义链表、内存池)或解决一个 Bug 后,顺手把逻辑提炼、踩坑记录和重构后的代码梳理成 Markdown 文档。
  • 碎片化积累 + 模块化输出:平时利用碎片时间记录框架和代码片段,周末或空闲时集中组织语言。这种习惯极大地提升了我的代码规范意识与逻辑表达能力。

四、成就:我写过最满意的一段 C++ 代码

在过去的创作与实践中,我始终追求代码的安全性、内存管理的严谨性以及极致的运行效率。下面是我重构并长期使用的一个符合 RAII 原则且具备强异常安全性的通用动态数组(Dynamic Sequential List / Safe Vector)的核心实现:

#include<iostream>#include<initializer_list>#include<stdexcept>#include<algorithm>#include<utility>/** * @brief 符合 RAII 原则的通用动态顺序表 (Safe Vector Implementation) * @tparam T 元素类型 */template<typenameT>classDynamicArray{private:T*data_;// 动态内存指针size_t capacity_;// 当前分配容量size_t size_;// 当前有效元素个数// 动态扩容机制(指数级增长)voidreallocate(size_t new_capacity){T*new_data=newT[new_capacity];for(size_t i=0;i<size_;++i){new_data[i]=std::move(data_[i]);// 优先移动,提升性能}delete[]data_;data_=new_data;capacity_=new_capacity;}public:// 默认构造函数explicitDynamicArray(size_t initial_capacity=4):data_(newT[initial_capacity]),capacity_(initial_capacity),size_(0){}// 初始化列表构造函数DynamicArray(std::initializer_list<T>list):data_(newT[list.size()]),capacity_(list.size()),size_(0){for(constauto&item:list){push_back(item);}}// 析构函数(RAII 保证内存自动释放,杜绝泄漏)~DynamicArray(){delete[]data_;}// 深拷贝构造函数DynamicArray(constDynamicArray&other):data_(newT[other.capacity_]),capacity_(other.capacity_),size_(other.size_){std::copy(other.data_,other.data_+size_,data_);}// 移动构造函数 (避免非必要拷贝)DynamicArray(DynamicArray&&other)noexcept:data_(other.data_),capacity_(other.capacity_),size_(other.size_){other.data_=nullptr;other.capacity_=0;other.size_=0;}// 赋值运算符重载 (Copy-and-Swap 惯用法,保证强异常安全性)DynamicArray&operator=(DynamicArray other)noexcept{swap(other);return*this;}voidswap(DynamicArray&other)noexcept{usingstd::swap;swap(data_,other.data_);swap(capacity_,other.capacity_);swap(size_,other.size_);}// 尾插元素(左值重载)voidpush_back(constT&value){if(size_==capacity_){reallocate(capacity_==0?1:capacity_*2);}data_[size_++]=value;}// 尾插元素(右值重载:高效移动语义)voidpush_back(T&&value){if(size_==capacity_){reallocate(capacity_==0?1:capacity_*2);}data_[size_++]=std::move(value);}// 随机访问运算符T&operator[](size_t index){returndata_[index];}constT&operator[](size_t index)const{returndata_[index];}// 带边界检查的安全访问T&at(size_t index){if(index>=size_){throwstd::out_of_range("DynamicArray: Index out of bounds!");}returndata_[index];}size_tsize()constnoexcept{returnsize_;}size_tcapacity()constnoexcept{returncapacity_;}boolempty()constnoexcept{returnsize_==0;}};intmain(){DynamicArray<int>arr={10,20,30,40};arr.push_back(50);std::cout<<"Array Size: "<<arr.size()<<", Capacity: "<<arr.capacity()<<"\n";std::cout<<"Elements: ";for(size_t i=0;i<arr.size();++i){std::cout<<arr[i]<<" ";}std::cout<<std::endl;return0;}

为什么这段代码对我意义非凡?

  1. 严格的内存生命周期管理:遵循 RAII 原则,彻底告别野指针与内存泄漏。
  2. 现代 C++ 规范:巧妙运用移动语义(Move Semantics)与Copy-and-Swap惯用法,兼顾极佳的执行效率与强异常安全性。
  3. 高内聚的接口设计:既保持了底层指针操作的极佳性能,又提供了安全易用的模版类封装。

五、憧憬:未来的创作与职业规划

128 天是一个阶段的终点,更是新征程的起点。站在此基石上,我对未来的技术道路充满信心:

  1. 深入底层与系统工程:继续深耕 C/C++ 核心原理、并发编程、系统级/高性能开发,将更多硬核理论融入工程实践。
  2. 创作质量全面升级
    • 打造系列化的 C/C++ 进阶专栏,将底层原理(内存模型、模板元编程、STL 源码剖析等)用简洁优雅的语言透彻呈现。
    • 持续分享高质量的工程踩坑与 Bug 排查指南,帮助更多初学者少走弯路。
  3. 技术社区共进:保持初心,持续输出,期待在 CSDN 的“里程碑专区”留下更多扎实而富有价值的技术脚印。

结语:感谢每一位点赞、收藏、评论和分享代码片的朋友!感谢 CSDN 平台的记录与鼓励。技术之路漫漫,唯有热爱与坚持不可辜负。感谢遇见,你一出现,就是晴天!🚀

← 返回列表