🔥 目录
- 一、前言
- 二、技术学习的深化与拓展
- 1. C/C++与系统编程的巩固
- 2. 网络与并发编程
- 3. 容器化与中间件技术
- 4. 协议与框架
- 5. 图形界面与工程工具
- 三、项目实践与能力提升
- 四、博客写作与社区互动
- 五、反思与不足
- 六、致谢与展望
一、前言
2025年即将结束,回望这一年,从大二升入大三的过渡期,我经历了比以往更系统、更深入的技术学习,也完成了从“被动输入”到“主动输出”的转变。如果2024年是我与CSDN初识、开始接触编程世界的一年,那么2025年则是我真正意义上构建技术体系、形成工程思维、积累项目经验的一年。
相比去年的迷茫和试探,今年的目标更加清晰:不再把写博客当作任务,而是作为思考、沉淀和分享的工具;不再盲目追逐热门技术,而是围绕实际应用场景去理解底层原理和工程实现。这一年,我在CSDN上累计发布了181篇技术博客,内容覆盖C/C++系统编程、Linux网络编程、Docker容器化、Redis数据结构与应用、Protobuf序列化、brpc框架、etcd分布式协调、RabbitMQ消息队列、Qt图形界面开发,以及Golang基础与并发模型等方向。这些内容大多源于项目实践、课程实验和自学总结,也得到了不少读者的反馈和讨论,这让我感到技术分享的价值所在。
二、技术学习的深化与拓展
进入大三后,课程压力有所增加,但我也逐渐意识到,仅靠课堂知识远远不够。因此,我主动规划了课外学习路径,重点围绕“系统能力”和“工程能力”两个维度展开。
1. C/C++与系统编程的巩固
C/C++依然是我最核心的编程语言。今年我系统复习了指针、内存管理、函数调用栈、动态链接等底层机制,并通过编写小型项目加深理解。例如,在实现一个基于epoll的高性能TCP服务器时,我深入研究了I/O多路复用的工作原理、边缘触发与水平触发的区别、连接管理中的资源回收问题,以及如何避免惊群效应。这些实践让我对Linux系统编程有了更扎实的掌握。
此外,我还开始学习汇编语言,尝试用x86-64汇编实现字符串处理、数组操作、成绩统计等基础功能。虽然目前还处于入门阶段,但通过阅读反汇编代码,我能更清晰地理解高级语言在底层的执行过程,这对调试和性能优化有很大帮助。
2. 网络与并发编程
在计算机网络方面,我不再满足于“能用socket通信”,而是开始关注协议设计、连接管理、超时重传、流量控制等细节。我重新梳理了TCP三次握手与四次挥手的全过程,理解了TIME_WAIT状态的作用,以及如何通过SO_REUSEADDR等选项优化服务端启动流程。
在并发方面,我系统学习了POSIX线程(pthread)编程模型,包括线程创建、同步原语(互斥锁、条件变量、读写锁)、线程池设计等。同时,我也开始了解无锁编程的基本思想,例如通过CAS(Compare-And-Swap)实现原子操作,用于构建高性能的并发数据结构。虽然目前还未能完全掌握,但这是我在2026年重点突破的方向。
3. 容器化与中间件技术
今年我正式接触了Docker,并将其应用于多个课程项目中。通过编写Dockerfile、使用docker-compose编排多容器应用,我理解了镜像分层、容器隔离、网络模式、数据卷挂载等核心概念。更重要的是,我开始用“可移植、可复现”的思路来构建开发和部署环境,这极大提升了项目的协作效率。
在中间件方面,我学习并实践了Redis的基本使用和高级特性。例如,使用Redis实现分布式锁、缓存击穿/穿透/雪崩的应对策略、基于Stream的消息队列等。我还研究了Redis的底层数据结构(如SDS、跳跃表、压缩列表),这让我在设计缓存方案时能做出更合理的选择。
此外,我接触了RabbitMQ,通过在项目中引入消息队列解耦模块,实现了异步日志处理和任务分发。通过对比Redis Stream与RabbitMQ的功能差异,我逐渐建立起对“消息中间件选型”的初步认知。
4. 协议与框架
Protobuf是我今年重点掌握的序列化协议。相比JSON,它具有更小的体积、更快的解析速度和更强的类型约束。我在一个基于brpc的微服务项目中,使用Protobuf定义服务接口和消息格式,并通过brpc提供的RPC框架实现跨节点通信。这让我体会到“接口先行、契约驱动”的开发模式在分布式系统中的重要性。
同时,我也初步了解了etcd,将其用作服务注册与发现的中心存储。通过编写Go客户端与etcd交互,我理解了租约(Lease)、Watch机制、分布式锁的实现原理。尽管使用的是Golang,但其并发模型(goroutine + channel)与C++的线程模型形成鲜明对比,这拓宽了我对并发编程范式的理解。
5. 图形界面与工程工具
在课程项目中,我使用Qt开发了一个地震波形可视化工具。通过QCustomPlot绘制波形图,结合文件读取、数据解析、交互控制等功能,我不仅掌握了Qt的基本组件使用,也理解了MVC架构在GUI开发中的体现。
在工程工具方面,我已能熟练使用Git进行版本控制,包括分支管理、合并策略、冲突解决等。同时,我也开始使用CMake构建C++项目,替代传统的Makefile,提高了项目的可维护性和跨平台能力。
三、项目实践与能力提升
今年我参与了两个主要项目,均围绕实际问题展开,强调工程落地。
第一个项目是“分布式日志收集系统”。该系统使用brpc作为通信框架,客户端将日志通过Protobuf序列化后发送至中心节点,中心节点将日志写入RabbitMQ,由消费者异步写入本地文件或转发至Elasticsearch。项目中我负责客户端SDK和中心节点的开发,并使用Docker进行部署。通过这个项目,我深入理解了微服务架构下的通信、容错与扩展设计。
第二个项目是“实时地震波形监测平台”。基于Qt开发前端界面,后端通过串口或网络接收地震仪数据,进行实时解析与可视化。项目中我实现了多线程数据读取、缓冲区管理、波形滚动显示等功能,并利用Redis缓存最近10分钟的数据以支持快速回放。这个项目让我体会到嵌入式与桌面应用结合的开发模式,也锻炼了调试硬件通信协议的能力。
此外,我还参加了多场算法竞赛,虽然不再以算法为核心方向,但保持每周刷题的习惯,确保基础数据结构与算法思维不退化。
四、博客写作与社区互动
2025年,我在CSDN上发布了181篇博客,平均每周3-4篇。内容涵盖:
- 技术原理讲解(如epoll机制、Redis跳跃表)
- 代码实现与调试记录(如brpc服务端搭建、Docker网络配置)
- 项目复盘与设计思考(如日志系统架构演进)
- 学习笔记与工具使用(如CMake入门、GDB调试技巧)
相比去年,我更加注重内容的准确性、结构的清晰性和代码的可复现性。每篇文章都力求“自己能看懂,别人也能用”。虽然阅读量有高有低,但我逐渐摆脱了对数据的焦虑,转而关注内容本身的价值。
我也开始在评论区与读者互动,回答技术问题,甚至有读者基于我的博客实现了自己的项目。这种正向反馈让我意识到,技术分享不仅是输出,更是连接与共建。
五、反思与不足
尽管取得了一些进步,但我也清醒认识到自身的不足:
- POSIX标准理解仍浅:虽然能使用pthread、socket等接口,但对标准背后的规范、可移植性问题、边界行为等缺乏系统学习。
- Golang掌握不够深入:目前仅能完成基础开发,对GC机制、调度器、内存模型等核心原理了解有限。
- 软件工程方法论欠缺:在项目中较少使用需求建模、用例分析、敏捷迭代等工程实践,更多依赖直觉开发。
- 测试意识不足:很多代码缺乏单元测试和集成测试,依赖手动验证,这在复杂项目中容易引入隐蔽bug。
这些问题我已列入2026年的学习计划中。
六、致谢与展望
感谢我的朋友Zfox(https://blog.csdn.net/weixin_50776420)一路以来的陪伴与鼓励。从大一一起刷题,到如今各自在不同技术方向深耕,他的自律和坚持始终激励着我。也感谢CSDN平台提供了一个记录与分享的空间,让我在输出中不断成长。
展望2026年,我将继续深化系统编程能力,重点突破无锁并发、内存池设计、网络协议优化等方向。同时,我也希望参与更多开源项目,提升工程协作能力。如果有机会,我希望能进入一家重视技术深度的公司实习,将所学应用于真实业务场景。
最后,送给所有仍在技术路上前行的同行者一句话:
- 技术的成长从来不是一蹴而就,而是在日复一日的坚持、试错与反思中悄然发生。愿我们都能在2026年,走得更稳,看得更远