自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

谦-努-实-攻城狮

谦逊-努力-务实

  • 博客(78)
  • 资源 (1)
  • 收藏
  • 关注

原创 【金丹·84】网络编程:socket入门

修真界把socket叫「法力门环」。本篇拆开TCP socket七步法力(socket/bind/listen/accept/connect/send/recv),写一个能跑的echo服务器和客户端,再讲清字节序(htons/inet_pton)的坑。适合金丹修士入门网络编程。

2026-10-12 15:03:37 104

原创 【金丹·83】多线程编程实战:生产者消费者

生产者消费者问题是多线程编程的经典模型。本文用C语言+POSIX线程从零实现:互斥锁保护共享缓冲区,条件变量实现生产者通知消费者、消费者通知生产者。覆盖虚假唤醒、环形缓冲区、死锁预防等实战要点,附完整可运行代码。

2026-10-12 09:08:36 275

原创 【金丹·82】内存泄漏怎么查:valgrind和ASan

金丹期第82篇,深入讲解内存泄漏排查工具:valgrind memcheck检测原理、AddressSanitizer编译时插桩、常见内存错误类型(泄漏、越界、野指针、双重释放),以及实战排查流程与工具选型建议。

2026-10-11 15:03:41 300

原创 【金丹·81】性能分析:你的程序慢在哪

金丹期必修性能分析术:用perf stat看硬件计数器(IPC、cache-misses、branch-misses),用perf record+perf report采样定位热点函数,用FlameGraph火焰图可视化调用栈,最后拆解cache-misses命中率定位访存瓶颈。五件兵器配齐,程序慢在哪一目了然。

2026-10-11 09:03:50 118

原创 【金丹·80】为什么金丹期看代码像开天眼

金丹期工程师看代码如同开天眼:不是逐行读,而是从架构、模式、数据流三个维度建立代码地图。本文讲透代码阅读的系统方法论,从静态分析到动态调试,从IDE工具链到心智模型构建。

2026-10-10 15:02:56 148

原创 【金丹·79】无锁编程:CAS和原子操作

深入解析CAS原子操作的硬件实现:x86的CMPXCHG+LOCK前缀 vs ARM的LDREX/STREX配对,ABA问题的内存复用陷阱及三种破解方案,cache line bouncing导致多核退化,以及Michael-Scott无锁队列的工程实战。

2026-10-10 09:04:55 301

原创 【金丹·78】死锁:四个条件和怎么破解

死锁是并发编程最经典的陷阱。Coffman四条件、锁排序预防、银行家算法避免、资源分配图检测、进程终止恢复,一篇讲清死锁的来龙去脉和实战规避。

2026-10-09 15:04:03 647

原创 【金丹·77】锁的家族:自旋锁、互斥锁、读写锁、顺序锁、RCU

Linux内核锁家族全解析:自旋锁适合纳秒级短临界区,互斥锁适合毫秒级长临界区,读写锁解决读多写少,顺序锁解决读极多写极少且数据不带指针,RCU解决读极多写极少且数据带指针。五件兵器各有所长,选错轻则浪费CPU,重则死锁。

2026-10-09 09:03:35 554

原创 【金丹·76】CPU缓存三层塔

CPU缓存L1/L2/L3三层塔,是计算机体系结构中最重要的性能设计。本文用修仙体系类比,从寄存器到主存的速度差讲起,深入剖析缓存行、映射方式、缓存一致性协议,揭示99%性能问题的根源。

2026-10-08 15:06:47 647

原创 【金丹·75】I/O 多路复用:select、poll 和 epoll

epollIO多路复用Linux。

2026-10-08 09:31:43 885

原创 【金丹·74】软中断、Tasklet和Workqueue:中断下半部的三种机制

软中断是内核最早的下半部机制,也是最基础的。Linux 在里用一个 enum 静态列出所有支持的软中断类型,最多 32 种,目前内核实际使用了 10 种。// include/linux/interrupt.h (v6.1 内核源码)HI_SOFTIRQ=0, // 高优先级 taskletTIMER_SOFTIRQ, // 定时器下半部NET_TX_SOFTIRQ, // 网卡发送NET_RX_SOFTIRQ, // 网卡接收BLOCK_SOFTIRQ, // 块设备。

2026-09-30 15:02:47 447

原创 【金丹·73】线程安全:锁、原子操作与内存屏障

线程安全是并发编程的核心问题。本文用修仙比喻讲解互斥锁mutex(futex机制)、自旋锁spinlock(test-and-set/ticket lock)、CAS原子操作(ABA问题/活锁)、内存屏障(SFENCE/LFENCE/MFENCE与编译器屏障)、volatile关键字的真相,以及C11 release/acquire语义。从硬件层面理解为什么balance++不是原子的,掌握选兵器的方法论。

2026-09-30 09:04:01 209

原创 【金丹·72】文件系统:数据怎么存到硬盘上的

文件系统是操作系统管理数据的核心机制。本文从inode、目录树、VFS虚拟文件系统到ext4文件系统实现,用修仙体系类比讲解硬盘数据存储的完整链路:从文件创建write()到磁盘块分配,从目录项到inode映射,深入理解数据是怎么一步步存到硬盘上的。

2026-09-29 15:07:31 514

原创 【金丹·71】进程间通信:管道、共享内存、信号

进程间通信(IPC)是操作系统的核心机制。本文用修仙比喻讲解五种IPC:管道(父子进程竹筒)、FIFO(命名管道)、共享内存(最快IPC)、信号(惊堂木)、消息队列和套接字。附代码示例和选择口诀。

2026-09-25 09:20:55 508

原创 【金丹·70】虚拟内存:每个进程都以为自己独占4GB

摘要(148字): 虚拟内存让每个进程以为独占4GB地址空间。通过页表将虚拟地址映射到物理内存,多级页表节省内存,TLB加速翻译,缺页中断处理未分配、权限错误、写时复制与换入场景。进程切换时更新CR3寄存器,内核按需分配物理页或从磁盘恢复数据。mmap实现文件与内存映射。这套机制保障隔离、安全与高效共享,是现代操作系统的核心支柱。

2026-09-24 15:05:40 259

原创 【金丹·69】谁在决定CPU归谁:进程调度CFS

Linux CFS调度器用vruntime+红黑树+nice权重实现进程间CPU公平分配。本文讲解vruntime计算、红黑树选进程、nice权重表、调度周期、实时调度SCHED_FIFO/RR及Linux 6.6后的EEVDF。

2026-09-24 09:08:21 350

原创 【金丹·68】用户态和内核态:CPU的特权级

内核态系统调用。

2026-09-23 15:12:27 411

原创 【金丹·66】为什么你的代码编译过了但链接报错

编译通过了但链接报错undefined reference?本文从编译与链接的本质区别讲起,拆解链接器的工作原理:符号表查找、重定位、静态库与动态库的差异,用实战案例分析常见链接错误的根因和解决方案。

2026-09-22 15:08:40 413

原创 【金丹·65】ELF文件解剖:一个可执行文件里有什么

ELF(Executable and Linkable Format)是Linux上.o、.so和可执行文件的统一格式。本文用readelf工具解剖一个真实ELF文件,从ELF头、Program Header段表、Section Header节表到符号表,讲清链接器和加载器各自的视角,最后梳理从execve到main的完整加载路径。ELF(Executable and Linkable Format)是Linux上.o、.so和可执行文件的统一格式。本文用readelf工具解剖一个真实ELF文件,从ELF头

2026-09-21 15:13:05 400

原创 【金丹·64】undefined reference:链接器原理

链接器是编译流水线的最后一关。本文从undefined reference报错切入,详解符号解析、静态链接、动态链接、ELF文件格式、重定位机制,并总结链接错误的四大常见原因和排查步骤。

2026-09-21 09:23:28 284

原创 【金丹·63】编译:C代码怎么变成汇编

编译器把C代码翻译成汇编,中间经过词法解析、语法解析、语义解析、代码生成。但编译器不只翻译,还会偷偷改你的代码:删掉没用的变量,把循环展开,把常量表达式直接算成结果。不同优化级别-O0到-O3对最终代码体积和性能有巨大差异,嵌入式开发中-Os是最佳选择。

2026-09-20 15:08:06 218

原创 【金丹·62】预处理:#include和#define的真相

C语言编译第一步是预处理。#include不是"引入库"而是复制文件内容,#define是纯文本替换不是定义常量。本文用gcc -E实操拆解预处理的四类指令:文件包含、宏定义、条件编译、字符串化,揭示宏不加括号的陷阱和#ifndef防重复包含的原理。

2026-09-20 09:06:49 306

原创 【筑基·059】Linux命令行入门:工程师的操作系统

Linux命令行是工程师的基本功。本文从文件操作ls/cp/mv/rm、文本搜索grep/find、进程管理ps/kill/top、管道与重定向、权限管理chmod/chown五个方面系统讲解,覆盖日常工程最常用的命令。

2026-09-18 15:04:27 366

原创 【筑基·058】Git协作工作流:冲突解决和PR流程

Git协作开发中常见的冲突场景与解决方案,涵盖分支管理策略、PR流程规范、Code Review要点,帮助团队高效协作不踩坑。

2026-09-18 09:08:28 266

原创 【筑基·057】Git代码时光机:版本控制入门到分支管理

我是玄芯散人,带你从炼气修到大乘。

2026-09-17 15:04:34 250

原创 【筑基·056】数据库是藏经阁:SQL增删改查到B+树索引

我是玄芯散人,带你从炼气修到大乘。

2026-09-17 09:04:51 472

原创 【筑基·055】TCP vs UDP:可靠和快速的取舍

TCP(Transmission Control Protocol)在发送数据之前,双方要先建立连接。建立连接的过程叫三次握手(Three-Way Handshake)。客户端 服务器| || --- SYN, seq=x ------------> | 第1次:客户端说"我想连"| || <--- SYN+ACK, seq=y, ack=x+1 | 第2次:服务器说"我收到了,也想连"| || --- ACK, ack=y+1 -----------> | 第3次:客户端说"我确认你的确认"

2026-09-16 15:03:51 539

原创 【筑基·054】HTTP和DNS:浏览器到服务器的对话

上一篇讲了网络传送阵的四层结构。TCP负责可靠传输,IP负责寻址路由。但浏览器输入域名后TCP怎么知道连哪个IP?DNS是互联网的户籍处,专门干报名字查地址的事。HTTP是浏览器和服务器的对话语言,规定了请求响应格式、状态码含义、Cookie和Session怎么维持登录状态。

2026-09-16 09:07:06 569

原创 【筑基·052】进程vs线程:一个汉堡和十个人吃

进程和线程的本质区别:资源分配vs执行流。一个汉堡十个人吃的类比讲透PCB、上下文切换、线程安全。

2026-09-15 22:55:33 303

原创 【筑基·51】操作系统是天道规则

操作系统是计算机的天道规则。你分配内存、打开文件、跑100个进程,全都要经过OS的允许。本文从内核态/用户态、系统调用、进程调度、内存管理等角度,拆解操作系统如何管理硬件资源,让你理解程序运行时底层到底发生了什么。

2026-09-14 15:07:34 310

原创 【筑基·050】从逻辑门到CPU:概念总览

本文从逻辑门出发,系统梳理了从0和1的开关电路到现代CPU的构建路径:通过与、或、非等基本逻辑门实现任意逻辑功能,揭示NAND门的万能性;利用全加器实现算术运算,结合D触发器构建存储单元;最终将控制单元、寄存器堆与ALU协同集成,形成可执行指令的最简CPU架构。层层递进,展现数字世界“积木式”搭建的本质。

2026-09-14 09:07:57 247

原创 【筑基·049】浮点数怎么存的:IEEE 754标准

我是玄芯散人,带你从炼气修到大乘。

2026-09-13 15:02:23 203

原创 【筑基·048】位运算:嵌入式工程师的基本功

位运算是嵌入式工程师的基本功。从与或非异或到位移操作,从寄存器位操作到位域结构体,本文用修仙体系拆解位运算的底层逻辑,带你理解CPU如何逐位操控数据。

2026-09-13 09:05:47 347

原创 【筑基·047】内存Hierarchy:寄存器到硬盘的速度差

从寄存器到机械硬盘,计算机存储层次有七个层级,速度差超过1亿倍。本文用缓存行、局部性原理、伪共享等概念,解释为什么缓存友好代码能快十几倍,以及SRAM和DRAM的成本权衡。

2026-09-12 15:04:28 395

原创 【筑基·046】CPU是怎么工作的:取指解码执行

我是玄芯散人,带你从炼气修到大乘。

2026-09-12 09:08:36 554

原创 【筑基·045】int a=1+2在CPU里跑了几步

一行代码int a=1+2,从源码到CPU执行经历了什么?本文用修仙体系拆解CPU指令执行全流程:预处理→编译→汇编→链接→加载→取指→译码→执行→写回,每一阶段对应修仙中的一个环节。从汇编指令ADD看ALU运算原理,从寄存器看CPU内部的灵力流转,从流水线看并行修炼的奥秘。

2026-09-11 15:03:29 263

原创 【筑基·044】排序算法:十个排序你该会几个

排序算法是编程面试的必考题,也是算法基础的核心。本文用修仙体系讲解冒泡、选择、插入、快排、归并、堆排序等十大排序算法,分析时间空间复杂度,帮助你在实际开发中选对排序方法。

2026-09-11 09:02:36 316

原创 【筑基·043】算法复杂度:O(n)到底在说什么

我是玄芯散人,带你从炼气修到大乘。

2026-09-10 15:07:05 359

原创 【筑基·042】图:社交网络和导航最短路径背后的数据结构

图是表达复杂关系的核心数据结构,广泛应用于社交网络与导航路径计算。本文详解图的两种存储方式:邻接矩阵(适合稠密图,查边快但占空间)与邻接表(适合稀疏图,节省内存)。通过BFS实现广度优先搜索,可求无权图最短路径,验证“六度分隔”;DFS则以深度优先探索路径,适用于连通性判断与拓扑排序。最后介绍Dijkstra算法在加权图中寻找最短路径,为导航系统提供理论支持。

2026-09-10 09:03:44 291

原创 【筑基·041】二叉树和红黑树:为什么Linux内核偏爱它

二叉树是计算机科学最核心的数据结构之一。本文从树的基本概念出发,讲解二叉搜索树BST的查找与插入、AVL树的严格平衡与旋转操作、红黑树的五条性质与弱平衡策略,并深入分析Linux CFS调度器、Java TreeMap、C++ STL三个真实工程场景中红黑树的应用。数据结构二叉树红黑树

2026-09-09 15:02:36 366

ROS结合科大讯飞的语音识别包

ROS结合科大讯飞的语音识别包,第一版。使用的是catkin workspace。包括语音识别,语音介绍,语音合成,语音唤醒。可能需要某些库的支持,

2016-08-27

空空如也

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

TA关注的人

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