项目(一)--高并发内存池项目简介

什么是高并发内存池

它是一个全球性大厂google(谷歌)的
开源项目,项目名字叫tcmalloc,全称是
Thread-Caching Malloc,即线程缓存的malloc

作用:

我们知道C语言在堆上开辟空间和
释放使用的是malloc和free函数
并且C++的动态内存管理new和delete
的底层实际上也调用了malloc和free
也就是说在所有场景下malloc函数都可以
使用,但是正是因为这种性质导致它在任何
情况下的效率都不太高,所以谷歌才自己做了
一套并发内存池的项目来解决在多线程情况下
malloc效率低下的问题,也就是说这个项目的
目的是在特定情况下代替C语言的malloc和free!

当然,我们去复刻一个一模一样的内存池也是不可能的,代码量太大,甚至读完代码都需要很长时间!所以我们这个项目的tcmalloc最核心的框架简化后拿出来,模拟实现出一个自己的高并发内存池,目的就是学习tcamlloc的精华。

什么是内存池

什么是池化技术?

就像我们上大学时父母给我们的生活费,一次给一个月或者一学期的,这样方便自己管理,如果每一次消费都去问父母打电话去要,可想而知效率有多低,这是一个道理。

什么是内存池?

内存池所解决的问题

内存池主要解决的当然是效率的问题,其次如果作为系统的内存分配器的角度,还需要解决一下内存碎片的问题。那么什么是内存碎片呢?

现在这个程序有256+512=768个byte 的空间,

但是此时申请一份600byte的 空间却开不出来,

因为B申请的空间把这 768个byte的空间分割开了,

形成了内存碎片。

项目需要知识内容

这个项目会用到C/C++、数据结构(链表、哈希桶)、操作系统内存管理、单例模式、多线程、互斥锁

高并发内存池项目整体来说还是较难的,不过如果做好了还是很吃香的,把这个项目理解扎实了,会很受面试官的认可。但是面试官可能也比较熟悉项目,对项目会问得比较深,比较细。如果你对项目掌握得不扎实,那么就容易碰钉子。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/29185.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】模拟实现一个简单的日志系统

👦个人主页:Weraphael ✍🏻作者简介:目前正在学习c和算法 ✈️专栏:Linux 🐋 希望大家多多支持,咱一起进步!😁 如果文章有啥瑕疵,希望大佬指点一二 如果文章对…

SFNC —— 标准特征命名约定(一)

系列文章目录 SFNC —— 标准特征命名约定(一) 文章目录 系列文章目录1、介绍1.1 约定(Conventions)功能名称和接口(Feature Name and Interface)功能类别(Feature Category)功能级别…

(微服务实战)预付卡平台支付交易系统消费业务流程设计

1 交易系统技术架构 预付卡支付交易系统采用Dubbo3作为底层框架,支付交易系统分为账户系统、清结算系统、支付网关、核心支付系统等模块。系统整体采用微服务架构,容器化部署。 2 消费业务流程设计 预付卡系统消费场景分为线上和线下,线…

每天一个数据分析题(三百七十)- 根因分析

对于定性数据的分析更适合使用根因分析的哪种识别工具? A. 散点图 B. 帕累托图 C. 亲和图 D. 柱状图 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案

47-5 内网渗透 - 提权环境搭建

所需内容 1、操作系统(我本地之前就安装好了,这就不演示了,教程中都有) Windows Server 2012:VM虚拟机安装Windows Server 2012 R2服务器_游戏服务器必备 - 知乎 (zhihu.com)Kali Linux:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客…

axios在post带参数请求的时候报CORS

问题:再使用axios发送post请求的时候,不带参数能请求成功,如果带了参数就报CORS 解决: 在页面使用qs import qs from qs; axios.post("url",qs.stringify({key:value })).then(()>{// 成功处理 }).catch(()>{//…

市场情绪周期2024-6-17(补涨回头潮视角验证)

竞价隔夜单 看长江通信,38亿涨到40亿又回落,那么周末最大的利好消息加持下,隔夜单不及预期,金溢科技 更是如此;空间板华闻集团8天7板,连扳5板,一字跌停,它也是有车联网的&#xff0c…

【UIDynamic-动力学-UICollisionBehavior-碰撞模式-创建边界 Objective-C语言】

一、我们来说这个碰撞模式 1.把之前的代码备份一下,改个名字:“04-碰撞行为-碰撞模式”, 然后,command + R,先跑一下, 我现在,一点击,是这个红色的View、和蓝色的View、在发生碰撞, 我们说,碰撞模式是啥意思, collision里边,有一个叫做collisionMode, UICollis…

c++里对 new 、delete 运算符的重载

(1)c 里 我们可以用默认的 new 和 delete 来分配对象和回收对象。 new 可以先申请内存,再调用对象的构造函数; delete 则先调用对象的析构函数,再回收内存。当然,当我们为类定义了 operator new () 和 oper…

【运维项目经历|034】SPO高效网络代理优化项目

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专家博主 💊交流社区:CSDN云计算交流社区欢迎您的加入! 目…

双层循环和循环控制语句的使用,while和until的语法使用

双层循环和循环控制语句的使用,while和until的语法使用 exit echo 打印 -n 表示不换行输出 -e 输出转译字符 \b:相当于退格键(backspace) \n:换行,相当于回车 \f:换行,换行后的…

iommu深度剖析虚拟化技术的隐形守护者

iommupt与iommu1:揭秘虚拟化技术中的高级内存管理策略 在虚拟化技术的广阔天地里,iommu(Input/Output Memory Management Unit,输入输出内存管理单元)作为连接物理硬件与虚拟机之间的一座桥梁,扮演着举足轻…

Git仓库中文件的状态

0 Preface/Foreword 1 文件状态 文件包含以下4个状态: untracked,未跟踪,表示该文件在文件夹中,但是没有加入到git 仓库中进行版本管控。可以通过git add命令将该文件增加到git 仓库中。从untracked变为staged。unmodified&…

HarmonyOS之自选股App

支持在 鸿蒙、安卓、苹果设备上运行。 1.界面效果展示 2.数据存储 数据存储采用的是官方的 ohos.data.relationalStore.relationalStore stock_code表用来存储A股市场5000多家公司的股票代码和名称等信息 const TAB_STOCK_CODE "stock_code" const CREATE_TABL…

为企业提供动力:用于大型组织的WordPress

可扩展且灵活的架构可通过主题、插件和集成进行定制内置 SEO 功能和营销功能内容管理和协作工具支持多站点安装托管解决方案和面向平台的提供商采用现代前端技术的 Headless CMS 功能 拥有强大、灵活且可扩展的内容管理系统 (CMS) 对于大型组织至关重要。作为最受欢迎和广泛使用…

双层循环和循环控制语句的使用,以及while和until的语法使用

echo 打印 -n 表示不换行输出 -e 输出转义字符 /b:相当于退格键(backspace) /n: 换行,相当于回车 /f: 换行,换行后的新行的开头连着上一行的行尾 /t: 相当于tab键 又叫做横向制…

input输入框的前缀和后缀

案例&#xff1a;前缀插槽 核心&#xff1a; <template #prefix><user-outlined /> </template><script setup> import {ref, watch} from "vue"; import {UserOutlined} from "ant-design/icons-vue";const value ref("&…

springboot与flowable(3):启动、审批、各个Service服务

一、启动流程 流程定义与实例的关系类似于Java的类与对象&#xff0c;通过定义的id创建流程实例&#xff0c;编写测试代码&#xff1a; package org.example.flowabledemo2;import org.flowable.engine.RuntimeService; import org.flowable.engine.runtime.ProcessInst…

浅谈Promise、Async和Await

Promise 1、Promise 是异步编程的一种解决方案&#xff0c;本质是一个构造函数。使用Promise&#xff0c;可以避免“回调地狱”&#xff0c;即多层嵌套的回调函数&#xff0c;从而使代码更加清晰和易于维护 2、有三种状态&#xff1a;pending&#xff08;进行中&#xff09;、f…