- 博客(67)
- 问答 (1)
- 收藏
- 关注
原创 【DNS与ICMP】DNS 域名解析与 ICMP 网络诊断全解析:从 hosts 文件到全球分布式系统
本文把 DNS 和 ICMP 放在一起讲,不是随意组合——它们分别代表了网络通信中"寻址"和"诊断"两个正交的维度。读完本文,你将能清晰描述从输入 URL 到页面加载的完整寻址过程,能独立使用 dig/ping/traceroute 诊断网络故障,并彻底理解"ping 是什么端口"这个经典面试陷阱背后的逻辑。
2026-08-24 17:57:46
444
43
原创 【HTTPS】一个“S“背后的战争:五轮迭代还原 HTTPS 设计全貌
本文将从运营商劫持的真实场景出发,先铺垫密码学基础知识(对称加密、非对称加密、数字摘要与签名),然后带你经历 HTTPS 方案的五次迭代——每一步都会暴露一个新漏洞,再引入一个新机制来填补——最终抵达今天互联网安全的基石:非对称加密 + 对称加密 + CA 证书认证的三层防护体系。读完本文,你不仅能讲清 HTTPS 的工作原理,还能回答面试中的刁钻追问:为什么不用全非对称加密?证书到底防住了什么?中间人攻击的根本弱点在哪里?
2026-08-17 14:32:36
1827
50
原创 【Cookie与Session】无状态 HTTP 如何“记住“你?——从 Cookie 协议到分布式 Session
本文将从 Cookie 的协议定义出发,用 C++ 代码验证其写入、过期和路径隔离行为,再引出 Session 的设计动机和实现原理,最后给出生产环境中 Cookie 与 Session 的选型建议。读完本文,你将能用 C++ 亲手实现一个带登录态管理的最小 Web 后端,彻底理解"无状态 HTTP 上的有状态会话"这一看似矛盾却精妙的设计。
2026-08-12 11:29:28
1407
55
原创 【守护进程】从进程组到守护进程——Linux 服务化的底层基石
本文将从进程组、会话、控制终端、作业控制四个基础概念出发,层层递进到守护进程的实现原理,最后手写一个完整的 Daemon() 函数并将一个网络服务守护进程化。读完本文,你将能够:画出"终端→会话→进程组→进程"的层级关系图,解释 setsid 为什么必须由非组长进程调用,独立实现生产级的守护进程创建逻辑,并清楚地理解 Ctrl+C/Z/\ 分别影响了哪些进程。
2026-08-08 15:28:18
553
45
原创 【自旋锁】用“忙等待“换“低延迟“——自旋锁原理与实战
本文将从自旋锁的底层原理出发,用原子操作手写一个自旋锁,再深入 Linux 的 pthread_spinlock 系统调用,最后通过售票系统的实战案例对比互斥锁和自旋锁的性能差异。读完本文,你将能够:独立解释自旋锁和互斥锁在"等待机制"上的本质区别,在合适的场景下用 pthread_spinlock 替代 mutex 以获得更低延迟,并清楚地判断什么样的临界区适合自旋锁、什么样的绝对不能用。
2026-08-04 17:24:15
1138
48
原创 【读写锁】读者写者问题与读写锁——用“读共享、写独占“破解多读少写的并发性能瓶颈
本文将从读者写者问题的定义出发,用伪代码推导最小实现原型,再深入 pthread 读写锁的 API 和优先级策略,最后通过一个完整的 C++ 案例演示读写锁在多读少写场景下的表现。读完本文,你将能够清楚地解释读者写者问题和生产消费模型的本质区别,独立使用 pthread_rwlock_t 优化多读少写的并发场景,并理解读者优先和写者优先两种策略各自面临的饥饿风险。
2026-07-31 20:17:43
1122
40
原创 【Reactor模式】Reactor 反应堆模式——用事件驱动取代人海战术,手写 C++ 高性能网络框架的核心骨架
本文将从零推导 Reactor 的设计动机和核心架构,然后逐行拆解一个完整的 C++ Reactor 参考实现。读完本文,你将能够理解 Reactor 模式的设计哲学,独立写出基于 epoll + Reactor 的高并发 TCP 服务器框架,并清楚地知道每个组件在事件循环中扮演什么角色。
2026-07-27 12:07:49
599
47
原创 【epoll 多路转接】红黑树 + 就绪队列 + 回调机制,彻底搞懂 Linux 高性能服务器的基石
本文将从 epoll 的三个系统调用出发,深入内核数据结构(红黑树 + 就绪队列 + 回调机制),对比 LT 和 ET 两种工作模式的设计哲学,最后手写出完整的 LT 和 ET 版本 epoll 服务器。读完本文,你将能够独立实现基于 epoll 的高并发 TCP 服务器,在面试中向面试官画出 epoll 的内核数据结构图,并清楚地判断什么场景适合 epoll、什么场景反而该用 select。
2026-07-18 00:20:13
476
26
原创 【select 多路转接】从位图推演到字典服务器,掌握 IO 复用的第一块拼图
这篇文章就来拆解 IO 多路转接的第一个、也是最经典的实现:select()。虽然它诞生于 1983 年的 4.2BSD,以今天的标准看有诸多局限(fd 数量上限 1024、每次都要重新设置 fd_set、O(n) 轮询效率),但正是因为它的简单——一个函数、一个位图、四个宏——它成为理解 IO 多路转接的最佳入口。搞懂了 select,再去学 poll 和 epoll 会发现"哦,就是在修 select 的短板"。
2026-07-14 13:45:13
1242
34
原创 【Linux之旅】五种 IO 模型与阻塞 IO:带你彻底搞懂 Linux IO 设计哲学
本文将从 IO 的本质出发,用钓鱼的故事串联五种 IO 模型,理清"同步/异步"和"阻塞/非阻塞"这两对最易混淆的概念,最后用 fcntl 实战带你把默认的阻塞 IO 改成非阻塞模式。读完本文,你将能够在面试中清晰地画出五种 IO 模型的流程图、解释它们之间的本质区别,并亲手写出非阻塞 IO 的 C 代码。
2026-07-10 15:42:03
740
35
原创 【数据链路层详解】从以太网帧到 ARP 协议的最后一跳
网络层解决了"从源到目标的全局寻路",但数据包的旅程最终要落到物理媒介上——铜缆、光纤、无线电波。连接两台相邻设备的这一段"最后一跳",由数据链路层负责。链路层把网络层的 IP 数据报封装成帧,加上 MAC 地址标识相邻设备,通过网卡和交换机在本地网络内传输。
2026-07-06 16:38:47
4325
39
原创 【Linux之旅】Linux 网络层协议详解:从 IP 报文到路由转发的底层逻辑
网络层的核心协议是 IP(Internet Protocol)。它的职责可以概括为两个词——寻址和路由。寻址是给每台主机一个逻辑地址(IP 地址),路由是让数据包在网络中找到从源到目标的最佳路径。本文将从 IP 协议头格式出发,逐步展开子网划分、CIDR、NAT、路由表等核心概念。读完本文,你将理解数据包在网络层的完整旅程,以及路由器如何改变世界。
2026-07-02 11:28:26
998
62
原创 【Linux之旅】Linux TCP 协议详解:从三次握手到拥塞控制的可靠传输密码
本篇从传输层协议视角深挖 TCP 的内核机制。我们不再写代码,而是回答更根本的问题:TCP 报文段长什么样?序列号和确认号是如何工作的?什么叫"三次握手"——为什么不是两次也不是四次?滑动窗口和拥塞窗口有什么区别?TIME_WAIT 为什么等 2MSL?读完本文,你将对 TCP 的理解从"会用 API"升级到"真正懂协议"。
2026-06-27 21:23:08
615
13
原创 【Linux之旅】Linux UDP 协议详解:从五元组到面向数据报的设计哲学
在 UDP Socket 编程实战中,我们掌握了 socket / bind / recvfrom / sendto 的用法,实现了 Echo 服务器、字典服务器和聊天室。那时我们对 UDP 的理解停留在"无连接、不可靠、直发直收"的操作层面。本篇下沉到传输层协议本身,回答根本性问题:UDP 的协议头为什么只有 8 字节?"面向数据报"究竟意味着什么?为什么 UDP 没有发送缓冲区?DNS 和 DHCP 为什么选 UDP 而不是 TCP?
2026-06-23 12:08:23
2214
45
原创 Token 不限量!教你白嫖AI Ping赠金,爽用全场API
AI Ping是国内领先的大模型API聚合与评测平台,提供600+主流模型的一站式接入,核心功能包括模型聚合、性能评测和智能路由。平台近期上线智谱GLM-5.1旗舰模型,在跨文件工程和深度推理方面表现突出。AI Ping推出邀请裂变活动,双方各得10元算力金。文章详细介绍了如何通过Cline插件将GLM-5.1接入VS Code进行项目开发,包括API获取、环境配置和实际应用案例。平台支持多模型灵活选择,赠金可全场通用,为开发者提供了高效稳定的大模型调用解决方案。
2026-06-13 00:11:13
494
13
原创 【Linux之旅】HTTP 协议解析:从请求格式到构建 Web 服务器
本文将从 HTTP 协议的请求/响应格式出发,逐一拆解 URL、请求方法、状态码、常用 Header、Connection 长连接等核心概念,亲手实现一个支持 GET 和 POST 的最简 HTTP 服务器,并逐步扩展为能返回静态文件、解析表单数据的功能完备的 Web 服务器。读完本文,你将彻底理解 HTTP 协议的底层约定,并能从头写出一个可被浏览器访问的真实 Web 后端。
2026-06-12 00:39:33
2047
40
原创 【Linux之旅】Linux 应用层自定义协议与序列化:从粘包问题到网络计算器
本文将围绕"网络版计算器"这个具体需求,从协议设计思路出发,引出序列化/反序列化的必要性,用 jsoncpp 实现数据格式转换,再深入 TCP 流式数据的粘包问题并给出 Encode/Decode 方案,最后封装一个完整的通用 Socket 框架。读完本文,你将掌握从零设计一个应用层协议并写成一个完整网络服务的全流程。
2026-06-01 18:59:10
1926
49
原创 【Linux之旅】Linux TCP Socket 编程实战:从单连接到线程池,构建高并发服务端
上一篇我们掌握了 UDP 编程——无连接、直发直收,简单但不可靠。本篇进入 TCP Socket 编程,TCP 的核心差异在于"连接管理":三次握手建立连接、四次挥手断开连接、确认重传保证可靠。多出来的复杂度换来了**可靠的字节流传输**,这是绝大多数互联网应用(HTTP、SSH、数据库协议)选择 TCP 的原因。
2026-05-28 13:19:18
885
21
原创 【Linux之旅】Linux UDP Socket 编程实战:从 Echo 服务器到多线程聊天室
在上一篇网络基础概念中,我们理清了协议分层、IP/MAC 分工、端口号和 Socket 的基本概念。本篇正式进入 Socket 编程实战,选择从 UDP 协议切入——它比 TCP 简单得多:无需连接、无需握手、直发直收。先掌握 UDP 的编程模型,后续再学 TCP 时会发现很多接口是共通的,只是 TCP 多了"连接管理"这一层复杂度。
2026-05-26 17:36:22
828
10
原创 【Linux之旅】Linux 网络基础全解析:从协议分层到 Socket 编程,构建高性能网络服务的底层基石
如果说操作系统是计算机的"管家",那么计算机网络就是让这些"管家"跨越物理边界协同工作的基础设施。无论你是在浏览器中输入一个 URL、手机收到一条微信推送,还是后端服务处理成千上万的并发请求,背后运转的都是同一套规则——TCP/IP 协议栈。网络编程的入门门槛不在于 API 难记,而在于概念抽象、层级众多:协议分层、IP 地址、MAC 地址、端口号、Socket、字节序……每一个概念单独看都不难,但将它们串成一条完整的链路,理解"一个数据包从发送到接收到底经历了什么",才是真正跨越门槛的标志。
2026-05-21 12:24:01
663
15
原创 【Linux之旅】Linux 线程同步与互斥实战:从锁机制到生产消费模型全指南
本文深入探讨多线程编程中的同步与互斥问题,重点分析临界资源、临界区、互斥和原子性等核心概念。通过售票系统案例展示无锁情况下出现的超卖问题,揭示多线程并发访问共享资源导致的数据竞争。文章详细介绍了互斥量(pthread_mutex_t)的解决方案,包括其核心功能和使用方法,强调互斥机制如何保证临界区代码的原子执行,从而避免数据不一致问题。最后总结了互斥量实现线程安全访问的三个关键要求,为解决多线程并发控制提供了基础方案。
2026-05-17 13:21:19
1058
52
原创 【Linux之旅】Linux 进程信号全解析:从原理到实战,吃透异步通知核心
摘要 Linux信号机制是进程间异步通信的核心方式,本质是一种软件中断。信号由内核统一管理,具有异步性特点——进程无需主动监听,信号到达时会打断当前流程优先处理。Linux定义了64种信号,分为标准信号(1-31)和实时信号(32-64)。信号处理流程包括产生(如终端按键、系统调用等)、内核记录为未决状态、在安全时机递达(执行默认/忽略/自定义动作)。特殊信号SIGKILL(9)和SIGSTOP(19)不可被捕获或忽略,确保内核对进程的绝对控制权。该机制既支持简单事件通知,也能处理复杂进程间通信需求。
2026-05-13 12:17:46
1899
32
原创 【Linux之旅】Linux 线程深度解析:从概念到实战,吃透轻量级进程的核心逻辑
在 Linux 开发中,线程是实现并发的核心工具 —— 它比进程更轻量化,能高效利用多核 CPU,还能共享进程资源减少开销。但你是否真正理解:线程和进程到底是什么关系?线程为什么能共享进程的地址空间?POSIX 线程库(pthread)的底层实现逻辑是什么?本文从底层原理到实战操作,层层拆解 Linux 线程的核心知识,既适合入门者夯实基础,也能帮开发者理清线程控制的关键细节,真正做到 “知其然且知其所以然”。
2026-03-21 11:45:00
841
26
原创 【Linux之旅】Linux 进程间通信(IPC)全解析:从管道到共享内存,吃透进程协作核心
在 Linux 中,进程是资源分配的基本单位,彼此独立且拥有各自的地址空间 —— 这意味着进程间无法直接访问对方的数据。但实际开发中,进程间协作无处不在:比如终端中who | wc -l的管道通信、服务器进程与客户端进程的数据交互、多进程共享配置文件等。这就需要进程间通信(IPC,Inter-Process Communication) 机制打破隔离,实现数据传输、资源共享和事件通知。
2026-02-07 10:31:53
1629
49
原创 【Linux之旅】Linux 动静态库与 ELF 加载全解析:从制作到底层原理
在 Linux 开发中,“库” 是绕不开的核心概念 —— 它是封装好的可复用代码,让开发者无需从零实现基础功能,大幅提升开发效率。但你是否好奇:静态库(.a)和动态库(.so)有何区别?动态库为什么会出现 “找不到” 的报错?可执行程序是如何加载库并运行的?ELF 文件又藏着怎样的底层秘密?
2026-02-03 21:32:45
2020
58
原创 【Linux之旅】深入 Linux Ext 系列文件系统:从磁盘物理结构到软硬链接的底层逻辑
你是否曾好奇:当你在 Linux 中执行touch test.txt时,文件究竟是如何 “住进” 磁盘的?为什么删除文件时,有时删的是 “别名”,有时却能彻底清空数据?为什么ls -li会显示一个看似无关的数字(inode 号)?这些问题的答案,都藏在 Linux 最经典的Ext 系列文件系统(Ext2/Ext3/Ext4)中。今天,我们就从 “磁盘硬件” 出发,一步步拆解 Ext 文件系统的设计逻辑 —— 从物理扇区到逻辑块,从 inode 到块组,再到目录、挂载和软硬链接,带你看懂 Linux 文件
2025-11-21 11:49:48
2215
95
原创 【寻找Linux的奥秘】Linux 基础 IO 全解析:从 C 库到内核,吃透文件操作的底层逻辑
今天,我们就从 C 语言的熟悉接口入手,一步步深入内核,拆解 Linux 基础 IO 的核心概念 —— 系统调用、文件描述符、重定向、缓冲区,以及 “一切皆文件” 的设计哲学
2025-11-04 09:30:00
3275
47
原创 【探寻C++之旅】C++ 智能指针完全指南:从原理到实战,彻底告别内存泄漏
智能指针一定是你必须掌握的现代 C++ 工具。它基于 RAII 思想,自动管理动态资源,让你无需手动delete,从根源上减少内存泄漏风险。今天,我们就从 “为什么需要智能指针” 到 “不同智能指针的实战场景”,带你系统掌握这一核心特性。
2025-10-29 09:30:00
3842
94
原创 【探寻C++之旅】C++11 深度解析:重塑现代 C++ 的关键特性
作为 C++ 开发者,你是否曾为对象初始化的混乱语法头疼?是否因频繁的拷贝操作导致性能瓶颈?如果你的答案是 “是”,那 C++11 绝对是你必须掌握的里程碑版本 —— 它不仅解决了 C++98/03 时代的诸多痛点,更奠定了现代 C++ 的编程范式。今天,就带你系统梳理 C++11 的核心特性,帮你真正理解 “为什么 C++11 是 C++98 之后最重要的更新”。下面让我们一起来进入本章的学习。
2025-10-23 22:52:51
2428
87
原创 【探寻C++之旅】第十六章:unordered系列的认识与模拟实现
今天,我们继续踏入追寻C++的冒险历程。上一章我们讲解了数据结构哈希表,那么本章让我们用哈希表来模拟实现一下C++STL中的unordered_map和unordered_set。下面让我们一起来进入本章的学习。
2025-10-03 19:30:06
5323
61
原创 【探寻C++之旅】第十五章:哈希表
今天,我们继续踏入追寻C++的冒险历程。前面我们讲了很多的树形数据结构,那么这一章我们来讲解另一类数据结构——哈希表。下面让我们一起来进入本章的学习。
2025-09-27 23:17:40
10741
66
原创 【探寻C++之旅】第十四章:简单实现set和map
今天,我们继续踏入追寻C++的冒险历程。上一章我们讲解了红黑树,那么本章我们将通过红黑树去模拟实现一下STL库中的set和map这两类容器,主要的目的是让我们更加的理解红黑树以及set和map的使用原理。下面让我们一起来进入本章的学习。
2025-09-23 11:48:15
9972
57
原创 【寻找Linux的奥秘】第九章:自定义SHELL
本专题将基于Linux操作系统来带领大家学习操作系统方面的知识以及学习使用Linux操作系统。前面我们认识并熟悉了进程的基本概念以及操作,那么本章让我们对前面所学进行融会贯通,来自定义编写一下我们使用的命令行解释器,也就是shell。本章我们要学习的是——自定义shell的编写。
2025-06-01 20:03:49
3485
65
原创 使用蓝耘元生代 MaaS 平台 API 工作流调用技巧与实践体验
蓝耘元生代 MaaS(Model as a Service)平台是一个强大的云端人工智能服务平台,为开发者、创业者及非技术背景用户提供开箱即用的 AI 模型服务,通过 API 快速集成,降低 AI 应用开发门槛,助力业务创新。本文将分享我在使用蓝耘元生代 MaaS 平台进行 API 工作流调用的实践体验,总结一些实用技巧,帮助大家更高效地利用该平台。
2025-05-27 17:23:49
1232
10
原创 【寻找Linux的奥秘】第八章:进程控制
本专题将基于Linux操作系统来带领大家学习操作系统方面的知识以及学习使用Linux操作系统。前面我们认识了进程,也了解环境变量和虚拟地址空间的概念,那么本章让我们更深入地去了解进程。本章我们要学习的是——进程控制
2025-05-25 20:02:44
3028
64
原创 【寻找Linux的奥秘】第七章:虚拟地址空间
本专题将基于Linux操作系统来带领大家学习操作系统方面的知识以及学习使用Linux操作系统。上一章我们简单认识了环境变量,本章将讲解操作系统中另一个重要的概念——程序地址空间。
2025-05-21 23:39:30
2442
86
原创 【寻找Linux的奥秘】第六章:环境变量
本专题将基于Linux操作系统来带领大家学习操作系统方面的知识以及学习使用Linux操作系统。上一章我们简单认识了进程,本章将讲解操作系统中一个重要的概念——环境变量。
2025-05-19 00:38:53
2179
53
原创 【寻找Linux的奥秘】第五章:认识进程
本专题将介绍关于Linux操作系统的种种,前几章我们介绍了Linux下常用的一些基本开发工具,本章将讲解Linux中系统的概念——进程。(本章节默认使用的环境是centos 7.8)
2025-05-15 21:16:49
2889
53
原创 【探寻C++之旅】第十三章:红黑树
今天,我们继续踏入追寻C++的冒险历程。之前我们讲解了最早的自平衡二叉搜索树——AVL树,那么本章我们将讲解另一类自平衡二叉搜索树——红黑树。下面让我们一起来进入红黑树树的学习。
2025-05-08 19:29:47
1851
59
原创 【探寻C++之旅】第十二章:异常
今天,我们继续踏入追寻C++的冒险历程。今天我们让我们来讲讲C++中用来处理错误的一种方式——异常,下面让我们一起进入异常的学习。
2025-04-29 15:32:31
1296
20
空空如也
这是怎么回事?代码可以正常运行,就是有一个这个东西
2023-10-28
为什么循环次数一多前面的就打印不出来
2023-10-12
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅