- 博客(17)
- 收藏
- 关注
原创 C++中匿名函数的本质与优点
简洁性:减少冗余代码,提升可读性。灵活性:直接捕获上下文,支持函数式编程。性能:内联优化,接近手写代码的效率。它是现代C++中实现高效、简洁逻辑的核心工具之一。
2025-04-29 19:12:01
410
原创 C++多线程动态链接库
C++ 提供了多种选择来进行多线程编程,除了标准库的线程支持(如POSIX 线程库(pthread):在 Unix-like 系统中广泛使用。Intel TBB:高效的并行任务调度和并行算法库,适用于高性能计算。OpenMP:主要用于并行化循环和数据并行的编程模型,广泛应用于数值计算。ConcRT:Windows 环境下的并行编程库,特别适用于多核处理器的任务调度。
2025-04-29 09:14:33
749
原创 TCP和UDP的基础知识点
包头+包体:包头定长,含有一个字段描述接下来的包有多大。多个数据包被连续存储于连续的缓存中,在对数据包进行读取时由于无法确定发生方的发送边界;在包末尾加界定符(注意要对这些字符本身做转码或者转移操作避免误结束)。TCP面向连接(三握四挥),UDP没有连接建立和拆除的过程;没有流量控制和拥塞控制,直接发数据,不关心接收方的处理能力;回想nagle算法为了避免糊涂窗口,需要等一个大包再发。TCP头部大,且为了可靠性需要连接以及一系列的机制;没有重传机制,但是现在光纤传输丢包率本身低;
2025-04-28 15:22:22
160
原创 多线程操作C++容器同步
在多线程环境中操作 C++ 容器时,必须小心数据竞争(data race)和线程安全问题。标准的 C++ 容器(如std::map等)在多线程环境下通常并不是线程安全的,即使是对容器的只读访问,如果同时有写操作(比如插入、删除元素),也会导致数据竞争。因此,在多线程程序中使用 C++ 容器时,必须采用适当的同步机制来确保线程安全。
2025-04-27 20:42:57
823
原创 解决哈希冲突的优化方案
Robin Hood 哈希 | 同双重散列或线性探测,但插入时:若新元素探查次数 > 桶中已有元素探查次数,则“抢占”它,二者交换后继续插入 | 平均探查长度更均匀、尾部不留太多“富人” | 实现复杂、插入开销大 || 实现简单、缓存友好 | “主聚簇”(primary clustering) || 最佳均摊性能,聚簇最弱 | 实现稍复杂,需要第二哈希函数 || 线性探测(Linear Probing) |
2025-04-27 18:14:16
615
原创 unordered_set哈希算法
如果你的Key// 简单示例:将 x,y 组合// 使用:总结的哈希算法核心由std::hash提供;底层用“取模 + 链式冲突解决 + 负载因子触发 rehash”来保持均摊 O(1) 的插入/查找效率;具体哈希函数(如字符串、浮点)在不同 STL 实现中略有差异,但接口统一、可自定义。
2025-04-27 17:55:49
769
原创 虚函数的实现,开销以及优势
编译器会为每个包含虚函数的类生成一个虚函数表,其中按顺序存储该类所有虚函数的函数指针。派生类会继承基类的虚表,并覆盖其中被重写的虚函数地址,新增的虚函数则追加到表末尾。每个包含虚函数的对象内部会隐式添加一个指向其类虚表的指针(vptr)。对象构造时,vptr 被初始化为指向当前类的虚表;在继承链中,随着构造函数/析构函数的执行,vptr 会动态调整以指向相应类的虚表。调用虚函数时,通过对象的 vptr 找到虚表,再通过虚表中的偏移量定位具体函数地址,实现运行时多态。
2025-04-27 11:36:33
738
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人