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

php网站开发工程师招聘要求最近alexa排名查询

php网站开发工程师招聘要求,最近alexa排名查询,西安网站建设创意,网站上传工具写在前面对象池是一种比较常用的提高系统性能的软件设计模式#xff0c;它维护了一系列相关对象列表的容器对象#xff0c;这些对象可以随时重复使用#xff0c;对象池节省了频繁创建对象的开销。它使用取用/归还的操作模式#xff0c;并重复执行这些操作。如下图所示… 写在前面对象池是一种比较常用的提高系统性能的软件设计模式它维护了一系列相关对象列表的容器对象这些对象可以随时重复使用对象池节省了频繁创建对象的开销。它使用取用/归还的操作模式并重复执行这些操作。如下图所示本文将主要介绍对象池的基本概念、对象池的优势及其工作机制下一篇文档将从源码角度介绍.NET Core 3.0是如何实现对象池的。另外本公众号引入了一位来自台湾技术社区的程序员作为运营者在不涉及到政治的情况下欢迎大家积极来撩。对象池基础对象池的基本概念对象池的核心概念是容器其表示形式可以认为是列表。每当有新的对象创建请求进入时都会通过从池中分配一个对象来满足该请求。当我们需要获取某个对象时可以从池中获取。既然有了对象池那么也就很方便我们就很容易建立起对象的管理与追踪了了。对象池的优势我们知道一旦应用程序启动并运行内存使用就会受到系统所需对象的数量和大小的影响。我们知道创建一个对象的实例是需要消耗一定的系统资源尤其是该对象的构造十分复杂的时候再加上需要频繁创建的时候其实例化所消耗的资源更加昂贵。如果我们能有一种办法减少这种昂贵的系统开销这对系统性能的提升是十分有帮助的。对象池理念的出现有助于我们解决复杂对象的重复创建所引发的资源开销问题。对象存储在某种类型的列表或者说数组中我们可以和获取数组中的子项一样获取已经存在在对象池中的对象。对象池的最大优点是它可以自主管理内部已经创建的对象包括回收和重复使用对象。程序在使用完某个对象后会将其发还至对象池而不是在内存中销毁他们。对象池通过资源的分配因而也就减少了应用程序所需的垃圾回收数量。这对于需要频繁创建同一对象的功能来说对象池最大程度地减少了系统资源的消耗。简单来说对象池的设计目标就是要使对象可以得到重复使用而不是被垃圾回收器回收。对象池的工作机制通常情况下当客户端程序需要某个对象时对象池首先尝试提供一个已经创建的对象。如果没有可用的对象则会创建一个新对象。这类似于一个GetOrAdd的操作。同时对象池中对象的数量就会减少直到该对象已经使用完那么它就会被放回到对象池池中以等待使用。这就是为什么对象池有助于重用性、并减少了在获取对象时创建对象所涉及的开销的原因。另外需要注意的是只要池中至少有一个对象该池就会一直保留在内存中。只要对象池还在里面的对象也会一直存在。当对象池用于并发操作时需要确保对象池是线程安全的而且其本身还要有很高的性能。ConcurrentBag对象池解决方案这个解决方案来自于MSDNConcurrentBag T用于存储对象因为它支持快速插入和删除尤其是在同一线程同时添加和删除项目时。该示例可以进一步扩展为围绕IProducerConsumerCollection T构建该数据由bag数据结构实现ConcurrentQueue T和ConcurrentStack T也是如此。using System; using System.Collections.Concurrent; using System.Threading; using System.Threading.Tasks; namespace ObjectPoolExample { public class ObjectPoolT { private ConcurrentBagT _objects; private FuncT _objectGenerator; public ObjectPool(FuncT objectGenerator) { if (objectGenerator null) throw new ArgumentNullException(objectGenerator); _objects new ConcurrentBagT(); _objectGenerator objectGenerator; } public T GetObject() { T item; if (_objects.TryTake(out item)) return item; return _objectGenerator(); } public void PutObject(T item) { _objects.Add(item); } } class Program { static void Main(string[] args) { CancellationTokenSource cts new CancellationTokenSource(); // Create an opportunity for the user to cancel. Task.Run(() { if (Console.ReadKey().KeyChar c || Console.ReadKey().KeyChar C) cts.Cancel(); }); ObjectPoolMyClass pool new ObjectPoolMyClass (() new MyClass()); // Create a high demand for MyClass objects. Parallel.For(0, 1000000, (i, loopState) { MyClass mc pool.GetObject(); Console.CursorLeft 0; // This is the bottleneck in our application. All threads in this loop // must serialize their access to the static Console class. ####.####}, mc.GetValue(i)); pool.PutObject(mc); if (cts.Token.IsCancellationRequested) loopState.Stop(); }); Console.WriteLine(Press the Enter key to exit.); Console.ReadLine(); cts.Dispose(); } } // A toy class that requires some resources to create. // You can experiment here to measure the performance of the // object pool vs. ordinary instantiation. class MyClass { public int[] Nums {get; set;} public double GetValue(long i) { return Math.Sqrt(Nums[i]); } public MyClass() { Nums new int[1000000]; Random rand new Random(); for (int i 0; i Nums.Length; i) Nums[i] rand.Next(); } } } 参考链接https://docs.microsoft.com/en-us/dotnet/standard/collections/thread-safe/how-to-create-an-object-pool
http://www.huolong8.cn/news/10222/

相关文章:

  • 汕头百度网站推广建网站挣钱
  • 太原网站建设需求多嘛网页简单模板下载
  • 小网站推荐一个景点介绍网站模板
  • 兰州忠旗网站建设科技有限公司书荒小说阅读器是哪个网站做的
  • 网站建设如何创建框架页面物流网站哪个好
  • 班级网站主页设计模板通辽网站公司
  • 一流的菏泽网站建设广西开网站信息公司
  • 网站建设 主机托管百度网页跳转app
  • 谷歌seo推广招聘网站 优化手机版
  • 济南比较大的网站制作公司wordpress快讯类插件
  • 做网站需要多大的图片wordpress 删除revision
  • 山东建设局网站首页秦皇岛做网站公司有哪些
  • 做网站还有市场吗dw网页制作图片
  • 石家庄网站建设行业公司做一个网站建设
  • 传媒网站源码动漫双人互动模板
  • 深圳网站seo教程企业黄页88网
  • 开发软件网站多少钱网站管家
  • 广州微信网站建设报价洛阳市建设工程造价信息网
  • 北京网站开发公司一网天行石家庄最新事件
  • 怎样让网站排名优化工做动画网站
  • 设计好看的企业网站c2c网站开发
  • 360免费建站系统设置本机外网ip做网站
  • 专业商城网站设计制作网页设计与制作的三个阶段
  • 设计logo网站免费奇米网站建设作业多少钱
  • 网站建设开发的规划流程网站发展趋势
  • 做电影资源网站有哪些电影网站怎么建设
  • 合肥做网站优化哪家好贵阳网站建设黔搜
  • 网站建设图片怎么加水印宁德东侨建设局网站
  • 长沙网站推广 下拉通推广银川网站建设怎么样
  • 济南建网站公养殖业网站模板