自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】手写日志与固定线程池:任务队列、工作线程和安全退出

本文从多线程程序的日志记录入手,先实现一个支持终端与文件输出的简单日志模块,再继续手写固定线程池,围绕任务队列、工作线程、条件变量、任务提交与异常处理展开。重点分析为什么任务必须在锁外执行、线程池如何复用 worker,以及 Stop、notify_all、join 如何配合完成安全退出,串起生产者消费者模型在线程池中的实际应用。

2026-09-14 09:40:47 356 25

原创 【Linux】条件变量为什么必须配合互斥锁:从 pthread_cond_wait 到阻塞队列

本文围绕 Linux 条件变量展开,从“为什么只有互斥锁还不够”这个问题切入,介绍 pthread_cond_wait、signal、broadcast 等接口的使用与原理,重点解释条件变量为什么必须配合互斥锁、为什么等待条件要用 while 判断,以及伪唤醒和丢失唤醒问题。随后结合生产者消费者模型,完整实现基于 mutex、condition variable 和 BlockingQueue 的线程同步,并补充停止、唤醒与资源回收流程。

2026-09-14 09:09:36 1414 35

原创 【Linux】多线程抢票为什么会出错?从 mutex、futex 到 RAII,讲清线程互斥

本文从多线程抢票出现负数和数据错乱的问题出发,分析 ticket-- 为什么存在线程安全问题,并继续介绍临界资源、临界区、pthread mutex、原子操作、futex、RAII 锁封装以及常见加锁误区,梳理 Linux 线程互斥从现象到实现原理的完整过程。

2026-09-10 02:37:32 1418 39

原创 【Linux】信号量到底在数什么:从PV操作到RingQueue环形队列生产者消费者模型

本文从“信号量到底在数什么”出发,结合 P/V 操作、POSIX 信号量接口和环形队列,讲清空格资源与数据资源如何配合完成生产者消费者同步,并进一步分析单生产单消费扩展到多生产多消费后,为什么还需要互斥锁保护生产和消费下标。

2026-09-10 01:13:10 1318 22

原创 【Linux】epoll 真的是 O(1) 吗?从阻塞 I/O、select/poll 到 LT/ET 与 Reactor 一次讲透

本文围绕"程序如何知道该处理哪个 fd",梳理高并发网络模型演进。阻塞单线程会卡死所有连接,一连接一线程又扛不住大量长连接,于是 I/O 多路复用登场。select/poll 盯住大量 fd,但每轮要重递集合、扫全部 fd;epoll 把关注集合注册进内核,epoll_wait 直接返回就绪事件。LT 条件成立即提醒;ET 强调状态变化,要求读写推进到 EAGAIN。最终汇聚成 Reactor,EventLoop 只做事件分发。epoll 高效告知谁有事,非阻塞 I/O、缓冲区与状态机决定能否处理完。

2026-09-08 13:27:37 1416 35

原创 【Vue3 + TypeScript】接口报错别再到处 try/catch:从请求封装、错误分类到全局兜底,搭一套可维护的错误处理体系

前端错误处理的关键不在 try/catch 写法,而在职责分层。先把错误统一为 AppError(网络/HTTP/业务/取消/未知),由 axios 请求层归一化;全局层处理 401、权限、网络等系统错误;业务错误(如库存不足)交还业务层;组件层用错误边界局部降级,Vue errorHandler、window.onerror、unhandledrejection 作最后兜底。另注意日志脱敏、错误节流、finally 恢复 loading、取消请求不提示。

2026-09-03 13:18:03 2219 38

原创 【Linux】pthread_t 到底是什么?从线程控制块、线程栈到 clone,把 NPTL 一次追到底

本文继续深入 pthread 底层实现,从 pthread_t、NPTL、TLS 和线程栈入手,追踪 pthread_create 的内部流程,分析 struct pthread、mmap、create_thread 与 clone 的关系,理解 Linux 线程从用户层接口到内核执行流的完整链路。

2026-08-31 09:49:53 1177 49

原创 【Linux】多线程打印为什么会乱?pthread 创建、等待、退出、取消与分离全实战

两个线程同时 printf,输出混在一起看不清是谁打的?这篇从第一个 pthread_create 开始,创建、等待、退出、取消、分离五个接口全部配可运行代码逐个讲透:线程参数怎么传、返回值怎么拿、join 和 detach 怎么选、线程被取消时返回值是什么。每段代码都能直接复制运行,跑完你对线程生命周期就没有盲区了。

2026-08-30 01:01:09 1303 26

原创 【Linux】malloc 1GB 内存为什么没立刻占满?从缺页、COW 到 Cache/TLB,看懂线程为什么更轻

malloc 了 1GB 内存,任务管理器里却几乎没变化?这篇从缺页中断的三种类型讲起:硬缺页、软缺页、无效缺页,再到写时拷贝(COW)如何让 fork 变快。最后落到正题——进程切换到底贵在哪(Cache、TLB 全得重刷),线程为什么天然更轻。原理配执行流对比图,面试讲“线程为什么轻”不再干背结论。

2026-08-28 08:01:31 1701 36

原创 【Linux】线程到底是什么?从轻量级进程、虚拟地址到页表与 MMU,一次理清线程底层模型

背了“线程是进程内的执行分支”,但面试官追问 LWP、页表就卡壳?这篇从 task_struct 讲到轻量级进程,再往下追到虚拟地址、两级页表和 MMU/TLB,把“Linux 为什么能用进程模拟线程”这件事一次讲透。看完你能回答:线程和进程到底差在哪,为什么说虚拟地址就是资源的代表。

2026-08-25 00:31:45 2659 44

原创 【MySQL 慢查询排查实战】列表接口逐渐变慢时,怎样从请求链路定位原因

本文以可复现的订单列表查询为例,从请求分段计时、实际 SQL、EXPLAIN、联合索引、查询字段和深分页逐步定位性能问题,并严格区分 MVCC 一致性读、锁定读与元数据锁等待。

2026-08-21 21:46:37 1590 39

原创 【Flask SSE 实时大屏】从数据库新增记录到 ECharts 更新的完整演示链路

本文用 Flask、SQLite、SSE 与 ECharts 搭建一条可复现的实时数据演示链路,覆盖数据写入、历史加载、事件流格式、心跳、Last-Event-ID 续传、Nginx 缓冲以及鉴权和租户隔离注意事项。

2026-08-21 21:38:23 2741 27

原创 【Linux】信号到底什么时候被处理?sigaction、中断、用户态内核态与 SIGCHLD

本文从“信号到底什么时候被处理”出发,继续深入 sigaction、信号捕捉流程、用户态与内核态切换、中断和系统调用,并进一步介绍可重入函数、volatile 与 SIGCHLD,串起 Linux 信号从内核检查到用户 handler 执行的完整过程。

2026-08-17 18:09:09 2339 27

原创 【Linux】信号产生后去了哪里?从 Pending、Block 到 Core Dump,讲清信号的保存

本文继续讲 Linux 信号产生之后如何保存,重点梳理 Pending、Block、Delivery 三个概念,以及 pending、block、handler 三张表之间的关系,并结合 sigset_t、sigprocmask、sigpending 实验,最后介绍 Term、Core Dump 与 gdb 事后调试。

2026-08-17 18:08:07 1915 36

原创 【Linux】Ctrl+C 到底做了什么?从键盘、kill 到 alarm,一次讲清信号的产生

本文从 Ctrl+C 入手,围绕 Linux 信号的产生展开,介绍 signal、kill、raise、abort、前后台进程、SIGKILL、SIGPIPE、alarm 等内容,并结合除 0、野指针、定时任务等实验,理解信号从产生到被进程记录的完整过程。

2026-08-16 12:41:01 1680 30

原创 【RAG 分层排查】资料在知识库里却答不对:从切片、召回到提示词逐层定位

资料明明已经写进知识库,模型为什么仍然答不对?本文从原始文档、切片规则、Embedding 模型、向量入库、Top K 召回、元数据过滤、重排和提示词等环节逐层排查,并结合 Ollama 与 ChromaDB 给出可观察的检索示例,帮助定位答案缺失、旧数据干扰和模型不一致等常见问题。

2026-08-16 00:25:57 248 13

原创 【Linux】共享内存为什么快?System V 的 key、shmget、shmat 与进程通信实战

共享内存为什么被称为高效的 IPC 方式?本文从共享内存映射原理出发,结合 ftok、shmget、shmat、shmdt 和 shmctl,讲清 key 与 shmid、资源生命周期、进程间数据共享以及同步问题,并通过 Server/Client 实验串起完整通信流程。

2026-08-09 17:52:33 1689 42

原创 【Linux】两个毫无关系的进程怎么通信?命名管道 FIFO 从原理到 Server/Client 实战

匿名管道通常依赖父子进程继承文件描述符,那么两个毫无关系的进程怎么通信?本文从 FIFO 的 pathname 入手,结合 mkfifo、open 阻塞规则和 Server/Client 实验,讲清命名管道的通信原理、EOF 行为,以及它和匿名管道之间真正的区别。

2026-08-09 17:48:34 2462 24

原创 【CMake】换台机器就编译失败?用 Presets + vcpkg 固定依赖、工具链与 CI

![封面](https://i-blog.csdnimg.cn/direct/a1482d08e2004b53a847c242587c3566.png#pic_center)>🔥个人主页:<font color="whiblue"><strong>**[爱和冰阔乐](https://blog.csdn.net/2402_87731470?spm=1011.2415.3001.5343)**</strong></font>>📚专栏传送门:[《数据结构与算法》](https://blog.

2026-08-06 09:38:55 1787 34

原创 【Linux】从匿名管道到进程池:任务派发、fd 继承 Bug 与完整实现

本文基于匿名管道实现一个简单的 C++ 进程池,完整拆解任务码、Channel 管理、子进程创建、轮询派发与进程回收流程,并重点分析后创建的子进程继承历史写端后,为什么会导致 EOF 无法到达、子进程无法退出以及父进程卡在 waitpid()。

2026-08-05 15:11:45 1100 34

原创 【Linux】进程为什么不能直接通信?匿名管道原理、fd 继承与读写规则

进程拥有独立的虚拟地址空间,彼此无法直接交换数据。本文从 IPC 的本质出发,结合 pipe()、fork() 与文件描述符继承,讲清匿名管道的底层关系,并通过代码分析字节流、阻塞读写、EOF、SIGPIPE、管道容量与 PIPE_BUF 原子写规则。

2026-08-04 15:08:40 994 31

原创 【Linux】没有公网 IP 也能 SSH 回内网:反向 SSH、ProxyJump 与 systemd 保活实战

没有公网 IP,人在外面怎么 SSH 回家里的 NAS、实验室电脑或树莓派?本文从反向 SSH 的工作原理讲起,结合 ssh -R、ProxyJump、systemd、SSH 心跳与权限限制,完整演示隧道建立、远程访问、自动重连和逐层排障过程,并分析“进程在线但隧道失效”等常见问题。

2026-07-30 00:13:54 2458 46

原创 【Linux】系统彻底进不去怎么办?initramfs、recovery 与 chroot 救援指南

当旧内核也无法正常进入系统时,可以继续通过 initramfs shell、recovery mode 或 Live USB 救援。本文讲解根设备与 UUID 排查、文件系统检查、分区挂载、运行目录绑定、chroot 修复、GRUB 重建及内核包重装,并整理恢复后的验收和升级前预防方法。

2026-07-26 08:43:36 1438 49

原创 【Linux】内核升级后启动失败?旧内核回退、initramfs 重建与 DKMS 修复

Ubuntu 更新内核后无法启动,先别急着删内核或重装系统。本文从 GRUB 进入旧内核开始,讲清启动阶段判断、失败日志查看、/boot 空间检查、initramfs 重建、UUID 与 GRUB 参数核对,以及 DKMS、headers 和 Secure Boot 相关故障的处理方法。

2026-07-26 08:42:52 697 26

原创 【Linux库制作与原理进阶】从 ELF 装载到延迟绑定:搞懂动态库、GOT 与 PLT

本文围绕 ELF 装载与动态链接展开,讲清 Program Header Table 如何指导 Segment 映射,动态库如何进入进程地址空间,以及 PIC、GOT、PLT 分别解决什么问题。通过首次调用与后续调用的对比,进一步理解符号解析、地址重定位和延迟绑定的完整过程。

2026-07-21 19:18:04 4094 40

原创 【Linux】库制作与原理进阶:从 ELF 双视图到静态链接,搞懂符号表与重定位

本文从多个 .o 如何形成可执行文件讲起,结合 readelf、objdump 和符号表实验,分析 Section 与 Segment、UND 符号、重定位表及 call 地址修正过程,理清静态链接如何完成符号解析与地址重定位,并说明静态库参与链接的本质。

2026-07-21 19:16:48 815 23

原创 【Linux】库制作与原理:从源码到静态库,搞懂 ar、-I/-L/-l 与打包交付

本文从一套可直接编译的源码出发,讲清头文件、源文件和目标文件之间的关系,并使用 gcc 与 ar 完成静态库制作。通过实际报错分析 -I、-L、-l 的作用,进一步介绍静态库的目录整理、Makefile 自动构建、打包交付、系统安装及 ldd 查看依赖等内容。

2026-07-19 09:48:42 1205 40

原创 【Linux】库制作与原理:从动态库 not found 到 ELF 加载,彻底搞懂运行时查找

本文承接上篇,介绍动态库的制作与使用,讲清 -fPIC、-shared 以及“编译成功但运行时找不到 .so”的原因,并整理动态库的四种查找方法。同时补充 Visual Studio 中 .lib、.dll 的制作与调用,最后串联目标文件、ELF、Section、Segment 和程序加载的基本流程。

2026-07-19 09:47:57 460 17

原创 【Linux】Ext 文件系统篇:从 inode 到路径解析,搞懂挂载与软硬链接

本文继续讲解 Ext 系列文件系统的管理方式,重点介绍 Data Blocks、inode Table、Block Bitmap、inode Bitmap、GDT 和 Super Block 的作用,并串联文件创建、删除、路径解析、格式化与挂载过程。最后结合实验说明目录、inode、文件名以及软硬链接之间的底层关系。

2026-07-16 20:36:36 1128 48

原创 【Linux】Ext 文件系统:从机械磁盘到 CHS/LBA,搞懂扇区、块与分区

本文从机械磁盘的物理结构讲起,介绍盘片、磁头、磁道、柱面和扇区之间的关系,并结合 CHS 与 LBA 说明磁盘如何完成寻址。随后引出扇区、文件系统块、分区与块组等概念,帮助读者理解操作系统为什么要把磁盘抽象成线性空间,以及 Ext 文件系统出现前需要解决的存储管理问题。

2026-07-13 08:45:17 1172 41

原创 【Linux】文件描述符背后的底层逻辑:重定向、VFS 与用户态缓冲区

本文围绕 Linux 文件 I/O 的进阶内容展开,从 stdout/stderr 重定向分离、2>&1 的底层含义讲起,再结合 files_struct、struct file、file_operations 理解 fd 表、VFS 和“一切皆文件”。同时分析 printf/write 的缓冲差异、fork 后重复输出原因,以及 glibc 中 FILE* 与 _IO_FILE 的关系

2026-07-10 18:29:32 3547 49

原创 【Linux基础IO】printf 为什么会写进文件?一文搞懂重定向和 dup2 底层原理

本文继续深入 Linux 文件 I/O 中的重定向原理,从 fd 的分配规则入手,解释 close(1) 后 printf 为什么会写入文件,并通过 dup2 理解 >、>>、< 的底层实现。文章还补充了 2>&1 的执行顺序、MiniShell 中重定向的实现流程,以及多进程下 close(fd) 与引用计数的关系,帮助读者真正理解重定向到底改了什么。

2026-07-07 18:37:15 462 26

原创 【Linux】基础 I/O 详解:从 fopen 到 open,终于搞懂 fd 为什么从 3 开始

本文从 Linux 文件 I/O 的基础概念讲起,先说明文件不仅包含内容,也包含权限、inode 等属性信息,再回顾 fopen、fread、fwrite 等 C 文件接口,并引出 open、read、write、close 等系统调用。最后通过实验解释 stdin/stdout/stderr 与 0、1、2 的关系,以及 fd 为什么通常从 3 开始,帮助读者理解 FILE* 与文件描述符的联系。

2026-07-07 18:33:17 1108 25

原创 【Linux进程控制】从exec程序替换到手写简易Shell:fork、execvp、环境变量与内建命令

本文针对 Linux 进程程序替换与自定义 Shell 设计的深度硬核技术长文 。 文章首先从内核层深度解密了进程程序替换的底层物理覆盖机制与彻底分离父子进程的写时拷贝(COW)核心技术 ,全面拆解了 exec 系统调用函数簇的命名艺术、特性与环境传参机制 。接着,文章以工业级规范手把手演进、闭环构建了一个支持 cd、export、echo 等内建命令拦截拦截 、动态刷新工作路径并完美维护全局环境变量表的常驻交互式微型 Shell 命令行解释器

2026-07-04 20:27:52 1350 15

原创 【Linux系统篇】从 fork 到 WNOHANG:进程创建与等待机制详解

本文深入拆解 Linux 进程控制的核心机制,围绕进程“创建、退出、回收”三大生命周期展开。文章首先解析了 fork 背后写时拷贝(COW)的延迟复制艺术与分流用途;随后对比了 return、exit 与 _exit 在刷新 C 库缓冲区上的底层差异;并重点剖析了父进程如何通过 wait / waitpid 攻克僵尸进程。通过对原始 status 源码级位布局的分析,强调了使用 WIFEXITED 等系统宏的规范姿势,最后给出了基于 WNOHANG 的非阻塞轮询实战设计。

2026-07-02 19:15:43 1112 48

原创 【Linux进程】程序地址空间详解:虚拟地址、页表、写时拷贝与mm_struct

本文深入讲解 Linux 进程地址空间 的技术博客。文章从“父子进程为何能打印相同地址却拥有不同数据”的实验现象切入,层层剖析了虚拟地址与物理地址的核心区别。详细阐述了 mm_struct 和 vm_area_struct(VMA)在内核中“先描述、再组织”的管理本质,并深入探讨了页表权限检查、写时拷贝(COW)及缺页中断等底层机制,帮助读者全面打通从用户态指针到内核态内存管理的认知闭环

2026-06-30 23:13:20 1504 38

原创 【AI Agent工程化】工具会调用不等于能上线:参数契约、权限边界、幂等与回放测试

本文针对 Agent 在实际落地中面临的参数漂移、路径越界、重复调用及审计缺失等工程痛点,提出了构建一层独立、安全且可追踪的工具执行边界的解决方案。文章基于 Python 逐步搭建起一个小型执行器,详细阐述了工具注册表设计、JSON Schema 参数校验、工作区路径防越界、基于会话的能力清单权限控制、业务幂等键设计以及 SQLite 审计日志落库等核心工程实践,并包含离线录制回放测试与故障注入方案。旨在帮助开发者把不稳定的模型输出,转化为可判断、可拒绝、可追踪的确定性系统行为。

2026-06-27 00:14:13 1230 45

原创 【Linux排障实战】Docker容器启动失败怎么查:端口、日志、权限与网络

本文针对 Docker 容器启动失败等常见故障,总结了一套由浅入深的排障方法论。文章摒弃了“盲目重启”的误区,梳理了容器四种核心状态的底层逻辑,并围绕退出码诊断、日志捕获、端口映射与容器内监听的区别、挂载目录 UID/GID 权限冲突、Compose 变量解析、容器间网络通信、以及健康检查失效等八大高频痛点,结合 Linux 和 Windows 场景给出了具体的验证命令与最小化复现方案。旨在帮助开发者打破“猜想式”排障,建立起可复现、可验证的闭环证据链,精准定位故障根因。

2026-06-22 22:18:11 2499 55

原创 【OpenCV OCR实战】拍照文档识别总是错:透视矫正、二值化、版面分割与Tesseract调参

OCR输出乱码、丢行、识别准度低?别盲目调参数了!文档识别是一条严密的图像流水线。本文用 OpenCV + Tesseract 搭建起一条“可视化”的拍照文档 OCR 流水线,通过保存并对比每一步的中间图像,带你直观排查三大痛点:图像是否处理坏、版面是否切错、OCR 引擎到底看到了什么。文章涵盖文档四角检测、透视矫正、自适应光照补偿、二值化对比、Tesseract PSM 模式选型及低置信度词框导出等核心实战。配合完整代码与工程验收清单,帮你告别玄学调参,快速建立起科学的图像预处理与 OCR 调优思维!

2026-06-18 15:23:12 2128 51

原创 【MCP实战】从0写一个本地工具服务器:文件搜索、SQLite查询与安全边界

本文针对 AI 接入 MCP 本地工具时常见的安全与边界漏洞,拒绝浅显演示,深入探讨了构建生产级本地工具服务器的实用技巧。文章基于 Node.js 24 和 TypeScript(SDK v2),从零实现了两个核心工具:一是通过真实路径校验、限制大小与扩展名的安全文件搜索工具;二是基于只读模式和参数化查询的 SQLite 任务查询工具。文章重点阐述了 Schema 校验、业务防御、stdio 日志通道隔离(必须写进 stderr)以及防信息泄露的错误处理机制,为开发者提供了一套扎实的本地工具安全防御指南。

2026-06-14 22:36:51 3442 52

空空如也

空空如也

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

TA关注的人

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