网亚机房管理软件博客

新实用主义典范

MapReduce中的运行时协调和机房任务管理

一旦将作业jar文件提交到集群,MapReduce框架就会负责其他的所有事情。它透明地处理集群上分布式代码执行的方方面面的问题,范围从一个单独的节点到数千个节点。

MapReduce框架为机房应用程序开发提供以下支持:

调度——框架确保多个作业的多个任务在集群上执行。不同的调度群提供不同的调度策略,范围从“先到先服务”到确保所有用户的全部作业公平地分享集群的执行资源。调度的另一个方面是推测执行,它是MapReduce实现的一个优化策略。如果JobTracker发现某个人物的执行花费了过长的时间,它就会启动相同任务的一个额外实例(使用不同的TaskTracker)。推测执行背后的基本原理是确保某台机器非预期的执行缓慢将不会拖慢任务的执行。

修改机房管理软件任务行为

有些机房管理软件任务行为是由manifest文件的活动选项卡中的lauchMode的属性参数所决定的。

如果你把活动当成栈中的卡片,那么可以把launchMode的这些变体当作堆叠新卡片或者把已有的栈重新排序的方式。

Standard启动模式是默认值。启动一个新的活动时,默认的back-stack行为是创建一个新的Activity对象的实例,并把它放在栈的顶部。这是大多数情况下的正确行为模式。

singleTop启动方式比默认的行为多了一个检查,它判断特定的活动是否已经存在栈中,如果存在就直接把它置顶。例如,你有一个设置全局参数的活动,它上面有一个“OK”按钮来确认修改。

使用模板的机房软件指令组合

机房软件指令有两个强大的组合功能:将控制器和HTML模板(它们可能包含了其他指令)与指令关联在一起的能力。默认情况下,AngularJS将把HTML模板的内容插入为与指令相关的DOM元素的子节点。它还附加一个控制器。一般的想法是采用一种不依赖于顶层指令实现细节的方式,将复杂的指令结构合并成一个指令。

除了在所有拥有机房软件指令特性的元素上运行链接函数之外,该指令还将模板设置中指定的HTML插入为每个含有指令的元素的子节点。另外,该指令将在模板HTML所在的作用域中运行CarouseController。

机房管理软件读取共享权限

读取和写入访问是你需要保护内容提供器的机房管理软件数据的最小控制。URI权限提供了重要的细粒度提供商的访问控制。它们使内容提供器可以限制对指定命名空间的数据的访问。考虑联系人内容提供器可能将联系人分组为企业和个人两类。

当应用程序需要共享机房管理软件数据的子集,Android做了一些聪明的事情,可以实现动态地权限授予,从已经有权限读取或写入的一个应用程序临时授予这些相同权限的指定子集到另一个应用程序。试想一下,Contacts应用程序需要与一个vCard应用程序共享一个联系人。假设Contacts应用程序可以完全访问联系人内容提供器,当它发起一个由vCard应用程序处理的intent时,它可在Intent中指定vCard应用程序也应该有权限读取显示虚拟名片所需的数据。

机房管理软件客户端的优势

WebData和Maigrate机房管理软件客户端的属性对于手机应用程序的熬出如下所示:

Migrate框架有潜力将机房管理软件应用程序从静态配置模式(仅在部署时才能改变)转移到灵活的部署环境(后端服务能动态更改客户端的行为和配置)。这种灵活性源于支持能推送和同步到客户端的模式。

Mirgrate机房管理软件客户端能用作一个安全的应用程序代理,不需要请求Internet权限。

你将看到机房管理软件应用程序尺寸和开发费用的减少,不再需要重新入手来访问以及同步网络数据与本地SQLite表。

机房管理软件的扩展关系

SQL连接功能为条目之间关系提供了重要基础,是传统数据库操作中最有用的功能。遗憾的是,由于访问驻留在多台计算机上机房管理软件的连接数据的固有费用,很难跨并行数据主机分布连接。为更好地理解这个问题,考虑一个可扩展的持久性解决方案,一个数据元素将驻留在大概一台计算机上(为增加可靠性的数据冗余除外)。组装连接所需的位于多个表和列的数据很可能需要多次往返于不同的主机。通信和机房管理软件的数据封送使得连接操作代价昂贵。此外,你将看到硬盘寻道事件也很长。

HTTP协议中REST的机房软件应用

虽然REST风格可以与几乎任意协议一起使用,但在互联网环境下还是选择HTTP来阐述,因为它本身就基于REST架构。命令一个目标资源的URI组合;4种基本的操作方法PUT、POST、DELETE和GET。以及请求内容。提供了大多数REST风格的服务都采用的一种传输。

在互联网中几乎所有REST风格的API都以URL来命名它们的资源。RFC规则中定义了具有可预测结构的URI。

虽然相似性只是部分的,但在一个REST风格的API中,URI可能在很多情况下被理解为是一个对象的引用,就像Java变量也是一个对象的引用。在一个设计良好的Java程序中,你可能都不知道实际上Java引用的对象。你可以询问被引用的状态信息,你甚至可以改变这个引用的状态。然而,你不应该冒昧地猜测对象的实际实现。

管理机房软件数据库

在结束机房软件数据库的讨论之前,应该考虑另一个主题,即生命周期管理。一个打开的数据库占用1KB内存。在内存受限的设备上,这足以让我们感兴趣。应用程序有两种基本策略用于管理机房软件数据库:获得并持有它和需要它时获取它。

获得并持有它是这两种策略中较简单的,它是一个非常合理的选择,除非存在应用程序进程中需要恢复内存的情况。如果应用程序有大量的时间不需要访问数据库—例如,在具有多个活动的应用程序中,只有其中一个活动使用数据库——那么持有数据库意味着它占据的内存不能重用。

但是,不要混淆系统的进程生命周期管理的进程生命周期管理的进程内的内存垃圾回收。如果应用程序的进程终止—也许是因为它处于后台太久或者因为在它前面启动了很多新的应用程序—机房软件数据库、任何里阿尼额以及属于应用程序内存空间的任何东西都将消失。只要使机房软件数据库处于一致状态—没有未提交的事务和没有打开连接大型对象的文件—调整即将被释放的内存就是白费精力。

机房软件内容提供器和文件

为了演示该问题的解决方案,考虑KeyVal应用程序的一个新功能,它允许值能够关联任意大的文本。一个键与一个值相关联,这已在实际中得到了应用。新功能增加了把一个值与数理非常大的文本相关联的能力。

在UI,列表视图中显示的值如果有extras,则左边有一个绿色的对号。如果没有,左边则有一个红色的X。

第一个原因与SQLite的实现有关。随着数据库文件变大,列的宽度相应变大,操作就变慢。即使SQLite对此做过优化,大小也很重要。

如果必要,以下几种方法可以优化blob存储。

实现机房管理软件内容提供器

在创建机房管理软件内容提供器CRUD方法的过程中,有几个结构问题开发人员必须牢记。像往常构件组件一样,其中最重要的是理解组件的生命周期,以及哪些方法运行在哪些线程上。

内容提供器的onCreateO方法总是在它所属的应用程序的UI线程上运行。这意味着,它不得承担任何费时的初始化操作。幸运的是,框架保证了创建SQLiteDatabaseHeper对象是一个快速的操作—onCreateO方法可以创建帮助器的实例。

但是,不能使用该实例来获得一个数据库实例。如前所述,获得实际的数据库实例可能需要重建数据库的整个架构,并用数据重新填充它。在UI线程上运行这一操作过于缓慢。

«34567891011121314151617»

Powered By Z-Blog 2.0 Doomsday Build 121221

版权所有©2007-2013 南京网亚计算机有限公司
QQ:502800066(购买咨询) 1074187861(技术支持) 邮件: sales@ji-fang.cn
电话:( 025)84533318 (025)84533319 (025)66671103 13913982176 传真: (025)84533320
地址: 江苏省南京市中山东路198号龙台国际大厦1205室