[置顶] 长期出售:Godaddy老域名,Godaddy历史BA老域名!

[置顶] 长期出售:搜狗pr域名,搜狗收录域名,搜狗权重域名!

[置顶] 长期出售:高外链域名,高反链域名,权重域名,有收录的域名!

相关指针分析

上下文相关性可以大大提高过程间分析的精确性。我们讨论了两种过程间分析的方法,一种基于克隆的方法,另一种是基于摘要的方法。那么我们应该使用哪一个方法呢?

在计算指针指向信息的摘要时有几个难点。首先,这些摘要很大。每个方法的摘要必须包括这个函数和所有被调用者可能做出的所有更新所产生的影响。这些影响需要用输人参数来表示。也就是说,一个方法可能改变的指向集合包括:所有可通过静态变量及输人参数到达的所有数据的指向集合,以及由该方法及被调用方法所创建的全部对象的指向集合。虽然人们已经给 出了复杂的解决方案,但是现在还没有解决方法可以被应用到大型程序中。即使摘要可以通过自底向上的方式计算得到,但如何在一个典型的自顶向下处理过程中计算所有上下文环境下的指针指向集合是一个更大的问题。因为上下文环境的数量可能按照指数级增长。这样的信息对于一些全局性查询是必须的,比如在代码中找出指向某个特定对象的所有指针。

使用BDD的Datalog的实现

二分决策图(Binary Decision Diagram,BDD)是一个用图来表示布尔函数的方法。因为对n个 变量有22n个布尔函数,没有哪种表示方法能够很简洁地表示所有的布尔函数。但是,在实践中出现的布尔函数常常具有很多规律。因此,人们常常可以找到一个BDD来简洁地表示他们想要表示的布尔函数。

我们为了分析程序而开发了一些Datalog程序。事实表明,用这些Datalog程序描述的布尔函数也不例外,也可以使用BDD简洁地表示。BDD方法在实践中是相当成功的,虽然我们需要通过商业BDD操作程序包中的一些启发式规则或技术才可以找到用以表示程序信息的简洁的BDD。值得一提的是,它比使用传统数据库管理系统的方法具有更好的性能,因为传统数据库管理系统是为了在典型商业数据中出现的更加不规则的数据模式而设计的。

LR语法分析中的错误恢复

当LR语法分析器在查询语法分析动作表并发现一个报错条目时,它就检测到了一个语法错误。在查询GOTO表时不会发现语法错误。如果当前已扫描的输入部分不可能存在正确的后续符号串,LR语法分析器就会立刻报错。规范LR语法分析器不会做任何多余的归约动作,会立刻报告错误。SLR和LALR语法分析器可能会在报错之前执行几次归约动作,但是它们决不会把一个错误的输人符号移人到栈中。

在LR语法分析过程中,我们可以按照如下方式实现恐慌模式的错误恢复策略。我们从栈顶向下扫描,直到发现某个状态s,它有一个对应于某个非终结符号A的GOTO目标。然后我们丢弃零个或多个输人符号,直到发现一个可能合法地跟在A之后的符号a为止。之后语法分析器将GOTO(s, A)压人栈中,继续进行正常的语法分析。在实践中可能会选择多个这样的非终结符号A。通常这些非终结符号代表了主要的程序段,比如表达式、语句或块。比如,如果A是非终结符号stmt,a就可能是分号或者。其中,标记了一个语句序列的结束。

封装方法

方法(method)封装了类的行为,提供了类的对外表现。用于将封装的内部细节以公有方法提供对外接口,从而实现与外部的交互与响应。例如,从上面属性的分析我们可知,实际上对属性的读写就是通过方法来实现的。因此,对外交互的方法,通常实现为public。

当然不是所有的方法都被实现为public,否则类内部的实现岂不是全部暴露在外。必须对对外的行为与内部操作行为加以区分。因此,通常将在内部的操作全部以private方式来实现,而将需要与外部交互的方法 实现为public,这样既保证了对内部数据的隐藏与保护,又实现了类的对外交互。例如在ATM类中,对钱的计算、用户验证这些方法涉及银行的关键数据与安全数据的保护问题,必须以private方法来实现,以隐藏对用户不透明的操作,而只提供返回钱款这一public方法接口即可。在封装原则中,有效地保护内部数据和有效地暴露外部行为一样关键。

测量云计算

当你操作你自己的基础架构时,你会有许多测量当前容量的方法。有测量历史数据和趋势的度量指标收集工具,监控关键的阀值变化的工具,当然还有解决ad-hoc故障检修的操作系统层的工具。这些都是我们在这本书里所提到过的。

因为在很多方面,云计算基础架构是一个“黑盒子”,并且大部分云服务提供商可供选择资源清单有限。所以,有效测量的重要性就变得更加显而易见了。尽管利用云服务可以使得部署周期显著缩短,你仍然要重视其余的容量规划过程。找出资源上限仍然是必须的,增长前部署新的实例也同样重要。

烘烤过的静态页面

那些遭遇非常严重流量问题的网站经常采用的另一个技术就是将动态页面转变为静态页面。这可能会很简单也可能会很难,这取决干页面到底有多动态,但你可以保守的只将那些最常被访问的页面或者动态性最少的页面转化为静态页面。

将动态页面转化为静态页面被称作烘烤一个页面。一个关于它如何工作的好的例子是使 用一个你每隔两到三小时就要更新的用来显示最近的照片的新闻页面。在通常情况下,很显然的设计是创建一个动态的页面用以从数据库或者是其他的内容管理系统里定期读取照片数据。在压力之下,你可以将图片的URL硬编码到页面里并且在需要的时候手动更改它们。

硬件决策

为你架构中的每一个部件选择正确的硬件可以对成本产生很大影响。就拿服务器来说,你想把钱投资在哪里?至少你应该有一个基本的概念(可以从测量和使用模式中收集得到)。

在你细读厂商的当前价格之前,你要明白你想努力获得的是什么。该服务器需要用来处理消耗很多CPU工作吗?它需要执行消耗很多内存的工作吗?对网络会有很高的要求?

现在,对于横向扩展和纵向扩展的架构,这两者之间的差别在计算机领域已是众所周知。它能起到协调作用,使得在计算机运行状态下监控容量变化。

能够横向扩展意味着该架构,它能简单地通过在现有的基础设施上添加相同功能的网络节点从而达到增加容量的目的。例如,多加一个Web服务器就能缓解站点访问的压力。

曲线拟合

一个好的容量规划取决干你对重要资源的需求,以及随着时间的推移对需求变动情况的了解程度。一旦收集好容量的历史数据,你就可以着手分析趋势和模式重现。

例如,上一章我讲述了如何在Flickr里分析得知星期日是一周中上传照片量最大的一天。这一有趣的现象引申出下列问题:星期日高峰期是随着时间而变化的吗?如果答案是肯定的,那么相对一周中的其他天它又是如何变化的呢?上传量最大的一天总是星期日吗?如果我们增加居住在国际日期变更线对面的新用户,它会发生变化吗?星期日依然会是一周中上传量最大的一天吗? 一旦掌握了相关数据,上述问题都可以得到解答,这些答案也会逐步加深我们对规划新功能推出、运营故障和维护窗口期的见解。

网站建设的创新理念

在现代的网站建设中,创新理念是必不可少的,它能让网站更有竞争力,现在如果会一点网页编程的话,建设一个网站并不难。但是各种各样的网站,为什么有些就普通平凡,有些确是经典被人所牢记呢?好的网站拥有自己的风格,也就是设计师自己的创新理念。

首先,要明确网站的建设方向,突出网站建设的特点,全面运用创新的理念。一个好网站,要有自己的特色,要有自己的创新理念,关心用户的使用习惯和关注点,这样不怕一个网站没有人气。一个网站没有创新的东西是不会被大众所接受的,所以做网站建设的同时,做好侧重点,在你的网站上能让用户在得到别的网站上得不到实惠。这就要使我们的网站体现出创新的特色。

服务器端控件转换的问题

将现有的html控件转换为服务器端的控件是比较容易的,但是这种方法也存在几个问题。首先,我们仍然不得不接受一些html控件的非常不直观的固有特征。例如,有没有input标记用于单行文本项?有没有一个textarea标记用于多文本项?指定的行和列的单个控件真的更有意义吗?其次,如何才能简便的编写可向诸如IE这样的浏览器传送丰富内容的站点,而同时又能保留对低级别浏览器的兼容性呢?根据浏览器html是无法改变其内容的,而要达到这个目的我们必须编写代码。再次,如何编写能够应付除浏览器之外的其他设备的站点?如像wap手机、PDA甚至电冰箱这样的设备都有浏览器。像这样浏览器的问题我们必须为其手工编写代码。

«737475767778798081828384858687»

热门搜索: 外链域名 高外链域名 高收录域名

Copyright www.thyst.cn. Some Rights Reserved.