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 阅读(465) | 评论 (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 阅读(301) | 评论 (0)编辑 收藏
     摘要: 以下内容均是来自《锋利的jQuery》,发到这里,纯属做个笔记,方便查阅。直接看代码:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->  1 <!DOCTYPE HTML PUBLIC ...  阅读全文
posted @ 2011-06-17 16:11 wawlian 阅读(900) | 评论 (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 阅读(361) | 评论 (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 阅读(279) | 评论 (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 阅读(1055) | 评论 (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 阅读(211) | 评论 (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 阅读(386) | 评论 (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 阅读(1673) | 评论 (0)编辑 收藏
通过jQuery选择器获取到的永远是一个对象,几十页面上根本没有该元素。因此,如果要使用jQuery检查元素再给某个页面上是否存在的时候,不能使用以下代码:
1if ($("#tt")) {
2    //do sth.
3}
而应该通过获取到的元素的长度来判断,代码如下:
1if ($("#tt").lenght > 0{
2    //do sth
3}
或者通过转换成JavaScript对象的方式来进行处理:
1if ($("#tt")[0]) {
2    //do sth
3}
posted @ 2011-01-10 10:55 wawlian 阅读(7637) | 评论 (1)编辑 收藏
 

选择器

语法

描述

实例

标签选择器

E{

    CSS规则

}

以文档元素作为选择符

td{

font-size:14px

width:120px

}

ID选择器

#ID{

    CSS规则

}

以文档元素的唯一标识ID作为选择符

#note {

    font-size:14px

width:120px

}

类选择器

E.classname {

    CSS规则

}

以文档元素的class作为选择符

.dream {

    font-size:14px

}

群组选择器

E1,E2,E3 {

    CSS规则

}

多个选择符应用同样的样式

td,p,div.a {

    font-size:14px

}

后代选择器

E F {

    CSS规则

}

元素E的任意后代元素F

#links a {

    font-size:14px

}

通配选择器

* {

    CSS规则

}

以文档的所有元素作为选择符

*{

    font-size:14px

}

posted @ 2011-01-10 10:49 wawlian 阅读(152) | 评论 (0)编辑 收藏
见代码和注释
 1import java.text.SimpleDateFormat;
 2import java.util.Calendar;
 3import java.util.Date;
 4import java.util.GregorianCalendar;
 5public class DateTesting {
 6/**
 7@param args
 8*/

 9public static void main(String[] args) {
10   // TODO Auto-generated method stub
11  
12  
13   //1、如何根据给定的年月日构造日期对象
14   //需要构造2008-3-15
15   //用GregorianCalendar类描述日期时,由于月份是从0开始计数的,所以实际的月份值总是比计数值大1.
16   GregorianCalendar calendar=new GregorianCalendar(2008,2,15);
17   Date tempDate=calendar.getTime();
18   System.out.println(tempDate.toLocaleString());
19  
20   SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
21   System.out.println(sdf.format(tempDate));
22  
23  
24   //2、如何根据给定的日期对象分解年、月、日
25        //获取系统当前时间
26   Date currentDate=new Date();
27   System.out.println(currentDate.getTime());
28   GregorianCalendar ca=new GregorianCalendar();
29   ca.setTime(currentDate);
30   int year=ca.get(Calendar.YEAR);
31   int month=ca.get(Calendar.MONTH)+1;
32   int day=ca.get(Calendar.DAY_OF_MONTH);
33  
34   System.out.println("年份的值: "+year);
35   System.out.println("月份的值: "+month);
36   System.out.println("一个月中某天的值: "+day);
37  
38  
39   //3、给定两个日期: 2008-8-10   2008-8-16 日 ,需要计算这两个日期之间相差的天数
40   //在JAVA语言系统中,所有的时间都是以1970年1月1日,00时00分00秒000毫秒为时间的开始点计算的。
41  
42   GregorianCalendar firstCa=new GregorianCalendar(2008,7,10);
43   Date firstDate=firstCa.getTime();
44  
45  
46   GregorianCalendar secondCa=new GregorianCalendar(2008,7,16);
47   Date seconDate=secondCa.getTime();
48  
49   long distance=seconDate.getTime()-firstDate.getTime();
50   int result=(int)(distance/86400/1000);
51   System.out.println("间隔的天数: "+result);
52  
53  
54   //4、给定一个日期,例如:2008-4-21, 如何计算15天以后的时间日期???
55  
56   GregorianCalendar tpCalendar=new GregorianCalendar(2008,3,20);
57   Date tpDate=tpCalendar.getTime();
58  
59   long tp=tpDate.getTime();
60   tp=tp+8*86400*1000;
61   tpDate.setTime(tp);
62   System.out.println(sdf.format(tpDate));
63  
64}

65}

66
posted @ 2011-01-03 21:08 wawlian 阅读(170) | 评论 (0)编辑 收藏
CVSNT是服务器管理工具,再在客户端下个WINCVS就可以(关于wincvs使用,可以在网上找下,因为eclipse已经很好地集成了 cvs)就可以一起协同工作了。这二天我从下载CVSNT到用eclipse新建项目,共享项目,不同的客户端导入项目都在公司局域网内的不同机子上测试 通过。记录如下:

首先从http://www.cvsnt.org处下得你想要的cvsnt版本,我下的是2.5.03,安装完成后。从程序中打开cvsnt control panel(CVSNT 控制面板)。下面开始配置CVSNT,主要是创建资源并让它可以通过客户端的IDE (eclipse)来访问。

  开始配置cvsnt

  a 查看运行状态:
  在about面板有个cvsnt  和 cvsnt lock二个选项,这儿可以对其进行start,stop服务

  b 添加资源
  在repository config面板中可以添加删除资源,这儿主要设定了repository 的name and  root值。如我在这儿将name设置为\mycvs,root为e:\mycvs。创建后会在对应的目录下生成cvsroot文件夹及cvs相关配置文 件。 OK,确定。这个地方可以要重启服务才能生效

  c 兼容:
  在conpatibility option 面板上选择兼容的版本,注意一定要勾上respond as cvs 1.11.2 to version request,为了与eclipse中的cvs兼容(在eclipse中的cvs版本很可能与你cvsnt版本不同)。

好了,现在服务器上的资源路径已经设定好了。


通过IDE共享一个工程  


打开eclipse新建一个项目,然后在项目上右击/team/share project (小组/共享项目),在弹出的share  project whith cvs reposity对话框中选择一个cvs路径(第一次当然是新建了),在host中填入CVSNT的主机地址如:192.168.12.17,在 repository path中填入cvsnt中的name值如:/mycvs。user中写cvsnt所分配的用户名,password中写入密码(下面将会讲些cvs中如 何管理用户)。在connection type中一般选择pserver连接类型。然后就是记住密码什么的...  :-)。OK ,NEXT提示一路完成!

   
在客户端从cvs上导入共享工程:


在客户端的eclipse中打开cvs视图,根据CVSNT的路径及其给你所分配的用户相关信息新建一个CVS的资源路径。ok,开始引入共享工程了:

可以直接从cvs中check out出来,也可以从new/project/cvs/projects from cvs。选中你刚刚把建立cvsnt资源路径,你可以在use an existing module中看到所有的共享项目了。然后选择一个你想导入的项目check out出来到本机....

  全部完成^_^,本来想剪几个图上来的,有些麻烦,太不方便了。不过过程比较简单,很快就可以搞定。客户端将cvsnt上的工程检出是比较 简单的。主要是在cvsnt上的相关配置。我在网上找了些资料,完成了如添加不同的用户。介绍有个cvsnt的GUI工具可以直接图形化操作。看介绍很 easy ,下载URL:http://www.kdeopen.com(偶一直打不开,郁闷,希望各位运气比我好) 。我只好在控制台下添加删除用户了。

  cvsnt用户管理

  在用户管理中以下是cvs的一些命令参数
Usage: cvs passwd [-a] [-x] [-X] [-r real_user] [-R] [-D domain] [username]
         -a      Add user
         -x      Disable user
         -X      Delete user
         -r      Alias username to real system user
         -R      Remove alias to real system user
         -D      Use domain password

  服务器工作在CVSNT用户单一验证方式下的时候,文件passwd定义了CVSNT的用户信息,这里面保存着用户名,用户密码,以及别名 信息。默认状态下 没有该文件,但是我们可以在CVSNT还工作在混合验证方式下时,用系统管理员登录,通过添加用户命令来让CVSNT自动建立一个passwd文件。

 登录:login
  cvs -d :pserver:administrator@127.0.0.1:/mycvs login

 添加用户
  cvs -d :pserver:administrator@127.0.0.1:/mycvs passwd -a zyx

之后系统提示输入密码,输入后服务器会新建一个passwd文件。该文件的内容很简单,形式如下:

zyx:YT2p2NmdmUlEg:

  以第一行为例:zyx为用户名,YT2p2NmdmUlEg为CVS使用UNIX标准加密函数对密码进行加密后的结果。

  若想以混合验证的方式验证得对应一个window的系统用户名(zyinxin),这时就用参数-r来指定,如:
      cvs -d :pserver:administrator@127.0.0.1:/mycvs passwd -r zyinxin -a zyx 

这时生成文件内容如下:
zyx:YT2p2NmdmUlEg:zyinxin
zyinxin为该用户的别名(它是参考系统用户),

注意:这个文件是不能在客户端进行修改的,不能checkout出来。

  添加完成后你可以通过login来测试用户zyx是否创建成功

  删除用户:
  cvs -d :pserver:administrator@127.0.0.1:/mycvs passwd -x zyx




附:参考了网上一些资料,刚刚学习,愿一起进步。谢谢!

posted @ 2011-01-02 16:34 wawlian 阅读(667) | 评论 (0)编辑 收藏
MyEclipse6.0的快捷键中把我们习惯性使用的Alt+/进行代码自动补齐的快捷键改为了ctrl+空格,大家知道这是我们切换中英文输入法的 键,所以我们需要更改这个快捷键,方法如下:
1.
选择MyEclipse6.0菜单栏中的Window->preferences
2.
选择General->keys;
3.
在右侧中间的窗体中点击word completion后再点击remove binding,在下方的binding中随便输入一个快捷键;
4.
然后选择Content Assist点击Remove binding,在binding中输入Alt+/
5.
点击Ok就可以了。
如果还是不提示有可能是提示功能被关了. 如下做
1
、菜单window->Preferences->Java->Editor->Content Assist->Enable auto activation 选项要打上勾
2
window->Preferences->Java->Editor->Content Assist->Advanced   上面的选项卡Select the proposal kinds contained in the 'default' content assist list: 中把 Other Java Proposals 选项打上勾就可以了。

让Eclipse,MyEclipse拥有Microsoft Visual Studio那样的自动提示功能:

一般默认情况下,Eclipse ,MyEclipse 的代码提示功能是比Microsoft Visual Studio的差很多的,主要是Eclipse ,MyEclipse本身有很多选项是默认关闭的,要开发者自己去手动配置。如果开发者不清楚的话,就不知道Eclipse ,MyEclipse的代码提示功能一样能像Microsoft Visual Studio的代码提 示功能一样强大。好了,废话就说那么多了,让我们来配置一下

1.打开Eclipse或者MyEclipse,点击 "窗口">>"首选项">>"Java">>"编辑器">>"内容辅助"

2.在 "内容辅助" 面板里找到 "Java的自动激活触发器" ,在  "Java的自动激活触发器"  左边的输入框里输入 ".abc ",点击 "应用">>"确定"

3.点击 "文件">>"导出">> "常规" >> "首选项" 然后选择你要导出的文件路径

4.用记事本打开刚才导出的文件,找到 ".abc",然后把它替换成 " .abcdefghijklmnopqrstuvwxyz(, "  ,保存

5.将刚才修改的文件导入到Eclipse或者是MyEclipse中,点击 "文件">>"导入">>"常规">>"首选项",然后选择刚才修改的文件这样Eclipse, MyEclipse就可以像Microsoft Visual Studio那样的自动提示功能了!

posted @ 2010-12-29 20:28 wawlian 阅读(354) | 评论 (0)编辑 收藏

<2010年12月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜