【项目日记(一)】高并发内存池项目介绍

💓博主CSDN主页:杭电码农-NEO💓

⏩专栏分类:项目日记-高并发内存池⏪

🚚代码仓库:NEO的学习日记🚚

🌹关注我🫵带你学习C++
  🔝🔝


在这里插入图片描述


项目日记

  • 1. 前言
  • 2. 什么是高并发内存池项目?
  • 3. 什么是内存池?
  • 4. 内存池所解决的问题
  • 5. 为什么选择高并发内存池项目?
  • 6. 需要掌握的技能

1. 前言

项目!终于到做项目了!
博主从今年四月开始学习C语言
8个月的高强度学习,一天没歇息过
终于在今天接触到项目了!!!

本篇文章旨在给大家介绍什么是
高并发内存池项目以及为什么要
做这个项目,最后讲做这个项目需要
什么知识储备,内容非常的轻松愉快
大部分内存以文字的方式呈递!

现在我只想说:项目,启动!!!

在这里插入图片描述


2. 什么是高并发内存池项目?

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

那它具体是什么?有什么用呢?

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

当然!谷歌的开源项目的源码的代码量十分巨大!如果我们要实现一个和它一模一样的内存池,代价太大了!所以我们只把谷歌这个项目的tcmalloc最核心的框架简化后拿出来,模拟实现出一个自己的高并发内存池,目的就是学习tcamlloc的精华,这种方式有点类似我们之前学习STL容器的方式。但是相比STL容器部分,tcmalloc的代码量和复杂度上升了很多,大家要有心理准备。当前另一方面,难度的上升,我们的收获和成长也是在这个过程中同步上升!!

怀着激动的心情,现在来学习什么是内存池?


3. 什么是内存池?

  1. 什么是池化技术?

我们在学习Linux时学过线程池,
它就是池化技术的体现之一

在这里插入图片描述
内存池也就是一种池化技术!

  1. 什么是内存池?

在这里插入图片描述


4. 内存池所解决的问题

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

请看下图:

在这里插入图片描述

现在这个程序有256+512=768个byte
的空间,但是此时申请一份600byte的
空间却开不出来,因为B申请的空间把这
768个byte的空间分割开了!!!

在这里插入图片描述


5. 为什么选择高并发内存池项目?

  1. 这个项目非常实用

Go语言直接用它做了自己内存分配器。所以很多程序员是熟悉这个项目的,那么有好处,也有坏处。好处就是把这个项目理解扎实了,会很受面试官的认可。坏处就是面试官可能也比较熟悉项目,对项目会问得比较深,比较细。如果你对项目掌握得不扎实,那么就容易碰钉子

所以如果你准备要做这个项目,那么
一定要做好!做好了会让面试官刮目相看
做的不够熟练只会让面试官觉得你是水货

  1. 学习最顶尖的思想

Google是超级大厂,并且Google对
C/C++语言的研究一直走在世界的
最前列,也就是说这个项目其实是世界
上的C++顶尖高手写出来的!就像别人
说学Java必看的书或必做的项目一样,
高并发内存池就是C++程序员可以说
是必看的项目!

博主想做这个项目没有别的原因
只因为它是C++顶尖高手写出来的
我也有一颗成为顶尖高手的心,所以
我得去学习他们的思想,就这一个原因
就足够支撑我学习这个项目!!!


6. 需要掌握的技能

做这个项目需要掌握的知识技能:

这个项目会用到C/C++、数据结构(链表、哈希桶)、操作系统内存管理、单例模式、多线程、互斥锁
等等方面的知识。难度的话,如果难度满级的项目是5星的话,这个项目应该是4星.

本篇文章的所有内容到此为止!
各位码友,让我们一起加油,互勉
一起啃下这个硬骨头,冲冲冲!!!


🔎 下期预告:开胃菜:定长内存池 🔍

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

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

相关文章

《opencv实用探索·十三》opencv之canny边缘检测

1、canny边缘检测应用场景 目标检测: Canny边缘检测可以用于检测图像中的目标边缘,从而帮助识别和定位物体。在目标检测的流程中,边缘通常是检测的第一步。 图像分割: Canny边缘检测可用于图像分割,即将图像划分为具有…

微服务--08--Seata XA模式 AT模式

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 分布式事务Seata 1.XA模式1.1.两阶段提交1.2.Seata的XA模型1.3.优缺点 AT模式2.1.Seata的AT模型2.2.流程梳理2.3.AT与XA的区别 分布式事务 > 事务–01—CAP理论…

class050 双指针技巧与相关题目【算法】

class050 双指针技巧与相关题目【算法】 算法讲解050【必备】双指针技巧与相关题目 code1 922. 按奇偶排序数组 II // 按奇偶排序数组II // 给定一个非负整数数组 nums。nums 中一半整数是奇数 ,一半整数是偶数 // 对数组进行排序,以便当 nums[i] 为…

HarmonyOS开发(十):通知和提醒

1、通知概述 1.1、简介 应用可以通过通知接口发送通知消息,终端用户可以通过通知栏查看通知内容,也可以点击通知来打开应用。 通知使用的的常见场景: 显示接收到的短消息、即使消息...显示应用推送消息显示当前正在进行的事件&#xff0c…

MySQL数据库与其管理工具Navicat

这里介绍MySQL数据库和Navicat的使用 1.下载MySQL数据库及MySQL客户端管理工具Navicat 登录www.mysql.com下载MySQL 登录www.navicat.com.cn/download下载客户端管理工具 2.启动MySQL数据库服务器 以管理员身份打开命令提示窗口 找到mysql的bin目录 输入初始化命令mysqld…

Java毕业设计源码—vue+SpringBoot图书借阅管理图书馆管理系统

主要技术 SpringBoot、Mybatis-Plus、MySQL、Vue3、ElementPlus等 主要功能 管理员模块:注册、登录、书籍管理、读者管理、借阅管理、借阅状态、修改个人信息、修改密码 读者模块:注册、登录、查询图书信息、借阅和归还图书、查看个人借阅记录、修改…

office办公技能|ppt插件使用

PPT插件获取:链接:https://pan.baidu.com/s/1BOmPioUKeY2TdC-1V-o3Vw 提取码:tdji 一、ppt插件介绍 PPT插件是一种可以帮助用户在Microsoft PowerPoint软件中添加各种额外功能和效果的应用程序。使用PPT插件可以让用户更加轻松地制作出专业、…

Linux环境下用yum安装postgres15

1. 下载PostgreSQL 15 安装包 在官网选择对应版本的安装包 https://www.postgresql.org/download/ Linux | CentOS 7 | PostgreSQL 15 2. 安装PostgreSQL 15 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-la…

业务场景中Hive解析Json常用案例

业务场景中Hive解析Json常用案例 json在线工具 json格式转换在线工具 https://tool.lu/json/format格式互转: // 格式化可以合并整行显示 {"name":"John Doe","age":35,"email":"johnexample.com"}// 格式化…

(一)rtthread主线程启动流程

(一)rtthread主线程启动流程 声明1.启动分析2.源码分析 声明 本文主要为个人学习笔记内容总结,有来自网络及其他,如有雷同,请告知。 1.启动分析 基于:rt-thread-v5.0.1 先执行:汇编代码start…

Implicit Neural Representation for Cooperative Low-light Image Enhancement

GitHub - Ysz2022/NeRCo: [ICCV 2023] Implicit Neural Representation for Cooperative Low-light Image Enhancement 参考:ICCV2023 | 将隐式神经表征用于“低光增强”,北大张健团队提出NeRCo (qq.com) 以下三个因素限制了现有低光图像增强方法的应用…

workbench导入sql脚本文件

这里面有个Data Import 点击start Import 刷新一下导入完成

C++多态(详解)

一、多态的概念 1.1、多态的概念 多态:多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 举个例子:比如买票这个行为,当普通人买票时,是全价买票;学生买票时&am…

故宫博物院与周大福珠宝集团 战略合作签约仪式在京举行

12月5日上午,故宫博物院与周大福珠宝集团战略合作签约仪式在故宫博物院故宫文化资产数字化应用研究所举行。文化和旅游部党组成员、故宫博物院院长王旭东,国际儒学联合会常务副会长、原文化部副部长丁伟,国际儒学联合会特别顾问、中国国际友好…

深入了解Java Duration类,对时间的精细操作

阅读建议 嗨,伙计!刷到这篇文章咱们就是有缘人,在阅读这篇文章前我有一些建议: 本篇文章大概6000多字,预计阅读时间长需要5分钟。本篇文章的实战性、理论性较强,是一篇质量分数较高的技术干货文章&#x…

12.Java程序设计-基于Springboot框架的Android学习生活交流APP设计与实现

摘要 移动应用在日常生活中扮演着越来越重要的角色,为用户提供了方便的学习和生活交流渠道。本研究旨在设计并实现一款基于Spring Boot框架的Android学习生活交流App,以促进用户之间的信息分享、学术交流和社交互动。 在需求分析阶段,我们明…

如何使用HadSky搭配内网穿透工具搭建个人论坛并发布至公网随时随地可访问

文章目录 前言1. 网站搭建1.1 网页下载和安装1.2 网页测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3 Cpolar稳定隧道(本地设置)2.4 公网访问测试 总结 前言 经过多年的基础…

【微服务】springboot整合quartz使用详解

目录 一、前言 二、quartz介绍 2.1 quartz概述 2.2 quartz优缺点 2.3 quartz核心概念 2.3.1 Scheduler 2.3.2 Trigger 2.3.3 Job 2.3.4 JobDetail 2.4 Quartz作业存储类型 2.5 适用场景 三、Cron表达式 3.1 Cron表达式语法 3.2 Cron表达式各元素说明 3.3 Cron表达…

浅谈https

1.网络传输的安全性 http 协议:不安全,未加密https 协议:安全,对请求报文和响应报文做加密 2.对称加密与非对称加密 2.1 对称加密 特点: 加解密使用 相同 秘钥 高效,适用于大量数据的加密场景 算法公开&a…

C++STL的string类(一)

文章目录 前言C语言的字符串 stringstring类的常用接口string类的常见构造string (const string& str);string (const string& str, size_t pos, size_t len npos); capacitysize和lengthreserveresizeresize可以删除数据 modify尾插插入字符插入字符串 inserterasere…