??xml version="1.0" encoding="utf-8" standalone="yes"?> 其实q是Z安全而作的一U限Ӟ我们知道很多不安全的东西大多是通过|页传播的,|页里面可能含有各种脚本Q能执行很多功能,而chm文g本质上就是编 译过的网c从|上直接下蝲的网cchm文g和exeE序都会被系l标Cؓ来源于网l的Q是不安全的Q一般打开的时候都会出现警告,?#8220;打开此文件前?是询?#8221;前的钩去掉可以让它对该文件不再提C。然而有时候打开chm文g不会出现提示Q直接显C?#8220;该页无法昄”或?#8220;已取消到该网늚??#8221;“internet explorer 不能链接到您h的网?#8221;之类的错误,q该怎么办呢Q?br /> 在chm文g上点右键->属?>常规->解除锁定Q这样就可以打开了?br /> 但是上述Ҏq不L有效的,也许有的版本的系l根本找不到“解除锁定”q个选项Q这时可以通过修改注册表解冻I以下内Ҏ开保存Cؓ后缀为reg的文件打开卛_ [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\HHRestrictions] [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions] 我们可以在internet选项里面扑ֈ有后四个区域Q?br /> gؓ0表示本地计算机,?则表C前两个Qؓ2为前三个Qؓ3为前四个?br /> 所?MaxAllowedZone"=dword:00000003 的含义ؓ允许?本地计算机、internet、本地intranet、可信站?上打开该文件?br /> REGEDIT4是注册表~辑器的版本Qvista和windows 7里面为REGEDIT5,不过老的版本q是照样支持的?br /> 如果chm文档所在文件夹有特D符号也可能D打不开的,比如新徏一个文件夹Q名字ؓ“abc#”Q把chm文g放进d会打不开?/p> 既然|络上的东西被认为是不安全的Q那么ؓ什么网上的|页里的脚本可以直接q行Q下载到本地保存再打开会有警告呢? q是因ؓ我们览|页的时候网늚权限是比较低的,不能讉K本机上的数据{,而如果下载到本地再打开是以本地管理员的n份运行的Q可能对pȝ造成损害。但是其实这个限制说实话没什么用Qiel常有各U漏z木马可以借此q行Q本地的|页一般是安全的?/p> 有时候下载的电子书是chm版的如果惛_手机或者mp4上看Q可以将它{换成txt的。chm是从|页~译q来的,当然q编译回去,然后再{成txt的,q样的工具很多,不过真正好用了不多?br /> 用HTML Help Workshop可以创徏chm文gQ用方法很单的?/p>来自Q?div>http://apps.hi.baidu.com/share/detail/33806176 Html元素的自定义属性,使用hQ十分方便,例如Q?/p>
<input type=”button” value=”Click Me, Baby!” /> 假设我们现在需要限Ӟq个按钮Q只能点?ơ,然后失效了?/strong> 通常的实现方式,是可?em>利用全局变量的Ş?/strong>来记录点L敎ͼ但我们这里用自定义属?/strong>来实现这个功能,展示一下自定义属性的优势Q我们对上面的button做一下改造: <input type=”button” value=”Click Me, Baby!” clickCount=”0” /> 可以看到Q我个button 增加了一个自定义属?clickCountQ?q将初始D?0Q下面我们来写实现功能的js代码Q?/p>
1. l?button 增加click事g的处?/p>
<input type=”button” value=”Click Me, Baby!” clickCount=”0” onclick=”customAttributeDemo(this);" /> 2. 我们来写 customAttributeDemo(obj) q个函数 对于IE来讲Q用自定义属性非常简单,因ؓIE自动自定义属性解析到了DOM中,和标准属性没有Q何区别,IE下的版本Q?/p>
上面的代码在 FireFox 下将失效Q因为FireFox对自定义属性的使用Q限制更高,只能使用 attributes[] 集合来访问,FireFox 下的代码Q?/p>
上面的代码,也适用于IEQ所以,q个代码Q就是具有兼Ҏ的代码了,嘿嘿 感谢秦|友的交,他给Z getAttribute ?setAttribute 的方法:
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp]
"MaxAllowedZone"=dword:00000003
"UrlAllowList"=""
"MaxAllowedZone"=dword:00000003
"UrlAllowList"=""
q是最有效的方法,对于各种pȝ均能用?br /> 那么“MaxAllowedZone”的gؓ3是什么意思呢Q?br /> AllowedZone是允许的区域Q所有的区域包括以下几个Q?br /> 本地计算?internet 本地intranet 可信站点 受限站点
]]>
在最后面加上一?Q敲回R认
按b启动?
]]>
Q基本上都是国式的个h英雄Q不Mw,技术绝Ҏ骨灰U别Q但是全从开始到l尾Q给人很强烈?br />
视觉冲击Q动作行云流_不管是枪战,打斗q是车技Q绝对算得上一,再加上快速的节奏感,L女Q?br />
l对U的上是l典的暴力美学动作片Q赞一个!值得一看!
]]>function customAttributeDemo(obj)
{
if (obj.clickCount === '0')
{
obj.clickCount = '1';
}
else
{
obj.disabled = true;
}
}function customAttributeDemo(obj)
{
if (obj.attributes['clickCount'].nodeValue === '0')
{
obj.attributes['clickCount'].nodeValue = '1';
}
else
{
obj.disabled = true;
}
}function customAttributeDemo(obj)
{
if (obj.getAttribute('clickCount') === '0')
obj.setAttribute('clickCount', '1');
else
obj.disabled = true;
}
]]>
如果要对于元数据的作用进行分c,目前q没有明的定义Q不q我们可以根据它所L作用Q大致可分ؓ三类Q?span>
l ~写文档Q通过代码里标识的元数据生成文档?span>
l 代码分析Q通过代码里标识的元数据对代码q行分析?span>
l ~译查:通过代码里标识的元数据让~译器能实现基本的编译检查?span>
基本内置注释
@Override注释能实现编译时查,你可以ؓ你的Ҏd该注释,以声明该Ҏ是用于覆盖父cM的方法。如果该Ҏ不是覆盖父类的方法,会在编译时报错。例如我们ؓ某类重写toString()Ҏ却写成了tostring()Qƈ且我们ؓ该方法添加了@Override注释Q?
@Deprecated的作用是对不应该在用的Ҏd注释Q当~程人员使用q些ҎӞ会在编译时昄提示信息Q它与javadoc里的@deprecated标记有相同的功能Q准的_它还不如javadoc @deprecatedQ因为它不支持参敎ͼ
注意Q要了解详细信息Q请使用 -Xlint:deprecation 重新~译?span>
@SuppressWarnings与前两个注释有所不同Q你需要添加一个参数才能正用,q些参数值都是已l定义好了的Q我们选择性的使用好了,参数如下Q?span>
deprecation 使用了过时的cLҎ时的警告
unchecked 执行了未查的转换时的警告Q例如当使用集合时没有用泛型 (Generics) 来指定集合保存的cd
fallthrough ?span> Switch E序块直接通往下一U情况而没?Break 时的警告
path 在类路径、源文g路径{中有不存在的\径时的警?/p>
serial当在可序列化的类上缺?span> serialVersionUID 定义时的警告 finally M finally 子句不能正常完成时的警告 all关于以上所有情늚警告 注意Q要了解详细信息Q请使用 -Xlint:unchecked 重新~译?span> 定制注释cd 好的Q让我们创徏一个自q注释cdQannotation typeQ吧。它cM于新创徏一个接口类文gQ但Z区分Q我们需要将它声明ؓ@interface,如下例: public @interface NewAnnotation { } 使用定制的注释类?/strong> 我们已经成功地创建好一个注释类型NewAnnotationQ现在让我们来尝试用它吧,如果你还记得本文的第一部分Q那你应该知道他是一个标记注释,使用也很ҎQ如下例Q?span> public class AnnotationTest { @NewAnnotation public static void main(String[] args) { } } d变量 J2SE 5.0里,我们了解到内|注释@SuppressWarnings()是可以用参数的Q那么自定义注释能不能定义参C数和cd呢?{案是当然可以,但参数类型只允许为基本类型、String、Class、枚丄型等Qƈ且参C能ؓI。我们来扩展NewAnnotationQؓ之添加一个Stringcd的参敎ͼCZ代码如下Q?span> public @interface NewAnnotation { String value(); } 使用该注释的代码如下Q正如你所看到的,该注释的使用有两U写法,q也是在之前的文章里所提到q的。如果你忘了q是怎么回事Q那再ȝd?span> public class AnnotationTest { @NewAnnotation("Just a Test.") public static void main(String[] args) { sayHello(); } @NewAnnotation(value="Hello NUMEN.") public static void sayHello() { // do something } } 为变量赋默认?/strong> 我们对Java自定义注释的了解正在不断的增多,不过我们q需要更q,在该条目里我们将了解到如何ؓ变量讄默认|我们再对NewAnnotaionq行修改Q看看它会变成什么样子,不仅参数多了几个Q连cd也变了。但q是很容易理解的Q我们先定义一个枚丄型,然后参数设|ؓ该枚丄型,q赋予默认倹{?span> public @interface Greeting { public enum FontColor {RED, GREEN, BLUE}; String name(); String content(); FontColor fontColor() default FontColor.BLUE; } 限定注释使用范围 当我们的自定义注释不断的增多也比较复杂时Q就会导致有些开发h员用错误,主要表现在不该用该注释的地方用。ؓ此,Java提供了一个ElementType枚Dcd来控制每个注释的使用范围Q比如说某些注释只能用于普通方法,而不能用于构造函数等。下面是Java定义的ElementType枚DQ?span> package java.lang.annotation; public enum ElementType { TYPE, // Class, interface, or enum (but not annotation) FIELD, // Field (including enumerated values) METHOD, // Method (does not include constructors) PARAMETER, // Method parameter CONSTRUCTOR, // Constructor LOCAL_VARIABLE, // Local variable or catch clause ANNOTATION_TYPE, // Annotation Types (meta-annotations) PACKAGE // Java package } 下面我们来修改Greeting注释Qؓ之添加限定范围的语句Q这里我们称它ؓ目标QTargetQ用方法也很简单,如下Q?span> @Target( { ElementType.METHOD, ElementType.CONSTRUCTOR }) public @interface Greeting { } 正如上面代码所展示的,我们只允许Greeting注释标注在普通方法和构造函CQ用在包申明、类名等Ӟ会提C错误信息?span> 注释保持性策?/strong> public enum RetentionPolicy { SOURCE,// Annotation is discarded by the compiler CLASS,// Annotation is stored in the class file, but ignored by the VM RUNTIME// Annotation is stored in the class file and read by the VM } RetentionPolicy的用方法与ElementTypecMQ?span style="color: black">单代码示例如下: @Retention(RetentionPolicy.RUNTIME) @Target( { ElementType.METHOD, ElementType.CONSTRUCTOR }) 文档化功?/strong> Java提供的Documented元注释跟Javadoc的作用是差不多的Q其实它存在的好处是开发h员可以定制Javadoc不支持的文档属性,q在开发中应用。它的用跟前两个也是一LQ简单代码示例如下: @Documented @Retention(RetentionPolicy.RUNTIME) @Target( { ElementType.METHOD, ElementType.CONSTRUCTOR }) public @interface Greeting { } 值得大家注意的是Q如果你要用@Documented元注释,你就得ؓ该注释设|RetentionPolicy.RUNTIME保持性策略?br />
后箋补充?...
create or replace procedure 存储q程名(param1 in typeQparam2 out typeQ?
as
变量1 cdQD_;
变量2 cdQD_;
Begin
Select count(*) into 变量1 from 表A where列名=param1Q?/p>
If (判断条g) then
Select 列名 into 变量2 from 表A where列名=param1Q?/p>
Dbms_output。Put_line(‘打印信息’);
Elsif (判断条g) then
Dbms_output。Put_line(‘打印信息’);
Else
Raise 异常名(NO_DATA_FOUNDQ?
End if;
Exception
When others then
Rollback;
End;
注意事项Q?/p>
1Q?nbsp; 存储q程参数不带取D_in表示传入Qout表示输出
2Q?nbsp; 变量带取D_后面接分?/p>
3Q?nbsp; 在判断语句前最好先用countQ?Q函数判断是否存在该条操作记?/p>
4Q?nbsp; 用select 。。。into。。。给变量赋?/p>
5Q?nbsp; 在代码中抛异常用 raise+异常?/p>
以命名的异常
命名的系l异? 产生原因
ACCESS_INTO_NULL 未定义对?
CASE_NOT_FOUND CASE 中若未包含相应的 WHEN Qƈ且没有设|?
ELSE ?
COLLECTION_IS_NULL 集合元素未初始化
CURSER_ALREADY_OPEN 游标已经打开
DUP_VAL_ON_INDEX 唯一索引对应的列上有重复的?
INVALID_CURSOR 在不合法的游标上q行操作
INVALID_NUMBER 内嵌?SQL 语句不能字W{换ؓ数字
NO_DATA_FOUND 使用 select into 未返回行Q或应用索引表未初始化的
TOO_MANY_ROWS 执行 select into Ӟl果集超q一?
ZERO_DIVIDE 除数?0
SUBSCRIPT_BEYOND_COUNT 元素下标过嵌套表或 VARRAY 的最大?
SUBSCRIPT_OUTSIDE_LIMIT 使用嵌套表或 VARRAY Ӟ下标指定ؓ负数
VALUE_ERROR 赋值时Q变量长度不以容纳实际数据
LOGIN_DENIED PL/SQL 应用E序q接?oracle 数据库时Q提供了?/p>
正确的用户名或密?
NOT_LOGGED_ON PL/SQL 应用E序在没有连?oralce 数据库的情况?/p>
讉K数据
PROGRAM_ERROR PL/SQL 内部问题Q可能需要重装数据字典& pl./SQL
pȝ?
ROWTYPE_MISMATCH 宿主游标变量?PL/SQL 游标变量的返回类型不兼容
SELF_IS_NULL 使用对象cdӞ?null 对象上调用对象方?
STORAGE_ERROR q行 PL/SQL Ӟ出内存I间
SYS_INVALID_ID 无效?ROWID 字符?
TIMEOUT_ON_RESOURCE Oracle 在等待资源时时
对于|站?a >试而言Q每一个独立的功能模块需要单独的试用例的设计导出,主要依据为《需求规D明书》及《详l设计说明书》,对于应用E序模块需要设计者提供基本\径测试法的测试用例?/p>
链接试
链接是Web应用pȝ的一个主要特征,它是在页面之间切换和指导用户M些不知道地址的页面的主要手段。链接测试可分ؓ三个斚wQ?/p>
1Q测试所有链接是否按指示的那L实链接到了该链接的页面;
2Q测试所链接的页面是否存在;
3Q保证Web应用pȝ上没有孤立的面Q所谓孤立页面是指没有链接指向该面Q只有知道正的URL地址才能讉K?/p>
链接试可以自动q行Q现在已l有许多工具可以采用。链接测试必d集成试阶段完成Q也是_在整个Web应用pȝ的所有页面开发完成之后进行链接测试?/p>
Xenu------主要试链接的正性的工具
可惜的是对于动态生成的面的测试会出现一些错误?/p>
表单试
当用LWeb应用pȝ理员提交信息时Q就需要用表单操作,例如用户注册、登陆、信息提交等。在q种情况下,我们必须试提交操作的完整性,以校验提交给服务器的信息的正性。例如:用户填写的出生日期与职业是否恰当Q填写的所属省份与所在城市是否匹配等。如果用了默认|q要验默认值的正确性。如果表单只能接受指定的某些|则也要进行测试。例如:只能接受某些字符Q测试时可以跌q些字符Q看pȝ是否会报错?/p>
要测试这些程序,需要验证服务器能正保存这些数据,而且后台q行的程序能正确解释和用这些信息?/p>
B/Sl构实现的功能可能主要的在q里Q提交数据,处理数据{如果有固定的操作流E可以考虑自动化测试工L录制功能Q编写可重复使用的脚本代码,可以在测试、回归测试时q行以便减轻试人员工作量?/p>
我们对UM子系l中各个功能模块中的各项功能q行逐一的测试,主要试Ҏ为:边界值测试、等L试Q以及异常类试。测试中要保证每U类型都?个以上的典型数值的输入Q以保试输入的全面性?/p>
Cookies试
Cookies通常用来存储用户信息和用户在某应用系l的操作Q当一个用户用Cookies讉K了某一个应用系l时QWeb服务器将发送关于用L信息Q把该信息以Cookies的Ş式存储在客户端计机上,q可用来创徏动态和自定义页面或者存储登陆等信息?/p>
如果Web应用pȝ使用了CookiesQ就必须查Cookies是否能正常工作而且对这些信息已l加密。测试的内容可包括Cookies是否起作用,是否按预定的旉q行保存Q刷新对Cookies有什么媄响等?/p>
设计语言试
Web设计语言版本的差异可以引起客L或服务器端严重的问题Q例如用哪U版本的HTML{。当在分布式环境中开发时Q开发h员都不在一Pq个问题显得尤为重要。除了HTML的版本问题外Q不同的脚本语言Q例如Java、JavaScript?ActiveX、VBScript或Perl{也要进行验证?/p>
数据库测?/strong>
在Web应用技术中Q数据库L重要的作用,数据库ؓWeb应用pȝ的管理、运行、查询和实现用户Ҏ据存储的h{提供空间。在Web应用中,最常用的数据库cd是关pd数据库,可以使用SQL对信息进行处理?/p>
在用了数据库的Web应用pȝ中,一般情况下Q可能发生两U错误,分别是数据一致性错误和输出错误。数据一致性错误主要是׃用户提交的表单信息不正确而造成的,而输出错误主要是׃|络速度或程序设计问题等引v的,针对q两U情况,可分别进行测试?/p>
功能试用到的测试工hQ黑盒自动化试工具AutoRunnerQ?a >试理工具TestCenter?br />
2 性能试
|站的性能试对于|站的运行而言异常重要Q但是目前对于网站的性能试做的不够Q我们在q行pȝ设计时也没有一个很好的基准可以参考,因而徏立网站的性能试的一整套的测试方案将是至关重要的?/p>
|站的性能试主要从三个方面进行:q接速度试、负h试(LoadQ和压力试QStressQ?q接速度试指的是打开|页的响应速度试。负h试指的是q行一些边界数据的试Q压力测试更像是恶意试Q压力测试們应该是致使整个系l崩溃?/p>
q接速度试
用户q接到Web应用pȝ的速度Ҏ上网方式的变化而变化,他们或许是电话拨P或是宽带上网。当下蝲一个程序时Q用户可以等较长的时_但如果仅仅访问一个页面就不会q样。如果Webpȝ响应旉太长Q例如超q?U钟Q,用户׃因没有耐心{待而离开?/p>
另外Q有些页面有时的限Ӟ如果响应速度太慢Q用户可能还没来得及览内容Q就需要重新登陆了。而且Q连接速度太慢Q还可能引v数据丢失Q用户得不到真实的面?/p>
负蝲试
负蝲试是ؓ了测量Webpȝ在某一负蝲U别上的性能Q以保证Webpȝ在需求范围内能正常工作。负载别可以是某个时刻同时讉KWebpȝ的用h量,也可以是在线数据处理的数量。例如:Web应用pȝ能允许多个用户同时在线Q如果超q了q个数量Q会出现什么现象?Web应用pȝ能否处理大量用户对同一个页面的hQ?/p>
压力试
负蝲试应该安排在Webpȝ发布以后Q在实际的网l环境中q行试。因Z个企业内部员工,特别是项目组人员L有限的,而一个Webpȝ能同时处理的h数量远q超个限度,所以,只有攑֜Internet上,接受负蝲试Q其l果才是正确可信的?/p>
q行压力试是指实际破坏一个Web应用pȝQ测试系l的反映。压力测试是试pȝ的限制和故障恢复能力Q也是试Web应用pȝ会不会崩溃,在什么情况下会崩溃。黑客常常提供错误的数据负蝲Q直到Web应用pȝ崩溃Q接着当系l重新启动时获得存取权?/p>
压力试的区域包括表单、登陆和其他信息传输面{?/p>
采用的测试工P
性能试可以采用相应的工兯?a >自动化测?/a>Q我们目前采用如下工?/p>
ab -----Apache 的测试工?/p>
OpenSTA—开发系l测试架?/p>
3 接口试
在很多情况下Qweb 站点不是孤立。Web 站点可能会与外部服务器通讯Q请求数据、验证数据或提交订单?/p>
服务器接?/strong>
W一个需要测试的接口是浏览器与服务器的接口。测试h员提交事务,然后查看服务器记录,q证在览器上看到的正好是服务器上发生的。测试h员还可以查询数据库,认事务数据已正保存?/p>
外部接口
有些 web pȝ有外部接口。例如,|上商店可能要实旉证信用卡数据以减欺诈行为的发生。测试的时候,要?web 接口发送一些事务数据,分别Ҏ效信用卡、无效信用卡和被盗信用卡q行验证。如果商店只使用 Visa 卡和 Mastercard 卡, 可以试使用 Discover 卡的数据。(单的客户端脚本能够在提交事务之前对代码进行识别,例如 3 表示 American ExpressQ? 表示 VisaQ? 表示 MastercardQ? 代表Discover。)通常Q测试h员需要确认Y件能够处理外部服务器q回的所有可能的消息?/p>
错误处理
最Ҏ被测试h员忽略的地方是接口错误处理。通常我们试图认pȝ能够处理所有错误,但却无法预期pȝ所有可能的错误。尝试在处理q程中中断事务,看看会发生什么情况?订单是否完成Q尝试中断用户到服务器的|络q接。尝试中?web 服务器到信用卡验证服务器的连接。在q些情况下,pȝ能否正确处理q些错误Q是否已对信用卡q行收费Q如果用戯׃断事务处理,在订单已保存而用h有返回网站确认的时候,需要由客户代表致电用户q行订单认?/p>