??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品V欧洲精品V日韩精品,久久亚洲AV无码精品色午夜麻,亚洲欧洲国产成人综合在线观看http://www.tkk7.com/ywsky/category/17177.htmlzh-cnWed, 28 Feb 2007 04:02:30 GMTWed, 28 Feb 2007 04:02:30 GMT60javascriptq阶之变量篇 http://www.tkk7.com/ywsky/archive/2006/12/10/86668.html?j)?/dc:creator>?j)?/author>Sun, 10 Dec 2006 05:16:00 GMThttp://www.tkk7.com/ywsky/archive/2006/12/10/86668.htmlhttp://www.tkk7.com/ywsky/comments/86668.htmlhttp://www.tkk7.com/ywsky/archive/2006/12/10/86668.html#Feedback0http://www.tkk7.com/ywsky/comments/commentRss/86668.htmlhttp://www.tkk7.com/ywsky/services/trackbacks/86668.html1、关于变量的声名
大家都知道javascript是可以隐式声名变量的。但要注意,隐式声名变量L被创Zؓ(f)全局变量。看以下代码Q情愿javascript语言强制声明变量。徏议大家一定要var声明变量?


代码
<SCRIPT LANGUAGE="JavaScript"> (tng)
function test(){ (tng) (tng)
 (tng) (tng) (tng) var a=222; (tng) (tng)
 (tng)document.writeln(a); (tng) (tng)
} (tng) (tng)
test(); (tng) (tng)
document.writeln(a); (tng) (tng)
</SCRIPT> (tng)

 (tng)

代码
<SCRIPT LANGUAGE="JavaScript"> (tng)
function test(){ (tng) (tng)
 (tng) (tng) (tng) a=222; (tng) (tng)
 (tng)document.writeln(a); (tng) (tng)
} (tng) (tng)
test(); (tng) (tng)
document.writeln(a); (tng) (tng)
</SCRIPT> (tng) (tng)

2、关于变量的作用?
猜猜以下代码输出什么?

代码
<SCRIPT LANGUAGE="JavaScript"> (tng)
var x='000'; (tng) (tng)
document.writeln(x); (tng) (tng)
a(); (tng) (tng)
function a(){ (tng) (tng)
 (tng) (tng) (tng) var x='aaa'; (tng) (tng)
 (tng)function b(){ (tng) (tng)
 (tng) (tng) (tng) (tng) document.writeln(x); (tng) (tng)
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) var x='bbb'; (tng) (tng)
 (tng) document.writeln(x); (tng) (tng)
 (tng)} (tng) (tng)
 (tng)b(); (tng) (tng)
 (tng) (tng) (tng) document.writeln(x); (tng) (tng)
} (tng) (tng)
</SCRIPT> (tng)


如果你的{案?000 undefined bbb aaa。恭喜,ok.当代码用到x变量Ӟ先从函数块(权威指南中用调用对象来解释)(j)中找Q如果找不到Q从上一U函数块找,直到扑ֈQ如果知道顶层代码(指var x='000';的位|)(j)q没扑ֈ定义Q代码会(x)报未定义错误?/p>

改一下代码,得到 000 undefined 111 111


代码
<SCRIPT LANGUAGE="JavaScript"> (tng)
var x='000'; (tng) (tng)
document.writeln(x); (tng) (tng)
a(); (tng) (tng)
function a(){ (tng) (tng)
 (tng)function b(){ (tng) (tng)
 (tng) (tng) (tng) (tng) document.writeln(x); (tng) (tng)
 (tng) document.writeln(x); (tng) (tng)
 (tng)} (tng) (tng)
 (tng)document.writeln(x); (tng) (tng)
 (tng)var x='111'; (tng) (tng)
 (tng)b(); (tng) (tng) (tng)
} (tng) (tng)
</SCRIPT> (tng)


3、新的问?
变量个作用域清楚?jin),注意上面的代码。ؓ(f)什么我的function a()定义以前可以调用a函数?jin),而我的var x='111';前“不可以用”x啊?Q?
让我把我的理解一一道来
首先Q以下代码让我相信javascript有个预编译过E,不是完全按照序解释执行的?

代码
<SCRIPT LANGUAGE="JavaScript"> (tng)
a(); (tng) (tng)
function a(){ (tng) (tng)
 (tng) (tng) (tng) alert(); (tng) (tng)
} (tng) (tng)
</SCRIPT> (tng)


个h理解q个预编译过E不?x)象java/c#那样把代码编译成虚拟识的语言Q更不会(x)象vbQvc那样~译成更底层的语a。猜惛_是把q个函数预装载到q段函数执行的全局环境中,在这个执行环境中Q该函数被标识定义过Q可以直接用了(jin)。(看到|上很多人写的AOP的javascript实现,其实q个预编译过E才是翻译元数据最x候,可惜javascript语言来讲Q是有些落伍?jin)?j)

q个文章主要讲变量的一些问题。变量说?jin),Z么函数可以,我变量就不可以呢?


代码
<SCRIPT LANGUAGE="JavaScript"> (tng)
document.writeln(a); (tng) (tng)
var a=0; (tng) (tng)
</SCRIPT> (tng)


Z么我要输出undefined呢?Z么我a׃可以预编译一把呢Q?
大家看看以下两段代码?x)输Z么呢啊?Q?

代码
<SCRIPT LANGUAGE="JavaScript"> (tng)
document.writeln(a); (tng) (tng)
a=0; (tng) (tng)
</SCRIPT> (tng)

 (tng)

代码
<SCRIPT LANGUAGE="JavaScript"> (tng)
document.writeln(a); (tng) (tng)
</SCRIPT> (tng) (tng)


可能你运行试?jin),可能你本来就知道Qa未定义。哈哈哈Q好?jin)?
现在我确信var a=0;被javascript解释器“预~译q”,臛_是记录下来了(jin)。甚x它的D|ؓ(f) undefined。“undefined”这个词名字取的很是让h误解Q怎么能叫未定义呢Q分明是javascript中所有变量的初始化倹{关于null与undefined的比较我实在不愿提了(jin)?
注意上面两段代码q反映一个现象。隐式声明的变量是在解释的时候才把自己定义ؓ(f)全局变量的?/p>

关于函数与变量javascript预编译的不同处理Q大家可以与java class的加载过E比较下。java也是对基本类型设出|对象为null的。(不往q扯?jin)?j)
4、区别未定义变量和未附值变?


代码
<SCRIPT LANGUAGE="JavaScript"> (tng)
var a; (tng) (tng)
document.writeln(a); (tng) (tng)
</SCRIPT> (tng)

 (tng)

代码
<SCRIPT LANGUAGE="JavaScript"> (tng)
document.writeln(a); (tng) (tng)
</SCRIPT> (tng)


未定义变量和未附值变?权威指南中文?定义的。通过W三条分析,我觉得变量就应该?定义和未定义变量区别。未附值变量和undefined有点冲突Qjavascript不是强类型语aQ没发附默认|才来?jin)个undefined?
5、基本类型和引用cd
熟?zhn)java的朋友可能这部分很清楚。没?
说头?
6、javascript的垃圑֛?
关于q部分内容一直没见着个权威说法。在javascript权威指南中有两小节提到这个问题?
对于字符丌Ӏ对象、数据这些没有固定大,必须为它们动态的分配内存Q但什么时候回收这些内存呢Qjavascript使用和java一L(fng)garbage collection的方法?

代码
var s="hello"; (tng) (tng)
var u=s.toUpperCase(); (tng) (tng)
s=u; (tng)


q行q段代码后,"hello"没有变量?x)再用到他,q是"hello"的存储空间的被垃圑֛收了(jin)。对于javascript的垃圑֛Ӟ你唯一要关?j)的是,它一定会(x)q行Q不要对内存担心(j)?
注意Qjavascript不提供Q何的强制垃圾回收或释攑ֆ存的q算附或语句?
javascript的deleteq算附和C++中的不同?

代码
<SCRIPT LANGUAGE="JavaScript"> (tng)
var o=new Object(); (tng) (tng)
o.name="zkj"; (tng) (tng)
o.age=25; (tng) (tng)
o.bir=new Date(); (tng) (tng)
for(var key in o){ (tng) (tng)
document.writeln(key+':'+o[key]+'</br>'); (tng) (tng)
} (tng) (tng)
document.writeln('delete o.bir</br>'); (tng) (tng)
delete o.bir; (tng) (tng)
for(var key in o){ (tng) (tng)
document.writeln(key+':'+o[key]+'</br>'); (tng) (tng)
} (tng) (tng)
</SCRIPT> (tng)


7、作为属性的变量
猜猜以下代码?x)输Z么?


代码
<SCRIPT LANGUAGE="JavaScript"> (tng)
var x=100; (tng) (tng)
document.writeln(x); (tng) (tng)
add(x); (tng) (tng)
document.writeln('</br>------------------------</br>'); (tng) (tng)
var x=200; (tng) (tng)
document.writeln(x); (tng) (tng)
add(x); (tng) (tng)
function add(x){ (tng) (tng)
 (tng) (tng) (tng) document.writeln(x); (tng) (tng) (tng)
 (tng) (tng) (tng) var x=300; (tng) (tng)
 (tng) (tng) (tng) document.writeln(x); (tng) (tng) (tng)
 (tng) (tng) (tng) var x=400; (tng) (tng)
 (tng) (tng) (tng) document.writeln(x); (tng) (tng)
} (tng) (tng)
</SCRIPT> (tng)


估计很多得出正确{案
100 100 300 400
------------------------
200 200 300 400
但这里我惛_?全局对象和调用对象的 概念Qjavascript权威指南是这么翻译滴Q?


代码
<SCRIPT LANGUAGE="JavaScript"> (tng)
var x=100; (tng) (tng) //我们在全局对象中加?jin)个属性x. Ҏ(gu) (tng) (tng)
 (tng)//var o=new Object();o.x=100; (tng) (tng)
document.writeln(this.x);//用this讉K全局对象 (tng) (tng)
add(this.x);//把全局对象的属性g递对函数中?tng)?
document.writeln('</br>------------------------</br>'); (tng) (tng)
this.x=200;//把全局变量中的x属性修Ҏ(gu) (tng) (tng)
document.writeln(window.x); (tng) (tng)
add(window.x); (tng) (tng)
function add(x){ (tng) (tng)
 (tng) (tng) (tng) //假设有个局部对象,调用对象Q函数调用过E中的对象?tng)?
// (tng) temp (tng) (tng) temp.x=${传入的值} (tng) (tng)
 (tng) (tng) (tng) document.writeln(x); //哦这打印的可是参C的|也就是temp.x=this.x (tng) (tng)
//的? (tng) (tng)
 (tng) (tng) (tng) var x=300;//把调用对象变量的{֐l覆盖了(jin). (tng) (tng)
 (tng) (tng) (tng) document.writeln(x); //打印修改q的倹{?temp.x (tng) (tng)
 (tng)var x=400;//temp.x=400 (tng)
 (tng) (tng) (tng) document.writeln(x); (tng) (tng)
} (tng) (tng)
</SCRIPT> (tng)


在函数的调用q程中,假设有个调用对象存在Q把函数的参敎ͼ和函数内的(f)时变量当成这个调用对象的属性。当然这个调用对象的生命周期很短?
注意Q当我们讉K全局变量的属性入x的时候,不必要用this.x 或window.x讉KQ当在有<frame><iframe>的页面时?x)出现؜淆?
关于函数的详l讨论我后箋?x)详l讨论?/p>

 (tng)

          文章来自Q?a >http://www.javaeye.com/article/19506



]]>
tomcat web开发中的中文问?一)http://www.tkk7.com/ywsky/archive/2006/11/19/82017.html?j)?/dc:creator>?j)?/author>Sun, 19 Nov 2006 04:00:00 GMThttp://www.tkk7.com/ywsky/archive/2006/11/19/82017.htmlhttp://www.tkk7.com/ywsky/comments/82017.htmlhttp://www.tkk7.com/ywsky/archive/2006/11/19/82017.html#Feedback0http://www.tkk7.com/ywsky/comments/commentRss/82017.htmlhttp://www.tkk7.com/ywsky/services/trackbacks/82017.html
本篇主要是解决jsp面之间的post和getҎ(gu)中出现的q问题Q不涉及(qing)struts{框架?br />
Q一Q?font face="Verdana">tomcat的j2ee实现对表单提交即post方式提示时处理参数采用缺省的iso-8859-1来处?br />我们现在新徏2个页面,在eclipse IDE中,eclipse对jsp文g的默认编?/font>iso-8859-1Q可以通过讄调整为UTF-8?br />打开window-> preferences,如下图所C:(x)

用U线框出来的select选择utf8的?br />
新徏?个页面分别ؓ(f)login.jsp和result.jspQlogin.jsp提交一个namelresult.jspQresult.jsp负责昄p?br />login.jsp的页面如下图所C(采用post提交Q:(x)

result.jsp的处理代码如下:(x)

标?行和标记2行都L的话在页面上׃(x)出现中文qQ标?和标?保留一个就可以解决q个问题?br />
Q二Qget方式的解军_?br />对于form表单采用getҎ(gu)提交Q我们可以采用以下的转换来正常显CZ?br />name = new String(name.getBytes("iso8859_1"),"UTF-8");

但是如果对于http://localhost:8000/test/result.jsp?name=中文q种提交Q上面的Ҏ(gu)没有效果了(jin)?br />对于后者,我们的解x案是Q将Tomcat 5.0\conf目录下的server.xml文g中的
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on the port specified
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) during installation -->
 (tng) (tng) (tng) <Connector
port="8000" (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) enableLookups="false" redirectPort="8443" acceptCount="100"
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) debug="0" connectionTimeout="20000"
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) disableUploadTimeout="true"
 (tng) (tng) (tng) URIEncoding="UTF-8" />

后面d?jin)URIEncoding="UTF-8"

q样我们p决了(jin)get方式的ؕ码问题?/font>


]]>
String中三U加法的区别 http://www.tkk7.com/ywsky/archive/2006/11/13/80871.html?j)?/dc:creator>?j)?/author>Mon, 13 Nov 2006 04:49:00 GMThttp://www.tkk7.com/ywsky/archive/2006/11/13/80871.htmlhttp://www.tkk7.com/ywsky/comments/80871.htmlhttp://www.tkk7.com/ywsky/archive/2006/11/13/80871.html#Feedback0http://www.tkk7.com/ywsky/comments/commentRss/80871.htmlhttp://www.tkk7.com/ywsky/services/trackbacks/80871.htmlJAVA的确是一Uo(h)E序员陷入两隑֢地的a? 切的说是思想. 它提供了(jin)如此丰富的library,让程序员能够很容易的写出功能强大的程? 同时它也装?jin)如此多的细? 让程序员能够L的写出很拙略的程? 它所代表的object指向思想设计之初是ؓ(f)?jin)把E序员(sh)UL(fng)复杂的编E细节中解放出来,来达到对已有E序的利? 但是在编E?实际上又要求E序员(sh)(jin)解其实现的细节而避免写出因调用已有library不正引v的performance慢的,耗费pȝ资源多的E序.通常成ؓ(f)一个优U的JAVAE序员需要较长时间的l验U篏,包括从程序的tuning?或从其他有经验的E序员口?才知道一定功能需要怎样实现,在程序中需要避免那些问?但这往往是比较片面的,知其然而不知其所以然.我想大多数程序员都有cM的经?举一个简单的例子,下面有三U对String的篏加操?
?String tmp = "a" + "b" + "c";
?String tmp = null;
tmp+= "a";
tmp+= "b";
tmp+= "c";
?String tmp = null;
StringBuffer buf = new StringBuffer();
buf.append("a");
buf.append("b");
buf.append("c");
tmp = buf.toString();
有些JAVAE序员在L的用q三U方法的MU?无视它们的区??些程序员知道W三U方法好一直在用而不知其Z么好,以至于作?l验教条的传授给JAVA新手.真正的答案是什么呢?

 (tng) (tng)让我们揭开JAVA String Class和StringBuffer Class的封装面Uq看它的内部实?在JAVA中的String Class是一个不可变c?所有对一个Sting Object的改变都回导致一个新的String Object的生?那么对tmp+=a?W号的实现呢?如果你注意一下StringBuffer的Javadoc?x)发?JDK对它的实现是tmp=(new StringBuffer().append(tmp).append("a")).toSting(); q样我们发现②这U方法在隐性生成了(jin)一个StringBuffer Object和一个String Object 再乘3是六个object 的资源耗费.(q(sh)包括String Class 和StringBuffer Class内部使用的Char[])而方法③只用?jin)两?也许有些E序员(sh)(x)对这些耗费不以为然,的确也是,不过在一些场景下它会(x)成ؓ(f)perfamence的瓶?再回头看看①q种Ҏ(gu),它会(x)被JAVA~译器编译ؓ(f)tmp=(new StringBuffer().append("a").append("b").append("c")).to String();我们发现做的和③Ҏ(gu)是同L(fng)? (tng)

]]>
javadq程文g代码 http://www.tkk7.com/ywsky/archive/2006/11/13/80872.html?j)?/dc:creator>?j)?/author>Mon, 13 Nov 2006 04:49:00 GMThttp://www.tkk7.com/ywsky/archive/2006/11/13/80872.htmlhttp://www.tkk7.com/ywsky/comments/80872.htmlhttp://www.tkk7.com/ywsky/archive/2006/11/13/80872.html#Feedback0http://www.tkk7.com/ywsky/comments/commentRss/80872.htmlhttp://www.tkk7.com/ywsky/services/trackbacks/80872.html

javadq程文g代码Q?/p>

/* filenameE文件地址,localfinename为本C存地址 */
 (tng) (tng) (tng) (tng)
public  (tng) void  (tng)readRomateFile(String (tng)romatefilename (tng), (tng)String (tng)localfilename) (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)URL (tng)urlfile;
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)BufferedReader (tng)in;
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)PrintWriter (tng)out;
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)String (tng)content (tng)
=  (tng) "" ;
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)String (tng)inputLine;
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
try  (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)urlfile (tng)
=  (tng) new  (tng)URL(romatefilename);
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)in (tng)
=  (tng) new  (tng)BufferedReader( new  (tng)I(yng)nputStreamReader(urlfile.openStream()));
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)inputLine (tng)
=  (tng)in.readLine();
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
while  (tng)(inputLine (tng) !=  (tng) null ) (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)content (tng)
+=  (tng)inputLine (tng);
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)inputLine (tng)
=  (tng)in.readLine();
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}

 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)System.out.println(content);
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)in.close();
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
 (tng) catch  (tng)(MalformedURLException (tng)e) (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
//  (tng)TODO (tng)Auto-generated (tng)catch (tng)block
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)e.printStackTrace();
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
 (tng) catch  (tng)(IOException (tng)e) (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
//  (tng)TODO (tng)Auto-generated (tng)catch (tng)block
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)e.printStackTrace();
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}


 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
/*  (tng)输出到文?/span> */
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
try  (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)out (tng)
=  (tng) new  (tng)PrintWriter( new  (tng)BufferedWriter( new  (tng)FileWriter(localfilename)));
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)out.print(content);
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)out.close();
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}
 (tng) catch  (tng)(IOException (tng)e) (tng) {
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
//  (tng)TODO (tng)Auto-generated (tng)catch (tng)block
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)e.printStackTrace();
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)}

 (tng) (tng) (tng) (tng)}

 (tng)



]]>
使用 dom4j 解析 XML http://www.tkk7.com/ywsky/archive/2006/11/13/80870.html?j)?/dc:creator>?j)?/author>Mon, 13 Nov 2006 04:48:00 GMThttp://www.tkk7.com/ywsky/archive/2006/11/13/80870.htmlhttp://www.tkk7.com/ywsky/comments/80870.htmlhttp://www.tkk7.com/ywsky/archive/2006/11/13/80870.html#Feedback0http://www.tkk7.com/ywsky/comments/commentRss/80870.htmlhttp://www.tkk7.com/ywsky/services/trackbacks/80870.html阅读全文

]]>
java中四U操作xml方式的比?http://www.tkk7.com/ywsky/archive/2006/11/13/80869.html?j)?/dc:creator>?j)?/author>Mon, 13 Nov 2006 04:47:00 GMThttp://www.tkk7.com/ywsky/archive/2006/11/13/80869.htmlhttp://www.tkk7.com/ywsky/comments/80869.htmlhttp://www.tkk7.com/ywsky/archive/2006/11/13/80869.html#Feedback0http://www.tkk7.com/ywsky/comments/commentRss/80869.htmlhttp://www.tkk7.com/ywsky/services/trackbacks/80869.html1. 介绍

1QDOM(JAXP Crimson解析?
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) DOM是用与^台和语言无关的方式表CXML文档的官方W3C标准。DOM是以层次l构l织的节Ҏ(gu)信息片断的集合。这个层ơ结构允许开发h员在?wi)中L特定信息。分析该l构通常需要加载整个文档和构造层ơ结构,然后才能做Q何工作。由于它是基于信息层ơ的Q因而DOM被认为是Z?wi)或Z对象的。DOM以及(qing)q义的基于树(wi)的处理具有几个优炏V首先,׃?wi)在内存(sh)是持久的,因此可以修改它以便应用程序能?gu)据和l构作出更改。它q可以在M时候在?wi)中上下DQ而不是像SAX那样是一ơ性的处理。DOM使用h也要单得多?br /> (tng)
 (tng)

2QSAX

 (tng) (tng) (tng) (tng) (tng) (tng) (tng) SAX处理的优炚w常类g媒体的优点。分析能够立卛_始,而不是等待所有的数据被处理。而且Q由于应用程序只是在d数据时检查数据,因此不需要将数据存储在内存(sh)。这对于大型文档来说是个巨大的优炏V事实上Q应用程序甚至不必解析整个文档;它可以在某个条g得到满时停止解析。一般来_(d)SAXq比它的替代者DOM快许多?
 (tng)  选择DOMq是选择SAXQ?对于需要自q写代码来处理XML文档的开发h员来_(d) (tng) 选择DOMq是SAX解析模型是一个非帔R要的设计决策?DOM采用建立?wi)Şl构的方式访问XML文档Q而SAX采用的事件模型?

  DOM解析器把XML文档转化Z个包含其内容的树(wi)Qƈ可以Ҏ(gu)(wi)q行遍历。用DOM解析模型的优Ҏ(gu)~程Ҏ(gu)Q开发h员只需要调用徏?wi)的指o(h)Q然后利用navigation APIs讉K所需的树(wi)节点来完成Q务。可以很Ҏ(gu)的添加和修改?wi)中的元素。然而由于用DOM解析器的时候需要处理整个XML文档Q所以对性能和内存的要求比较高,其是遇到很大的XML文g的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频J的改变的服务中?

  SAX解析器采用了(jin)Z事g的模型,它在解析XML文档的时候可以触发一pd的事Ӟ当发现给定的tag的时候,它可以激zM个回调方法,告诉该方法制定的标签已经扑ֈ。SAX对内存的要求通常?x)比较低Q因为它让开发h员自己来军_所要处理的tag。特别是当开发h员只需要处理文档中所包含的部分数据时QSAXq种扩展能力得到?jin)更好的体现。但用SAX解析器的时候编码工作会(x)比较困难Q而且很难同时讉K同一个文档中的多处不同数据?

3QJDOM (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) http://www.jdom.org

 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) JDOM的目的是成ؓ(f)Java特定文档模型Q它化与XML的交互ƈ且比使用DOM实现更快。由于是W一个Java特定模型QJDOM一直得到大力推q和?j)进。正在考虑通过“Java规范hJSR-102”将它最l用作“Java标准扩展”。从2000q初已l开始了(jin)JDOM开发?

  JDOM与DOM主要有两斚w不同。首先,JDOM仅用具体类而不使用接口。这在某些方面简化了(jin)APIQ但是也限制?jin)灵zL。第二,API大量使用?jin)Collectionsc,化了(jin)那些已经熟?zhn)q些cȝJava开发者的使用?

  JDOM文档声明其目的是“?0%(或更?的精力解?0%(或更?Java/XML问题?Ҏ(gu)学习(fn)曲线假定?0%)。JDOM对于大多数Java/XML应用E序来说当然是有用的Qƈ且大多数开发者发现API比DOMҎ(gu)理解得多。JDOMq包括对E序行ؓ(f)的相当广泛检查以防止用户做Q何在XML中无意义的事。然而,它仍需要?zhn)充分理解XML以便做一些超出基本的工作(或者甚至理解某些情况下的错?。这也许是比学习(fn)DOM或JDOM接口都更有意义的工作?

  JDOM自n不包含解析器。它通常使用SAX2解析器来解析和验证输入XML文档(管它还可以以前构造的DOM表示作ؓ(f)输入)。它包含一些{换器以将JDOM表示输出成SAX2事g、DOM模型或XML文本文档。JDOM是在Apache许可证变?sh)下发布的开放源码?/p>

4QDOM4J http://dom4j.sourceforge.net
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) 虽然DOM4J代表?jin)完全独立的开发结果,但最初,它是JDOM的一U智能分支。它合ƈ?jin)许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以及(qing)用于大文档或化文档的基于事件的处理。它q提供了(jin)构徏文档表示的选项Q它通过DOM4J API和标准DOM接口hq行讉K功能。从2000下半q开始,它就一直处于开发之中?

  为支持所有这些功能,DOM4J使用接口和抽象基本类Ҏ(gu)。DOM4J大量使用?jin)API中的Collectionsc,但是在许多情况下Q它q提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是Q虽然DOM4J付出?jin)更复杂的API的代P但是它提供了(jin)比JDOM大得多的灉|性?

  在添加灵zL、XPath集成和对大文档处理的目标ӞDOM4J的目标与JDOM是一L(fng)Q针对Java开发者的易用性和直观操作。它q致力于成ؓ(f)比JDOM更完整的解决Ҏ(gu)Q实现在本质上处理所有Java/XML问题的目标。在完成该目标时Q它比JDOM更少防止不正的应用E序行ؓ(f)?

  DOM4J是一个非帔R怼U的Java XML APIQ具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的Y件。如今你可以看到来多的Java软g都在使用DOM4J来读写XMLQ特别值得一提的是连Sun的JAXM也在用DOM4J?


2.. 比较

1QDOM4J性能最好,qSun的JAXM也在用DOM4J。目前许多开源项目中大量采用DOM4JQ例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文g。如果不考虑可移植性,那就采用DOM4J.

2QJDOM和DOM在性能试时表C佻I在测?0M文档时内存溢出。在文档情况下q值得考虑使用DOM和JDOM。虽然JDOM的开发者已l说明他们期望在正式发行版前专注性能问题Q但是从性能观点来看Q它实没有值得推荐之处。另外,DOM仍是一个非常好的选择。DOM实现q泛应用于多U编E语a。它q是许多其它与XML相关的标准的基础Q因为它正式获得W3C推荐(与基于非标准的Java模型相对)Q所以在某些cd的项目中可能也需要它(如在JavaScript中用DOM)?/p>

3QSAX表现较好Q这要依赖于它特定的解析方式Q事仉动。一个SAX(g)即到来的XML,但ƈ没有载入到内?当然当XML被dӞ?x)有部分文档暂时隐藏在内存?sh))?/p>

3. 四种xml操作方式的基本用方?/p>

xml文gQ?/p>

Q?xml version="1.0" encoding="GB2312"?Q?br />QRESULTQ?br /> (tng) (tng) (tng) QVALUEQ?
   (tng) (tng) (tng) (tng) (tng) QNOQA1234Q?NOQ?
   (tng) (tng) (tng) (tng) QADDRQ四川省XX县XX镇XX路XDXXP/ADDRQ?br /> (tng) (tng) (tng) Q?VALUEQ?br /> (tng) (tng) (tng) QVALUEQ?
   (tng) (tng) (tng) (tng) (tng) QNOQB1234Q?NOQ?
  (tng) (tng) (tng) (tng)  QADDRQ四川省XX?jng)XX乡XX村XXl</ADDRQ?br /> (tng) (tng) (tng) Q?VALUEQ?br />Q?RESULTQ?

1QDOM

import java.io.*;
import java.util.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;

public class MyXMLReader{
 public static void main(String arge[]){

  long lasting =System.currentTimeMillis();
  try{ (tng)
   File f=new File("data_10k.xml");
   DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
   DocumentBuilder builder=factory.newDocumentBuilder();
   Document doc = builder.parse(f);
   NodeList nl = doc.getElementsByTagName("VALUE");
   for (int i=0;iQnl.getLength();i++){
    System.out.print("车牌L(fng):" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
    System.out.println("车主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
   }
  }catch(Exception e){
   e.printStackTrace();
}

2QSAX

import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;

public class MyXMLReader extends DefaultHandler {

 java.util.Stack tags = new java.util.Stack();
 public MyXMLReader() {
  super();
 (tng) (tng) }

 public static void main(String args[]) {
  long lasting = System.currentTimeMillis();
  try {
   SAXParserFactory sf = SAXParserFactory.newInstance();
   SAXParser sp = sf.newSAXParser();
   MyXMLReader reader = new MyXMLReader();
   sp.parse(new InputSource("data_10k.xml"), reader);
  } catch (Exception e) {
   e.printStackTrace();
  }

  System.out.println("q行旉Q? + (System.currentTimeMillis() - lasting) + "毫秒");}
  public void characters(char ch[], int start, int length) throws SAXException {
  String tag = (String) tags.peek();
  if (tag.equals("NO")) { (tng)
   System.out.print("车牌L(fng)Q? + new String(ch, start, length));
 (tng) (tng) (tng) }
 (tng) (tng) (tng) if (tag.equals("ADDR")) {
  System.out.println("地址:" + new String(ch, start, length));
 (tng) (tng) (tng) }
 (tng) (tng) }

  public void startElement(String uri,String localName,String qName,Attributes attrs) {
  tags.push(qName);}
} (tng)

3Q?JDOM

import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;

public class MyXMLReader {

 public static void main(String arge[]) {
  long lasting = System.currentTimeMillis();
  try {
   SAXBuilder builder = new SAXBuilder(); (tng)
   Document doc = builder.build(new File("data_10k.xml")); (tng)
   Element foo = doc.getRootElement(); (tng)
   List allChildren = foo.getChildren(); (tng)
   for(int i=0;iQallChildren.size();i++) { (tng)
    System.out.print("车牌L(fng):" + ((Element)allChildren.get(i)).getChild("NO").getText());
    System.out.println("车主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText());
   }
  } catch (Exception e) {
   e.printStackTrace();
}

}

4QDOM4J

import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;

public class MyXMLReader {

 public static void main(String arge[]) {
  long lasting = System.currentTimeMillis();
  try {
   File f = new File("data_10k.xml");
   SAXReader reader = new SAXReader();
   Document doc = reader.read(f);
   Element root = doc.getRootElement();
   Element foo;
   for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) {
    foo = (Element) i.next();
    System.out.print("车牌L(fng):" + foo.elementText("NO"));
    System.out.println("车主地址:" + foo.elementText("ADDR"));
   }
  } catch (Exception e) {
   e.printStackTrace();
 (tng) (tng) (tng) }
}



]]>
JAVA规则开发篇 http://www.tkk7.com/ywsky/archive/2006/11/13/80868.html?j)?/dc:creator>?j)?/author>Mon, 13 Nov 2006 04:46:00 GMThttp://www.tkk7.com/ywsky/archive/2006/11/13/80868.htmlhttp://www.tkk7.com/ywsky/comments/80868.htmlhttp://www.tkk7.com/ywsky/archive/2006/11/13/80868.html#Feedback0http://www.tkk7.com/ywsky/comments/commentRss/80868.htmlhttp://www.tkk7.com/ywsky/services/trackbacks/80868.html 本文介绍的JAVA规则的说明分?个主要别,本篇抛弃?jin)^时开发中很少遇到的情况,那些用得比较?yu)的以后?a onmouseover="showTooltip('dHTMLToolTip',event,'http://www.adparter.com/dispatcher.do?trades=319693','北京千禧艺v高Ҏ(gu)q面<br>','千禧艺v是北京著名的专业?sh)脑?lt;br>设计师培训的机构Q全Ҏ(gu)讑֤实战?..<br>www.qxyh.cn',' 本消息由AdParter.com提供','#ffffff', '#ffffff', '#ff0000', '2000')" style="BORDER-RIGHT: #ff6600 0px dotted; BORDER-TOP: #ff6600 0px dotted; BORDER-LEFT: #ff6600 0px dotted; COLOR: #ff0000; BORDER-BOTTOM: #ff6600 3px dotted" target="http://www.adparter.com/dispatcher.do?trades=319693">高里面出现。ƈ有六个有用的国际软g开发重要注意的有关String的问题,遵守?jin)这些规则可以提?a onmouseover="showTooltip('dHTMLToolTip',event,'http://www.adparter.com/dispatcher.do?trades=319665','公司注册E序Q创业友Ƣ迎(zhn)?lt;br>','北京创业友公怸业代理注?lt;br>内资、外资、代表处、v外公司解册...<br>www.yeeyo.com',' 本消息由AdParter.com提供','#ffffff', '#ffffff', '#ff0000', '2000')" style="BORDER-RIGHT: #ff6600 0px dotted; BORDER-TOP: #ff6600 0px dotted; BORDER-LEFT: #ff6600 0px dotted; COLOR: #ff0000; BORDER-BOTTOM: #ff6600 3px dotted" target="http://www.adparter.com/dispatcher.do?trades=319665">E序?a onmouseover="showTooltip('dHTMLToolTip',event,'http://www.adparter.com/dispatcher.do?trades=319680','U星生效率高成品质量好<br>','中国矿山机械生和出口基圎ͼ<br>ISO9001Q?000质量体系?..<br>www.hnhxjq.cn',' 本消息由AdParter.com提供','#ffffff', '#ffffff', '#ff0000', '2000')" style="BORDER-RIGHT: #ff6600 0px dotted; BORDER-TOP: #ff6600 0px dotted; BORDER-LEFT: #ff6600 0px dotted; COLOR: #ff0000; BORDER-BOTTOM: #ff6600 3px dotted" target="http://www.adparter.com/dispatcher.do?trades=319680">效率、代码又更好的可读性等?br />Q?Q?如果有JDBCq接没有x的话Q需要在"finally"Ҏ(gu)中关?br />如果数据?/a>q接p|或者是没有释放q接Q看上去无关紧要。但是其他的用户需要用更长的时间等待连接,q样数据库利用效率就?x)下降。确保你的代码在M情况下,包括出错或者程序异常终止的情况下都释放数据库连接。在"finally"Ҏ(gu)中关掉连接,可以确保这一炏V?br />错误CZQ?br />try {
Statement stmt = con.createStatement();
} catch(SQLException e) {
e.printStackTrace();
}
正确CZQ?br />try {
Statement stmt = con.createStatement();
} finally {
if (con != null && !con.isClosed()) {
con.close();
}
}
ps:q个问题?sh)是一直困C些提供jsp+
mysqlI间?a onmouseover="showTooltip('dHTMLToolTip',event,'http://www.adparter.com/dispatcher.do?trades=319668','(zhn)的|页也能赚钱<br>','AdParter文链q告<br>让?zhn)的网也赚?lt;br>www.adparter.com',' 本消息由AdParter.com提供','#ffffff', '#ffffff', '#ff0000', '2000')" style="BORDER-RIGHT: #ff6600 0px dotted; BORDER-TOP: #ff6600 0px dotted; BORDER-LEFT: #ff6600 0px dotted; COLOR: #ff0000; BORDER-BOTTOM: #ff6600 3px dotted" target="http://www.adparter.com/dispatcher.do?trades=319668">|站Q很多个人网站没有关闭数据库q接Q结果造成整个服务?a onmouseover="showTooltip('dHTMLToolTip',event,'http://www.adparter.com/dispatcher.do?trades=319679','首企互联提供速度快、稳?lt;br>','首企互联是专业从事政府网站徏?lt;br>主要业务有域名注册、虚拟主机、网?lt;br>www.bjcaihua.cn',' 本消息由AdParter.com提供','#ffffff', '#ffffff', '#ff0000', '2000')" style="BORDER-RIGHT: #ff6600 0px dotted; BORDER-TOP: #ff6600 0px dotted; BORDER-LEFT: #ff6600 0px dotted; COLOR: #ff0000; BORDER-BOTTOM: #ff6600 3px dotted" target="http://www.adparter.com/dispatcher.do?trades=319679">速度下降?/font>


Q?Q?量避免使用'Thread.resume ()', 'Thread.stop ()', 'Thread.suspend ()'?'Runtime.runFinalizersOnExit ()' Ҏ(gu)?br />q些Ҏ(gu)在^时的开发或者是教科书里面也有用到过Q但是这些方法会(x)D四锁的們֐。一下有充?a onmouseover="showTooltip('dHTMLToolTip',event,'http://www.adparter.com/dispatcher.do?trades=319677','淘宝|读者杂志书c便宜卖<br>','读者杂志出售中。电(sh)子杂志、原版书<br>二手资料Q用支付宝先验货后付?gu)?lt;br>www.taobao.com ',' 本消息由AdParter.com提供','#ffffff', '#ffffff', '#ff0000', '2000')" style="BORDER-RIGHT: #ff6600 0px dotted; BORDER-TOP: #ff6600 0px dotted; BORDER-LEFT: #ff6600 0px dotted; COLOR: #ff0000; BORDER-BOTTOM: #ff6600 3px dotted" target="http://www.adparter.com/dispatcher.do?trades=319677">资料来说明ؓ(f)什么不用上q方法?br />参考:(x)1."java.lang.Thread" in the JDK API documentation
2. http://java.sun.com/j2se/1.3/docs/g...eprecation.html
3.Paul Hyde: "Java Thread Programming"
Sams, ISBN: 0-672-31585-8 pp. 270

Q?Q?在表C长整常量的时候,用L来代替l.
因ؓ(f)l很容易和1混一赗?br />错误CZQ?br />long temp = 23434l;
正确CZQ?br />long temp = 23434L;
参考:(x)Ken Arnold, James Gosling: "The Java Programming Language Second Edition"Addison Wesley, 1997, pp.108

Q?Q?最好在jsp开头写一条注?br />?jsp文g头上面写一条注释,q样可以帮助别h来理解你的代码。这条规则不仅适用于jspQ更是用于Q何开发的文档?br />正确CZQ?lt;%-- JSP comment --%>

(5)明确的初始化一个构造类里面的所有的字段
因ؓ(f)没有初始化的字段?x)是一个潜在的bugQ所以最好初始化c里面的所有的字段。特别是?rn)态的字段Q最好在一开始就分配一个初始?br />错误CZQ?br />public class CSI {
public CSI () {
this (12);
k = 0;
}

public CSI (int val) {
j = val;
}

private int i = 5;
private int j;
private int k;
}

正确CZQ?br />public class CSIFixed {
public CSIFixed () {
this (12);
}

public CSIFixed (int val) {
j = val;
k = 0;
}

private int i = 5;
private int j;
private int k;
}
参考:(x)http://www.ambysoft.com/javaCodingStandards.pdf

Q?Q?国际化开发徏议:(x)逻辑操作W不要再一个单个的字符的前面或者后?br />一个单个字W的前后不要用逻辑操作W,如果代码要在一个国家环境中q行的话。我们可以用字W比较方法,q些Ҏ(gu)使用l一字符比较标准来定义字W的属性的?br />错误CZQpublic class CLO {
public boolean isLetter (char ch) {
boolean _isLetter = ( ch >= 'a' && ch <= 'z') //错误
|| (ch >= 'A' && ch <= 'Z');
return _isLetter;
}
}

正确CZQ?br />public class CLOFixed {
public boolean isLetter (char ch) {
boolean _isLetter = Character.isLetter(ch);
return _isLetter;
}
}
参考:(x) http://java.sun.com/docs/books/tuto.../checklist.html
更多的字W比较方法请参考:(x)http://java.sun.com/docs/books/tuto.../charintro.html

Q?Q?国际化开发徏议:(x)不要Ҏ(gu)期对象?Date.toString ()'
不要使用'Date.toString ()'Ҏ(gu)Q日期格式对于地区和语言不同的国家来说是不一L(fng)Q务必不要用?br />错误CZQ?DateFormat'cL供了(jin)一个预定义的格式类型来指定本地的格式?br />public void printToday () {
Date today = new Date ();
String todayStr = today.toString ();
System.out.println (todayStr);
}
正确CZQ?br />public void printToday () {
Locale currentLocale = Locale.getDefault ();
DateFormat dateFormatter = DateFormat.getDateInstance (
DateFormat.DEFAULT, currentLocale);
Date today = new Date ();
String todayStr = dateFormatter.format (today);
System.out.println (todayStr);
}
参考:(x)http://java.sun.com/docs/books/tuto.../checklist.html
http://java.sun.com/docs/books/tuto...dateFormat.html

Q?Q?国际化开发徏议:(x)不要Ҏ(gu)字变量?toString ()'Ҏ(gu)
在全球化的开发中Q不要对数字变量使用'toString ()'Ҏ(gu)Q对于java.lang.Number的Q何子c都适用。包括:(x)BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, and Short.对于q样的情况,java里也与定义了(jin)"NumberFormat"Ҏ(gu)来格式化?br />错误CZQ?br />public class NTS {
public void method (Double amount) {
String amountStr = amount.toString ();
System.out.println (amountStr);
}
}
正确CZQ?br />public class NTSFixed {
public void method (Double amount) {
Locale currentLocale = Locale.getDefault ();
NumberFormat numberFormatter =
NumberFormat.getNumberInstance (currentLocale);
String amountStr = numberFormatter.format (amount); //
System.out.println (amountStr + ' ' + currentLocale.toString ());
}
}
参考:(x)http://java.sun.com/docs/books/tuto.../checklist.html
http://java.sun.com/docs/books/tuto...mberFormat.html

Q?Q?国际化开发徏?不要使用'String.equals ()'Ҏ(gu)
不要使用'String.equals ()'Ҏ(gu)Q因为在l一字符比较标准中不一定按照相关的序来比较?Collator'提供的预定义整理规则来排序stringQCollatorc调?getInstance ()'Ҏ(gu)Q一般来_(d)可以为默认的本地创徏一个Collator。例如:(x)Collator myCollator = Collator.getInstance ();创徏Collator的时候你也可以指定一个特D的locale。例如:(x)Collator myFrenchCollator = Collator.getInstance (Locale.FRENCH);然后可以调?Collator.compare ()'来执行一个本地的字符比较myCollator.compare (s1,s2);从这里可以了(jin)解更多的有关Collatorcȝ信息Q?a target="_blank">http://java.sun.com/docs/books/tuto...ationintro.html

错误CZQ?br />public class SE {
public boolean compstr (String s1, String s2) {
boolean b = (s1.equals (s2));
return b;
}
}
正确CZQ?br />public class SEFixed {
public boolean compstr (String s1, String s2) {
Collator myCollator = Collator.getInstance ();
boolean b = (myCollator.compare(s1,s2) == 0);
return b;
}
}

参考:(x)http://java.sun.com/docs/books/tuto.../checklist.html
http://java.sun.com/docs/books/tuto...ext/locale.html

Q?0Q?国际化开发徏议:(x)不要使用'StringTokenizer()'Ҏ(gu)
错误CZQStringTokenizer st = new StringTokenizer(str);
可以从这里得到更多的信息Q?br />参考:(x)http://java.sun.com/docs/books/tuto.../checklist.html

Q?1Q?国际化开发徏议:(x)不要使用'Time.toString ()'Ҏ(gu)
因ؓ(f)旉的格式各个国家也不一栗如果你使用日期格式c,你的应用p够在世界上各个地Ҏ(gu)的昄旉和日期了(jin)。首先,?getTimeInstance ()'Ҏ(gu)创徏一个formatter。然后,调用'format ()'Ҏ(gu)?br />错误CZQ?br />public class TTS {
public void printTime (Time t1) {
String timeStr = t1.toString ();
System.out.println (timeStr);
}
}
正确CZQ?br />import java.sql.Time;
import java.text.DateFormat;
import java.util.Locale;

public class TTSFixed {
public void printTime (Time t1) {
DateFormat timeFormatter = DateFormat.getTimeInstance(
DateFormat.DEFAULT, Locale.getDefault ());
String timeStr = timeFormatter.format(t1);
System.out.println (timeStr);
}
}
 (tng) (tng)

]]>
վ֩ģ壺 þþƷӰѿ| С˵ͼƬQVOD| ҹƵ߹ۿ| ޾Ƶ| ޹ҹӰ| ޾Ʒ| ߹ۿaëƬ| 鶹Ƶѹۿ| һëƬѲ| Ƭѹۿȫ| 337pձŷ޴| þþþseɫ͵͵޾Ʒav| ޾ѡ߹ۿ| ޹Ƭ߹ۿ| þþþרav| ѹaƬվ| penƵѹۿ| 99þþƷձһ| ߹ۿѲavƬ| ߹ۿƵվɫ| jizz߹ۿ| aһƬ| hƬ߹ۿ| aһƬ| Ʒѿþþ㽶| һëƬѲ| ѸԴվƵ| Ƶۿ| þ޾Ʒ߳ۺɫaƬ| avһ| ˳վ999þþۺ| 츾AV߹ۿ| ޹պƷ| ŷ޾Ʒ˾þԻ| ޸ҹӰ| avרߵӰ| èwww˳վ| www߹ۿƵ| ƷѦvƵ| òѸ| ҹ뾫Ʒѿ|