首页 文章 精选 留言 我的

精选列表

搜索[3D建模],共8610篇文章
优秀的个人博客,低调大师

Javascript对象创建模

Javascript有多种创建对象的方式,新手和老手都可能感到不知所措,不确定应该使用哪种方式。文本将介绍常见的对象常见模式和最佳的实践。 对象字面量:Object Literals 创建对象最简单的方式就是对象字面量。Javascript总是吹嘘能够“无中生有”地创建对象——不需要类、不需要模板、不需要原型——just poof!,一个有方法和数据的对象就出现了。 var o = { x: 42, y: 3.14, f: function() {}, g: function() {} }; 缺点 如果需要在其他地方创建相同类型的对象,将要复制粘贴对象的方法、数据和初始化的代码,导致大量重复代码。需要一种能够批量创建同类型对象的方法,而不仅仅是一个对象。 工厂模式:Factory Functions 这是创建相同结构、接口和实现的对象最简单的方式。而不是直接创建对象字面量,而是将对象字面量作为函数的返回值。这样,如果需要多次或多个地方创建相同类型的对象时只需要调用一个函数: function thing() { return { x: 42, y: 3.14, f: function() {}, g: function() {} }; } var o = thing(); 缺点 这种Javascript对象创建方法可能会导致内存膨胀,因为每一个对象都包含了工厂函数的独立副本。理想情况下,我们希望每个对象只共享其功能的一个副本。 构造函数模式 可以创建特定类型的对象, 类似于Array, Date等原生JS的对象.其实现方法如下: function Student(name,age){ this.name=name; this.age=age; this.myName=function(){ alert(this.name); }; } var student1_ = new Student('aaa',15); var student2_ = new Student('bbb',18); 缺点 每次实例化一个对象都会把构造器里的所有方法重新创建一次,多次创建会造成内存开销增加的问题。 原型链:Prototype Chains Javascript提供了一种内置的在对象之间共享数据的机制,称为原型链。当访问对象的属性时,它可以通过委托给其他对象来满足该请求。可以利用这一点来修改工厂函数,使它创建的每个对象只包含自己特有的数据,而对其他属性的请求则全部委托给原型链上共有的一个对象: var thingPrototype = { f: function() {}, g: function() {} }; function thing() { var o = Object.create(thingPrototype); o.x = 42; o.y = 3.14; return o; } var o = thing(); 事实上,这是一种常见的模式,语言已经内置了对它的支持。不需要创建自己的共享对象(原型对象)。相反,会自动为每个函数创建一个原型对象,可以将共享数据放在那里: thing.prototype.f = function() {}; thing.prototype.g = function() {}; function thing() { var o = Object.create(thing.prototype); o.x = 42; o.y = 3.14; return o; } var o = thing(); 缺点 会导致重复。上述thing函数的第一行和最后一行在每一个“委托原型的工厂函数”中都会重复一次,几乎没有区别。 ES5类:ES5 Classes 可以把那些重复的代码抽出来,放进一个自定义函数里来隔离它们。这个函数会创建一个对象,并与其他某个任意函数(参数函数)的原型建立委托(继承)关系,然后把新创建的对象作为参数,调用这个函数(参数函数),最后返回这个新的对象。 function create(fn) { var o = Object.create(fn.prototype); fn.call(o); return o; } // ... Thing.prototype.f = function() {}; Thing.prototype.g = function() {}; function Thing() { this.x = 42; this.y = 3.14; } var o = create(Thing); 事实上,这也是一种常见的模式,Javascript有一些内置的支持。create定义的函数实际上是new关键字的基本版本,可以直接替换create为new(构造函数+原型链): Thing.prototype.f = function() {}; Thing.prototype.g = function() {}; function Thing() { this.x = 42; this.y = 3.14; } var o = new Thing(); 在ES5中,它们是对象创建函数,它将共享数据委托给原型对象,并依赖new关键字来处理重复逻辑。 缺点 冗长和丑陋,实现继承更加冗长和丑陋。 ES6类:ES6 Classes 在ES6的类中,执行相同的操作提供了更清晰的语法: class Thing { constructor() { this.x = 42; this.y = 3.14; } f() {} g() {} } const o = new Thing(); 比较 多年以来,Javascript开发者们与原型链的关系总是若即若离,纠缠不清。而今天最有可能遇到的两种创建对象的方式,一种是强烈依赖原型链的class语法,另一种则是完全不依赖原型链的工厂函数语法。这两种风格在性能和功能上有所不同——尽管差别不太大。 性能 今天Javascript引擎已经过如此大量优化,以至于很难通过Javascript代码来推断怎样会比较快。关键在于测量方法。然而有时甚至测量都会让我们失望。通常情况下,每六周发布一次更新的Javascript引擎,有时性能会发生重大变化,我们之前进行的任何测量以及我们根据这些测量做出的任何决定都会立即出现。因此,经验法则是支持最官方和最广泛使用的语法,假设它将受到最严格的审查,并且在大多数时候是最高效的。目前来看class语法最符合这一点,class语法大约比返回字面量的工厂模式快3倍。 特点 随着ES6的发布,类与工厂模式之间曾经存在的几点差异消失了。现在,工厂模式和类都能够强制实现真正的私有数据: 工厂模式通过闭包实现 类通过weak maps实现 两者都能实现多重继承——工厂模式可以将其他属性混入自己的对象,类也可以将其他属性混入自己的原型,或者通过类工厂,通过代理也能实现。工厂函数和类也都可以在需要的时候返回任意对象,语法也都很简单。 结论 考虑到所有事情,对Javascript对象创建的偏好是使用类语法。它是标准的,它简单而干净,速度快,并且它提供了曾经只有工厂模式才能提供的所有功能

优秀的个人博客,低调大师

OpenStack成为NFV标准构建模

OpenStack正在成为领先的通信服务提供商(CSP)NFV部署的基础设施编排中的实际标准,为了实现开源和开放架构的优势(即避免厂商锁定),CSP正在克服OpenStack部署的挑战(如技术不成熟和不断发展的标准)。缺乏NFV管理和编排(MANO)仍然是主要的障碍。 NFV和OpenStack OpenStack是构建和管理云计算平台的一系列开源软件工具的集合,它使得服务提供商跨计算和存储对数据中心资源池进行配置和编排。CSP能够通过NFV部署不同类型的数据中心,而不是典型的大型企业或超级规模的云。它们的计算能力分布在包括集中式核心、聚合点和局部存在点(PoP)的层中。CSP的OpenStack实现必须高度可靠,并且能够在数百个分布在不同大小的数据中心上分配工作负载。 领先CSP的OpenStack实现 领先的CSP最新发布的报告表明,他们对NFV部署中重要组成部分OpenStack的大力支持。根据OpenStack基金会的报告,CSP是OpenStack部署增长最快的部分。OpenStack是很多新兴NFV标准的关键因素,包括:CORD和OPNFV。 Verizon Verizon(与Big Switch、Dell、Red Hat合作)在其位于美国的5个数据中心实现了OpenStack云部署,该公司的NFV项目开始于2015年,依赖于提供满足公司复杂网络需求的超大规模功能和灵活性的核心和POD架构。 该公司在美国其他数据中心和汇聚站点进行额外部署,2016年在其他国家的数据中心进行部署。Verizon计划在边缘网络部署改进过的数据中心设计。Verizon公司表示,计划在未来3年内将其有线和无线网络元素大部分实现虚拟化(使用NFV和OpenStack),其中包括了数以万计的服务器规模部署。 AT&T AT&T希望通过利用NFV、SDN、OpenStack、OpenDaylight、Open vSwitch等技术在接下来的几年中实现其网络75%的虚拟化。AT&T的NFV云已经包括了10个OpenStack项目,并计划在2016年年底之前推出3个云产品。AT&T利用开源代码(包括OpenStack),期望达到将云资源的部署时间从几个月缩短到几天时间的目标。 AT&T做了大量的工作来优化OpenStack,包括扩展OpenStack以提高可靠性(运营商级可靠性),使其能够应用于新的全球网络。AT&T还使用OpenStack工具开发终端用户资源管理器,这将给AT&T的用户带来自主服务的功能,实现网络按需服务。 AT&T使用NFV和OpenStack实现的其他功能包括允许自动配置网络功能和区域发现服务的应用程序目录,区域发现服务是一种预留系统,使应用程序可以在网络上的各个地理区域运行。 其他的支持和实施OpenStack的大型CSP包括:NTT、SK电信、中国移动、中国联通、XO Communications、德国电信、瑞士电信、英国电信、Telefonica、Comcast、Time Warner Cable(时代华纳)。 OpenStack对NFV的好处 领先的CSP在部署OpenStack时,正在寻找与其他大型数据中心部署相同的优势,他们希望降低部署成本(CAPEX)和运维成本(OPEX),并提高基于云计算资源创新的灵活性和速度。大型CSP特别希望消除厂商锁定,这也是他们对OpenStack感兴趣的一个关键因素。他们对OpenStack感兴趣的其他原因包括:开源项目中固有的创新能力、广泛的ISV生态系统、开放的API。 通信服务提供商OpenStack面临的挑战 OpenStack是一个云计算管理系统,而不是一般化的网络管理系统。这意味着对CSP来说,OpenStack只是管理和编排的一部分,但其本身不是解决方案。例如,OpenStack缺少对现在使用的传统网络设备部署的许多服务和服务组件的支持。 OpenStack的一些缺点可能会随着技术的成熟和广泛的部署从而得以解决,包括: 能够扩展到数千个站点和数十万台服务器的能力部署各种OpenStack组件的一致性缺乏全面的文件 其他的挑战的实现将面临更大的难度,并且可能需要CSP特定实现,包括: 网络数据安全——特别是数据中心间东西向流量将OpenStack与CSP更广泛的NFV管理和编排解决方案联系起来的能力多厂商VNF资源分配和对服务链的支持生态 大量的企业支持OpenStack作为NFV部署的重要组成部分,包括:HPE、Dell、VMware、Cisco、Red Hat、Mirantis、Ericsson、Big Switch、Pluribus Networks、PlumGrid、Intel/Wind River、Radisys等等。 给CSP的建议 OpenStack作为提供数据中心资源的手段,现在是NFV部署的重要组件。这是一个复杂的NFV蓝图,允许CSP利用开源创新并减少厂商锁定。OpenStack需要增强可靠性、安全性,以满足领先的CSP NFV部署的特定需求。OpenStack并没有解决NFV管理和编排(MANO)的复杂挑战。 原文链接:https://www.sdxcentral.com/articles/analysis/openstack-for-nfv/2016/11/?utmsource=SDxCentral.com+Mailing+List&utmcampaign=c6d2a64eb4-SDxCentral+Newsletter+11%2F25%2F16&utm_medium=email&utmterm=0c2b6e504a2-c6d2a64eb4-81970457 本文转自d1net(转载)

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册