自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 传输层协议之UDP

UDP网络协议

2026-11-11 19:44:47 89

原创 HTTP协议

HTTP协议

2026-11-10 23:15:39 74

原创 守护进程(网络计算器版本)

守护进程网络计算器版本

2026-10-31 22:11:50 343

原创 C++ 构造函数为什么不能是虚函数?从对象模型与虚函数机制讲透原理

构造函数能不能写成虚函数呢?

2026-09-29 20:33:12 222 1

原创 UDP Socket 简易英文字典程序

UDP Socket 简易英文字典程序

2026-09-24 20:15:33 190

原创 C++ 中成员函数作为回调的四种实现方式

四种类成员函数回调传递方法

2026-09-23 17:24:16 173

原创 C/C++ 位运算详解:按位与、按位或、按位异或及常见面试题

c语言各类运算符详解

2026-09-22 21:49:26 362

原创 基于日志、条件变量与任务队列的 C++ 线程池设计

线程池设计

2026-09-14 23:11:49 62

原创 基于日志与环形队列的消费者生产者模型

基于日志与环形队列的消费者生产者模型

2026-09-14 22:57:00 188

原创 C++ 中 static 关键字的作用与使用规则

static注意事项

2026-09-12 22:43:43 273

原创 C++ 日志类设计:策略模式、RAII 与流式日志输出

日志与策略模式

2026-09-09 23:39:09 291

原创 自旋锁:从忙等待、原子操作到线程同步

自旋锁加餐

2026-09-07 22:55:16 336

原创 C++ 多态加餐:从 ARM64 汇编真正看懂 vptr、虚函数表与动态绑定

多态汇编代码底层剖析,感兴趣的可以来看一下

2026-09-04 16:27:18 716

原创 C++ 多态下篇:虚函数表、动态绑定与多态底层原理

多态背后的具体实现细节是什么?

2026-09-04 15:58:45 475

原创 C++ 多态上篇:从 virtual 到抽象类,彻底理解多态的使用

多态究竟是什么?其实一点也不难

2026-09-02 22:04:37 397

原创 生产者—消费者模型详解:从 PV 操作到 Linux pthread 实现

生产者与消费者模型

2026-09-02 01:34:24 381

原创 C++继承详解(下):默认成员函数、多继承、菱形继承、虚继承与组合

继承的详细规则究竟有哪些?

2026-09-01 23:58:50 324

原创 C++继承详解(上):继承规则、父子类转换与作用域隐藏

继承有哪些基本规则?

2026-09-01 23:01:13 307

原创 进程与线程:一篇搞懂核心区别与 Linux 实现

进程与线程

2026-08-31 14:53:17 321

原创 Linux 多线程——线程互斥:从抢票问题到 Mutex 底层原理

线程互斥

2026-08-30 23:59:29 321

原创 模版进阶之特化

模版特化

2026-08-25 16:23:38 356

原创 双指针算法注意事项:从 三数之和、四数之和中总结那些最容易踩的坑

在做「有效三角形」「三数之和」「四数之和」这几道题时,可以明显发现它们实际上属于同一类问题:本文结合实际刷题过程中遇到的典型错误,总结双指针算法最值得注意的几个问题。很多双指针题都有这样的代码:排序不是为了好看,而是为了让指针移动具有明确的方向。例如:如果当前:因为数组已经升序排列,想让和变大,只需要:因为 右移以后,数字只会变大。反过来,如果:想让和变小,就:因此双指针最核心的前提之一就是:排序恰好提供了这种单调性。这一点在「有效三角形个数」中非常容易写错。例如

2026-08-16 19:48:13 358

原创 C语言内存函数详解:memcpy、memmove、memset、memcmp及手撕实现

在 C 语言中,除了strcpystrcmp这些针对字符串的函数之外,<string.h>还提供了一组直接操作的函数。

2026-08-13 22:42:43 368

原创 Linux 文件系统挂载详解:从 mount 命令到挂载原理

先看一个简单例子。/dev/sdb1我们希望访问里面的文件。这是 D 盘/mnt/data/dev/sdb1↓挂载↓/mnt/data看到的就是/dev/sdb1这个文件系统中的内容。挂载,就是把一个文件系统接到 Linux 目录树的某个位置。块设备/dev/sdb1↓磁盘上存在 ext4 等文件系统↓mount()↓Linux VFS↓建立 mount 结构和挂载关系↓连接到目录 /mnt/data↓用户访问 /mnt/data/a.txt↓VFS 路径解析。

2026-08-11 21:22:54 500

原创 虚拟地址—物理地址趣谈

什么是虚拟地址?呐上面这一串32位的东东就是虚拟地址,看上去像一串电话号码一样,已经晕了~其实虚拟地址在生活中无处不在,例如:你平常取快递的取件码类似:4-1-2004再看看上面的虚拟地址,突然恍然大悟一拍脑门,原来这就是虚拟地址!是的!4-1-2004不就是货柜号-货架号-快递(偏移)号吗?虚拟地址是怎么来的?CPU 会根据寄存器、基址、偏移等算出一个地址,这个地址就是送给 MMU 的虚拟地址(在 x86 里更严格地说通常是线性地址)。那什么又是物理地址?

2026-08-11 21:18:50 315

原创 gdb的使用与调试方法

CGDB它不是另一套调试器,底层仍然是 GDB,只是在终端中增加了源码窗口、断点标记、当前执行行高亮和快捷键。上面通常显示源码,下面是标准 GDB 命令行;因此所有 GDB 命令在 CGDB 里仍然可以使用。

2026-08-05 20:09:19 174

原创 使用命名管道对system-v共享内存通信实现同步机制

所谓同步机制,关心的就是的问题,本次设计代码利用读端open后,只有写端打开才会读,否则就会堵塞,其次在client写入共享内存后,才会执行write,去否则read会一直读到0,阻塞在while循环中,不会去读。

2026-08-05 19:23:00 153

原创 system-v 共享内存通信

System V 共享内存可以理解为:内核创建一块共享内存区域,再把这块区域同时映射到多个进程的虚拟地址空间中。多个进程虽然拿到的虚拟地址可能不同,但最终访问的是同一批共享内存页。

2026-08-04 21:22:24 322

原创 匿名管道--任务派发程序

【代码】匿名管道--任务派发程序。

2026-07-28 16:54:21 32

原创 匿名管道的使用

匿名管道(pipe)命名管道(fifo)本文重点讲的是匿名管道。没有文件名只能用于有亲缘关系的进程之间通信典型就是:父子进程一般通过pipe()创建,再通过fork()让父子进程共享它所以匿名管道最常见的使用场景就是:父进程创建管道,然后fork()出子进程,父子进程通过这根管道通信。匿名管道的优点:使用简单适合父子进程通信不需要额外文件名只能用于有亲缘关系的进程通常是半双工通信一次更适合单向通信数据不带“消息边界”本质上是字节流。

2026-07-28 16:46:31 345

原创 ELF文件详解

是 Linux 下专门用来保存“程序及其相关信息”的一种标准文件格式。

2026-07-25 21:52:00 185

原创 从进程到文件,底层在干什么?

不是先有fd再拿fd去解析路径。

2026-07-22 23:22:15 311

原创 硬链接与软链接的区别

硬链接实际上就是文件的备份,文件之所以能够在操作系统保存,就是因为有文件名与inode之间存在映射关系,而这个映射关系通常会被保存在目录中,可以用readdir系统调用进行调试观察,下面是展示运行该系统调用后样子:可以看到存在文件名与inode之间的映射,而硬链接就是创建一个新文件例如code.hard来保存code.cpp所对应的inode,并将该对应关系保存在当前文件夹中(隐含的必须用readdir才能看见),也就是说硬链接后,文件夹会保存2份文件,code.cpp与code.hard,但是它们对应的i

2026-07-22 21:49:36 181

原创 2.内核空间里面的PCB是所有进程的吗?每个进程都有丢虚拟地址空间吗?如果都有虚拟地址空间总大小是不是完全加起来?

✅ 是的。每创建一个进程,Linux都会给它建立一个独立的虚拟地址空间。例如:它们看到的地址可以完全一样。例如:看起来一样。区分。

2026-07-21 20:26:24 224

原创 调用fwrite这种库函数后,如果紧接着fork(),会刷新几次缓冲区?谁先谁后?会调用COW吗?(自用整理)

情况fork后缓冲区刷新次数结果fork前 fwrite 未 fflush父子各一份2次hellohellofork前 fflush空缓冲0次hellofork后 exit刷新2次重复fork后 _exit不刷新0次丢失fork后修改buffer触发COW看情况产生独立页fork复制的是用户态地址空间,所以stdio缓冲区会被复制;文件描述符和内核缓存不会复制。父子进程退出时各自flush自己的缓冲区,因此可能产生两次write。

2026-07-21 19:59:07 204

原创 超详细string/vector/list使用宝典

string/vector/list 的使用方法与区别是什么?

2026-06-23 17:07:28 198

原创 memset与strcpy区别

本文简要介绍了 C 语言中 strcpy 和 memset 的区别。

2026-06-15 09:45:06 204

原创 C++类和对象(下)

C++中的最后难点,运算符重载,匿名对象,友元函数,内部类,编译器优化

2026-06-08 10:30:23 204

原创 malloc与free/new与delete底层原理

malloc与free,new与delete背后的原理究竟是什么?

2026-05-31 20:11:00 383

原创 C++类和对象(中)(个人总结)

本章主要介绍了类与对象中的几个默认成员函数以及他们的特点与用法

2026-05-31 18:10:56 240

空空如也

空空如也

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

TA关注的人

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