logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【C++项目之高并发内存池 (五)】一些小细节和性能优化及整体测试

本文介绍了高并发内存池项目的优化与完结,重点解决了大内存申请释放、定长内存池替换new、释放时不传对象大小等细节问题,并使用基数树优化性能。通过对比测试,优化后的内存池在4线程10万次申请场景下比malloc快20倍。文章提供了项目源码链接,并说明如何将内存池编译为动静态库替换系统malloc。该项目虽无法完全替代tcmalloc,但已实现核心功能,适合学习高并发内存管理技术。

文章图片
#c++#性能优化
【C++项目之高并发内存池 (四)】三层缓存的空间回收流程详解

本文介绍了高并发内存池项目中三层缓存的空间回收流程。首先讲解了ThreadCache回收空间的逻辑,当自由链表中块数超过MaxSize时归还部分块给CentralCache。接着详细阐述了CentralCache如何通过地址映射找到对应Span进行回收,并使用哈希表优化查找效率。最后讲解了PageCache合并相邻Span以避免外碎片问题的实现方法,包括左右合并逻辑和状态判断机制。整个回收系统通过

文章图片
#c++#缓存
【C++项目之高并发内存池 (三)】万字解析CentralCache与PageCache的初步

本文介绍了高并发内存池项目中CentralCache与PageCache的初步实现。CentralCache作为中间层,采用与ThreadCache相同的哈希映射规则,通过桶锁保证线程安全,管理以span为单位的大块内存。PageCache按页数映射span,支持span的分裂与合并,采用单例模式实现全局唯一。文章详细讲解了内存申请流程、慢开始反馈调节算法、锁机制设计等关键技术点,并通过测试用例验

文章图片
#c++#哈希算法
【C++项目之高并发内存池 (二)】整体框架设计与ThreadCache的初步实现

本文介绍了高并发内存池项目的核心设计与实现,重点讲解了ThreadCache层的构建。文章首先阐述了内存池的三层架构(tc、cc、pc),并详细说明了ThreadCache的工作原理:每个线程独享一个ThreadCache对象,通过哈希桶管理不同大小的内存块,采用对齐规则控制内碎片浪费率在10%左右。作者实现了自由链表类FreeList和SizeClass计算类,使用TLS技术确保线程独立性,该设

文章图片
【C++项目之高并发内存池 (一)】项目介绍与定长内存池的构建

本文深入探讨了高性能服务器开发中的核心瓶颈——内存管理。文章首先剖析了传统malloc/free在高并发场景下存在的锁竞争与内存碎片问题,并引出“池化技术”作为解决方案。文章从最基础的定长内存池入手,阐述了“批量申请、化整为零”的原理,以及如何利用空闲链表(Free List)和定位new实现O(1)复杂度的内存分配与回收。通过对比测试,验证了内存池在性能上相对于系统malloc的显著优势,为后续

文章图片
【Linux/C++多线程篇(一) 】多线程编程入门:从核心概念到常用函数详解

本文介绍了多线程编程的基础知识和实践应用。详细讲解了linux系统编程中多线程的实现方法,包括线程创建(pthread_create)、线程号获取(pthread_self)、线程退出(pthread_exit)、资源回收(pthread_join)和线程分离(pthread_detach)等核心函数的使用。文章还通过一个实际案例展示了如何用多线程实现文件分块拷贝功能,并探讨了主线程退出对分离线程

文章图片
#c++#开发语言#ubuntu +1
【Linux/C++文件篇(一) 】标准I/O与文件I/O基础 :一文掌握文件操作的核心

本文深入解析了C/C++中的标准I/O与文件I/O系统。标准I/O通过流抽象和缓冲区机制提高效率,适合常规文件操作;文件I/O直接使用系统调用,无缓冲但更底层灵活。文章详细对比了两者的特性差异、适用场景,并提供了丰富的代码示例演示各种I/O函数的使用方法(如fopen/fclose、read/write等),以及缓冲区管理、文件定位等关键技术要点。最后给出了选择建议:标准I/O适合常规操作和可移植

文章图片
#linux#c++#运维 +3
【Linux/C++进阶篇(二) 】超详解自动化构建 —— 日常开发中的“脚本” :Makefile/CMake

本文系统讲解了Makefile和CMake在Linux/C++开发中如何使用及其重要性。Makefile作为自动化构建脚本,通过依赖关系检查和增量编译机制显著提升开发效率;CMake则作为跨平台构建工具,可生成多种平台的构建文件。文章详细讲解了二者的语法规则、常用指令和实际应用场景,并通过代码示例展示了从单文件到多文件项目的构建过程。对于Linux/C++开发者而言,掌握这两种工具是提升项目构建效

文章图片
#linux#c++#经验分享 +1
【Linux/C++进阶篇 (一)】man手册、gdb调试、静态库与动态库

本文介绍了Linux/C++进阶编程中的关键工具和技术要点。主要内容包括:1)man手册的使用方法,用于查询系统函数和指令;2)GDB调试器的详细使用指南,包括启动、设置断点、单步执行等核心功能;3)动态库和静态库的创建与使用,重点分析了两者在链接方式、文件大小、内存占用等方面的核心区别。文章通过具体代码示例演示了文件操作、进程控制等系统调用的使用,并提供了静态库(.a)和动态库(.so)的完整制

文章图片
#linux#c++#运维
【计算机网络 | 第九篇】计网之传输层(三)—— TCP的拥塞控制与连接管理

本文系统讲解了TCP协议的拥塞控制机制和连接管理过程。在拥塞控制方面,详细介绍了慢启动、拥塞避免、快速重传和快速恢复四种核心算法,通过动态调整拥塞窗口大小来优化网络性能。在连接管理部分,深入解析了三次握手建立连接和四次挥手终止连接的完整流程,包括各阶段的报文交互和状态转换,并解答了“为何需要三次握手而非两次“、“为何要等待2MSL时间”等关键问题。文章通过示意图和考研真题辅助理解,帮助读者全面掌握

文章图片
#计算机网络#tcp/ip#网络 +1
    共 48 条
  • 1
  • 2
  • 3
  • 4
  • 5
  • 请选择