版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
(一)复试的问题整理的优化流程是如何实现的,流程是怎么样?尽量使用,避免使用单向灵活使用单向不用一对一,使用多对一代替一对一配置对象缓存,不使用集合缓存一对多使用多对一使用继承使用显示多态避免查处所有对象消除大表,使用二级缓存与的区别?在实现类方面的对比:要求类继承一个抽象基类;的一个具体问题是使用抽象类编程而不是接口。类可以实现一个接口,也可以实现其他接口,使可选和定制的服务成为可能。提供一基类去实现常用的接口。即使接口不是必须实现的,只有一个包含方法的类都可以用作的i线程模式方面的对比:是单例模式并且必须是线程安全的,因为仅有的一个实例来处理所有的请求。单例策略限制了能做的事,并且要在开发时特别小心。资源必须是线程安全的或同步的;对象为每一个请求产生一个实例,因此没有线程安全问题。依赖方面的对比:依赖于,因为的方法中有和方法。不再依赖于,从而允许脱离容器运行,从而降低了测试的难度。当然,如果需要直接访问和参数,仍然可以访问它们。但是,大部分时候,都无需直接访问和,从而给开发者更多灵活的选择。可测性方面的对比:测试的一个主要问题是方法依赖于,这使得的测试要依赖于容器。为了脱离容器测试的ct,必须借助于第三方扩展:Stuteta该扩展下包含了系列的c对象模拟了ttSeete和ettSelete对象n从而可以脱离e容器测试Stut的ct类。Stutct可以通过初始化、设置属性、调用方法来测试。封装请求参数的对比:Stut使用ct对象封装用户的请求参数,所有的ct必须继承一个基类:ct。普通的aa0不能用作ct,因此,开发者必须创建大量的ct类封装用户请求参数。虽然Stut提供了动态ct来简化ct的开发,但依然需要在配置文件中定义ct;Stut直接使用ct属性来封装用户请求属性,避免了开发者需要大量开发ct类的烦琐,实际上,这些属性还可以是包含子属性的对象类型。如果开发者依然怀念Stutct的模式,Stut提供el模式e可以让开发者使用单独的el对象来封装用户请求参数,但该对象无需继承任何Stut基类,是一个,从而降低了代码污染。表达式语言方面的对比:Stut整合了St因此可以使用S表达式语言。这种表达式语言有基本对象图遍历,但在对集合和索引属性的支持上则功能不强;Stut可以使用S,但它整合了一种更强大和灵活的表达式语言:(ectatataua,因此,Stut下的表达式语言功能更加强大。绑定值到视图的对比:Stut使用标准S机制把对象绑定到视图页面;Stut使用“ValueStack”技术,使标签库能够访问值,而不需要把对象和视图页面绑定在一起。类型转换的对比:Stutct属性通常都是St类型。5=ut使用ce进行类型转换,每个类一个转换器,转换器是不可配置的;Stut使用进行类型转换,支持基本数据类型和常用对象之间的转换。数据校验的对比:Stut支持在ct重写al@方法中手动校验,或者通过整合框架来完成数据校验。Stut支持通过重写alate法进行校验,也支持整合校验框架进行校验。ct执行控制的对比:Stut支持每一个模块对应一个请求处理(即生命周期的概念),但是模块中的所有ct必须共享相同的生命周期。Stut支持通过拦截器堆栈(tecetStack)为每一个ct创建不同的生命周期。开发者可以根据需要创建相应堆栈,从而和不同的ct一起使用。Stut的原理
初始化:置成自动启动的框架的总控制器是一个初始化:置成自动启动的框架的总控制器是一个v在启动时总控制器会读取配置文件,它在中配的配置信息,为不同的模块初始化相应的对象。面向对象思想发送请求:用户提交表单或通过向服务器提交请求,请求的数据用协议传给服务器。填充:的总控制器在用户提交请求时将数据放到对应的对象中的成员变量中。派发请求:控制器根据配置信息对象将请求派发到具体的,对应的一并传给这个中的方法。处理业务:一般只包含一个方法,它负责执行相应的业务逻辑调用其它的业务模块完毕后返回一个对象。服务器通过对象进行转发工作。返回响应:将业务处理的不同结果返回一个目标响应对象给总控制器。查找响应:总控制器根据处理业务返回的目标响应对象,找到对应的资源对象,一般情况下为页面。响应用户:目标响应对象将结果传递给资源对象,将结果展现给用户。的流程如何实现1根据输入源不同,构造不同的输入流2根据不同的需要,包装原始的输入流。比如用提高性能。3根据输出源不同,构造不同的输出流。4根据不同的需要,包装原始的输入流。5从输入流中读取数据写入输出流中。6关闭输出,输入流开发安全的注意要点i登陆验证码。利用一个随机产生一个验证码,由于验证码是机器随机产生的,因此暴力破解程序无法预料到具体是什么,所以可以防止暴力破解。
2登陆身份验证。系统的每个功能都必须经过身份验证后才能访问,没有认证的请求会被过滤掉,这是最基本的安全要求:1所有功能都通过的来进行访问,不直接以的形式向用户提供功能访问,这样一方面可以防止向用户暴露程序的资源名称,另一方面也可更方便的进行权限控制。2对的设置,利用该来检查用户的权限,这样既可以防止用户登陆后跨访问。3防止扰过权限认证的直接资源访问。虽然前面的设计中,已经要求所有的功能都通过的来进行访问,但是还是不能排除恶意用户可能会知道程序资源名称(文件),如果这类用户直接输入文件的访问,有可能会对系统形成威胁。因此需要禁止所有用户发起的直接资源访问。通常以这种方式来实现:在应用中创建一个从不使用的角色:,将所有的资源文件配置为必须具有才能访问。由于根本没有任何用户可以成为该角色。由于根本没有任何用户可以成为该角色,所以也就无法对该角色对应的资源直接访问。常用的集合的区别接口是最基本的集合接口,一个代表一组,即的元素(e一些允许相同的元素而另一些不行。一些能排序而另一些不行。不提供直接继承自的类,提供的类都是继承自的“子接口”如和。接口是有序的,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在中的位置,类似于数组下标)来访问中的元素,这类似于的数组。和下面要提到的不同,允许有相同的元素。类实现了接口,允许元素。此外提供额外的,,方法在的首部或尾部。这些操作使可被用作堆栈()c队列()或双向队列()u
队列()或双向队列()u注意没有同步方法。如果多个线程同时访问一个,则必须自己实现访问同步。类实现了可变大小的数组。它允许所有元素,包括l没有同步。zme方法运行时间为常数。但是方法开销为分摊的常数,添加个元素需要的时间。其他的方法运行时间为线性。当需要插入大量元素时,在插入前可以调用方法来增加的容量以提高插入效率。和一样,也是非同步的(r类非常类似,但是是同步的。由创建的,虽然和创建的是同一接口,但是,因为是同步的,当一个被创建而且正在被使用,另一个线程改变了的状态(例如,添加或删除了一些元素),这时调用的方法时将抛出,因此必须捕获该异常。类继承自,实现一个后进先出的堆栈。提供个额外的方法使得得以被当作堆栈使用。基本的和方法,还有方法得到栈顶的元素,方法测试堆栈是否为空,方法检测一个元素在堆栈中的位置。刚创建后是空栈。接口是一种不包含重复的元素的,即任意的两个元素和都有(最多有一个元素。接口请注意,没有继承接口,提供到的映射。一个中不能包含相同的,每个只能映射一个°接口提供种集合的视图,的内容可以被当作一组集合,一组集合,或者一组映射。类继承接口,实现一个映射的哈希表。任何非空()的对象都可作为或者的对象都可作为或者是同步的。类似,不同之处在于是非同步的,并且允许,即类似,不同之处在于是非同步的,并且允许,即和。,但是将视为时(方法可返回),其迭代子操作时间开销和的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将的初始化容量设得过高,或者过低。的优化)的优化应该放在优先考虑,因为一个在中发生比在中发生导致的成本更高)尽可能避免排序;尽可能在内存中排序;分配合适的临时空间以减少空间分配调用。)建立,但索引的层次越多,效率越低,索引所包含的字段不超过个。)表分区)使用过滤行)使用表连接而不是多个查询使用:而不是:)执行连接时使用完全限定的列引用)使用表达式而不是多个查询)使用而不用避免使用子句,只会在检索出所有记录之后才对结果集进行过滤。这个处理需要排序,总计等操作。如果能通过子句限制记录的数目,那就能减少这方面的开销。0使用而不用)使用相同的,使用的必须绝对相同所有字符必须相同大小写要相同所格要相同子句中的连接顺序采用自下而上的顺序解析子句,根据这个原理,表之间的连接必须写在其他条件之前,那些可以过滤掉最大数量记录的条件必须写在子句的末尾。子句中避免使用‘*’例如:表包含个字段不用:*4使用函数来减少处理时间使用函数可以避免重复扫描相同记录或重复连接相同的表。)减少对表的查询在含有子查询的语句中,要特别注意减少对表的查询。使用表的别名用替代在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接。在这种情况下,使用或通常将提高查询的效率。是怎么实现它先在中配置一个,映射到特定的路径(通常A这个的作用就是初始化要暴露给调用的类(通过进行配置),并生成相应的代理的类代码。在请求到来的时候,负责将请求的参数变成对应的对象,并以其为参数调用目标方法,并将返回值转化为代码。和的区别接口是有序的,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在中的位置,类似于数组下标)来访问中的元素,这类似于的数组。和下面要提到的不同,允许有相同的元素。类实现了接口,允许元素。此外提供额外的,,方法在的首部或尾部。这些操作使可被用作堆栈()c队列()或双向队列()u注意没有同步方法。如果多个线程同时访问一个,则必须自己实现访问同步。类实现了可变大小的数组。它允许所有元素,包括l没有同步。zme方法运行时间为常数。但是方法开销为分摊的常数,添加个元素需要的时间。其他的方法运行时间为线性。当需要插入大量元素时,在插入前可以调用方法来增加的容量以提高插入效率。和一样,也是非同步的(r类非常类似,但是是同步的。由创建的,虽然和创建的是同一接口,但是,因为是同步的,当一个被创建而且正在被使用,另一个线程改变了的状态(例如,添加或删除了一些元素),这时调用的方法时将抛出,因此必须捕获该异常。类继承自,实现一个后进先出的堆栈。提供个额外的方法使得得以被当作堆栈使用。基本的和方法,还有方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论