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

物流公司网站制作模板个人网站seo入门

物流公司网站制作模板,个人网站seo入门,网站收藏做系统以后丢了,施工企业质量管理体系认证有效期文章目录 反例应用对象池对象池应用 享元模式(flyweight)是一种进行性能优化的模式,通过共享技术来支持大量细粒度的对象 如果系统中创建了大量相似的对象,我们就可以通过享元模式节省内存 反例 服装厂生产了一堆衣服&#xff…

文章目录

    • 反例
    • 应用
    • 对象池
    • 对象池应用

享元模式(flyweight)是一种进行性能优化的模式,通过共享技术来支持大量细粒度的对象

如果系统中创建了大量相似的对象,我们就可以通过享元模式节省内存

反例

服装厂生产了一堆衣服,需要模特拍照片,假设有 100 个衣服被生产,就 new 了 100 个模特出来给衣服拍照片,显然内存要爆炸

这时我们把模特抽象出来,通过 更新他身上的衣服执行拍照方法,就避免了过多的内存消耗,这个步骤将对象的属性划分成了内部状态和外部状态,每个对象都有拍照这个内部属性,穿的衣服、性别都是外部属性,减少了共享对象的数量~

  • 内部状态 存储在对象内部
  • 内部状态 可以被一些对象共享
  • 内部状态 独立于场景,一般不会改变
  • 外部状态 取决于场景,根据场景变化

虽然修改外部状态也需要花费一定时间,但总比新建一个对象要好,所以这是一种时间换空间的优化方式,上面的例子中,衣服就是外部属性,拍照就是内部属性~

应用

上面的修改是基于享元模式的一个小改动,完整的享元模式还应该包含一个享元模式对象工厂,下面是 Unity 中一个常见的情景

正常来说我们用 new 创建 100 个粒子,性能可能不受影响,但 10000 个有可能就得爆炸了!

看下面的代码理解享元模式的好处在哪:

using System;
using System.Collections.Generic;// 享元接口
interface IParticle
{void Move(int x, int y);void Draw();
}// 具体享元类
class Particle : IParticle
{private string color;public Particle(string color){this.color = color;}public void Move(int x, int y){Console.WriteLine($"Moving particle to ({x}, {y})");}public void Draw(){Console.WriteLine($"Drawing particle with color: {color}");}
}// 享元工厂类
class ParticleFactory
{private Dictionary<string, IParticle> particles = new Dictionary<string, IParticle>();public IParticle GetParticle(string color){if (particles.ContainsKey(color)){return particles[color];}else{IParticle particle = new Particle(color);particles.Add(color, particle);return particle;}}
}// 游戏场景类
class GameScene
{private ParticleFactory particleFactory = new ParticleFactory();private List<IParticle> particles = new List<IParticle>();public void AddParticle(string color, int x, int y){IParticle particle = particleFactory.GetParticle(color);particle.Move(x, y);particles.Add(particle);}public void RenderScene(){foreach (var particle in particles){particle.Draw();}}
}// 测试
class Program
{static void Main(string[] args){GameScene scene = new GameScene();// 添加红色粒子到不同位置scene.AddParticle("red", 10, 20);scene.AddParticle("red", 30, 40);scene.AddParticle("red", 50, 60);// 添加蓝色粒子到不同位置scene.AddParticle("blue", 70, 80);scene.AddParticle("blue", 90, 100);// 渲染场景scene.RenderScene();}
}

对象池

对象池 维护一个 装有空闲对象 的池子,如果需要对象的时候,不是直接 new,而是从对象池里获取,如果池里没有则创建一个新的

原理很好理解,我们班人手买一本 C++ Primer Plus 可能不是那么划算,大部分时间都是闲置的,如果我们创建一个池,需要看的就去拿,看完了就还回来,不够了马上从图书馆借一本出来,这就很节约了

HTTP 连接数据库连接池 都是对象池技术的应用

对象池应用

我们举个例子,某某地图 APP 上有很多个标记 ABCDEFG,如果我们搜索兰州拉面,就会弹出来 4 个附近的兰州拉面标记,这时候如果我们换个地方搜索,弹出来了 6 个兰州拉面标记:

  • 销毁前面的兰州拉面标记重新创建
  • 利用对象池技术,前面的 4 个标记放回池里,再创建 2 个出来用

再看看上面 Unity 的例子,是否能理解为什么 享元模式 & 对象池技术在特殊的场景下是优秀的

http://www.yidumall.com/news/89214.html

相关文章:

  • 做民宿要给网站多少钱重庆做网络优化公司电话
  • 湖北营销型网站建设多少钱关键词免费下载
  • 深圳网站制作 论坛品牌传播方案
  • 重庆企业展厅设计百度seo排名优化公司
  • 资源共享网站开发刷粉网站推广免费
  • 嘉祥网站建设北京seo顾问服务
  • 设计软件网站制作网站建设没广告的视频播放器app
  • 网站开发设计方案书百度一下你就知道123
  • 如何做网站怎么赚钱吗seo网站分析
  • wordpress 比特币关键词优化怎么操作
  • 网站建设 提成做网络推广的公司
  • 电商网站开发面试重庆网站快速排名提升
  • 学校网站建设制作方案搜索引擎优化特点
  • 搜索引擎优化工作南京seo排名优化公司
  • 男男做h的视频网站网络推广好做吗
  • 网站内部链接优化方法天津seo托管
  • 西安模板网站建设套餐南京seo网络优化公司
  • 网站建设毕业论文下载免费外链平台
  • 网站qq客服怎么做开发一个app平台大概需要多少钱?
  • 网站制作经典案例深圳网站制作设计
  • 凡科h5在线制作抖音seo关键词排名技术
  • 山东外贸国际网站建设外链吧官网
  • 网站做优化效果怎样seo排名优化代理
  • 做视频网站视频放在哪里找网络广告营销典型案例
  • 个人做网站开工作室成都seo外包
  • 做午夜电影网站重庆优化seo
  • 大亚湾建设网站公司百度惠生活推广怎么收费
  • 一个网站推广企业信息查询
  • 网站广告基本防护怎么做百度客户服务电话是多少
  • 好看的网站颜色seo网络推广知识