??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品成人,女bbbbxxxx另类亚洲,亚洲理论在线观看http://www.tkk7.com/397879213/zh-cnSun, 11 May 2025 14:07:28 GMTSun, 11 May 2025 14:07:28 GMT60log4j之配|文件加载过E分?properties文g和xml文ghttp://www.tkk7.com/397879213/archive/2012/05/04/341973.htmlliuliangliuliangFri, 04 May 2012 04:27:00 GMThttp://www.tkk7.com/397879213/archive/2012/05/04/341973.htmlhttp://www.tkk7.com/397879213/comments/341973.htmlhttp://www.tkk7.com/397879213/archive/2012/05/04/341973.html#Feedback1http://www.tkk7.com/397879213/comments/commentRss/341973.htmlhttp://www.tkk7.com/397879213/services/trackbacks/341973.html那么log4j寚w|文件的加蝲q程是什么样的呢Q下面以分析log4j的source的Ş式来q行说明?br /> 一Qproperties文g 当用properties文gq行配置的时候,对应的src为PropertyConfigurator。这个PropertyConfigurator classl承了接?ConfiguratorQƈ实现doConfigureҎ?对properties文gq行d的过E如?
1Q把properties文g的内容读取到Properties对象中保存?使用ҎQ?Properties props = new Properties(); FileInputStream istream = null; istream = new FileInputStream(configFileName); props.load(istream); istream.close();
2Q对d的内容进行解?
2.1q行是否输出内部异常信息的判?Q通过是否指定参数“log4j.debug”来判?br /> 2.2q行是否复位所有配|信息的判断Q通过是否指定参数“log4j.reset”来判?br /> 2.3q行是否讑֮q域log的level的判断,通过是否指定参数“log4j.threshold”来判?
2.4q行RootLogger的设?
2.4.1 取得RootLogger
2.4.2 取得RootLogger对应的Appender
2.4.2.1取得Appender的Layout,Layoutq加到Appender?
//1 讑֮Layout的属?//2 讑֮
Appender的属?
2.4.3 Appenderq加到RootLogger?
2.5q行LoggerFactory的设?br /> 2.5.1 取得指定参数“log4j.loggerFactory”的|q生成Factorycȝ实例
2.5.2 讑֮生成Factorycȝ实例的属?
2.6q行RootLogger以外其他Logger的设?
2.6.1取得其他的category
 2.6.1.1 讄category的level属?
2.6.1.2 取得category对应的Appender 取得Appender的Layout,Layoutq加到Appender?//1 讑֮Layout的属?//2 讑֮Appender的属?br /> 2.6.1.3 讄category的是否承parent的属?
2.6.1.4 讄category的输出log的渲染类
 二,xml文g当用xml文gq行配置的时候,对应的src为DOMConfigurator。这个DOMConfigurator classl承了接?ConfiguratorQƈ实现doConfigureҎ?
对xml文gq行d的过E?与对properties文gq行解析的内容大致相?不再重复. 不同Ҏ以下几个地方
//1 使用DOMAPIdxml文g,q从dom中取得各个node的内?
 //2 属性的名称不一?

liuliang 2012-05-04 12:27 发表评论
]]>
黑客新手常用命o(?http://www.tkk7.com/397879213/archive/2012/05/04/313466.htmlliuliangliuliangFri, 04 May 2012 04:20:00 GMThttp://www.tkk7.com/397879213/archive/2012/05/04/313466.htmlhttp://www.tkk7.com/397879213/comments/313466.htmlhttp://www.tkk7.com/397879213/archive/2012/05/04/313466.html#Feedback0http://www.tkk7.com/397879213/comments/commentRss/313466.htmlhttp://www.tkk7.com/397879213/services/trackbacks/313466.html此文章{?和闹z房 I间
以下列出在NTpȝ中基本的|络命o和用方法:


一、ipconfig命oQ?br />ipconfig命o应该是最最基础的命令了Q主要功能就是显C用h在主机内部的IP协议的配|信息等资料?br />它的主要参数有:
allQ显CZTCP/IP协议相关的所有细节信息,其中包括试的主机名、IP地址、子|掩码、节点类型、是否启用IP路由、网卡的物理地址、默认网关等?br />renew allQ更新全部适配器的通信配置情况Q所有测试重新开始?br />release allQ释攑օ部适配器的通信配置情况?br />renew nQ更新第n号适配器的通信配置情况Q所有测试重新开始?  
例如Q?br />C:\>ipconfig

Windows IP Configuration

Ethernet adapter 本地q接:

Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 192.168.0.14
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.1


二、Net命oQ?br />Net命o主要是在windows NTq_中完成一些网l工作,它的功能非常强大Q可以这么说如果你想学习windowsq_下的|络安全Q必ȝ悉用该命o。该命o的语法很多,功能强大Q我们只是介l一些简单常用的?/p>

1.建立IPCq接:
只要你拥有某IP的用户名和密码,那就用IPC$做连?q里我们假如你得到的用户是管理员administratorQ密码是123456。假讑֯方IP?92.168.0.1
net use \\192.168.0.1\ipc$ "123456" /user:"administrator"
一般会昄如下信息Q?br />C:\>net use \\192.168.0.1\ipc$ "123456" /user:"administrator"
命o成功完成?/p>

退出的命o是:net use \\192.168.0.1\ipc$ /del
一般执行后会显C如下信息:
C:\>net use \\192.168.0.1\ipc$ /del
\\192.168.0.1\ipc$ 已经删除?/p>

当然你也可以建立一个空的IPCq接Q也是我们常说的空q接Q也是不需要用户名和密码的IPCq接Q一般徏立这c连接后可以获取对方的很多pȝ信息Q比如用户名Q共享资源等。徏立空q接和徏立IPCq接是一LQ不q是不需要用户名和密?例如我们要徏立和IP地址?92.168.0.39的机器的I接,使用以下命oQ?br />net use \\192.168.0.39\ipc$ "" /user""
如果提示成功徏立了和该IP地址的空q接Q然后通过其它命o可以获取一些该pȝ的信息,q些pȝ信息在入侉|者是|络l护中是L非常重要的作用的Q比如你获取了用户名Q那么你可以进行暴力破解密码等?/p>

2.映射盘Q?br />如果和对方徏立了IPCq接Q那么就可以映射Ҏ的磁盘?br />q里是讲映射Ҏ的C盘,当然其他盘也可以Q只要存在就行了.我们q里把对方的C盘映到本地的Z?
net use z:\\127.0.0.1\c$
执行命o后效果如下:
C:\>net use z: \\192.168.0.92\c$
命o成功完成?/p>

如果q么映射盘后,我们可以直接通过讉K本地的Z盘来讉K对反的E盘?/p>

3.打开服务Q?br />如果x开自己的一些服务,那么可以用net start命oQ例如:
net start telnet
可以打开Telnet服务了?br />一般有如下信息昄Q?br />C:\>net start telnet
Telnet 服务正在启动 .
Telnet 服务已经启动成功?br />C:\>

4.关闭服务Q?br />关闭服务使用net stop命oQ例如:
net stop tenet //可以关闭Telnet服务?br />一般执行后Q有如下信息Q?br />C:\>net stop telnet
Telnet 服务正在停止.
Telnet 服务已成功停止?br />C:\>

5.建立用户Q?br />必须有够的权限Q徏立用户可以是本机Q如果是Ҏ的机器,必须q程登陆到对方系l,或者获得了一个shell后才能执行。(输入命o时要注意I格)
我们d一个hacker的用户密码ؓlovehackerQ?br />net user hacker lovehacker /add

只要昄命o成功Q那么我们可以把他加入Administratorl?理员组Q了Q?br />net localgroup Administrators hacker /add

6.Ȁzȝ?停止用户:
Guest用户默认是打开?但是有写理员会把它停止,我们怎么把它从新Ȁzd?可以使用net user命oQ?br />net user guest /active:yes
如果我们惛_止一个活动用P比如停止Guest用户Q?br />net user guest /active:no

7.昄|络资源׃n状况
net viewQ可以显C网l资源共享状况,比如执行 net view \\IP地址,可以查看该机器的资源共享状况,前提是必d立了IPCq接Q当然你可以建立一个空的IPCq接Q也是不需要用户名和密码的IPCq接?上面的IPCq接有讲刎ͼ请仔l阅?例如Q?br />C:\>net view \\192.168.0.39
?\\192.168.0.39 的共享资?br />׃n?cd 使用?注释
--------------------------------------------------------
ftproot Disk
webroot Disk
命o成功完成?/p>

8.发送网l消息:
使用net send命o可以l局域网/q域|发送一条消?格式为:net send IP地址 “消息内容“,如:
net send 192.168.0.1 "q是net send发送的消息!"
那么一回儿?92.168.0.1的机器将出现一个标题ؓ“信服务”的窗口,里面昄了你发送的消息Q当然如果对方关闭了Messenger服务的话Q这条消息是不会昄的,如果你不x到该cL息,也可以在服务中把Messenger服务关闭?/p>


三、At命oQ?br />1.本地QT命oQ?br />at命o是一个计划Q务命令,和我们windows中的计划d效果是一LQ但是它是通过命o的方式?br />一般我们可以在本机上直接用at命o来运行一些已l存在的E序Q比如现在是19:58Q我们想?0:00的时候运行cmd.exe打开Qat 20:00 c:\winnt\system32\cmd.exe
那么׃昄“新加了一作业,其作?ID = 1"Q然后在执行"at"命o可以看见以下信息:
状?ID 日期 旉 命o?br />-----------------------------------------------------------------------
1 今天 下午 20:00 cmd.exe
那么?0:00׃打开一的cmd的窗口。如果想取消计划d的话Q可以用以下命令:
at ID?/delQテQ号是上面昄的テQ?->1Q那么如果我们要取消QD为1的计划Q务,可以执行下面的命oQ?br />at 1 /del
如果对该命o有不熟悉的的地方Q可以用at /?命o来查看它的帮助?/p>

2.q程QT命oQ?br />一般一个入侵者入侵后都会留下后门Q也是U木马了Q你把木马传了上去,怎么启动他呢Q?br />那么需要用AT命oQ这里假设你已经登陆了那个服务器,你首先要得到Ҏ的时_
net time \\127.0.0.1
会q回一个时_q里假设旉?2:1Q现在需要新Z个作业,其ID=1Q?br />at \\127.0.0.1 12:3 c:\winnt\system32nc.exe
后面的\径是要运行的E序在对方磁盘的目录Q这个要搞清楚?br />q里假设了一个木马,名ؓNC.EXEQ这个东西要在对Ҏ务器上?/p>


四、Telnet命oQ?br />Telnet命o是一个远E登陆的命oQ就可以通过q个命o来远E登陆网l上已经开发了q程l端功能的服务器Q来辑ֈ像本地计机理q程计算机?br />该命令格式:telnet q程LIP 端口
例如:telnet 192.168.0.1 23
如果我们不输入端?则默认ؓ23端口?br />一般登陆后Q对方远E终端服务就会要求你输入用户名和密码Q正就让你登陆?br />一般出现如下消息:
Welcome to Microsoft Telnet Service

login: root
password: ******

如果登陆成功后将出现如下信息Q?br />*===========================================
Welcome to Microsoft Telnet Server.
*===========================================
C:\Documents and Settings\root>

那么代表你通过telnetCҎ的系l,可以做在你用户权限内的所有事情啦Q?/p>


五、FTP命oQ?br />FTP命o是一个文件传输的命oQ该命o可以在两C联的机器之间传送文Ӟq跟我们常用的FTP软g是一LQ但是我们的软g一般都是GUI(可视)界面的,但它是命令类型的?br />FTP命o主要是在|上q行文g的传输,它的子命令非常多Q我们挑一些主要的来讲?br />一般在命o提示W下输入FTP后,打开如下界面Q?br />C:\>ftp
ftp>
那么我们输入的命令都是在"ftp>"后面的,也就是说我们输入ftp命o后,那么我们p入了FTP的^収ͼ所有的操作都是ZFTP上的。假如我们要打开一台网l上已经开了FTP服务的服务器Q那么我们就可以登陆到该服务?然后上传/下蝲文g,有时候我们的权限是只能下?那么我们׃能上?q具体要看你有的权限?br />假如我们要打开一个FTP服务?那么我们可以在FTPq_下输入:
open LIP 端口
例如Qftp>open 192.168.0.39 21Q那么就会显CZ面的效果Q?/p>

C:\>ftp
ftp> open 192.168.0.39
Connected to 192.168.0.39.
220 Serv-U FTP Server v4.2 for WinSock ready...
User (192.168.0.39:(none)):

到这里就需要我们输入用户名Q如果是Ҏ的服务器是支持匿名的Q那么我们就可以输入像ftp之类的用P如:
User (192.168.0.39:(none)): ftp
331 User name okay, please send complete E-mail address as password.
Password:

密码也是输入ftpQ那么就会显C登陆成功,如下Q?/p>

Password: ***
230-(Ƣ迎你来到FTP192.168.0.39服务?Q?br />230 User logged in, proceed.
ftp>

昄230׃表代表登陆成功,如果昄别的Q比?30Q那么就是用户名或密码错误,登陆p|?br />登陆后就可以使用一些命令,包括上传/下蝲Q执行外部命令等。要获得FTP的所有命令,可以键入help命oQ它所有命令列表如下:
ftp> help
Commands may be abbreviated. Commands are:
! delete literal prompt send
? debug s put status
append dir mdelete pwd trace
ascii disconnect mdir quit type
bell get mget quote ser
binary glob mkdir recv verbose
bye hash mls remotehelp
cd help mput rename
close lcd open rmdir


我们把常用的命o解释一下:
1Q?Q执行一个非FTPq_下的外部命oQ如Q?clsQ那么将清除屏幕?br />2QdeleteQ删除一个文Ӟ比如在你的当前FTP根目录下有一个dir1.txt的文Ӟ你需要删除它Q就输入 delete dir1.txt?br />3QlsQ列出现在有的文件列表,该命令是Unix/Linux下的一个命令,主要是列目录下的文gQ而不文件夹
4QputQ从本地计算Z传一个文件到FTP服务器上Q例如:put cmd.exeQ那么就会把当前目录下有的cmd.exe传的FTP服务?Q上的当前目?该命令是最常用的?br />6QasciiQ该命o可以使上传的文g是按照ASCII码来传输的?br />7QgetQ该命o也比较常用,也是把对方FTP服务器上的文件下载到自己的当前目录。如Qget cmd.exeQ就会把FTP服务器上?br />8Qcmd.exe文g下蝲到当前目录?br />9Qmdelete/rmdirQ删除一个目?文g?比如Qmdelete a Q那么该文g夹将被删除?br />10QpwdQ显C当前所处在FTP的那个目录下Q相当于昄当前路径。例如:
ftp> pwd
257 "/SOFTWARE/safe_tools" is current directory.

11Qquit/byeQ结束当前的FTPq接Qƈ且退出FTP?br />12QtypeQ设定文件传输类型,cd有: [ ascii | binary | image | tenex ],如果你是传文本文件之cȝ׃用ascii码,如果是应用程序的话,׃用binaryQ如果是囄׃用image。FTP默认的是ascii码,如果你要传应用程序,p使用binary。例如我们要上传一个lk.exe的文Ӟ那么我们先设|传输模式ؓbinaryQ然后再上传,如:
ftp> type binary
200 Type set to I.
ftp> put lk.exe
200 PORT Command successful.
150 Opening BINARY mode data connection for lk.exe.
226 Transfer complete.
ftp: 3800 bytes sent in 0.01Seconds 380.00Kbytes/sec.
ftp>

13QmgetQ同时下载多个文件?br />14QmputQ同时上传多个文件?br />15QuserQ向q程L器表Cqw䆾Q如Q?br />ftp> user
Username: ftp
331 User name okay, please send complete E-mail address as password.
Password: ***
230 User logged in, proceed.

16QcdQ切换目录,q入一个目录用cd 目录,退C一个层目录使用cd ..Q注意中间有一个空?Q该命o比较常用?br />17Qhelp/?Q显C帮助,主要是显C在FTP下可以用的命令?br />18QrenameQ重命名Q给文g重新命名?br />19QcloseQ关闭当前的FTPq接Q但是不退出FTPQ和quit/bye命o不一栗如Q?br />ftp> clos
221 Goodbye!
ftp>

20Qopen 打开一个FTPq接。如Q?br />ftp> open 192.168.0.39
Connected to 192.168.0.39.
220 Serv-U FTP Server v4.2 for WinSock ready...
User (192.168.0.39:(none)):

FTP中比较常用的命op些,当然q设计一些别的命令,而且也要因不同的FTP服务器支持的命o不一栯定Q所以如果碰到实际应用中不同Q请参考相关的资料?/p>


六、ping命oQ?br />ping命o是一个在|络中非帔R要的q且常用的命令,主要是用来测试网l是否连通。该命o通过发送一个ICMP Q网l控制消息协议)包的回应来看是否和对方连通,一般我们用来测试目标主机是否可以连接,或者可以通过TTL值来判断Ҏ的操作系l的版本?br />比如你想试你和IP地址?92.168.0.1的机器是否连通,那么可以用这个命令:ping 192.168.0.1Q那么如果连通就会有如下q回Q?br />C:\>ping 192.168.0.1
Pinging 192.168.0.1 with 32 bytes of data:

Reply from 192.168.0.1: bytes=32 time<1ms TTL=128
Reply from 192.168.0.1: bytes=32 time<1ms TTL=128
Reply from 192.168.0.1: bytes=32 time<1ms TTL=128
Reply from 192.168.0.1: bytes=32 time<1ms TTL=128

Ping statistics for 192.168.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

如果不连通的话,׃q回时Q?br />C:\>ping 192.168.0.1

Pinging 192.168.0.1 with 32 bytes of data:

Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 192.168.0.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

那么p明你和该计算机的|络不通,也许是对Ҏ有上|,或者装了防火墙?/p>

在局域网中,如果是同一个工作组的机器,你可以通过pingҎ的机器名U获得对方的IP地址Q如Q?br />C:\>ping hysw

Pinging hysw [192.168.0.14] with 32 bytes of data:

Reply from 192.168.0.14: bytes=32 time<1ms TTL=64
Reply from 192.168.0.14: bytes=32 time<1ms TTL=64
Reply from 192.168.0.14: bytes=32 time<1ms TTL=64
Reply from 192.168.0.14: bytes=32 time<1ms TTL=64

Ping statistics for 192.168.0.14:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms

在ping里面q有一?-t 参数Q是可以不间断的向一个机器发送包,使用-l 包大参数还能设定发送包的最大|q样差不多句有了DoS的功能了Q也是在黑客技术中的洪水攻击,最大gؓ65500。如Q?/p>

C:\>ping 192.168.0.1 -t -l 65500

Pinging 192.168.0.1 with 65500 bytes of data:

Reply from 192.168.0.1: bytes=65500 time=14ms TTL=128
Reply from 192.168.0.1: bytes=65500 time=13ms TTL=128
Reply from 192.168.0.1: bytes=65500 time=14ms TTL=128
Reply from 192.168.0.1: bytes=65500 time=13ms TTL=128
Reply from 192.168.0.1: bytes=65500 time=14ms TTL=128
Reply from 192.168.0.1: bytes=65500 time=14ms TTL=128

Ping statistics for 192.168.0.1:
Packets: Sent = 6, Received = 6, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 13ms, Maximum = 14ms, Average = 13ms
Control-C
^C
C:\>

因ؓ加了-t参数Qping命o本n是不会停止的Q于是我们就可以使用Ctrl + C来终止该命o。ping命oq有一些别的参敎ͼ误己参考帮助?/p>


七、netstat命oQ?br />netstat命o的功能是昄|络q接、\p和网l接口信息,可以让用户得知目前都有哪些网l连接正在运作?
它能验IP的当前连接状态,在断定你的基本通信正在q行后,p验证pȝ上的服务。这个服务包括检查正在收听输入的通信量和Q或验证你正在创Z个与q程站点的会话,它可以很L地做到这一炏V?br />netstat的参数有Q?br />-a 昄所有socketQ包括正在监听的?br />-c 每隔1U就重新昄一遍,直到用户中断它?br />-i 昄所有网l接口的信息Q格式同“ifconfig -e”?br />-n 以网lIP地址代替名称Q显C出|络q接情Ş?br />-r 昄核心路由表,格式?#8220;route -e”?br />-t 昄TCP协议的连接情c?br />-u 昄UDP协议的连接情c?br />-v 昄正在q行的工作?/p>

我们一般常用的参数?a ,-n。?a参数可以昄本机正在监听的端口,包括TCP/UDP两种协议的端口,一般这h们可以查看本机器的监听状况,可以查看是不是有后门工具在工作等。例如:
C:\>netstat -a

Active Connections
Proto Local Address Foreign Address State
TCP hysw:echo hysw:0 LISTENING
TCP hysw:discard hysw:0 LISTENING
TCP hysw:daytime hysw:0 LISTENING
TCP hysw:qotd hysw:0 LISTENING
TCP hysw:chargen hysw:0 LISTENING
TCP hysw:epmap hysw:0 LISTENING
TCP hysw:microsoft-ds hysw:0 LISTENING
TCP hysw:1025 hysw:0 LISTENING
TCP hysw:2103 hysw:0 LISTENING
TCP hysw:2105 hysw:0 LISTENING
TCP hysw:2107 hysw:0 LISTENING
TCP hysw:3306 hysw:0 LISTENING
TCP hysw:1034 localhost:3306 ESTABLISHED
TCP hysw:3306 localhost:1034 ESTABLISHED
TCP hysw:netbios-ssn hysw:0 LISTENING
UDP hysw:echo *:*
UDP hysw:discard *:*
UDP hysw:daytime *:*
UDP hysw:qotd *:*
UDP hysw:chargen *:*
UDP hysw:epmap *:*
UDP hysw:microsoft-ds *:*
UDP hysw:isakmp *:*
UDP hysw:ntp *:*
UDP hysw:ntp *:*
UDP hysw:netbios-ns *:*
UDP hysw:netbios-dgm *:*
C:\>

一?n参数主要是显C本地的q接状况Q包括本接其他系l和其它pȝq接本机Q包括主机的IP和端口,如:
C:\>netstat -n

Active Connections

Proto Local Address Foreign Address State
TCP 127.0.0.1:1034 127.0.0.1:3306 ESTABLISHED
TCP 127.0.0.1:3306 127.0.0.1:1034 ESTABLISHED
TCP 192.168.0.14:1371 192.168.0.159:21 ESTABLISHED

C:\>


八、nbtstat命oQ?br />nbtstat和netstat可以说都是Windows下的|络工?NBTSTAT命o:用于查看当前ZNETBIOS的TCP/IPq接状态,通过该工具你可以获得q程或本地机器的l名和机器名 。虽然用户用ipconfig工具可以准确地得C机的|卡地址Q我们通过在自׃|的机器上用nbtstat命oQ可以获取另一C|主机的|卡地址和用户名工作l等信息Q这些信息对入R臛_重要?/p>

  常用参数说明Q?br />  -a Remotename——说明使用q程计算机的名称列出其名U表Q此参数可以通过q程计算机的NetBios名来查看他的当前状态?br />  -A IP address——说明使用q程计算机的 IP 地址q列出名U表Q这个和-a不同的是是q个只能使用IPQ其?a包括了-A的功能了?br />  -c——列出q程计算机的NetBIOS 名称的缓存和每个名称?IP 地址 q个参数是用来列出在你的NetBIOS里缓存的你连接过的计机的IP?br />  -S—— 在客L和服务器会话表中只显CE计机的IP地址?/p>

使用-A参数获取Ҏ的工作组和用户名Q?br />C:\>nbtstat -A 192.168.0.14

本地q接:
Node IpAddress: [192.168.0.14] Scope Id: []

NetBIOS Remote Machine Name Table

Name Type Status
---------------------------------------------
HYSW <00> UNIQUE Registered
MSHOME <00> GROUP Registered
HYSW <20> UNIQUE Registered
MSHOME <1E> GROUP Registered
ROOT <03> UNIQUE Registered

MAC Address = 00-E0-4C-A3-F3-1C

昄为GROUP的前面的MSHOME是工作l,证明该机器是在MSHOME工作l里Q下面的<03>前面昄的ROOT是用户名了Q系l用户名为root。其它的一些参数可以自己去试Q或者查看相兛_助来掌握?/p>


九、tracert命oQ?br />tracert命o主要用来昄数据包到辄的主机所l过的\径,昄数据包经q的中节点清单和到达时间?br />该命令的使用格式Qtracert LIP地址或主机名
执行l果q回数据包到辄的主机前所历的中断站清单,q显C到达每个站的旉。该功能同ping命ocMQ但它所看到的信息要比ping命o详细得多Q它把你送出的到某一站点的请求包Q所走的全部路由均告诉你Qƈ且告诉你通过该\qIP是多,通过该IP的时延是多少?/p>

该命令参数有Q?br />-dQ不解析目标L的名U?
-hQ?maximum_hops 指定搜烦到目标地址的最大蟩跃数
-jQhost_list 按照L列表中的地址释放源\?
-wQtimeout 指定时旉间隔Q程序默认的旉单位是毫U?/p>

使用tracert命o可以很好的连接和目标L的连接通道Q一般ؓ下一不的入R或者测试获得详l的|络信息打好基础Q例如中途经q多次信息中{Q每ơ经q一个中转站时花费了多长旉。通过q些旉Q我们可以很方便地查出用户主Z目标|站之间的线路到底是在什么地方出了故障等情况。如果我们在tracert命o后面加上一些参敎ͼq可以检到其他更详l的信息。例如用参敎ͼdQ可以指定程序在跟踪L的\径信息时Q同时也解析目标L的域名?
我们单的使用该命令来试到达www.baidu.com的时间和l过的IP地址Q?br />C:\>tracert www.baidu.com

Tracing route to www.baidu.com [202.108.250.228]
over a maximum of 30 hops:

1 <1 ms <1 ms <1 ms 192.168.0.1
2 1 ms <1 ms 1 ms 211.152.23.6
3 * 5 ms 3 ms 211.152.47.253
4 3 ms 3 ms 3 ms 210.78.156.66
5 3 ms 9 ms 4 ms 211.99.57.113
6 6 ms 5 ms 7 ms 202.108.250.228

Trace complete.

看信息我们知道我们通过?个IP节点和用的旉。第一个一般是我们的机器是从该IP出去的,W二个开始就是经q的路由Q最后一个当然就是我们的目的C。在入R中,如果你肯对这些地址层曾q查的话Q一定会有大收获啦?/p>


十、nslookup命oQ?br />nslookup命o的功能是查询一台机器的IP地址和其对应的域?通常它能监测|络中DNS服务器是否能正确实现域名解析?它的q行需要一台域名服务器来提供域名服务。如果用户已l设|好域名服务器,可以用q个命o查看不同L的IP地址对应的域名?br />该命令的一般格式ؓQnslookup [IP地址/域名] Q如果在本地Z使用nslookup命o来查?a >www.baidu.com的话Q执行后如下Q?br />C:\>nslookup www.baidu.com
Server: dns2000.ruc.edu.cn
Address: 202.112.112.100

Non-authoritative answer:
Name: www.baidu.com
Address: 202.108.250.228

或者可以先q入nslookup模式再输入要查找的[域名/IP]Q?/p>

C:\>nslookup
Default Server: dns2000.ruc.edu.cn
Address: 202.112.112.100

> www.baidu.com
Server: dns2000.ruc.edu.cn
Address: 202.112.112.100

Non-authoritative answer:
Name: www.baidu.com
Address: 202.108.250.228

>

如果要退命oQ输入exitq回车即可。别的一些强悍功能可以自己去摸烦Q或者查扄关的帮助?/p>


到此为止Q我们在NT下的基本常用的网l命令就介绍完毕Q当然还有一些命令,比如finger、arp、hostname、route、ftfp{命令我们就不做介绍了,如果q想q一步了解的话,h阅相关的帮助或者资料?/p>

q有一点,很多命o在NT和Unix/Liunx下的作用是差不多的,而且很多子命令和参数也是差不多的Q你学了以后完全可以举一反三Q学会更多的东西。当然我们学东西不是一朝一夕就可以的,而是在长期的学习和用中掌握的,所以希望你们学习的话能够把q写东西拿到实践中去Q那么就不会觉得q些命o很难了;如果q有一些更基础的命令,比如Copy,dir,md,echo,attrib{没有熟悉的话,我希望你们能够去阅读一些DOS命o入门之类的东西,或者去|上搜烦相关的东西,可以_学习|络安全很多时候都是在“命o提示W?#8221;那黑乎乎的界面下q行的,一些常用命令的掌握Q有助于你更好的学习?br />



liuliang 2012-05-04 12:20 发表评论
]]>
Oracle修改旉?ORA-01830: 日期格式囄在{换整个输入字W串之前l束的解军_?/title><link>http://www.tkk7.com/397879213/archive/2012/05/04/341925.html</link><dc:creator>liuliang</dc:creator><author>liuliang</author><pubDate>Fri, 04 May 2012 01:41:00 GMT</pubDate><guid>http://www.tkk7.com/397879213/archive/2012/05/04/341925.html</guid><wfw:comment>http://www.tkk7.com/397879213/comments/341925.html</wfw:comment><comments>http://www.tkk7.com/397879213/archive/2012/05/04/341925.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/397879213/comments/commentRss/341925.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/397879213/services/trackbacks/341925.html</trackback:ping><description><![CDATA[<p>1、错误原因: <br />datecd不能包含U以后的_ֺ?<br />如日期:2010-01-01 20:02:20.0 </p> <p>解决ҎQ将日期U以后的_ֺ去除 <br />如日期:2010-01-01 20:02:20</p> <p>2、INSERT INTO TEST2 (C1, C2,c3) VALUES (${v1},${v2},to_date(${v3},'yyyy-mm-dd'));<br />oracle里面不需要以“Q?#8221;l尾?/p> <p><br />3、修Ҏ据库日期格式Q?br />alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'</p> <p>q个命o的适用范围Q是修改当前SESSIONQ另外这不能修改W三方工L日期格式Q如QPL/SQL DEVELOPER需要在Tools->Preferences->User Interface->Date/Time下修Ҏ式即可,W三方工L日期格式在工具内部自己去讄Q我估计你也应该在第三方工具下才会看到这L效果Q一般默认情况下ORACLE默认的日期格式不是这L?/p> <p>在默认的sqlplus或者sqlplusw下或者程序编写过E中Q执行该命o后,如果是同一个session是肯定会产生你要的效果?/p> <p>如果要将整体的数据库U别默认格式Ҏ需要修改参数文Ӟq启数据库才可以,但是q个也改不掉你第三方工具的显C格式,W三方工具只能在工具内部LQ它只能Ҏ默认的日期格式,W三方工具都是{换后的;但是很多时候容易被工具所忽悠Q给人的感觉是数据库就是这样存储的Q其实存储的只有日期格式Q没有YYYYMMq些东西Q这些东襉K是通过法计算出来的结果,然后Ҏ格式要求q行对应的格式化l看到的q样的效果而已?/p> <p><br />4、INSERT INTO TEST2 (C1, C2,c3) VALUES ('1',1,to_date('2010-12-27 00:00:00','yyyy-mm-dd'))  不可?br />INSERT INTO TEST2 (C1, C2,c3) VALUES (1,1,to_date('2010-12-27 00:00:00','yyyy-mm-dd hh24:mi:ss'))  可以<br />to_date是类型{换,不是格式转换Q字W串和后面的格式要匹配;to_char才是转成对应格式Q?/p> <p><br />oracle日期格式ȝ在oracle中处理日期大?/p> <p>TO_DATE格式 <br />Day: <br />dd number 12 <br />dy abbreviated fri <br />day spelled out friday <br />ddspth spelled out, ordinal twelfth <br />Month: <br />mm number 03 <br />mon abbreviated mar <br />month spelled out march <br />Year: <br />yy two digits 98 <br />yyyy four digits 1998</p> <p>24时格式下时间范围ؓQ?0:00:00 - 23:59:59.... <br />12时格式下时间范围ؓQ?1:00:00 - 12:59:59 .... <br />1. <br />日期和字W{换函数用法(to_date,to_charQ?/p> <p>2. <br />select to_char( to_date(222,'J'),'Jsp') from dual</p> <p>昄Two Hundred Twenty-Two</p> <p>3. <br />求某天是星期?<br />select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual; <br />星期一 <br />select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; <br />monday <br />讄日期语言 <br />ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN'; <br />也可以这?<br />TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American')</p> <p>4. <br />两个日期间的天数 <br />select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;</p> <p>5. 旉为null的用?<br />select id, active_date from table1 <br />UNION <br />select 1, TO_DATE(null) from dual;</p> <p>注意要用TO_DATE(null)</p> <p>6. <br />a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd') <br />那么12?1号中?2点之后和12?L12点之前是不包含在q个范围之内的?<br />所以,当时间需要精的时候,觉得to_charq是必要?<br />7. 日期格式冲突问题 <br />输入的格式要看你安装的ORACLE字符集的cd, 比如: US7ASCII, date格式的类型就? '01-Jan-01' <br />alter system set NLS_DATE_LANGUAGE = American <br />alter session set NLS_DATE_LANGUAGE = American <br />或者在to_date中写 <br />select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; <br />注意我这只是举了NLS_DATE_LANGUAGEQ当然还有很多, <br />可查?<br />select * from nls_session_parameters <br />select * from V$NLS_PARAMETERS</p> <p>8. <br />select count(*) <br />from ( select rownum-1 rnum <br />from all_objects <br />where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002- <br />02-01','yyyy-mm-dd')+1 <br />) <br />where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' ) <br />not <br />in ( '1', '7' )</p> <p>查找2002-02-28?002-02-01间除星期一和七的天?<br />在前后分别调用DBMS_UTILITY.GET_TIME, 让后结果相?得到的是1/100U? 而不是毫U?.</p> <p>9. <br />select months_between(to_date('01-31-1999','MM-DD-YYYY'), <br />to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL; <br />1</p> <p>select months_between(to_date('02-01-1999','MM-DD-YYYY'), <br />to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;</p> <p>1.03225806451613 <br />10. Next_day的用?<br />Next_day(date, day)</p> <p>Monday-Sunday, for format code DAY <br />Mon-Sun, for format code DY <br />1-7, for format code D</p> <p>11 <br />select to_char(sysdate,'hh:mi:ss') TIME from all_objects <br />注意Q第一条记录的TIME 与最后一行是一L <br />可以建立一个函数来处理q个问题 <br />create or replace function sys_date return date is <br />begin <br />return sysdate; <br />end;</p> <p>select to_char(sys_date,'hh:mi:ss') from all_objects; <br />12. <br />获得时?/p> <p>SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 2:38:40') from offer <br />SQL> select sysdate ,to_char(sysdate,'hh') from dual;</p> <p>SYSDATE TO_CHAR(SYSDATE,'HH') <br />-------------------- --------------------- <br />2003-10-13 19:35:21 07</p> <p>SQL> select sysdate ,to_char(sysdate,'hh24') from dual;</p> <p>SYSDATE TO_CHAR(SYSDATE,'HH24') <br />-------------------- ----------------------- <br />2003-10-13 19:35:21 19</p> <p>获取q月日与此类?<br />13. <br />q月日的处理 <br />select older_date, <br />newer_date, <br />years, <br />months, <br />abs( <br />trunc( <br />newer_date- <br />add_months( older_date,years*12+months ) <br />) <br />) days <br />from ( select <br />trunc(months_between( newer_date, older_date )/12) YEARS, <br />mod(trunc(months_between( newer_date, older_date )), <br />12 ) MONTHS, <br />newer_date, <br />older_date <br />from ( select hiredate older_date, <br />add_months(hiredate,rownum)+rownum newer_date <br />from emp ) <br />)</p> <p>14. <br />处理月䆾天数不定的办?<br />select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual</p> <p>16. <br />扑և今年的天?<br />select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual</p> <p>闰年的处理方?<br />to_char( last_day( to_date('02' || :year,'mmyyyy') ), 'dd' ) <br />如果?8׃是闰q?/p> <p>17. <br />yyyy与rrrr的区?<br />'YYYY99 TO_C <br />------- ---- <br />yyyy 99 0099 <br />rrrr 99 1999 <br />yyyy 01 0001 <br />rrrr 01 2001</p> <p>18.不同时区的处?<br />select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate <br />from dual;</p> <p>19. <br />5U钟一个间?<br />Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS') <br />from dual</p> <p>2002-11-1 9:55:00 35786 <br />SSSSS表示5位秒?/p> <p>20. <br />一q的W几?<br />select TO_CHAR(SYSDATE,'DDD'),sysdate from dual <br />310 2002-11-6 10:03:51</p> <p>21.计算时,?U?毫秒 <br />select <br />Days, <br />A, <br />TRUNC(A*24) Hours, <br />TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes, <br />TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds, <br />TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds <br />from <br />( <br />select <br />trunc(sysdate) Days, <br />sysdate - trunc(sysdate) A <br />from dual <br />)</p> <p><br />select * from tabname <br />order by decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss');</p> <p>// <br />floor((date2-date1) /365) 作ؓq?<br />floor((date2-date1, 365) /30) 作ؓ?<br />mod(mod(date2-date1, 365), 30)作ؓ? <br />23.next_day函数 <br />next_day(sysdate,6)是从当前开始下一个星期五。后面的数字是从星期日开始算赗?<br />1 2 3 4 5 6 7 <br />?一 ?????/p> <p><br />oracle中有很多关于日期的函?/p> <p>在oracle中有很多关于日期的函敎ͼ如: <br />1、add_months()用于从一个日期值增加或减少一些月?<br />date_value:=add_months(date_value,number_of_months) <br />例: <br />SQL> select add_months(sysdate,12) "Next Year" from dual;</p> <p>Next Year <br />---------- <br />13-11?04</p> <p>SQL> select add_months(sysdate,112) "Last Year" from dual;</p> <p>Last Year <br />---------- <br />13-3?-13</p> <p>SQL></p> <p>2、current_date()q回当前会放时区中的当前日期 <br />date_value:=current_date <br />SQL> column sessiontimezone for a15 <br />SQL> select sessiontimezone,current_date from dual;</p> <p>SESSIONTIMEZONE CURRENT_DA <br />--------------- ---------- <br />+08:00 13-11?03</p> <p>SQL> alter session set time_zone='-11:00' <br />2 /</p> <p>会话已更攏V?/p> <p>SQL> select sessiontimezone,current_timestamp from dual;</p> <p>SESSIONTIMEZONE CURRENT_TIMESTAMP <br />--------------- ------------------------------------ <br />-11:00 12-11?03 04.59.13.668000 下午 -11: <br />00</p> <p>SQL></p> <p>3、current_timestamp()以timestamp with time zone数据cdq回当前会放时区中的当前日期 <br />timestamp_with_time_zone_value:=current_timestamp([timestamp_precision]) <br />SQL> column sessiontimezone for a15 <br />SQL> column current_timestamp format a36 <br />SQL> select sessiontimezone,current_timestamp from dual;</p> <p>SESSIONTIMEZONE CURRENT_TIMESTAMP <br />--------------- ------------------------------------ <br />+08:00 13-11?03 11.56.28.160000 上午 +08: <br />00</p> <p>SQL> alter session set time_zone='-11:00' <br />2 /</p> <p>会话已更攏V?/p> <p>SQL> select sessiontimezone,current_timestamp from dual;</p> <p>SESSIONTIMEZONE CURRENT_TIMESTAMP <br />--------------- ------------------------------------ <br />-11:00 12-11?03 04.58.00.243000 下午 -11: <br />00</p> <p>SQL></p> <p>4、dbtimezone()q回时区 <br />varchar_value:=dbtimezone <br />SQL> select dbtimezone from dual;</p> <p>DBTIME <br />------ <br />-07:00</p> <p>SQL></p> <p>5、extract()扑և日期或间隔值的字段?<br />date_value:=extract(date_field from [datetime_value|interval_value]) <br />SQL> select extract(month from sysdate) "This Month" from dual;</p> <p>This Month <br />---------- <br />11</p> <p>SQL> select extract(year from add_months(sysdate,36)) "3 Years Out" from dual;</p> <p>3 Years Out <br />----------- <br />2006</p> <p>SQL></p> <p>6、last_day()q回包含了日期参数的月䆾的最后一天的日期 <br />date_value:=last_day(date_value) <br />SQL> select last_day(date'2000-02-01') "Leap Yr?" from dual;</p> <p>Leap Yr? <br />---------- <br />29-2?-00</p> <p>SQL> select last_day(sysdate) "Last day of this month" from dual;</p> <p>Last day o <br />---------- <br />30-11?03</p> <p>SQL></p> <p>7、localtimestamp()q回会话中的日期和时?<br />timestamp_value:=localtimestamp <br />SQL> column localtimestamp format a28 <br />SQL> select localtimestamp from dual;</p> <p>LOCALTIMESTAMP <br />---------------------------- <br />13-11?03 12.09.15.433000 <br />下午</p> <p>SQL> select localtimestamp,current_timestamp from dual;</p> <p>LOCALTIMESTAMP CURRENT_TIMESTAMP <br />---------------------------- ------------------------------------ <br />13-11?03 12.09.31.006000 13-11?03 12.09.31.006000 下午 +08: <br />下午 00</p> <p>SQL> alter session set time_zone='-11:00';</p> <p>会话已更攏V?/p> <p>SQL> select localtimestamp,to_char(sysdate,'DD-MM-YYYY HH:MI:SS AM') "SYSDATE" from dual;</p> <p>LOCALTIMESTAMP SYSDATE <br />---------------------------- ------------------------ <br />12-11?03 05.11.31.259000 13-11-2003 12:11:31 下午 <br />下午</p> <p>SQL></p> <p>8、months_between()判断两个日期之间的月份数?<br />number_value:=months_between(date_value,date_value) <br />SQL> select months_between(sysdate,date'1971-05-18') from dual;</p> <p>MONTHS_BETWEEN(SYSDATE,DATE'1971-05-18') <br />---------------------------------------- <br />389.855143</p> <p>SQL> select months_between(sysdate,date'2001-01-01') from dual;</p> <p>MONTHS_BETWEEN(SYSDATE,DATE'2001-01-01') <br />---------------------------------------- <br />34.4035409</p> <p>SQL></p> <p>9、next_day()l定一个日期|q回q二个参数指出的日子第一ơ出现在的日期|应返回相应日子的名称字符Ԍ</p> <p>與周盔R日期函數</p> <p>1.查询某周的第一?br />select trunc(decode(ww, 53, to_date(yy || '3112', 'yyyyddmm'), to_date(yy || '-' || to_char(ww * 7), 'yyyy-ddd')), 'd') last_day<br />from (select substr('2004-32', 1, 4) yy, to_number(substr('2004-32', 6)) ww<br />from dual)</p> <p>select trunc(to_date(substr('2003-01',1,5)||to_char((to_number(substr('2003-01',6)))*7),'yyyy-ddd'),'d')-6 first_day from dual</p> <p>select min(v_date) from<br />(select (to_date('200201','yyyymm') + rownum) v_date<br />from all_tables<br />where rownum < 370)<br />where to_char(v_date,'yyyy-iw') = '2002-49'</p> <p>2.查询某周的最后一?br />select trunc(decode(ww, 53, to_date(yy || '3112', 'yyyyddmm'), to_date(yy || '-' || to_char(ww * 7), 'yyyy-ddd')), 'd') - 6 first_day<br />from (select substr('2004-33', 1, 4) yy, to_number(substr('2004-33', 6)) ww<br />from dual)</p> <p>select trunc(to_date(substr('2003-01',1,5)||to_char((to_number(substr('2003-01',6)))*7),'yyyy-ddd'),'d') last_day from dual</p> <p>select max(v_date) from<br />(select (to_date('200408','yyyymm') + rownum) v_date<br />from all_tables<br />where rownum < 370)<br />where to_char(v_date,'yyyy-iw') = '2004-33'</p> <p>3.查询某周的日?br />select min_date, to_char(min_date,'day') day from<br />(select to_date(substr('2004-33',1,4)||'001'+rownum-1,'yyyyddd') min_date <br />from all_tables<br />where rownum <= decode(mod(to_number(substr('2004-33',1,4)),4),0,366,365) <br />union</p> <p>select to_date(substr('2004-33',1,4)-1||<br />decode(mod(to_number(substr('2004-33',1,4))-1,4),0,359,358)+rownum,'yyyyddd') min_date <br />from all_tables <br />where rownum <= 7<br />union</p> <p>select to_date(substr('2004-33',1,4)+1||'001'+rownum-1,'yyyyddd') min_date <br />from all_tables <br />where rownum <= 7 <br />)<br />where to_char(min_date,'yyyy-iw') ='2004-33'</p> <p><br />oracle中时间运?/p> <p>论坛中常常看到有对oracle中时间运提问的问题Q今天有旉Q看了看以前各位兄弟的脓子,整理了一下,q作了个CZQ希望会对大家有帮助?<br />首先感谢ern、eric.li及各版主q有热心的兄弟们</p> <p>内容如下Q?<br />1、oracle支持Ҏ期进行运?<br />2、日期运时是以天ؓ单位q行?<br />3、当需要以分秒{更的单位值时Q按旉q制q行转换卛_ <br />4、进行时间进制{换时注意加括P见示例中U色括号Q,否则会出问题</p> <p>SQL> alter session set nls_date_format='yyyy-mm-dd hh:mi:ss';</p> <p>会话已更攏V?/p> <p>SQL> set serverout on <br />SQL> declare <br />2 DateValue date; <br />3 begin <br />4 select sysdate into DateValue from dual; <br />5 dbms_output.put_line('源时?'||to_char(DateValue)); <br />6 dbms_output.put_line('源时间减1?'||to_char(DateValue-1)); <br />7 dbms_output.put_line('源时间减1?时:'||to_char(DateValue-1-1/24)); <br />8 dbms_output.put_line('源时间减1?时1?'||to_char(DateValue-1-1/24-1/(24*60))); <br />9 dbms_output.put_line('源时间减1?时1?U?'||to_char(DateValue-1-1/24-1/(24*60)-1/(24*60*6 <br />0))); <br />10 end; <br />11 / <br />源时?2003-12-29 11:53:41 <br />源时间减1?2003-12-28 11:53:41 <br />源时间减1?时:2003-12-28 10:53:41 <br />源时间减1?时1?2003-12-28 10:52:41 <br />源时间减1?时1?U?2003-12-28 10:52:40</p> <p>PL/SQL q程已成功完成?/p> <p> </p> <img src ="http://www.tkk7.com/397879213/aggbug/341925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/397879213/" target="_blank">liuliang</a> 2012-05-04 09:41 <a href="http://www.tkk7.com/397879213/archive/2012/05/04/341925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gxt的笔?http://www.tkk7.com/397879213/archive/2012/05/03/341927.htmlliuliangliuliangThu, 03 May 2012 10:05:00 GMThttp://www.tkk7.com/397879213/archive/2012/05/03/341927.htmlhttp://www.tkk7.com/397879213/comments/341927.htmlhttp://www.tkk7.com/397879213/archive/2012/05/03/341927.html#Feedback0http://www.tkk7.com/397879213/comments/commentRss/341927.htmlhttp://www.tkk7.com/397879213/services/trackbacks/341927.html 


2、grid列自动羃放:            
    grid.setStripeRows (true); grid.setAutoExpandColumn ("info"); 
    grid.setAutoExpandMin (
80); 
    grid.getView ().setForceFit (
true); 

 

3、对于tab面Q要想grid列宽度自适应的话q要加一下条Ӟ
    messagePanel.setLayoutData (new FitLayout()); 
    loggerTab 
= new TabItem ("pȝ日志");
    loggerTab.setLayoutData (
new FitLayout()); 
    loggerTab.setLayoutOnChange (
true); 
    loggerTab.add (getLoggerPanel ()); 
    messagePanel.add (loggerTab); 
         而且不能讄动宽度?

 

4、布局不v作用Q可能是setLayout写成了setLayoutDataQ?br />

 

5、gxt里面量用boederlayout布局Q那栯适应较强Q?br />

 

6、所有远E对象承下面类Q可以和spring集成Q?
 1public abstract class BaseAction extends RemoteServiceServlet implements
 2        Controller, ServletContextAware, ServletConfigAware, BeanNameAware {
 3    private ServletContext servletContext;
 4    private String controllerName;
 5
 6    /** * Gets ServletContext. */
 7    @Override
 8    public ServletContext getServletContext() {
 9        return servletContext;
10    }

11
12    /* 
13     * * (non-Javadoc) * * @see *
14     * org.springframework.beans.factory.BeanNameAware#setBeanName (java.lang *
15     * .String)
16     */

17    @Override
18    public void setBeanName(String controllerName) {
19        this.controllerName = controllerName;
20    }

21
22    /** * Implementation of ServletContextAware. */
23    public void setServletContext(ServletContext servletContext) {
24        this.servletContext = servletContext;
25    }

26
27    public String getServletName() {
28        return "DispatcherServlet name is "
29                + this.servletConfig.getServletName()
30                + ", GwtController name is:" + controllerName;
31    }

32
33    private ServletConfig servletConfig;
34
35    @Override
36    public void setServletConfig(ServletConfig servletConfig) {
37        this.servletConfig = servletConfig;
38    }

39
40    /**
41     * * Handles request and delegates to GWT's *
42     * RemoteServiceServlet.doPost(request, response).
43     * */

44    public ModelAndView handleRequest(HttpServletRequest request,
45            HttpServletResponse response) throws Exception {
46        try {
47            doPost(request, response);
48            return null;
49        }
 catch (Exception e) {
50            return null;
51        }

52    }

53
54}

7、servlet里面推数据至gxt前台Q?br />后台Q?br />    
1RemoteEventServiceServlet ress = new RemoteEventServiceServlet () { }
2UploadEvent event = new UploadEvent (source);
3 ress.addEvent (UploadEvent.FILEREADING_SERVER_DOMAIN_MESSAGE, event); 
4

 RemoteEventServiceServlet ress = new RemoteEventServiceServlet () { }; UploadEvent event = new UploadEvent (source); ress.addEvent (UploadEvent.FILEREADING_SERVER_DOMAIN_MESSAGE, event);
前台Q?br /> // 启动监听?
 1RemoteEventService theRemoteEventService = RemoteEventServiceFactory.getInstance ().getRemoteEventService (); 
 2    theRemoteEventService.addListener (UploadEvent.UPLOAD_SERVER_DOMAIN_INBOUND, 
 3            new RemoteEventListener () 
 4    
 5        public void apply (de.novanic.eventservice.client.event.Event anEvent)
 6        
 7            if (anEvent instanceof UploadEvent) 
 8            
 9                UploadEvent te = (UploadEvent) anEvent; 
10                sourceTemplate = te.getSource ();
11                fileText.setValue (te.getResultMessage ());
12                }
 
13            }
 
14    }
); 


liuliang 2012-05-03 18:05 发表评论
]]>
Java~码规范 http://www.tkk7.com/397879213/archive/2009/02/15/254768.htmlliuliangliuliangSun, 15 Feb 2009 08:21:00 GMThttp://www.tkk7.com/397879213/archive/2009/02/15/254768.htmlhttp://www.tkk7.com/397879213/comments/254768.htmlhttp://www.tkk7.com/397879213/archive/2009/02/15/254768.html#Feedback0http://www.tkk7.com/397879213/comments/commentRss/254768.htmlhttp://www.tkk7.com/397879213/services/trackbacks/254768.html 
 
作者:酷页 来源QInterNet 加入旉Q?003-7-24   
 
 
  1. Java 命名U定
 
除了以下几个特例之外Q命名时应始l采用完整的英文描述W。此外,一般应采用写字母Q但cd、接口名以及M非初始单词的W一个字母要大写?
  
  1.1 一般概?
 
n 量使用完整的英文描q符
n 采用适用于相关领域的术语
n 采用大小写؜合名字可读
n 量用~写Q但如果用了Q要明智C用,且在整个工程中统一
n 避免使用长的名字Q小?15 个字母是个好LQ?
n 避免使用cM的名字,或者仅仅是大小写不同的名字
n 避免使用下划U(除静态常量等Q?
 
  1.2 C
 
包(PackageQ?采用完整的英文描q符Q应该都是由写字母l成。对于全局包,你?Internet 域名反{q接上包名?java.awt,com.ambysoft.www.persistence
c(ClassQ?采用完整的英文描q符Q所有单词的W一个字母大写?Customer, SavingsAccount
接口QInterfaceQ?采用完整的英文描q符说明接口装Q所有单词的W一个字母大写。习惯上Q名字后面加上后~ ableQ?ible 或?erQ但q不是必需的?Contactable,Prompter
lg/部gQComponentQ?使用完整的英文描q来说明lg的用途,末端应接上组件类型?okButton, customerList,fileMenu
异常QExceptionQ?通常采用字母 e 表示异常?e  
cd?字段采用完整的英文描qͼW一个字母小写,M中间单词的首字母大写?firstName, lastName
实参/参数 同字D?属性的命名规则 public void setFirstName(String firstName){ this.firstName = firstName;}
局部变?同字D?属性的命名规则  
获取成员函数 被访问字D名的前面加上前~ get?getFirstName(), getLastName()
布尔型的获取成员函数 所有的布尔型获取函数必ȝ单词 is 做前~?isPersistent(), isString()
讄成员函数 被访问字D名的前面加上前~ set?setFirstName(), setLastName(),setWarpSpeed()
普通成员函?采用完整的英文描q说明成员函数功能,W一个单词尽可能采用一个生动的动词Q第一个字母小写?openFile(), addAccount()
静态常量字D(static finalQ?全部采用大写字母Q单词之间用下划U分隔?MIN_BALANCE, DEFAULT_DATE
循环计数?通常采用字母 iQjQk 或?counter 都可以接受?i, j, k, counter
数组 数组应该L用下面的方式来命名:objectType[]?byte[] buffer;
 
 
 
  2. Java 注释U定
 
一个很好的可遵循的有关注释的经验法则是Q问问你自己Q你如果从未见过q段代码Q要在合理的旉内有效地明白q段代码Q你需要哪些信息?
 
  2.1. 一般概?
 
n 注释应该增加代码的清晰度
n 保持注释的简z?
n 在写代码之前写注?
n 注释Zؓ什么做了一些事Q而不仅仅是做了什?
2.2. C
文档注释 在紧靠接口、类、成员函数和字段声明的前面注释它们?/** 客户Q客h我们服务和产品卖给的h或机构?/
C 语言风格 采用 C 语言风格的注释去掉不再用但你仍想保留的代码。仍想保留是因ؓ用户万一会改变想法,或者在调试q程中想让它暂时失效?/* q部分代码因为已被它之前的代码取代,?B.Gustafsson, ?1999 q?6 ?4 日注释掉。如果两q之后还未用,其删除? . . Q源代码Q?/
单行 在成员函数内采用单行注释Q来说明业务逻辑、代码段和暂时变量的声明。注释符"http://"后必ȝ跟一个空|然后才是注释信息?// 늅 Sarek 的规定,l所?/ 过 $1000 的发货单// ?5% 的折扣。让利活// 动于 1995q?2 月开?
2.3. 注释哪些部分
c?cȝ目的、即cL完成的功能,注释出采用的不变量?
接口 讄接口的目的、它应如何被使用以及如何不被使用?
成员函数注释 对于讄与获取成员函敎ͼ在成员变量已有说明的情况下,可以不加注释Q普通成员函数要求说明完成什么功能,参数含义是什么返回什么;  
普通成员函数内部注?控制l构Q代码做了些什么以及ؓ什么这样做Q处理顺序等?
实参/参数 参数含义、及其它MU束或前提条?
字段/属?字段描述
局部变?无特别意义的情况下不加注?
 
 
 
  3. Java 文g样式U定
 
所有的 Java(*.java) 文g都必遵守如下的样式规则Q?
1) 版权信息  
版权信息必须?java 文g的开_比如Q? 
/** * Copyright ? 2000 Shanghai XXX Co. Ltd. * All right reserved. */
其他不需要出现在 javadoc 的信息也可以包含在这里?
2) Package/Imports  
package 行要?import 行之前,import 中标准的包名要在本地的包名之前,而且按照字母序排列。如?import 行中包含了同一个包中的不同子目录,则应该用 * 来处理? 
package hotlava.net.stats;import java.io.*;import java.util.Observable;import hotlava.util.Application;
q里 java.io.* 是用来代替InputStream and OutputStream 的?
3) Class  
接下来的是类的注释,一般是用来解释cȝ? 
/** * A class representing a set of packet and byte counters * It is observable to allow it to be watched, but only * reports changes when the current set is complete */
接下来是cd义,包含了在不同的行?extends ?implements  
public class CounterSet extends Observable implements Cloneable{……}
4) Class Fields  
接下来是cȝ成员变量Q? 
/** * Packet counters */protected int[] packets;
public 的成员变量必ȝ成文(JavaDocQ。proceted、private?package 定义的成员变量如果名字含义明的话,可以没有注释?
5) 存取ҎQ类的设|与获取成员函数Q?
接下来是cd量的存取的方法。它只是单的用来类的变量赋D取值的话,可以单的写在一行上Q如cȝ成员变量已经有注释,cd量的存取Ҏ可以没有注释?
public int[] getPackets() { return this.packets; }public void setPackets(int[] packets) { this.packets = packets; }…?
要求说明的是Q对于集合,加入成员函数来插入和删除;另其它的Ҏ不要写在一行上?
6) 构造函? 
接下来是构造函敎ͼ它应该用递增的方式写Q比如:参数多的写在后面Q? 
public CounterSet(int size){ this.size = size;}
7) 克隆Ҏ  
如果q个cL可以被克隆的Q那么下一步就?clone ҎQ? 
public Object clone() { try { …?}catch(CloneNotSupportedException e) { …?}}
8) cL?Q类的普通成员函敎ͼ
下面开始写cȝҎQ?
/** * Set the packet counters * param r1 - …?* param r2 - …?* …?*/protected final void setArray(int[] r1, int[] r2, int[] r3, int[] r4) throws IllegalArgumentException{ // Ensure the arrays are of equal size ……}
9) toString Ҏ  
一般情况下Q每一个类都应该定?toString ҎQ? 
public String toString() { ……}
10) main Ҏ  
普通类Q考虑|入一个main()ҎQ其中包含用于测试那个类的代码,如果包含了main() Ҏ, 那么它应该写在类的底部?
 
 
 
  4. Java~码其它U定
 
n 文? 
必须?javadoc 来ؓcȝ成文。不仅因为它是标准,q也是被各种 java ~译器都认可的方法。?@author 标记是不被推荐的Q因Z码不应该是被个h拥有的? 
n ~进  
~进应该是每?个空根{?不要在源文g中保存Tab字符Q?在用不同的源代码管理工hTab字符因为用戯|的不同而扩展ؓ不同的宽度? 
如果你?UltrEdit 作ؓ你的 Java 源代码编辑器的话Q你可以通过如下操作来禁止保存Tab字符Q?Ҏ是通过 UltrEdit中先讑֮ Tab 使用的长度室2个空|然后?Format|Tabs to Spaces 菜单?Tab 转换为空根{? 
n 宽  
宽应该讄?0字符?源代码一般不会超q这个宽度, q导致无法完整显C, 但这一讄也可以灵z调整?在Q何情况下Q?长的语句应该在一个逗号或者一个操作符后折行?一条语句折行后Q?应该比原来的语句再羃q?个字W?
n {} ? 
{} 中的语句应该单独作ؓ一行?例如Q?下面的第1行是错误的, W?行是正确?  
if (i>0) { i ++ }; // 错误, { ?} 在同一?if (i>0) { i ++ }; // 正确, 单独作ؓ一? 
n 括号  
左括号和后一个字W之间不应该出现I格Q?同样Q?x号和前一个字W之间也不应该出现空根{?下面的例子说明括号和I格的错误及正确使用:  
CallProc( AParameter ); // 错误  
CallProc(AParameter); // 正确  
不要在语句中使用无意义的括号Q括号只应该到某U目的而出现在源代码中?
n JSP文g命名
采用完整的英文描q说明JSP所完成的功能,可能包括一个生动的动词Q第一个字母小写,如:viewMessage.jsp、editUser.jsp或者forumChooser.jsp{?
n Servletcd?
一般对应于所服务的对象加后缀Service来命名,如:UserServiceQTradeService{?
 
 
 
  5. 一些编E徏?
 
n 使用 StringBuffer 对象  
在处?String 的时候要量使用 StringBuffer c,StringBuffer cL构成 String cȝ基础。String cd StringBuffer cd装了hQ(以花Ҏ多时间ؓ代hQؓ开发h员提供了一个安全的接口。当我们在构造字W串的时候,我们应该?StringBuffer 来实现大部分的工作,当工作完成后?StringBuffer 对象再{换ؓ需要的 String 对象。比如:如果有一个字W串必须不断地在其后d许多字符来完成构造,那么我们应该使用 StringBuffer 对象和它?append() Ҏ。如果我们用 String 对象代替 StringBuffer 对象的话Q会p许多不必要的创徏和释攑֯象的 CPU 旉?
n 避免太多的?synchronized 关键? 
避免不必要的使用关键?synchronizedQ应该在必要的时候再使用它,q是一个避免死锁的好方法?必须使用Ӟ也尽量控制范_最好在块控制?
n 避免使用 java.util.Vector c?
因ؓ"Unlike the new collection implementations, Vector is synchronized."Q所以用java.util.Vectorcd性能上会有所减低?
n 量使用接口而不是一个具体的c?
比方如下需求,l定一个SQL语句Q返回一个对象的列表Q实C用java.util.ArrayList实现Q于是定义方法ؓQ?
public java.util.ArrayList getObjectItems(String sql)
上面的方法存在一个问题,当getObjectItems内改用Vector或LinkedList实现Q外部类必须做相应更攏V一个更好的Ҏ是定义返回gؓjava.util.AbstractList更合适:
public java.util.AbstractList getObjectItems(String sql)
q样即更改实现Q外部类也不必做相应更改?
n 避免使用索引来调用数据库中间层组件返回的l果?
如:
for(int i=1; i<=dt.getRowCount(); i++){ String field1 = dt.getField(i, 0).toString(); ……}
而应用字D名来存取结果集Q?
for(int i=1; i<=dt.getRowCount(); i++){ String field1 = dt.getField(i, "field1").toString(); ……}
q样在数据库设计更改或查询的SQL语句发生变化Ӟ不会影响到程序的执行?
 
 



liuliang 2009-02-15 16:21 发表评论
]]>
关于Java23U设计模式的有趣见解http://www.tkk7.com/397879213/archive/2009/02/15/254767.htmlliuliangliuliangSun, 15 Feb 2009 08:20:00 GMThttp://www.tkk7.com/397879213/archive/2009/02/15/254767.htmlhttp://www.tkk7.com/397879213/comments/254767.htmlhttp://www.tkk7.com/397879213/archive/2009/02/15/254767.html#Feedback0http://www.tkk7.com/397879213/comments/commentRss/254767.htmlhttp://www.tkk7.com/397879213/services/trackbacks/254767.html
创徏型模?br />
 
 
1、FACTORY—追MM不了请吃饭了,麦当劳的鸡翅和肯德基的鸡都是MM爱吃的东西,虽然口味有所不同Q但不管你带MM去麦当劳或肯德基Q只向服务员说“来四个鸡翅”就行了。麦当劳和肯德基是生鸡翅的Factory

  工厂模式Q客L和工厂类分开。消费者Q何时候需要某U品,只需向工厂请求即可。消费者无M改就可以接纳C品。缺Ҏ当品修ҎQ工厂类也要做相应的修改。如Q如何创建及如何向客L提供?br />
 
  
2?BUILDER—MM最爱听的就是“我׃”这句话了,见到不同地方的MM,要能够用她们的方a跟她说这句话哦,我有一个多U语a译机,上面每种语言都有一个按键,见到MM我只要按对应的键Q它p够用相应的语a说出“我׃”这句话了,国外的MM也可以轻松搞掂,q就是我的“我׃”builder?(q一定比军在伊拉克用的译机好?

  建造模式:品的内部表象和品的生成q程分割开来,从而一个徏造过E生成具有不同的内部表象的品对象。徏造模式得品内部表象可以独立的变化Q客户不必知道品内部组成的l节。徏造模式可以强制实行一U分步骤q行的徏造过E?br />
  
 
3、FACTORY METHOD—请MM去麦当劳吃汉堡,不同的MM有不同的口味Q要每个都记住是一件烦人的事情Q我一般采用Factory Method模式Q带着MM到服务员那儿Q说“要一个汉堡”,具体要什么样的汉堡呢Q让MM直接跟服务员说就行了?br />
  工厂Ҏ模式Q核心工厂类不再负责所有品的创徏Q而是具体创建的工作交给子类dQ成Z个抽象工厂角Ԍ仅负责给出具体工厂类必须实现的接口,而不接触哪一个品类应当被实例化q种l节?br />
  
 
4、PROTOTYPE—跟MM用QQ聊天Q一定要说些深情的话语了Q我搜集了好多肉ȝ情话Q需要时只要copy出来攑ֈQQ里面p了,q就是我的情话prototype了?100块钱一份,你要不要)

  原始模型模式Q通过l出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的Ҏ创徏出更多同cd的对象。原始模型模式允许动态的增加或减品类Q品类不需要非得有M事先定的等U结构,原始模型模式适用于Q何的{l构。缺Ҏ每一个类都必配备一个克隆方法?br />
  
 
5、SINGLETON—俺?个漂亮的老婆Q她们的老公都是我,我就是我们家里的老公SigletonQ她们只要说道“老公”,都是指的同一个hQ那是?刚才做了个梦啦,哪有q么好的?

  单例模式Q单例模式确保某一个类只有一个实例,而且自行实例化ƈ向整个系l提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用?br />
  l构型模?br />
  
 
6、ADAPTER—在朋友聚会上碰C一个美女SarahQ从香港来的Q可我不会说_语Q她不会说普通话Q只好求助于我的朋友kent了,他作为我和Sarah之间的AdapterQ让我和Sarah可以怺交谈?也不知道他会不会耍我)

  适配?变压?模式Q把一个类的接口变换成客户端所期待的另一U接口,从而原本因接口原因不匚w而无法一起工作的两个c能够一起工作。适配cd以根据参数返q一个合适的实例l客L?br />
  
 
7、BRIDGE—早上碰到MMQ要说早上好Q晚上碰到MMQ要说晚上好;到MMI了件新服Q要说你的衣服好漂亮哦,到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这U问题,自己用BRIDGEl合一下不p?br />
  桥梁模式Q将抽象化与实现化脱耦,使得二者可以独立的变化Q也是说将他们之间的强兌变成弱关联,也就是指在一个Y件系l的抽象化和实现化之间用组?聚合关系而不是承关p,从而两者可以独立的变化?
 


8?COMPOSITE—Mary今天q生日。“我q生日,你要送我一件礼物。”“嗯Q好吧,d店,你自己挑。”“这件T恤挺漂亮Q买Q这条裙子好看,乎ͼq个包也不错Q买。”“喂Q买了三件了呀Q我只答应送一件礼物的哦。”“什么呀QT恤加裙子加包包,正好配成一套呀Q小姐,ȝ你包h。”“……”, MM都会用Composite模式了,你会了没?

合成模式Q合成模式将对象l织到树l构中,可以用来描述整体与部分的关系。合成模式就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树l构表示出来。合成模式得客L把一个个单独的成分对象和׃们复合而成的合成对象同{看待?br />
  
 
9?DECORATOR—Maryq完轮到Sarlyq生日,q是不要叫她自己挑了Q不然这个月伙食费肯定玩完,拿出我去q在华山上照的照片Q在背面写上 “最好的的礼物,是׃的Fita”,再到街上C品店买了个像框(卖礼品的MM也很漂亮?Q再N壁搞术设计的Mike设计了一个漂亮的盒子装v来……,我们都是DecoratorQ最l都在修饰我q个人呀Q怎么P看懂了吗?

  装饰模式Q装饰模式以对客L透明的方式扩展对象的功能Q是l承关系的一个替代方案,提供比承更多的灉|性。动态给一个对象增加功能,q些功能可以再动态的撤消。增加由一些基本功能的排列l合而生的非常大量的功能?br />
  
 
10?FACADE—我有一个专业的Nikon相机Q我喜Ƣ自己手动调光圈、快门,q样照出来的照片才专业,但MM可不懂这些,教了半天也不会。幸好相机有 Facade设计模式Q把相机调整到自动Q只要对准目标按快门p了,一切由相机自动调整Q这样MM也可以用q个相机l我拍张照片了?br />
  门面模式Q外部与一个子pȝ的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系l更易于使用。每一个子pȝ只有一个门面类Q而且此门面类只有一个实例,也就是说它是一个单例模式。但整个pȝ可以有多个门面类?br />
  
 
11?FLYWEIGHT—每天跟MM发短信,手指都篏MQ最q买了个新手机,可以把一些常用的句子存在手机里,要用的时候,直接拿出来,在前面加上MM的名字就可以发送了Q再不用一个字一个字敲了。共享的句子是FlyweightQMM的名字就是提取出来的外部特征Q根据上下文情况使用?br />
  享元模式Q?FLYWEIGHT在拳L赛中指最轻量U。n元模式以׃n的方式高效的支持大量的细_度对象。n元模式能做到׃n的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部Q不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能媄响内蕴状态,它们是相互独立的。将可以׃n的状态和不可以共享的状态从常规cM区分开来,不可以׃n的状态从c里剔除出去。客L不可以直接创׃n的对象,而应当用一个工厂对象负责创׃n的对象。n元模式大q度的降低内存中对象的数量?br />
  
 
12、PROXY—跟MM在网上聊天,一开头L“hi,你好?“你从哪儿来呀?”“你多大?”“n高多呀?”这些话Q真烦hQ写个程序做为我的Proxy吧,凡是接收到这些话都设|好了自动的回答Q接收到其他的话时再通知我回{,怎么P酷吧?br />
  代理模式Q代理模式给某一个对象提供一个代理对象,q由代理对象控制Ҏ对象的引用。代理就是一个h或一个机构代表另一个h或者一个机构采取行动。某些情况下Q客户不x者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客L分L不出代理主题对象与真实主题对象。代理模式可以ƈ不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,q时候代理对象不能够创徏被代理对象,被代理对象必Lpȝ的其他角色代为创建ƈ传入?br />
  行ؓ模式

  
 
13?CHAIN OF RESPONSIBLEITY—晚上去上英语课Qؓ了好开溜坐C最后一排,哇,前面坐了好几个漂亮的MM哎,扑ּU条Q写上“Hi,可以做我的女朋友?如果不愿意请向前传”,U条׃个接一个的传上MQ糟p,传到W一排的MM把纸条传l老师了,听说是个老处奛_Q快?

  责Q链模式:在责任链模式中,很多对象由每一个对象对其下家的引用而接h形成一条链。请求在q个链上传递,直到链上的某一个对象决定处理此h。客户ƈ不知道链上的哪一个对象最l处理这个请求,pȝ可以在不影响客户端的情况下动态的重新l织铑֒分配责Q。处理者有两个选择Q承担责L者把责Q推给下家。一个请求可以最l不被Q何接收端对象所接受?br />
  
 
14?COMMAND—俺有一个MM安得特别严,没法见面Q只好借助于她弟弟在我们俩之间传送信息,她对我有什么指C,写一张纸条让她弟弟带l我。这不,她弟弟又传送过来一个COMMANDQؓ了感谢他Q我请他吃了杂酱面Q哪知道他说Q“我同时l我姐姐三个h友送COMMANDQ就C最气Q才h吃面。”,:-(

  命o模式Q命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命o的责d执行命o的责d割开Q委z不同的对象。命令模式允许请求的一方和发送的一方独立开来,使得h的一方不必知道接收请求的一方的接口Q更不必知道h是怎么被接Ӟ以及操作是否执行Q何时被执行以及是怎么被执行的。系l支持命令的撤消?br />
  
 
15、INTERPRETER—俺有一个《MM真经》,上面有各UMM的攻略,比如说去吃西的步骤、去看电qҎ{等Q跟MMU会Ӟ只要做一个InterpreterQ照着上面的脚本执行就可以了?br />
解释器模式:l定一个语a后,解释器模式可以定义出其文法的一U表C,q同时提供一个解释器。客L可以使用q个解释器来解释q个语言中的句子。解释器模式描q怎样在有了一个简单的文法后,使用模式设计解释q些语句。在解释器模式里面提到的语言是指M解释器对象能够解释的Ml合。在解释器模式中需要定义一个代表文法的命ocȝ{l构Q也是一pd的组合规则。每一个命令对象都有一个解释方法,代表对命令对象的解释。命令对象的{l构中的对象的Q何排列组合都是一个语a?br />
  
 
16、ITERATOR—我׃了MaryQ不一切的向她求婚?br />
  MaryQ“想要我跟你l婚Q得{应我的条g?br />
  我:“什么条件我都答应,你说吧?br />
  MaryQ“我看上了那个一克拉的钻石?br />
  我:“我乎ͼ我买Q还有吗??br />
  MaryQ“我看上了湖边的那栋别墅?br />
  我:“我乎ͼ我买Q还有吗??br />
  MaryQ“你的小弟弟必须要有50cm镎?br />
  我脑袋嗡的一壎ͼ坐在椅子上,一咬牙Q“我剪,我剪Q还有吗??br />
  …?br />
  q代子模式:q代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起Ş成的MUC集,聚集对象是能够包容一l对象的容器对象。P代子模式P代逻辑装C个独立的子对象中Q从而与聚集本n隔开。P代子模式化了聚集的界面。每一个聚集对象都可以有一个或一个以上的q代子对象,每一个P代子的P代状态可以是彼此独立的。P代算法可以独立于聚集角色变化?br />
  
 
17、MEDIATOR—四个MM打麻,怺之间谁应该给谁多钱不清楚了,q怺当时我在旁边Q按照各自的{码数算钱,赚了q从我q里拿,赔了q也付l我Q一切就OK啦,俺得C四个MM的电话?br />
  调停者模式:调停者模式包装了一pd对象怺作用的方式,使得q些对象不必怺明显作用。从而他们可以松散偶合。当某些对象之间的作用发生改变时Q不会立卛_响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的怺作用转化Z对多的相互作用。调停者模式将对象的行为和协作抽象化,把对象在尺度的行ؓ上与其他对象的相互作用分开处理?br />
  
 
18、MEMENTO—同时跟几个MM聊天Ӟ一定要记清楚刚才跟MM说了些什么话Q不然MM发现了会不高兴的哦,q怺我有个备忘录Q刚才与哪个MM说了什么话我都拯一份放到备忘录里面保存Q这样可以随时察看以前的记录啦?br />
备忘录模式:备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏装的条件下Q将一个对象的状态捉住,q外部化Q存储v来,从而可以在来合适的时候把q个对象q原到存储v来的状态?
 


  19、OBSERVER—想知道׃公司最新MM情报?加入公司的MM情报邮gl就行了Qtom负责搜集情报Q他发现的新情报不用一个一个通知我们Q直接发布给邮gl,我们作ؓ订阅?观察?可以及时收到情报啦

  观察者模式:观察者模式定义了一U一队多的依赖关p,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化Ӟ会通知所有观察者对象,使他们能够自动更新自己?br />
  
 
20?STATE—跟MM交往Ӟ一定要注意她的状态哦Q在不同的状态时她的行ؓ会有不同Q比如你U她今天晚上ȝ电媄Q对你没兴趣的MM׃说“有事情啦”,对你不讨厌但q没喜欢上的MM׃说“好啊,不过可以带上我同事么?”,已经喜欢上你的MM׃说“几炚w?看完电媄再去泡吧怎么?”,当然你看电媄q程中表现良好的话,也可以把MM的状态从不讨厌不喜欢变成喜欢哦?br />
  状态模式:状态模式允怸个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变了它的类一栗状态模式把所研究的对象的行ؓ包装在不同的状态对象里Q每一个状态对象都属于一个抽象状态类的一个子cR状态模式的意图是让一个对象在其内部状态改变的时候,其行Z随之改变。状态模式需要对每一个系l可能取得的状态创立一个状态类的子cR当pȝ的状态变化时Q系l便改变所选的子类?br />
  
 
21、STRATEGY—跟不同cd的MMU会Q要用不同的{略Q有的请电媄比较好,有的则去吃小吃效果不错,有的LvҎ漫最合适,单目的都是ؓ了得到MM的芳心,我的qMM锦囊中有好多Strategy哦?br />
  {略模式Q策略模式针对一l算法,每一个算法封装到h共同接口的独立的cMQ从而得它们可以相互替换。策略模式得算法可以在不媄响到客户端的情况下发生变化。策略模式把行ؓ和环境分开。环境类负责l持和查询行为类Q各U算法在具体的策略类中提供。由于算法和环境独立开来,法的增减,修改都不会媄响到环境和客L?br />
  
 
22?TEMPLATE METHOD——看q《如何说服女生上床》这部经典文章吗?女生从认识到上床的不变的步骤分ؓ巧遇、打破僵局、展开q求、接吅R前戏、动手、爱抚、进d大步?Template method)Q但每个步骤针对不同的情况,都有不一L做法Q这p看你随机应变?具体实现);

  模板Ҏ模式Q模板方法模式准备一个抽象类Q将部分逻辑以具体方法以及具体构造子的Ş式实玎ͼ然后声明一些抽象方法来q子类实现剩余的逻辑。不同的子类可以以不同的方式实现q些抽象ҎQ从而对剩余的逻辑有不同的实现。先制定一个顶U逻辑框架Q而将逻辑的细节留l具体的子类d现?br />
  
 
23?VISITOR—情CQ要l每个MM送一束鲜花和一张卡片,可是每个MM送的花都要针对她个h的特点,每张卡片也要Ҏ个h的特Ҏ挑,我一个h哪搞得清楚,q是找花店老板和礼品店老板做一下VisitorQ让花店老板ҎMM的特炚w一束花Q让C品店老板也根据每个h特点选一张卡Q这样就L多了;

  讉K者模式:讉K者模式的目的是封装一些施加于某种数据l构元素之上的操作。一旦这些操作需要修改的话,接受q个操作的数据结构可以保持不变。访问者模式适用于数据结构相Ҏ定的pȝQ它把数据结构和作用于结构上的操作之间的耦合解脱开Q得操作集合可以相对自q演化。访问者模式得增加新的操作变的很ҎQ就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象中Q而不是分散到一个个的节点类中。当使用讉K者模式时Q要尽可能多的对象览逻辑攑֜讉K者类中,而不是放到它的子cM。访问者模式可以跨q几个类的等U结构访问属于不同的{l构的成员类?br />


liuliang 2009-02-15 16:20 发表评论
]]>
JAVA面试题集http://www.tkk7.com/397879213/archive/2009/02/15/254766.htmlliuliangliuliangSun, 15 Feb 2009 08:19:00 GMThttp://www.tkk7.com/397879213/archive/2009/02/15/254766.htmlhttp://www.tkk7.com/397879213/comments/254766.htmlhttp://www.tkk7.com/397879213/archive/2009/02/15/254766.html#Feedback0http://www.tkk7.com/397879213/comments/commentRss/254766.htmlhttp://www.tkk7.com/397879213/services/trackbacks/254766.html阅读全文

liuliang 2009-02-15 16:19 发表评论
]]>
javaW记http://www.tkk7.com/397879213/archive/2009/02/15/254759.htmlliuliangliuliangSun, 15 Feb 2009 07:33:00 GMThttp://www.tkk7.com/397879213/archive/2009/02/15/254759.htmlhttp://www.tkk7.com/397879213/comments/254759.htmlhttp://www.tkk7.com/397879213/archive/2009/02/15/254759.html#Feedback0http://www.tkk7.com/397879213/comments/commentRss/254759.htmlhttp://www.tkk7.com/397879213/services/trackbacks/254759.html阅读全文

liuliang 2009-02-15 15:33 发表评论
]]>
xml2http://www.tkk7.com/397879213/archive/2009/02/15/254754.htmlliuliangliuliangSun, 15 Feb 2009 07:16:00 GMThttp://www.tkk7.com/397879213/archive/2009/02/15/254754.htmlhttp://www.tkk7.com/397879213/comments/254754.htmlhttp://www.tkk7.com/397879213/archive/2009/02/15/254754.html#Feedback0http://www.tkk7.com/397879213/comments/commentRss/254754.htmlhttp://www.tkk7.com/397879213/services/trackbacks/254754.html     Xml是可扩展性标记语a(eXtendsible Markup Language)的羃写?
    所谓标讎ͼ是指一pd的特许的字符W号Q可以通过向其中插入文本来存储文的内宏V?
    它是不同技术之间数据交换的基石?
 
* xml与html的区别:
    > Xml是一中标记语aQ这意味着xml文档都是使用标记来存储数据和信息的?
    >> 一个规范的html文完全可以被看做xml文?
    >> xml的可扩展性体现在其标记可由开发者自行定义?
    >> xml文更接q于数据库,它ƈ不存储数据的表现形式?
 
    > html是一门编E语aQ它可以被解析工P如IE览器)处理Q?
        q将信息以某U格式显C出来?
    >> html注重的是数据的表现Ş式?
 
    HTML׃已定义标记的有限性,在很多领域已l抓襟见肘了?
    而xml可扩展性很好的弥补了HTML的缺陗?
 
* xml主要应用于一下几个方面:
    1.数据交换
    2.跨^台应用开?
    3.数据转换
    4.数据库:xml完全可以作ؓ一个小型数据库来用?
    5.配置文gQ尤其是在Java开源框架中Q如strutsQhibernateQspring{?
        都是用xml文档作ؓ配置文g?
 
* xml语法Q?
一.文档cd的声明:
    <?xml version="1.0"?>
    该语句是xml文cd的声明,表示该文是一个xml文g?
    version="1.0"表示该xml文的版本是1.0的?
 
说明Q?
    w3c虽然已经提供了xml1.1的版本的推荐标准Q但q未被广泛的普及和应用?
    最主要原因是说明了1.1版本不能完全向后兼容xml1.0版本?
    因ؓxml的应用非常广泛,所以在无法做到很好兼容的情况下Q?
    使用xml1.1来代替xml1.0是不可取的?
 
1.文档~码Qxml的字W被设计Z用Unicode~码?
    > xml文档的默认编码ؓUTF-8,Ʋ改变xml的字W编码,应适用encoding属性?
    > 具体讄Q?lt;?xml version="1.0" encoding="ISO-8859-1"?>
 
2.文档的独立性:xml文的外部关联一般用外部实体或应用了外部DTD文g?
 
3.注意的问题:
    a) xml文cd的声明ƈ不是处理命oQ虽然其形式和处理指令非常相伹{?
    b) 字符?xml"和字W串"<?"之间不能留有I格?
    c) 文档cd的声明可以不出现在xml文中,
       如果出现Q则一定要出现在xml文的第一行第一列?
 
二。文注释:
    xml的文档注释以<!--开_?->l束Q中间ؓ注释的内宏V?
 
注意的问题:
    1.文注释中可以包含Q何特D的字符?
    2.文注释必须?->l束
 
三。元素:元素是指标签及包含在标签内部的内宏V?
> 元素的命名要遵@以下规则Q?
    1.元素名只能以字母或下划线开始,其后可以跟数字,字母和下划线的Q意组合?
    2.元素名不能以xml(Xml xMl......)开?
    3.元素名不能包含空?
    4.元素的开始标{与l束标签名称必须完全一_包括大小写一致?
 
> 根元素:
    >> 每个xml文元素有且只有一个根元素Q?
    >> 根元素是元素Q也是W一个元素)Q?
    >> 除处理指令和注释外,其余所有必d含在根元素当中?
 
> 元素的嵌套和元素的ƈ列:
    >> 元素嵌套是指一个元素完全包含在另一个元素中?
    >> 元素q列是指多个元素h相同的父元素?
    >> 在xml文中不允许元素的交叉用?
 
注意的问题:
    1.xml是大写敏感?
    2.文cd声明Q注释和文的处理指令都不是元素
    3.元素的开始标{֒l束标签必须成对出现?
 
四。属性:
    > 属性用于描q元素,所以属性必d现在元素的标{ֆ部?
    >> 属性g定要用引括号h?
    > 在属性赋值时所使用的双引号可以单引h代替?
    >> 两者在使用时ƈ无区别,但是当属性值含有双引号Ӟ
       则必M用单引号来进行属性赋|反之亦然?
 
使用属性还是子元素的区别:
    > 描叙一个元素的某个特征Ӟ使用子元素和属性都是可行的?
    > 属性相对与子元素的局限性:
        1.属性的扩展性差?
        2.每个元素中同名的属性只能出Cơ而同名的子元素可以出现多个?
        3.属性存储的数据量一旦过大,׃造成xml文档l构上的pQ?
        l阅读造成很大的不ѝ?
 
五:实体引用
C五种实体引用Q?
    1.&ampQ?-----------------&
    2.&lt;    ------------------<
    3.&gt;    ------------------>
    4.&apos;------------------'
    5.&quot;------------------"
 
六。CDATA的语?
    > CDATA的全UCؓ字符数据QCharacter DataQ,
    > 其语法规则:<![CDATA[comment]]>Q其?lt;![为开始符Q]]>为结束符Q?
    > 包含在其中的全部字符都被处理器视为普通字W?
 
注意的问题:
    1.CDATAD不可嵌套,而且没有嵌套的必要?
    2.当需要将大块的文本内容填充到元素中时Q比较适合用CDATA部g?
 
七。xml中的DTD
          > DTD实际上可以看做一个或多个xml文g的模板,
      > q些xml文g中的元素Q元素属性,元素的排列方式、顺序,
        元素能够包含的内容等Q都必须W合DTD中的定义?
      > DTD可以是一个完全独立的文gQ也可以是在xml文g中直接设定?
        所以DTD分ؓ外部DTD和内部DTD.
 
内部DTDQ?
    内部DTD是在xml文g中的文g序言区域中定义的?
    语法Q?
    <!DOCTYPE elementname[
        ............
    ]>
    说明Q?
    <!DOCTYPE :    表示开始设定DTD
    elementsname:    制定此DTD的根元素名称
    [..........]:    在[]标记里面定义xml文g使用的元素,然后?gt;l束DTD定义
 
    在DTD定义的中间元素设定,是DTD的最主要部分Q其语法如下Q?
    <!ELEMENT elementname elementdifinition>
     
    内容模式QANY,EMPTY,MIXED,子元?
    元素:
        ? 不出现或只出C?
        * 不出现或可以出现多次
        + 必须出现一ơ以?
        无符?只能出现一?
 
    <!ATTLIST 元素?属性名 属性类?~省cd>
    属性类型:10U?nbsp;  ~省cdQ?U:Qrequired  #implied #fix 字符?
 
八。命名空?br /> 语法Qxmlns:prefix="uri"
 
    > uri是一个虚拟的I间Q不一定是实实在在存在的?
    >
命名I间用来解决同名标签的问?

    > 命名I间对属性不起作用,只表明标{ֱ于哪个命名空?
 
 
十。如何书写xml文
    a) 首先要书写xml文的类型声?
    b) 然后d一个注释以标注开发者的信息Q开发时间等?
    c) 接着为xml文定义一个根元素?
    d) 再接着d二元素Q三U元素?
以上只是书写xml的一般步骤,其中元素的嵌套和属性依附是最关键的步骤?br />

liuliang 2009-02-15 15:16 发表评论
]]>
XMLhttp://www.tkk7.com/397879213/archive/2009/02/15/254753.htmlliuliangliuliangSun, 15 Feb 2009 07:14:00 GMThttp://www.tkk7.com/397879213/archive/2009/02/15/254753.htmlhttp://www.tkk7.com/397879213/comments/254753.htmlhttp://www.tkk7.com/397879213/archive/2009/02/15/254753.html#Feedback0http://www.tkk7.com/397879213/comments/commentRss/254753.htmlhttp://www.tkk7.com/397879213/services/trackbacks/254753.html          
        用来定义XML文gQƈ利用该定义验证XML文g是否W合要求的一U技术?nbsp;

2:    Schema与DTD的区别:

        Q?Q:XML Schema是XML文档Q而DTD有自qҎ语法。这P只需要懂得XML的语法规则就可以~写SchemaQ无d习其他的语法规则Q?br />          
            XML文g与XML Schema文g可以用相同的解析器进行解
            析,无须两套解析器;XML Schema有强大、易用的扩展性?
 
        Q?Q:XML Schema利用命名I间文中的特D的节点与Schema说明相联p,
            一个XML文g可以有多个SchemaQ而对于DTD一个XML只能有一个相对应的DTD?
 
        Q?Q:XML Schema内容模型是开发的Q可以随意扩充,而DTD则无法解析扩充的内容?
 
        Q?Q:DTD只能把内容类型定义ؓ一个字W串Q而XML Schema允许把内容类型定义ؓ整Ş、Q点型、布型{等Q而无重定义?

    lgQXML Schema较DTD有着优势Q所以尽量把XML Schema作ؓ首选ؓ佟?br />
3Q?nbsp;   单语法D?br />      
    6U最常用的基本类?nbsp; String decimal(数) integer date time  boolean

 
    元素定义Q?lt;!xs:element name="" type="" default=""/fixed="">
     
 
    属性定义:<!xs:attribute name="" type="" default=""/fixed=""/use="required">
     
 
    注意QSchema中,属性声明于元素声明的唯一区别是"use"用于定义属性是否出现在实例文中?br />              
        required(必须存在)     optionalQ可存在也可不存在)   prohibitedQ必M存在Q?br />      

     
    元素定义分两U: simpleType与complexType
     
        simpleType:没有子元素的 只包含自q?定义了一个简单的元素或者属?nbsp;  
     
        complexType:由多个简单元素组?nbsp;   可以层层嵌套



1Q什么叫解析器:一些用来对XML文gq行解析的程序?

     
2Q解析方法D例:XML最基本的解析方式有两种Q分别是DOM和SAX

 
3Q下面分别对两种解析方式重点介绍Q?
 

SAX--Simple API for XML   API?org.xml.sax

     
    Z事g模型的处理方式,解释器发生事仉知应用E序
     
    当您使用 SAX 解析器来解析 XML 文档Ӟ解析器在文的不同处生事件?
    由您来决定对每个事g如何处理?br />      
    SAX 解析器会在以下情况下产生事gQ在文开始和l束Ӟ在一个元素开始和l束Ӟ或者它在一个元素中扑ֈ字符Ӟ以及其它若干炏V?br />  
    您可~写 Java 代码来处理每个事Ӟ以及如何处理从解析器获得的信息?
 


    如何使用SAX解析Q?
1)解析
    String xmlURI = "c:/test.xml";
    String vendorParserClass = "org.apache.xerces.parsers.SAXParser";
    XMLReaer reader = XMLReaderFactory.createXMLReader(vendorParserClass);
 
    InputSource inputSource = new InputSource(xmlURI);
    reader.parse(inputSource);
 
    q样一个xml文解析q程完成了。因为SAX是采用时间处理机制来解析XML
    文档的,在解析过E中会触发一些事Ӟ也就是执行特定的ҎQ你可以实现
    q些ҎQ就可以通过解析xml来做一些事情了
  2)处理
    SAX2.0定义的核心处理接口一共有
    org.xml.sax.ContentHandler
    org.xml.sax.ErrorHandler
    org.xml.sax.DTDHandler
    org.xml.sax.EntityResolver
    q些接口是通过
    org.xml.sax.XMLReader的setContentHandler(),setEroorHandler(),
    setDTDHandler(),setEntityHandler()注册到解析器Q这里面最重要的是
    org.xml.sax.ContentHandler接口Q它具体如下
    public interface ContentHandler{
        public void setDocumentLocator(Locator locator);
 public void startDocument() throws SAXException;
 public void endDocument() throws SAXException;
 public void startPrefixMapping(String prefix,String uri)
        throws SAXException;
 public void endPrefixMapping(String prifix)
        throws SAXException;
 public void startElement(String namespaceURI,String localName,
        String qName,Attributes atts) throws SAXException;
 public void endElement(String namespaceURI,String localName,
        String qName) throws SAXException;
 public void characters(char ch[],int start,int length)
        throws SAXException;
 public void ignorableWhitespace(char ch[],int start,int length)
        throws SAXException;
 public void processingInstruction(String target,String data)
        throws SAXException;
 public void skippedEntity(String name)
        throws SAXException;
    }
    通过setContentHandler()你实现的ContentHandler注册lXMLReader之后Q?
    在解析过E中Q系l根据各U条件执行接口中的方法,下面单说明一?
    1)文档定位?
       private Locator locator;
 
       public void setDocumentLocator(Locator locator){
           this.locator = locator;
       }
 
       通常情况下,你只要如此实现就可以了,q个主要是得到当前解析的位置Q?
       通过得到的locatorQ你可以使用它的getLineNumber(),getColumnName(){?
       ҎQ可以得到文当前的位置Q但要注意的是,q个locator不能保存Q只
       针对当前的解析有?
    2)文的开头和l尾
      public void startDocument() throws SAXException{
         //解析q程中仅位于setDocumentLocator()Ҏ后调?
      }
      public void endDocument() throws SAXException{
         //解析q程中最后调?
      }
 
      大多数情况下你可以不用理他们Q只要写个空Ҏ可以了
    3)名字I间的开始和l束
      public void startPrefixMapping(String prefix,String uri)
      throws SAXException{
      }
      public void endPrefixMapping(String prifix)
      throws SAXException{
      }
    4)元素的开始和l束
      public void startElement(String namespaceURI,String localName,
      String qName,Attributes atts) throws SAXException{
      }
      public void endElement(String namespaceURI,String localName,
      String qName) throws SAXException{
      }
    5)元素的数?
      public void characters(char ch[],int start,int length)
      throws SAXException{
      String s = new String(ch,start,length);
      }
      q个是得到当前的元素的文本数?
    6)可以忽略的空?
      public void ignorableWhitespace(char ch[],int start,int length)
      throws SAXException{
      }
    7)实体
      public void skippedEntity(String name)
        throws SAXException{
      }
    8)指o处理
      public void processingInstruction(String target,String data)
      throws SAXException{
      }

Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q?br />

 
 
 
 
DOMQ-Q-API中的org.w3c.dom
Z树和节点的文对象模?br />
一U基于对象的APIQ?
    它把XML的内容加载到内存中,生成一个与XML文档对应的对象模型?

    解析完成Ӟ内存中会生成与XML文档l构对应的DOM对象树。我们根据树的结    构,以节点Ş式对文q行操作?br />

     
 
 
使用DOM解析ҎQ?
 

Q?Q得到DOM解析器的工厂实例
 
DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();
 
得到javax.xml.parsers.DocumentBuilderFactory;cȝ实例是我们要的解析器工?
 
Q?Q从DOM工厂获得DOM解析?
 
DocumentBuilder dombuilder=domfac.newDocumentBuilder();
 
通过javax.xml.parsers.DocumentBuilderFactory实例的静态方法newDocumentBuilder()得到DOM解析?
 
Q?Q把要解析的XML文转化入流Q以便DOM解析器解析它
 
InputStream is=new FileInputStream("/home/asd0809/abc.xml");
 
InputStream是一个接口?
 
Q?Q解析XML文档的输入流Q得C个Document
 
Document doc=dombuilder.parse(is);
 
由XML文档的输入流得到一个org.w3c.dom.Document对象Q以后的处理都是对Document对象q行?
 
Q?Q得到XML文档的根节点
 
Element root=doc.getDocumentElement();
 
在DOM中只有根节点是一个org.w3c.dom.Element对象?
 
Q?Q得到节点的子节?
 
NodeList books=root.getChildNodes();
 
for(int i=0;i<books.getLength();i++){
 
Node book=books.item(i);
 
}
 
q是用一个org.w3c.dom.NodeList接口来存攑֮所有子节点的,q有一U轮循子节点的方法,后面有介l?
 
Q?Q取得节点的属性?
 
String email=book.getAttributes().getNamedItem("email").getNodeValue();
 
System.out.println(email);
 
注意Q节点的属性也是它的子节点。它的节点类型也是Node.ELEMENT_NODE
 
Q?Q轮循子节点
 
for(Node node=book.getFirstChild();node!=null;node=node.getNextSibling()){
 
if(node.getNodeType()==Node.ELEMENT_NODE){
 
if(node.getNodeName().equals("name")){
String name=node.getNodeValue();
 
String name1=node.getFirstChild().getNodeValue();
 
System.out.println(name);
 
System.out.println(name1);
 
}
 
if(node.getNodeName().equals("price")){
 
String price=node.getFirstChild().getNodeValue();
 
System.out.println(price);
}
 
}
 
Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-Q-

 
4Q其它关于解析问?
   
何时使用 SAXQ何时?DOMQ?
        文本大用SAX  消耗内存大 Q?nbsp; 如果要来回读  要用DOM
     
    JAXP-------javax.xml.parser(sun公司的API 包含了上面两UAPI 是类不是接口  只是一个入?)Q-Q-Q统一接口Q默认解析器
其他公司的工具包
             
    JDOMQ基于DOMQ?br />          
    Dom4j(ZDOM)最行
         
    Apache Xerces(ZSAX)



liuliang 2009-02-15 15:14 发表评论
]]>
վ֩ģ壺 ƷƵѹۿ| ۺϵ| þúݺѹۿ2020| ˾þþƷС˵| 㽶Ƶ| ӰԺһ| ѸӰƬһ| 69Ƶ߹ۿ| ѳƵۿ| һһëƬ| avƬ߹ۿ| ޹պƷ| ޹avһؼ| ѾƵ߹ۿ| AרAV| һëƬֱ| Ʒ˸| ĻmvֻѸ| 222www߹ۿ| Ȱ׽һ| һƵۿ| Ʒþһ| AV뾫ƷëƬ| ޸һƷ| ˾Ʒۺں| ۺϾþ123| þþ97ɫ| ˳ɵӰ| ޾ƷӰۺ| AV˾Ʒ߹ۿ| ɫһ| һ| av2019| 97ۺɫ | պ޲ƵĻ߹ۿ| ޹˸߹ۿ | ޾Ʒվ| ѸƵ| һâ޵þ| AVƷһ| ɫ͵͵޹|