门户网站等保二级建设方案,广东网站备案要求,线上编程课程,网站分为四个步骤开发建设#x1f493;博主CSDN主页#xff1a;Am心若依旧409-CSDN博客#x1f493; ⏩专栏分类:项目记录_⏪ #x1f69a;代码仓库#xff1a;青酒余成 #x1f69a; #x1f339;关注我#x1faf5;带你学习C #x1f51d;#x1f51d; 1.前言
在经历一年多左右的时间… 博主CSDN主页Am心若依旧409-CSDN博客 ⏩专栏分类:项目记录_⏪ 代码仓库青酒余成 关注我带你学习C 1.前言
在经历一年多左右的时间学习今天终于开始搞一个真正的项目了。 本篇文章主要给大家介绍什么是高并发内存池项目以及为什么要 做这个项目,最后讲做这个项目需要什么知识储备 2.什么是高并发内存池项目
首先,它是一个全球性大厂google(谷歌)的 开源项目,项目名字叫tcmalloc,全称是 Thread-Caching Malloc,即线程缓存的malloc
那它具体是什么呢它又有什么用呢 我们知道C语言在堆上开辟空间和释放使用的是malloc和free函数 并且C的动态内存管理new和delete的底层实际上也调用了malloc和free 也就是说在所有场景下malloc函数都可以使用, 但是如果需要频繁的申请内存呢? 那么我们就需要频繁的去调用函数这样效率太低下了 并且也有可能导致内存泄漏的问题 由于这种种原因 所以谷歌才自己做了一套 并发内存池的项目来解决在多线程情况下malloc效率低下的问题, 也就是说这个项目的目的是在特定情况下代替 C语言的malloc和free!和c中的new和delete 当然谷歌的开源项目的源码的代码量十分巨大!如果我们要实现一个和它一模一样的内存池,代价太大了!所以我们只把谷歌这个项目的tcmalloc最核心的框架简化后拿出来模拟实现出一个自己的高并发内存池目的就是学习tcamlloc的精华这种方式有点类似我们之前学习STL容器的方式。但是相比STL容器部分,tcmalloc的代码量和复杂度上升了很多大家要有心理准备。当前另一方面难度的上升我们的收获和成长也是在这个过程中同步上升!! 少年加油吧怀着激动地心向高手学习你才能慢慢成为一个高手
3.什么是内存池
在了解什么是内存池之前先了解什么是池化技术。
什么是池化技术
我们在学习Linux时学过线程池, 它就是池化技术的体现之一 内存池就是池化技术的一种。
2.什么是内存池 4.内存池解决什么问题 内存池主要解决的肯定是效率的问题其次如果作为系统的内存分配器的角度还需要剞劂一下内存碎片的问题。那么什么是内存碎片呢 看下图 现在这个程序有256512768个byte的空间,但是此时申请一份550byte的 空间却开不出来,因为中间申请的128byte空间把这768个byte的空间分割开了!!! 5.为什么要选择做这个项目
有以下两个原因。
1.这个项目非常实用 Go语言直接用它做了自己内存分配器。所以很多程序员是熟悉这个项目的那么有好处也有坏处。好处就是把这个项目理解扎实了会很受面试官的认可。坏处就是面试官可能也比较熟悉项目对项目会问得比较深比较细。如果你对项目掌握得不扎实那么就容易碰钉子 所以如果你准备要做这个项目,那么 一定要做好!做好了会让面试官刮目相看 做的不够熟练只会让面试官觉得你是水货
那么此次面试你就是失败的。
2.学习最顶尖的思想争取成为最顶尖的人 Google是超级大厂,并且Google对C/C语言的研究一直走在世界的 最前列,也就是说这个项目其实是世界上的C顶尖高手写出来的!就像别人 说学Java必看的书或必做的项目一样,那么我认为高并发内存池就是C程序员可以说 是必看的项目! 博主想做这个项目没有别的原因 只因为它是C顶尖高手写出来的 我也有一颗成为顶尖高手的心,所以 我得去学习他们的思想,就这一个原因 就足够支撑我学习这个项目!!!
6.需要掌握的技能
这个项目会用到C/C、数据结构链表、哈希桶、操作系统内存管理、单例模式、多线程、互斥锁等等方面的知识。难度的话如果难度满级的项目是5星的话这个项目应该是4星。 行文至此本篇章就结束了一起加油吧朋友们把这个项目啃下来。