- 博客(57)
- 资源 (5)
- 收藏
- 关注
原创 现代内存管理完整指南
本指南系统性解析现代内存管理的完整架构,采用问题驱动的叙事方式。第一部分揭示演化逻辑:从进程隔离需求出发,推导出虚拟内存、分页机制、多级页表、TLB加速、伙伴系统等核心技术,并解释分段机制为何被放弃。第二部分深入运行机制:详解多级页表结构(x86-64四级)、TLB工作原理(替换策略、ASID)、页面置换算法(OPT/FIFO/LRU/Clock)及抖动问题。第三部分聚焦工程实践:剖析ptmalloc的bins机制、jemalloc的decay策略、NUMA架构约束、大页优化、从new到物理内存的完整路径,
2026-01-15 21:45:40
214
原创 C++ 虚函数、多态与绑定机制
C++类的内存仅包含成员变量,若有虚函数则多一个vptr(虚表指针)。函数代码存储在代码段,所有对象共享。绑定分两种:静态绑定在编译期确定调用地址,适用于非虚函数、按值传参;动态绑定在运行时通过 vptr → vtable → 函数地址 查表调用,实现多态。每个含虚函数的类有一张虚表,派生类生成独立副本并替换被覆盖的函数指针。构造/析构期间vptr随构造层级变化,不发生向下派发。按值传递会对象切片,丢失多态。若基类可能被delete,析构函数必须是virtual。
2026-01-12 10:03:57
855
原创 设计模式概览
本文系统阐述了面向对象设计的七大原则:单一职责(SRP)、开闭原则(OCP)、里氏替换(LSP)、依赖倒置(DIP)、接口隔离(ISP)、迪米特法则(LoD)、合成复用(CARP)。其核心关系是:OCP(开闭原则)是终极目标,LSP提供继承基础,DIP通过抽象解耦作为实现手段,SRP与ISP构建模块化基石,LoD与CARP辅助降低耦合。遵循这些原则,可使系统在需求变化时只需扩展新代码而非修改旧代码,实现高内聚、低耦合的优雅架构。
2026-01-09 10:22:47
998
原创 一个基于现代C++智能指针的优雅内存管理解决方案
本文提出了一种基于C++智能指针的图片缓存解决方案,旨在解决现代图片处理应用中的内存管理难题。文章首先分析了传统手动管理和简单智能指针方案的局限性,包括内存泄漏、竞态条件等问题。随后详细介绍了解决方案的设计思路,通过结合shared_ptr和weak_ptr实现了自动去重、精确清理和线程安全。方案采用引用计数机制,在保证高效查找(O(1)复杂度)的同时,确保当所有外部引用消失时自动释放内存。文章还提供了完整的实现代码、多线程安全性演示,并与传统方案进行了对比,突出了该方案在内存效率、异常安全和调试友好性方面
2025-07-22 21:10:40
652
原创 Windows 无法访问wsl ubuntu 中 docker 的端口
随着WSL的更新,wsl的增加了许多特性,但也遇到了一些问题:- 代理方式的改变- 端口访问问题由于折腾了很久,所以做一下记录。
2024-02-29 09:20:03
6261
1
原创 基于JPBC的无证书聚合签名方案实现
一开始签名方案是基于PKI的,无证书签名起源于 基于身份密码体制, 2009 年第一篇无证书签名方案被提出,随后出现了一些列方案;包括无配对的无证书聚合签名方案,更多内容参考文献.暂时没有看见无证书聚合签名方案实现相关的代码,本文基于JPBC库实现,使用方法可以参考B站视频。也可以使用C++和PBC库实现。
2023-11-21 22:10:46
1620
原创 06_接口隔离模式
从客户程序的角度来看,Facade模式简化了整个组件系统的接口,对于组件内部与外部客户程序来说,达到了一种“解耦”的效果内部子系统的任何变化不会影响到Facade接口的变化。Facade设计模式更注重从架构的层次去看整个系统,而不是单个类的层次。Facade很多时候更是一种架构设计模式。Facade设计模式并非一个集装箱,可以任意地放进任何多个对象。Facade模式中组件的内部应该是“相互耦合关系比较大的一系列组件”,而不是一个简单的功能集合。接口-思想。
2023-10-24 14:35:51
267
原创 05_对象性能模式
Singleton模式一般不要支持拷贝构造函数和Clone接口,因为这有可能导致多个对象实例,与Singleton模式的初衷违背。如何实现多线程环境下安全的Singleton?注意对双检查锁的正确实现。面向对象很好地解决了抽象性的问题,但是作为一个运行在机器中的程序实体,我们需要考虑对象的代价问题。Flyweight主要解决面向对象的代价问题,一般不触及面向对象的抽象性问题。Flyweight采用对象共享的做法来降低系统中对象的个数,从而降低细粒度对象给系统带来的内存压力。在具体实现方面,要注意。
2023-10-03 22:30:42
1038
原创 Rust ESP32C3开发
系统开发逐步使用Rust语言,在嵌入式领域Rust也逐步完善,本着学习Rust和ESP32的目的,搭建了ESP32C3的环境,过程中遇到了不少问题,予以记录。
2023-07-28 18:22:00
4001
3
原创 04_对象创建模式
书上类图:Factory Method模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系(new)会导致软件的脆弱。Factory Method模式通过面向对象的手法,将所要创建的具体对象工作延迟到子类,从而实现一种扩展(而非更改)的策略,较好地解决了这种紧耦合关系。Factory Method模式解决“单个对象”的需求变化。缺点在于要求创建方法/参数相同。类图。
2023-07-06 11:42:17
197
原创 gRPC 实践
NotesGo Typedoublefloat64floatfloat32int32int32int64int64uint32uint32uint64uint64sint32int32sint64int64fixed32uint32fixed64uint64sfixed32int32sfixed64int64boolboolstringstringbytes[]byte几乎是一一对应,默认值string默认为空string。
2023-06-23 15:41:04
486
原创 基于ElGamal算法的加密与签名机制
ElGamal是基于离散对数困难问题的非对称密码的一种,本文介绍了ElGamal签名及加密算法,并且通过Gmpy2库实现了ElGamal这两种算法。
2022-05-04 11:17:11
3232
ESP8266的AT固件 是MQTT版本
2020-05-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅