posts - 37,  comments - 9,  trackbacks - 0
BOM:Browser Object Model,浏览器对象模型。BOM是由一系列的对象组成的。其结构如下图所示。


可以看出,window对象是整个BOM的核心,因此,先讨论window对象。
(1)使用框架集的情况下
        使用框架集合的情况下,每个框架都由他自身的window对象表示,存放在frames集合中。可以通过数字或者名字对框架进行索引。看例子:
<html>
    
<head></head>
    
<frameset rows="100,*">
        
<frame src="frame.html" name="topFrame" />
        
<frameset cols="50%,50%">
            
<frame src="anothorFrame.html" name="leftFrame"/>
            
<frame src="yetAnothorFrame.html" name="rightFrame"/>
        
</frameset>
    
</frameset>
</html>
        我们可以通过window.frames[0]或者window.frames["topFrame"]引用顶层的框架。由于window对象是整个BOM的核心,因此再写上面的代码时,可以忽略window对象不写,直接写frames[0]或者frames["topFrame"]即可。
        在框架中使用window对象,代表的是该框架本身。因此,还引入了top对象。该对象指向的是对顶层的框架,也就是浏览器窗口。
        此外,还有一个parent对象。顾名思义,parent指向该框架的父框架。看例子。
<!--parent.html-->
<html>
    
<head></head>
    
<frameset rows="100,*">
        
<frame src="frame.html" name="topFrame" />
        
<frameset cols="50%,50%">
            
<frame src="anothorFrame.html" name="leftFrame"/>
            
<frame src="anotherframeset.html" name="rightFrame"/>
        
</frameset>
    
</frameset>
</html>
       其中,anotherframeset.html的代码如下:
<!--anotherframeset.html-->
<html>
 
<head>
  
<title></title>
 
</head>
 
<body>
    
<frameset cols="100,*">
        
<frame src="red.html" name="redFrame"/>
        
<frame src="blue.html" name="blueFrame"/>
    
</frameset>
 
</body>
</html>
        如果在red.html或者blue.html中,parent指向parent.html中的rightFrame。如果代码写在parent.html中的topFrame中,那么parent指向top对象,也就是浏览器窗口。还有一个指针self,它总是等于window。

参考书:
《JavaScript高级编程》Nicolas C. Zakas著, 曹力 张欣 等译。
posted @ 2011-10-18 12:22 wawlian 阅读(466) | 评论 (0)编辑 收藏
修改host,加入 

203.208.46.146 www.google.com 
203.208.46.147 www.google.com.hk 
203.208.46.132 clients1.google.com 
203.208.46.149 mail.google.com 
203.208.46.161 chatenabled.mail.google.com 
203.208.46.161 mail-attachment.googleusercontent.com
哈哈,找到解决办法,速度明细加快 
posted @ 2011-10-14 14:56 wawlian 阅读(679) | 评论 (0)编辑 收藏
以下内容均是来自《锋利的jQuery》,发到这里,纯属做个笔记,方便查阅。
直接看代码:

 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 2         "http://www.w3.org/TR/html4/loose.dtd">
 3 <html>
 4 <head>
 5     <title></title>
 6     <script type="text/javascript" src="jquery-1.3.1.js">
 7 
 8     </script>
 9 
10     <script type="text/javascript">
11         $().ready(
12             function() {
13 
14                 //表单对象属性过滤选择器
15                 //1改变表单内可用元素的值
16                 //$('#form1 input:enabled').val("这里变化了");
17 
18                 //2改变表单内不可用元素的值
19                 //$('#form1 input:disabled').val("这里变化了");
20 
21                 //3选取多选框中选中的个数
22                 //alert($('#form1 input:checked').length);
23 
24                 //4选取下拉框中选中的内容
25                 alert($('#form1 select :selected').length);
26             }
27         );
28     </script>
29 </head>
30 <body>
31     <form action="" id="form1">
32         可用元素:<input name="add" value="可用文本框"/><br/>
33         不可用元素:<input name="email" disabled="disabled" value="不可用文本框"/><br/>
34         可用元素:<input name="che" value="可用文本框"/><br/>
35         不可用元素:<input name="name" disabled="disabled" value="不可用文本框"/><br/>
36 
37         <br/>
38         多选框:<br/>
39         <input type="checkbox" name="newsletter" checked="checked" value="test1"/>test1
40         <input type="checkbox" name="newsletter" value="test2"/>test2
41         <input type="checkbox" name="newsletter" value="test3"/>test3
42         <input type="checkbox" name="newsletter" checked="checked" value="test4"/>test4
43         <input type="checkbox" name="newsletter" value="test5"/>test5
44 
45         <div></div>
46         <br/><br/>
47         下拉列表:<br/>
48         <select name="test" multiple="multiple" style="height:100px">
49             <option>浙江</option>
50             <option selected="selected">湖南</option>
51             <option>北京</option>
52             <option selected="selected">天津</option>
53             <option>广州</option>
54             <option>湖北</option>
55         </select>
56 
57         <br/><br/>
58         下拉列表2:<br/>
59         <select name="test2">
60             <option>浙江</option>
61             <option>湖南</option>
62             <option selected="selected">北京</option>
63             <option>天津</option>
64             <option>广州</option>
65             <option>湖北</option>
66         </select>
67 
68         <div></div>
69     </form>
70 </body>
71 </html>
posted @ 2011-06-17 16:51 wawlian 阅读(302) | 评论 (0)编辑 收藏
     摘要: 以下内容均是来自《锋利的jQuery》,发到这里,纯属做个笔记,方便查阅。直接看代码:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->  1 <!DOCTYPE HTML PUBLIC ...  阅读全文
posted @ 2011-06-17 16:11 wawlian 阅读(901) | 评论 (0)编辑 收藏
MyEclipse 9.0 安装了Flash Builder4.5,界面菜单都变成中文的了,完全不适应。
如果不习惯中文界面, 改回英文界面吧。只需要为 flash builder 加上启动参数
" -clean -nl en_US "
完成后记得将 -clean 去掉,以免每次启动 flash builder 都执行清理动作而浪费时间。
posted @ 2011-06-15 14:04 wawlian 阅读(525) | 评论 (0)编辑 收藏

下载正确的版本,然后修改refhost.xml文件


然后解压,在目录中找到refhost.xml(有两个,我的一个是在stage\prereq\db目录下,一个是在stage\prereq\db_prereqs\db目录下)进行添加修,添加如下代码:

<!--Microsoft Windows 7-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.1"/>
</OPERATING_SYSTEM>

注:如果安装的是客户端,将路径中的db改为client即可。

而后还要修改一个oraparam.ini文件,在install目录下

先在[Certified Versions]
#You can customise error message shown for failure, provide value for CERTIFIED_VERSION_FAILURE_MESSAGE
#Windows=5.0,5.1,5.2,6.0,6.1

注:即在#Windows=5.0,5.1,5.2后面添加 ,6.0,6.1

再添加下面代码:

#[Windows-6.1-required]
#Minimum display colours for OUI to run
MIN_DISPLAY_COLORS=256
#Minimum CPU speed required for OUI
#CPU=300
#[Windows-6.1-optional]


以管理员身份运行setup.exe

posted @ 2011-06-02 21:13 wawlian 阅读(649) | 评论 (1)编辑 收藏
 1 //升序插入排序
 2     public static int[] insertSort(int[] a) {
 3         for(int i = 1; i < a.length; i++) {
 4             int j = i-1;
 5             int tmp = a[i];
 6             while(j >= 0 && a[j] > tmp) {
 7                 a[j+1= a[j];
 8                 j = j -1;
 9             }
10             a[j+1= tmp;
11         
12         }
13         
14         return a;
15     }
16     
17     //降序插入排序
18     public static int[] insertSortDesc(int[] a) {
19         for(int j=1; j < a.length; j++) {
20             int i = j - 1;
21             int key = a[j];
22             while(i >= 0 && a[i] < key) {
23                 a[i+1= a[i];
24                 --i;
25             }
26             a[i+1= key;
27         }
28         return a;
29     }
posted @ 2011-05-25 14:02 wawlian 阅读(167) | 评论 (0)编辑 收藏

在flex4中,滚动条是属于group的,flex4中没有了直接的垂直和水平滚动条,取而代之的是用一个group里面包含了一个scroller,这个scroller有2个属性,垂直和水平滚动条。

如果TextArea要隐藏或者显示滚动条,用style
horizontalScrollPolicy和verticalScrollPolicy,而不是3的mx里面的属性。

而将滚动条移至底端,不能直接设置verticalScrollPosition,而用以下方法
<s:TextArea x="30" y="10" width="175" id="txt"/>
<fx:Script>
    txt.text = "xxxx...";
    txt.validateNow();
    txt.scroller.verticalScrollBar.value = txt.scroller.verticalScrollBar.maximum;
</fx:Script>


validateNow方法验证并更新此对象的属性和布局,如果需要的话重绘对象。
这个方法比较重要,因为在flex里面不会像flash设置了text立即就会显示文本的高度和宽度。非要重绘,或者,监听enterFrame或者其它事件,等控件外观更新完成后,才能真正获取到宽度,高度,verticalScrollBar.maximum,等文字相关属性。


posted @ 2011-04-24 17:16 wawlian 阅读(2610) | 评论 (0)编辑 收藏
http://piziwang.iteye.com/blog/479825 
posted @ 2011-04-23 23:35 wawlian 阅读(363) | 评论 (0)编辑 收藏

在开发过程中,我们经常会遇到读取配置文件的情况,对于配置文件的读取,根据环境等情况又各有不同,一般情况下,如果从非jar包中使用相对/路径,比较简单,就不在累述了,而在很多
情况下,我们需要把我们的class打包成jar文件,进行使用,这时就会发现,我们先前如果没有考虑到这些,可能就行不通了,那么,该如何解决呢?方法如下

有如下路径 :
Web-info--|-->classes--->conf-->config.properties
   |-->lib
此时加入我们需要读取config.properties,在不使用jar包时,使用如下方式读取,不失为一种方法:
File f = new File(this.getClass().getResource("/").getPath());
f = new File(f.getPath() + "/conf/config.properties");
注:f.getPath()即为当class所在的绝对路径。如:c:\javasrc\web-inf\classes
然后,对文件对象进行处理,就能把配置信息读取出来了,但是加入如上class被打包成jar文件,那么,在程序执行到这里时,就会无法找到配置文件,那么该如何处理呢?
处理方法如下:
String s_config="conf/config.properties";
 InputStream in = ClassLoader.getSystemResourceAsStream(s_config);
if( in == null ){
 System.out.println( " 打开 " + s_config + "失败!" );
}else
{
Properties properties = new Properties();
properties.load(in);
//
//接下来就可以通过properties.getProperty(String obj)方法对进行配置信息读取了
}

 

本文来自CSDN博客,转自:http://blog.csdn.net/wjmmml/archive/2004/09/27/118404.aspx

posted @ 2011-04-22 20:46 wawlian 阅读(280) | 评论 (0)编辑 收藏
http://lqw.iteye.com/blog/538238
posted @ 2011-04-20 16:04 wawlian 阅读(241) | 评论 (0)编辑 收藏

我自己在学习Flex的时候碰到了这个问题,上网找了一些觉得都很麻烦。因为我是使用RemoteObject和Java

结合,后台还集成了spring。在jsp中要获取客户端IP地址最简单的办法就是拿到request对象,但是我是获取的spring中的bean,通过spring好像不行,但是我在查看springfactroy代码的时候有个非常发现:

就是flex.messaging.FlexContext这个类有个静态方法:flex.messaging.FlexContext.getHttpRequest()

取到HttpRequest后面在拿getRemoteAddr就不用多说了:

   flex.messaging.FlexContext.getHttpRequest().getRemoteAddr()就这么简单.呵呵。

我的环境是Java+spring+blazeds+flex+RemoteObject实现。

posted @ 2011-04-20 15:57 wawlian 阅读(1056) | 评论 (0)编辑 收藏
http://wawlian.javaeye.com/blog/975029
posted @ 2011-03-25 11:25 wawlian 阅读(184) | 评论 (0)编辑 收藏

1.云计算基础

1.1云计算概述

1.1.1 解惑——什么是云计算 

      实质上,云计算是一种构造,它允许访问实际驻留在你的计算机以外的某个位置或者其他Internet连接的设备上的应用程序。通常,它是远程数据中心。

      云计算的优点是:另一家公司托管你的应用程序,这意味着他们处理服务器费用,管理软件更新,而你为服务支付相对较少的费用。

      云计算缺点:弱连接(网络故障、出于安全的考量);集成问题(如果应用程序在地理上是分散的,那么很难管理他们)

1.1.2 云组件

      从简单的拓扑方面来说,云计算解决方案由以下几部分组成:客户、数据中心、分布式服务器。

      1.客户:与普通局域网的客户一样

      2.数据中心:用于存放你预定的应用程序的服务器集合。

      3.分布式服务器:服务器不必全都安在一个位置。通常,服务器在地理上是分散的。但是对于你(云用户)来说,这些服务器工作时,就好像它们是彼此相邻的。

1.1.3 基础设施

      1.网格计算

 

      人们通常把网格计算和云计算弄混淆,实际上它们区别非常大。网格计算在同一时间针对单个问题把网络中的众多计算机资源应用于工作。

      网格计算需要使用某种软件,他可以划分程序段,然后把他们发送给数千台计算机。可以在组织的所有计算机上完成这个任务,或者以公共协作的形式完成它。

      由于以下原因,网格计算变得非常吸引人:

      (1)它是一种使用给定数量的计算机资源的经济的方式

      (2)它可以解决需要很高计算性能的问题

      (3)可以协作式共享很多计算机的资源,而无需一台计算机管理其他计算机。

 

      2.完全虚拟化

 

      完全虚拟化是使完全安装的一台机器在另一台机器上运行的技术。结果会得到一种系统,其中,在服务器上运行的所有软件都位于虚拟机内。

      这种方式不仅允许运行独特的应用程序,而且允许运行不同的操作系统。虚拟化与云计算相关,因为它是访问云上服务的方式之一。也就是说,远程数据中心可能以完全虚拟化的方式提供服务。

      为了实现完全虚拟化,必须借助特定的硬件组合。知道2005年,AMD-Virtualization(AMD-V)和Intel Virtualization Technology(IVT)扩展的引入才使得完全虚拟化成为可能。

      完全虚拟化优点:

      (1)在多个用户中共享计算机系统

      (2)把用户之间隔开以及把用户和控制程序之间隔开

      (3)仿真另一台计算机的硬件。

 

      3.半虚拟化

      半虚拟化通过高效的使用系统资源,允许同时在单个硬件设备上运行多个操作系统。

      在完全虚拟化中,将仿真整个系统,但是在半虚拟化中,管理模块与虚拟机中的系统协同工作。在半虚拟化系统中,可以同时运行许多不同的操作系统。

      半虚拟化在以下方面表现的最佳:

      (1)灾难恢复:发生灾难,可以将Guest系统移植别的硬件

      (2)迁移:方便迁移

      (3)容量管理:虚拟化环境中会更加容易添加更多处理能力或硬盘。

posted @ 2011-03-22 11:14 wawlian 阅读(336) | 评论 (0)编辑 收藏

XMLHttpRequest的readyState:

0:未初始化——创建

1:初始化——open

2:发送请求——send

3:开始接受结果

4:接收结果完毕

状态每改变一次,调用一次回调函数。方法调用5次,但是前两次的readyState==1

 

onreadystatechange = callback

绑定回调函数,不加()。

 

XMLHttpRequest的status:

200 OK

404 Not Found

500 Serevr Error

 1 var xmlHttpRequest;
 2     
 3     //创建XMLHttpRequest对象
 4     function createXmlHttpRequest() {
 5         var xmlHttp;
 6         if(window.ActiveXObject) {
 7             try {
 8                 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP")
 9             } catch (e) {
10                 xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
11             }
12         }else if(window.XMLHttpRequest) {
13             xmlHttp = new XMLHttpRequest()
14         }
15         
16         return xmlHttp;
17     }
18     
19 
20     function checkExist() {
21         xmlHttpRequest = createXmlHttpRequest();
22         xmlHttpRequest.onreadystatechange = callBack;
23         
24         var url = "http://localhost:8080/Ajax/CheckUser?uname="+document.getElementById("userName").value;
25         
26         xmlHttpRequest.open("GET", url, true);
27         xmlHttpRequest.send(null);
28     }
29     
30     function callBack() {
31         if(xmlHttpRequest.readyState==4 && xmlHttpRequest.status==200) {
32             var result = xmlHttpRequest.responseText;
33             //
34         }
35     }
posted @ 2011-03-14 15:36 wawlian 阅读(212) | 评论 (0)编辑 收藏

Ajax中请求被缓存的问题

在Ajax开发中,会遇到浏览器缓存内容的问题,比如,某个元素注册了鼠标事件(onmouseover),事件触发后会通过 xmlhttprequest到服务器获取内容,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容。

通常,这种请求都是xmlhttprequest发起的GET请求。根据 HTTP 规范,GET 用于信息获取,而且应该是幂等的。也就是说,当使用相同的URL重复GET请求会返回预期的相同结果时,GET方法才是适用的。当对一个请求有副作用的时候(例如,提交数据注册新用户时),应该使用POST请求而不是GET。所以浏览器会对GET请求做缓存处理。

解决办法:

一. GET请求URL后附加字串,让服务器认为不是相同的请求。

例 "http://www.example.com/index.php?class=aitcle&page=5&_t=" + new Date().getTime()

二. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("If-Modified-Since","0")

三. 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache");

四. 服务端响应请求时加 header("Cache-Control: no-cache, must-revalidate"); (PHP)

五. 使用POST代替GET,浏览器不会对POST做缓存

 

 

转自 http://yanglei008.javaeye.com/blog/222401

posted @ 2011-03-14 15:34 wawlian 阅读(387) | 评论 (0)编辑 收藏
唯一约束

唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的一个唯一索引,通过唯一索引来实现约束。不过唯一约束更直观的表达了对应列的唯一性,使得对应索引的目的更加清晰,所以一般建议创建唯一约束而不是只创建唯一索引。

在PD中创建唯一约束的操作,以教室表来说,RoomID是主键,必然是唯一的,RoomName如果我们也要去必须是唯一的,那么具体操作如下:

在PD的模型设计面板中,双击“教室”表,打开属性窗口,切换到"”Keys”选项卡,可以看到里面有一行数据PK_ClassRoom,这是主键约束。添加一行数据,命名为UQ_RoomName,不能将右边的“P”列选上,然后单击工具栏的“属性”按钮,弹出UQ_RoomName的属性窗口,切换到列选项卡,单击增加列按钮,选择将RoomName列添加到其中,然后单击确定即可完成唯一约束的添加。



这样系统就会自动创建唯一约束。

CHECK约束

CHECK分为列约束和表约束,列约束是只对表中的某一个列进行的约束,可以在列的属性中进行设置,而表约束是对多个列进行的约束,需要在表的属性中进行设置(其实列约束也可以在表约束中设置)。

1.标准CHECK约束

对于一些常用的CHECK约束,可以直接通过设置界面来完成。以班级表为例,ClassName每个学校有自己的命名规则,假设这里规定ClassName必须以2开头,那么需要在ClassName列上定义CHECK约束,使得其满足命名规范。具体操作是在PD中双击Class表,打开Class的属性窗口,切换到列选项卡,选择ClassName列,单击工具栏的“属性”按钮,弹出ClassName的属性窗口,切换到StandardChecks选项卡如图:



在这个选项卡可以定义属性的标准检查约束,窗口中每项的参数的含义,如下:

参数 说明
Minimum 属性可接受的最小数
Maximum 属性可接受的最大数
Default 属性不赋值时,系统提供的默认值
Unit 单位,如公里、吨、元
Format 属性的数据显示格式
Lowercase 属性的赋值全部变为小写字母
Uppercase 属性的赋值全部变为大写字母
Cannot modify 该属性一旦赋值不能再修改
List Of Values 属性赋值列表,除列表中的值,不能有其他的值
Label 属性列表值的标签
2.直接编写SQL语句的CHECK约束

在前面弹出ClassName属性窗口中,单击左下角的“More”按钮,系统将弹出更多的选项卡,切换到“Additional Checks”选项卡,可以设置约束名和具体的约束内容,如图所示:



表级的CHECK约束与列级的CHECK约束设置类似,单击表属性窗口左下角的“More”按钮,切换到Check选项卡,设置CHECK约束的命名和SQL语句内容。



3.使用Rule创建约束

同样以班级名必须以2开头为例,通过Rule创建CHECK约束。首先需要创建一个Rule,双击Class表,打开表的属性窗口,切换到Rules选项卡,单击“Create a Object”按钮,系统将打开一个业务规则属性窗口,修改规则名,并将规则的类型修改为Constraint,如图所示:



然后切换到Expression选项卡,设置规则的内容为“ClassName LIKE '2%'”,单击确定按钮即可完成Rule的设置。切换到表属性的Check选项卡,默认约束内容中的“%RULES%”就是用来表示Rule中设置的内容,如果我们还有一些其他的CHECK约束内容,不希望在Rule中设置,而是在Check选项卡中设置,那么只需要删除%RULES%将CHECK约束内容添加进去,也可以保留%RULES%,然后在与%RULES%之间添加一个and即可。比如规定ClassID必须小于10000,那么我们可以将Check内容设置如下:



生成的脚本如下:

create table Class (
   ClassID              int                  not null,
   ClassName            varchar(20)          not null,
   constraint PK_CLASS primary key nonclustered (ClassID),
   constraint CKT_CLASS check (ClassID<10000),
   constraint ClassNameRule check (ClassName LIKE '2%')
)
go

可以看到,根据Rule生成的CHECK约束与在Check选项卡中设置的约束将分别创建一个约束,相互并不影响。

默认约束

默认约束是用户在没有输入值的情况下,系统给出默认的值。最常用的是CreateTime字段,设置默认值为getdate(),在用户创建一行数据时记录下创建时间。例如对于选课表,需要记录下选课的时间,则可以设置ApplyTime的默认值为getdate()函数。



设置默认值约束的操作如下:双击选课表,打开表属性窗口,选择ApplyTime字段,单击工具栏的属性按钮,打开列的属性窗口,切换到Standard Checks选项卡,在Default下拉列表框中选择getdate()即可。



至此我们所有的约束在PD中的设置都介绍完了,下一篇将介绍视图、存储过程等数据库对象。

from: http://www.cnblogs.com/studyzy/archive/2009/12/17/1626650.html
posted @ 2011-02-14 20:32 wawlian 阅读(1675) | 评论 (0)编辑 收藏

<2011年2月>
303112345
6789101112
13141516171819
20212223242526
272812345
6789101112

常用链接

留言簿

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜