自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 epoll 底层原理 —— 从 PCB 到就绪链表的完整路径

epoll 为什么比 select/poll 快?答案不在 API 层面,在内核。本文从进程的task_struct 出发,逐层追踪 fd_array → struct file → eventpoll → epitem → sock,用一张全景图贯穿 epoll创建、注册回调、数据到达通知、等待唤醒的完整数据链路。文中拆解了红黑树( 管理)与就绪链表+回调(通知)两套独立系统的分工,详细对比了 ET 与 LT的内核行为差异和用户态写法区别,并给出EPOLLOUT的正确使用姿势

2026-06-03 00:23:44 588 1

原创 从select、poll到epoll——手写 epoll 版 TCP echo 服务器

poll 解决了两套数据维护,但 O(n) 全量扫描的问题依然在。epoll用三个系统调用彻底告别轮询——红黑树存fd、回调通知、就绪链表直接取。本文手写 EpollServer,和 select/poll逐行对比,末尾附上当前代码的已知问题和下一步方向。

2026-06-02 00:56:34 479

原创 从 select 到 poll —— 打破位图天花板

select 用完就忘不掉的两件事:FD_ZERO 重建 + fd_set 上限 1024。poll用一个结构体数组同时干掉了这两个痛点——本文手写 PollServer,和 select逐行对比,聊聊 poll 到底解决了什么,又留下了什么给 epoll。

2026-06-02 00:32:00 526 1

原创 从零手写 select 版 TCP echo 服务器——踩坑、原理与代码全记录

用 C++ 从零手写了一个基于 select 的 TCP echo 服务器。本文按"感受痛点→宏观理解→理论深入→逐行代码→验证破坏"的螺旋学习路径,把 select 的执行流程、fd_set 值传入值传出、非阻塞 I/O 的意义、TCP滑动窗口的关联讲清楚。附完整源码和 6 个真正值得记录的踩坑切面,适合学I/O 多路复用的初学者。

2026-05-30 16:30:43 469

原创 Claude Code 深度使用40小时复盘:把AI当成你的复利账户

很多人把 AI当成一次性工具——打开、提问、关掉,下次再来从零开始。但Claude Code 的真正价值不在单次对话,而在它记住你、适应你、越用越懂你的"复利效应"。本文基于 DeepSeek v4 pro + Claude Code 约 40 小时实测,从"打地基阶段该用 AI的哪些能力"切入,建立了一条完整的学习工作流(逐行讲解→知识点追问→手写实现→代码审查→Bug排查→复习问答→学习记录),附带可直接复制使用的周度复盘提示词、Memory 系统配置方法和 8个真实踩坑记录

2026-05-29 21:01:22 573 1

原创 从零实现一个 C++日志库———策略模式 + RAII 实战

本文实现了一个线程安全的日志系统,包含以下核心组件:Mutex封装:将pthread_mutex_t封装为C++类,自动管理锁的生命周期(构造初始化/析构销毁)RAII锁守卫:LockGuard类实现构造加锁/析构解锁,确保临界区退出时必定释放锁日志等级:定义DEBUG/INFO/WARNING/ERROR/FATAL五级日志枚举策略模式:通过LogSink基类派生出控制台(ConsoleSink)和文件(FileSink)两种输出方式自动刷新:LogMessage临时对象在析构时自动输出完整日志

2026-05-28 20:21:59 469

原创 从零搭建TCP通信基础流程(客户端+服务端+OS角度分析)

本文介绍了TCP通信的基础流程,从服务端和客户端两个视角详细说明了实现步骤。服务端遵循socket()→bind()→listen()→accept()→recv()/send()→close()六步流程,客户端则采用socket()→connect()→send()→recv()→close()五步流程。文章提供了完整的C++代码示例,并对比了客户端与服务端的关键区别,如IP设置、端口绑定等。同时深入解析了各接口的功能和参数含义

2026-05-27 22:33:09 675

原创 TCP协议的全面复习

TCP协议复习摘要 TCP是传输层协议,提供可靠传输服务。核心机制包括: 连接管理:三次握手防止历史SYN干扰,四次挥手处理全双工关闭,TIME_WAIT确保数据包过期 可靠性机制:确认应答(ACK)、超时重传(RTO)、滑动窗口(批量发送)、流量控制(接收方窗口)、拥塞控制(慢启动/快恢复)、连接管理 关键问题:SYN Flood攻击通过SYN Cookie防御,延迟ACK与Nagle算法可能冲突,滑动窗口解决低效问题,糊涂窗口综合征需避免小窗口传输 。。。。。。

2026-05-15 22:49:37 604

原创 TCP三次握手四次挥手

本文通过生活化类比和场景分析,深入浅出地解释了TCP三次握手和四次挥手的原理。主要内容包括: 用对讲机通话类比三次握手,说明最少需要三步才能确认双方的收发能力 分析两次握手的两个致命缺陷:无法处理延迟旧包和丢包问题 解释SYN、ACK等TCP标记位的实际含义 说明四次挥手比建立连接多一步的原因:TCP是全双工协议,关闭时需要独立确认双方的结束 文章采用生活场景类比技术概念,避免了专业术语堆砌,帮助读者从本质上理解TCP连接管理的设计思想。适合准备面试或学习计算机网络的新手阅读,预计15分钟可掌握核心要点。

2026-05-13 19:40:31 588

原创 epoll底层原理与select-poll对比

本文深入浅出地解释了epoll的高效原理及其底层实现。通过快递柜的类比,形象说明了epoll相比select/poll的优势在于"注册制+回调通知"机制,避免了无效轮询。文章详细剖析了epoll的三个核心数据结构(红黑树、就绪链表、等待队列)的协作流程,对比了三种I/O多路复用技术的性能差异,并重点讲解了ET/LT模式的区别与使用场景。最后提供了epoll服务器的实现代码框架和常见陷阱,帮助开发者快速掌握epoll的核心要点。全文以通俗易懂的方式揭示了epoll高效的本质

2026-05-12 21:28:37 570

原创 从零掌握 Linux C++ 多线程编程:线程、互斥锁、条件变量与线程池

本文摘要:一篇面向初学者的实用指南,通过餐馆经营比喻生动讲解多线程核心概念。文章首先对比单线程与多线程的区别,介绍线程创建与管理的两种方式(join/detach)。重点剖析了竞态条件问题及互斥锁解决方案,详细解释了lock_guard的RAII机制。随后深入讲解条件变量如何实现线程高效休眠与唤醒,避免忙等待。最后指导读者实现一个完整的线程池,并推荐了进一步学习资源。全文采用大量代码示例和生活类比,将复杂的多线程原理转化为易于理解的内容适合具备C++基础但缺乏多线程经验的开发者快速上手

2026-05-12 07:46:21 693

原创 Gitee 与项目使用指南 — 从零到推送

本文提供了从零开始使用Gitee管理代码项目的完整指南。首先解释了Git作为本地版本控制工具和Gitee作为云端代码仓库的区别。然后详细介绍了准备工作:注册Gitee账号、安装Git、配置身份信息。重点讲解了首次上传项目的完整流程,包括初始化仓库、创建.gitignore、提交代码、关联远程仓库和推送操作。文章还提供了日常使用的标准三步操作规范,以及如何编写清晰的提交信息。特别强调了代理问题和SSH密钥配置等常见问题的解决方案,帮助开发者快速建立安全的代码托管工作流程。

2026-05-11 21:25:48 698

原创 C++中虚函数实现机制

C++虚函数机制通过虚指针(vptr)和虚表(vtable)实现多态。每个对象包含vptr指向所属类的vtable,vtable存储虚函数地址。子类覆盖虚函数时,其vtable对应槽位替换为子类实现地址。调用虚函数时,通过对象vptr找到vtable,再定位函数地址,实现运行时动态绑定。相比普通函数,虚函数需要两次指针解引用,带来额外开销但支持多态。每个类拥有独立vtable,继承关系中vptr在构造函数中逐级设置。

2026-05-11 10:35:24 358

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除