当前位置: 首页 > news >正文

江苏双楼建设集团有限公司网站修改wordpress页脚信息

江苏双楼建设集团有限公司网站,修改wordpress页脚信息,电子工程网如何删除帖子,外贸流程一般包括哪几个部分1.什么是内存池 1.1 池化技术 将程序中需要经常使用的核心资源先申请出来#xff0c;放在一个池内#xff0c;由程序自己管理#xff0c;这样可以提高资源的使用效率#xff0c;也可以保证本程序占有的资源数量。 比如之前博文实现的线程池#xff0c;就是预先的申请出… 1.什么是内存池 1.1 池化技术 将程序中需要经常使用的核心资源先申请出来放在一个池内由程序自己管理这样可以提高资源的使用效率也可以保证本程序占有的资源数量。 比如之前博文实现的线程池就是预先的申请出来一些线程当有任务被推送到任务队列时线程池内的线程立即开始处理任务不需要在程序内一次次的创建线程、关闭线程等。 1.2 内存池 普通场景下当程序长时间运行或多或少有相关内容会去申请内存资源由于这些申请的内存块大小不一会造成大量的内存碎片从而降低程序和操作系统的效率。内存池就是在使用内存空间之前先整体申请分配一大块内存内存池当需要申请内存时从内存池中取出一块进行动态分配当该内存被释放时将释放过后的内存在放回池内并尽量与周边的空闲内存块合并以减少外内存碎片重复利用。若内存池不够时则自动扩大内存池从操作系统中申请更大的内存池。 1.2.1 内存池的意义 有两个好处 1、由于向内存申请的内存块都是比较大的所以能够降低外碎片问题。 2、一次性向内存申请一块大的内存慢慢使用避免了频繁的向内存请求内存操作提高内存分配的效率。 1.2.2 内存碎片 外内存碎片 系统经过一系列的分配内存和回收内存当遇到需要分配一大块内存空间时剩余内存空间的总数够但是内存空间不连续导致无法分配。 内内存碎片 内部碎片是指一个已分配的块比有效载荷大时发生的。(假设以前分配了10个大小的字节现在只用了5个字节则剩下的5个字节就会内碎片)。内部碎片的大小就是已经分配的块的大小和他们的有效载荷之差的和。因此内部碎片取决于以前请求内存的模式和分配器实现的模式。 2. 定长内存池 在实现高并发内存池之前先写一个假定每次申请的内存空间都是固定值的内存池即定长内存池。 介绍 实现一个 FreeList每个 FreeList 用于分配固定大小的内存块比如用于分配 32字节对象的固 定内存分配器等使用模板使定长内存池可以根据分配的对象而发生改变。定长内存池中有两个指针 _memory和_freeList 。_memory是指向大块内存的指针当需要分配内存的时候他根据模板类型字节数向后移动将该块内存分配出去。_freeList是指向由还回的内存块的链接而成的链表的头指针。分配时如果内存池中剩余不够我们就再创建一个新的大块不必保存前一块大内存的地址因为如果它始终被占用申请空间时就用不上它如果它后续被释放也会进入_freeList供我们再次使用。 2.1 定长内存池——回收内存 先上框架 templateclass T class ObjectPool { public://分割内存块 T* New(){}//回收内存void Delete(T* obj) //obj所指向的这一块空间被回收了{}private:char* _memory nullptr;//指向大块内存的指针size_t _remainBytes 0;//大块内存存在切分过程中的剩余字节数void* _freeList nullptr;//还回来的内存块由_freeList指针指向的链表链接起来 };由于每个内存块回收后都是放到_freeList里面形成一个单链表。所以内存块中的起始一部分空间需要变成 一个指针指向下一个节点。 情况一当单链表为空的时候回收一个内存块。首先需要将当前内存块中的第一个指针大小的空间置成nullptr。然后使指向当前内存块的指针作为单链表的头结点。情况二当单链表不为空的时候回收一个内存块。首先如果使用尾插法那么每次都需要遍历一遍链表时间复杂度高所以我们采用头插法。先让当前内存块中的第一个指针大小的空间的置成单链表的头结点然后将头结点赋给指向当前内存块的指针问题我们要想将归还的内存块使用一张链表链接起来那么这个内存块一定需要大于一个指针的大小不然我们无法修改内存块的前指针变量个大小的字节使其指向下一块归还的内存。 但是在32位和64位平台下指针的大小是不一致的。我们怎么知道使用者处于哪个平台 针对于这一问题本质是由于指针变量的大小不确定。但是真正处于某一平台下指针的大小是唯一的。所以我们不应该显示的规定将前4个或8个字节进行修改而应该使用一种可以依平台而定的修改方案即按照当前平台的指针变量大小作为需要修改的字节数。 采用解引用 (void**)obj || (int**)obj || || (char**)obj 而非依平台而定解引用 (int*)obj || (long long*)obj void Delete(T* obj) //obj所指向的这一块空间被回收了{/* if (_freelist nullptr){*(void**)obj nullptr;_freelist obj;}else{*(void**)obj _freelist;_freelist obj;}发现_freeList是空的时候依然符合 else 所以合并一下*///要回收了 拿析构函数清理一下 obj-~T();* (void**)obj _freeList;_freeList obj;} 2.2 定长内存池——分割内存 templateclass T class ObjectPool { public:T* New(){//当剩余的字节数小于需要的字节数就重新申请一个新的大空间T* obj nullptr;//优先使用换回来的内存块对象重复利用if (_freeList){void* next *(void**)_freeList;//_freeList的前指针大小个字节 解引用为nextobj (T*)_freeList;_freeList next;}else{if (_remainBytes sizeof(T)){_remainBytes 128 * 1024;_memory (char*)malloc(128 * 1024);if (_memory nullptr){throw std::bad_alloc();}}obj (T*)_memory;_memory sizeof(T);_remainBytes - sizeof(T);}//空间有了 初始化一下 定位newnew(obj)T;return obj;}//归还内存void Delete(T* obj){} private:char* _memory nullptr;//指向大块内存的指针size_t _remainBytes 0;//大块内存存在切分过程中的剩余字节数void* _freeList nullptr;//还回来的内存块由_freeList指针指向的链表链接起来 }; 2.3 测试代码及结果 struct TreeNode {int _val;TreeNode* _left;TreeNode* _right;TreeNode():_val(0), _left(nullptr), _right(nullptr){} };void TestObjectPool() {// 申请释放的轮次const size_t Rounds 5;// 每轮申请释放多少次const size_t N 100000;std::vectorTreeNode* v1;v1.reserve(N);size_t begin1 clock();//记录使用new和delete场景下的开始时间for (size_t j 0; j Rounds; j){for (int i 0; i N; i){v1.push_back(new TreeNode);}for (int i 0; i N; i){delete v1[i];}v1.clear();}size_t end1 clock();std::vectorTreeNode* v2;v2.reserve(N);ObjectPoolTreeNode TNPool;size_t begin2 clock();//记录使用定长内存池的New和Delete的开始时间for (size_t j 0; j Rounds; j){for (int i 0; i N; i){v2.push_back(TNPool.New());}for (int i 0; i N; i){TNPool.Delete(v2[i]);}v2.clear();}size_t end2 clock();cout new cost time: end1 - begin1 endl;cout object pool cost time: end2 - begin2 endl; }
http://www.dnsts.com.cn/news/186605.html

相关文章:

  • 苏州建筑行业网站建设一流的网站建设流程
  • 视频网站开发要求网站维护与建设实训心得
  • 淘宝客搜索网站怎么做上海的公司都有哪些
  • 后盾网原创实战网站建设教程洛阳网站制作公司
  • 自己在哪里做网站怎么能将网站做的不简单
  • 使用ftp软件连接到网站空间网上哪个购物平台最值得信赖
  • 那个可以做棋牌网站wordpress降版本
  • 建设国家游戏网站wordpress 邮箱函数
  • wordpress echo兰州seo排名优化服务
  • 深圳做网站要多少钱怎么查看一个网站的建设地区
  • 南京网站关键词推广wordpress安装在子目录
  • 重庆大学建设管理与房地产学院网站做视频网站要多大带宽
  • 网站设计 下拉式菜单怎么做什么是公司主页
  • 南京专业网站制作哪家好wordpress邮件注册通知
  • 网站未经授权推广别人的产品西安赶集网官网
  • wordpress适合做企业站企业门户网站需求文档
  • 做外贸怎么连接国外网站wap网站技术
  • 可以做申论的网站旅游网站系统的设计与实现
  • 制作一个介绍洛阳网站zencart 官方网站
  • 建设网站的企业发展历程大师摄影作品网站
  • 医院做网站怎么就违规了网站返回500错误页面
  • 莆田网站制作计划家具网站开发设计任务书与执行方案
  • 医院网站建设目的单页建站系统
  • 广东华星建设集团网站wordpress 视频压缩
  • 网站开发html文件规范建筑招聘最好的网站
  • 流量对于网站盈利管理咨询公司企业简介
  • 太仓市住房城乡建设局网站网站开发是做什么的
  • 营销型网站重要性福州核酸检测最新通知
  • 个人博客网站如何做SEO国外做网站网站安全吗
  • 网站流量被用完了网站因备案关闭