将Windows下的字体文件simsun.ttc拷贝到/usr/share/fonts/zh_CN,如果目录下本没有该目录,仅有/usr/share/fonts/zh_TW,创建该目录。
将JAVA_HOME/jre/lib/下fontconfig.*开头的文件全部删除或备份起来,改成如下的文件:

@(#)linux.fontconfig.Sun.properties 1.5 03/11/14

#

Copyright 2003 Sun Microsystems, Inc. All rights reserved.

#

Version

version=1

Component Font Mappings

allfonts.chinese-gbk=-misc-simsun-medium-r-normal–-%d---p--gbk-0
allfonts.chinese-gb2312=-misc-simsun-medium-r-normal–-%d---p--gb2312.1980-0
allfonts.chinese-cn-iso10646=-misc-simsun-medium-r-normal–-%d---p--iso10646-1
allfonts.chinese-big5=-misc-fzmingti-medium-r-normal–-%d---p--big5-0
allfonts.chinese-tw-iso10646=-misc-fzmingti-medium-r-normal–-%d---p--iso10646-1
allfonts.chinese-big5hkscs=-misc-fzheiti-medium-r-normal–-%d---p--big5hkscs-0
allfonts.lucida=-b&h-lucidasans-medium-r-normal-sans--%d---p--iso8859-1

serif.plain.japanese-x0201=-kochi-mincho-medium-r-normal–-%d---c--jisx0201.1976-0
serif.plain.japanese-x0208=-kochi-mincho-medium-r-normal–-%d---c--jisx0208.1983-0
serif.plain.korean=-hwan-baekmuk batang-medium-r-normal–-%d---p--ksc5601.1987-0
serif.plain.latin-1=-b&h-lucidabright-medium-r-normal–-%d---p--iso8859-1
serif.plain.latin-1.motif=-b&h-luxi serif-medium-r-normal–-%d---p--iso8859-1

serif.bold.japanese-x0201=-kochi-mincho-medium-r-normal–-%d---c--jisx0201.1976-0
serif.bold.japanese-x0208=-kochi-mincho-medium-r-normal–-%d---c--jisx0208.1983-0
serif.bold.korean=-hwan-baekmuk batang-medium-r-normal–-%d---p--ksc5601.1987-0
serif.bold.latin-1=-b&h-lucidabright-demibold-r-normal–-%d---p--iso8859-1
serif.bold.latin-1.motif=-b&h-luxi serif-bold-r-normal–-%d---p--iso8859-1

serif.italic.japanese-x0201=-kochi-mincho-medium-r-normal–-%d---c--jisx0201.1976-0
serif.italic.japanese-x0208=-kochi-mincho-medium-r-normal–-%d---c--jisx0208.1983-0
serif.italic.korean=-hwan-baekmuk batang-medium-r-normal–-%d---p--ksc5601.1987-0
serif.italic.latin-1=-b&h-lucidabright-medium-i-normal–-%d---p--iso8859-1
serif.italic.latin-1.motif=-b&h-luxi serif-medium-i-normal–-%d---p--iso8859-1

serif.bolditalic.japanese-x0201=-kochi-mincho-medium-r-normal–-%d---c--jisx0201.1976-0
serif.bolditalic.japanese-x0208=-kochi-mincho-medium-r-normal–-%d---c--jisx0208.1983-0
serif.bolditalic.korean=-hwan-baekmuk batang-medium-r-normal–-%d---p--ksc5601.1987-0
serif.bolditalic.latin-1=-b&h-lucidabright-demibold-i-normal–-%d---p--iso8859-1
serif.bolditalic.latin-1.motif=-b&h-luxi serif-bold-i-normal–-%d---p--iso8859-1

sansserif.plain.japanese-x0201=-kochi-gothic-medium-r-normal–-%d---c--jisx0201.1976-0
sansserif.plain.japanese-x0208=-kochi-gothic-medium-r-normal–-%d---c--jisx0208.1983-0
sansserif.plain.korean=-hwan-baekmuk gulim-medium-r-normal–-%d---p--ksc5601.1987-0
sansserif.plain.latin-1=-b&h-lucidasans-medium-r-normal-sans--%d---p--iso8859-1
sansserif.plain.latin-1.motif=-b&h-luxi sans-medium-r-normal–-%d---p--iso8859-1

sansserif.bold.japanese-x0201=-kochi-gothic-medium-r-normal–-%d---c--jisx0201.1976-0
sansserif.bold.japanese-x0208=-kochi-gothic-medium-r-normal–-%d---c--jisx0208.1983-0
sansserif.bold.korean=-hwan-baekmuk gulim-medium-r-normal–-%d---p--ksc5601.1987-0
sansserif.bold.latin-1=-b&h-lucidasans-bold-r-normal-sans--%d---p--iso8859-1
sansserif.bold.latin-1.motif=-b&h-luxi sans-bold-r-normal–-%d---p--iso8859-1

sansserif.italic.japanese-x0201=-kochi-gothic-medium-r-normal–-%d---c--jisx0201.1976-0
sansserif.italic.japanese-x0208=-kochi-gothic-medium-r-normal–-%d---c--jisx0208.1983-0
sansserif.italic.korean=-hwan-baekmuk gulim-medium-r-normal–-%d---p--ksc5601.1987-0
sansserif.italic.latin-1=-b&h-lucidasans-medium-i-normal-sans--%d---p--iso8859-1
sansserif.italic.latin-1.motif=-b&h-luxi sans-medium-i-normal–-%d---p--iso8859-1

sansserif.bolditalic.japanese-x0201=-kochi-gothic-medium-r-normal–-%d---c--jisx0201.1976-0
sansserif.bolditalic.japanese-x0208=-kochi-gothic-medium-r-normal–-%d---c--jisx0208.1983-0
sansserif.bolditalic.korean=-hwan-baekmuk gulim-medium-r-normal–-%d---p--ksc5601.1987-0
sansserif.bolditalic.latin-1=-b&h-lucidasans-bold-i-normal-sans--%d---p--iso8859-1
sansserif.bolditalic.latin-1.motif=-b&h-luxi sans-bold-i-normal–-%d---p--iso8859-1

monospaced.plain.japanese-x0201=-kochi-mincho-medium-r-normal–-%d---c--jisx0201.1976-0
monospaced.plain.japanese-x0208=-kochi-mincho-medium-r-normal–-%d---c--jisx0208.1983-0
monospaced.plain.korean=-hwan-baekmuk batang-medium-r-normal–-%d---p--ksc5601.1987-0
monospaced.plain.latin-1=-b&h-lucidatypewriter-medium-r-normal-sans--%d---m--iso8859-1
monospaced.plain.latin-1.motif=-b&h-luxi mono-medium-r-normal–-%d---m--iso8859-1

monospaced.bold.japanese-x0201=-kochi-mincho-medium-r-normal–-%d---c--jisx0201.1976-0
monospaced.bold.japanese-x0208=-kochi-mincho-medium-r-normal–-%d---c--jisx0208.1983-0
monospaced.bold.korean=-hwan-baekmuk batang-medium-r-normal–-%d---p--ksc5601.1987-0
monospaced.bold.latin-1=-b&h-lucidatypewriter-bold-r-normal-sans--%d---m--iso8859-1
monospaced.bold.latin-1.motif=-b&h-luxi mono-bold-r-normal–-%d---m--iso8859-1

monospaced.italic.japanese-x0201=-kochi-mincho-medium-r-normal–-%d---c--jisx0201.1976-0
monospaced.italic.japanese-x0208=-kochi-mincho-medium-r-normal–-%d---c--jisx0208.1983-0
monospaced.italic.korean=-hwan-baekmuk batang-medium-r-normal–-%d---p--ksc5601.1987-0
monospaced.italic.latin-1=-b&h-lucidatypewriter-medium-i-normal-sans--%d---m--iso8859-1
monospaced.italic.latin-1.motif=-b&h-luxi mono-medium-i-normal–-%d---m--iso8859-1

monospaced.bolditalic.japanese-x0201=-kochi-mincho-medium-r-normal–-%d---c--jisx0201.1976-0
monospaced.bolditalic.japanese-x0208=-kochi-mincho-medium-r-normal–-%d---c--jisx0208.1983-0
monospaced.bolditalic.korean=-hwan-baekmuk batang-medium-r-normal–-%d---p--ksc5601.1987-0
monospaced.bolditalic.latin-1=-b&h-lucidatypewriter-bold-i-normal-sans--%d---m--iso8859-1
monospaced.bolditalic.latin-1.motif=-b&h-luxi mono-bold-i-normal–-%d---m--iso8859-1

dialog.plain.japanese-x0201=-kochi-gothic-medium-r-normal–-%d---c--jisx0201.1976-0
dialog.plain.japanese-x0208=-kochi-gothic-medium-r-normal–-%d---c--jisx0208.1983-0
dialog.plain.korean=-hwan-baekmuk gulim-medium-r-normal–-%d---p--ksc5601.1987-0
dialog.plain.latin-1=-b&h-lucidasans-medium-r-normal-sans--%d---p--iso8859-1
dialog.plain.latin-1.motif=-b&h-luxi sans-medium-r-normal–-%d---p--iso8859-1

dialog.bold.japanese-x0201=-kochi-gothic-medium-r-normal–-%d---c--jisx0201.1976-0
dialog.bold.japanese-x0208=-kochi-gothic-medium-r-normal–-%d---c--jisx0208.1983-0
dialog.bold.korean=-hwan-baekmuk gulim-medium-r-normal–-%d---p--ksc5601.1987-0
dialog.bold.latin-1=-b&h-lucidasans-bold-r-normal-sans--%d---p--iso8859-1
dialog.bold.latin-1.motif=-b&h-luxi sans-bold-r-normal–-%d---p--iso8859-1

dialog.italic.japanese-x0201=-kochi-gothic-medium-r-normal–-%d---c--jisx0201.1976-0
dialog.italic.japanese-x0208=-kochi-gothic-medium-r-normal–-%d---c--jisx0208.1983-0
dialog.italic.korean=-hwan-baekmuk gulim-medium-r-normal–-%d---p--ksc5601.1987-0
dialog.italic.latin-1=-b&h-lucidasans-medium-i-normal-sans--%d---
p-
-iso8859-1
dialog.italic.latin-1.motif=-b&h-luxi sans-medium-i-normal–-%d---p--iso8859-1

dialog.bolditalic.japanese-x0201=-kochi-gothic-medium-r-normal–-%d---c--jisx0201.1976-0
dialog.bolditalic.japanese-x0208=-kochi-gothic-medium-r-normal–-%d---c--jisx0208.1983-0
dialog.bolditalic.korean=-hwan-baekmuk gulim-medium-r-normal–-%d---p--ksc5601.1987-0
dialog.bolditalic.latin-1=-b&h-lucidasans-bold-i-normal-sans--%d---p--iso8859-1
dialog.bolditalic.latin-1.motif=-b&h-luxi sans-bold-i-normal–-%d---p--iso8859-1

dialoginput.plain.japanese-x0201=-kochi-mincho-medium-r-normal–-%d---c--jisx0201.1976-0
dialoginput.plain.japanese-x0208=-kochi-mincho-medium-r-normal–-%d---c--jisx0208.1983-0
dialoginput.plain.korean=-hwan-baekmuk batang-medium-r-normal–-%d---p--ksc5601.1987-0
dialoginput.plain.latin-1=-b&h-lucidatypewriter-medium-r-normal-sans--%d---m--iso8859-1
dialoginput.plain.latin-1.motif=-b&h-luxi mono-medium-r-normal–-%d---m--iso8859-1

dialoginput.bold.japanese-x0201=-kochi-mincho-medium-r-normal–-%d---c--jisx0201.1976-0
dialoginput.bold.japanese-x0208=-kochi-mincho-medium-r-normal–-%d---c--jisx0208.1983-0
dialoginput.bold.korean=-hwan-baekmuk batang-medium-r-normal–-%d---p--ksc5601.1987-0
dialoginput.bold.latin-1=-b&h-lucidatypewriter-bold-r-normal-sans--%d---m--iso8859-1
dialoginput.bold.latin-1.motif=-b&h-luxi mono-bold-r-normal–-%d---m--iso8859-1

dialoginput.italic.japanese-x0201=-kochi-mincho-medium-r-normal–-%d---c--jisx0201.1976-0
dialoginput.italic.japanese-x0208=-kochi-mincho-medium-r-normal–-%d---c--jisx0208.1983-0
dialoginput.italic.korean=-hwan-baekmuk batang-medium-r-normal–-%d---p--ksc5601.1987-0
dialoginput.italic.latin-1=-b&h-lucidatypewriter-medium-i-normal-sans--%d---m--iso8859-1
dialoginput.italic.latin-1.motif=-b&h-luxi mono-medium-i-normal–-%d---m--iso8859-1

dialoginput.bolditalic.japanese-x0201=-kochi-mincho-medium-r-normal–-%d---c--jisx0201.1976-0
dialoginput.bolditalic.japanese-x0208=-kochi-mincho-medium-r-normal–-%d---c--jisx0208.1983-0
dialoginput.bolditalic.korean=-hwan-baekmuk batang-medium-r-normal–-%d---p--ksc5601.1987-0
dialoginput.bolditalic.latin-1=-b&h-lucidatypewriter-bold-i-normal-sans--%d---m--iso8859-1
dialoginput.bolditalic.latin-1.motif=-b&h-luxi mono-bold-i-normal–-%d---m--iso8859-1

Search Sequences

sequence.allfonts=latin-1
sequence.allfonts.Big5=latin-1,chinese-big5
sequence.allfonts.Big5-HKSCS=latin-1,chinese-big5hkscs
sequence.allfonts.GB18030=latin-1,chinese-gbk,chinese-cn-iso10646
sequence.allfonts.GBK=latin-1,chinese-gbk
sequence.allfonts.GB2312=latin-1,chinese-gb2312
sequence.allfonts.EUC-KR=latin-1,korean
sequence.allfonts.x-euc-jp-linux=latin-1,japanese-x0201,japanese-x0208
sequence.allfonts.UTF-8.ko.KR=latin-1,korean,japanese-x0208,japanese-x0201,chinese-gbk
sequence.allfonts.UTF-8.ja.JP=latin-1,japanese-x0208,japanese-x0201,chinese-gbk,korean
sequence.allfonts.UTF-8.zh.CN=latin-1,chinese-cn-iso10646,japanese-x0208,japanese-x0201,korean
sequence.allfonts.UTF-8.zh.TW=latin-1,chinese-tw-iso10646,japanese-x0208,japanese-x0201,korean
sequence.allfonts.UTF-8.zh.HK=latin-1,chinese-tw-iso10646,japanese-x0208,japanese-x0201,korean

sequence.fallback=lucida,chinese-big5,chinese-gbk,japanese-x0208,korean

Exclusion Ranges

exclusion.japanese-x0201=0390-03d6,2200-22ef,2701-27be
exclusion.japanese-x0208=0390-03d6,2200-22ef,2701-27be

Font File Names

filename.-misc-fzmingti-medium-r-normal–-%d---p--big5-0=/usr/share/fonts/zh_CN/ming_big5.ttf
filename.-misc-fzheiti-medium-r-normal–-%d---p--big5hkscs-0=/usr/share/fonts/zh_CN/ming_big5.ttf
filename.-misc-fzmingti-medium-r-normal–-%d---p--iso10646-1=/usr/share/fonts/zh_CN/ming_big5.ttf
filename.-misc-simsun-medium-r-normal–-%d---p--gbk-0=/usr/share/fonts/zh_CN/simsun.ttc
filename.-misc-simsun-medium-r-normal–-%d---p--gb2312.1980-0=/usr/share/fonts/zh_CN/simsun.ttc
filename.-misc-simsun-medium-r-normal–-%d---p--iso10646-1=/usr/share/fonts/zh_CN/simsun.ttc
filename.-hwan-baekmuk_batang-medium-r-normal–-%d---p--ksc5601.1987-0=/usr/share/fonts/zh_CN/batang.ttf
filename.-hwan-baekmuk_gulim-medium-r-normal–-%d---p--ksc5601.1987-0=/usr/share/fonts/zh_CN/gulim.ttf
filename.-kochi-gothic-medium-r-normal–-%d---c--jisx0208.1983-0=/usr/share/fonts/zh_CN/kochi-gothic.ttf
filename.-kochi-gothic-medium-r-normal–-%d---c--jisx0201.1976-0=/usr/share/fonts/zh_CN/kochi-gothic.ttf
filename.-kochi-mincho-medium-r-normal–-%d---c--jisx0208.1983-0=/usr/share/fonts/zh_CN/kochi-mincho.ttf
filename.-kochi-mincho-medium-r-normal–-%d---c--jisx0201.1976-0=/usr/share/fonts/zh_CN/kochi-mincho.ttf

AWT X11 font paths

awtfontpath.chinese-big5=/usr/share/fonts/zh_CN
awtfontpath.chinese-big5hkscs=/usr/share/fonts/zh_CN
awtfontpath.chinese-gb2312=/usr/share/fonts/zh_CN
awtfontpath.chinese-gbk=/usr/share/fonts/zh_CN
awtfontpath.chinese-chinese-cn-iso10646=/usr/share/fonts/zh_CN
awtfontpath.chinese-chinese-tw-iso10646=/usr/share/fonts/zh_CN
awtfontpath.japanese-x0201=/usr/share/fonts/zh_CN
awtfontpath.japanese-x0208=/usr/share/fonts/zh_CN
awtfontpath.korean=/usr/share/fonts/zh_CN

参考:http://www-128.ibm.com/developerworks/cn/websphere/library/techarticles/yangyaping0307/waslinux.html

Domino 自带的Http加Servlet容器都不是很好,不支持的东西太多,当需要Domino进行WEB开发的时候就需要外带一个Servlet容器,幸好Domino是支持外带Servlet的,这里就以Tomcat为例来介绍一下如何在Domino下外载一个Servlet容器

Windows

1. 需要TomcatJK for Windowsdsapi_redirector2

http://tomcat.apache.org/connectors-doc/

2. 解压dsapi_redirector2到制定目录,复制dsapi_redirector2.dlldomino程序目录下.

修改workers2.properties,在其中添加[uri]路径,以便JK能够读取,并可修改其中的一些配置,不过基本可以使用默认配置,并复制workers2.propertiesTomcat的配置目录(一般为conf)修改dsapi_redirector2.reg,:

serverRoot对应Tomcat的程序目录,

workersFile对应workers2.properties的存放位置,

tomcatStart对应tomcat的启动程序,

tomcatStop对应tomcat的关闭程序,

tomcatTimeout对应tomcat的异常关闭延迟时间

:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Dsapi Redirector\2.0]

"serverRoot"="D:\Works\Tomcat\jakarta-tomcat-4.1.27"

"workersFile"="conf\workers2.properties"

"tomcatStart"="bin\startup.bat"

"tomcatStop"="bin\shutdown.bat"

"tomcatTimeout"=&
quot;30000"

最后将dsapi_redirector2.reg注入注册表.

3. 复制Domino下的notes.jar,XML4J.jar\DATA\domino\java\NCSO.jarTomcatcommon\lib.复制log4jcommons pool的包到Tomcatcommon\lib

4. 启动Domino,修改服务器属性(names.nsf), internet协议-Http-DSAPI域中填入dsapi_redirector2.dll,并在Domino Web Engine选项中选择使用第三方Servlet”

5. 重新启动Domino,Tomcat就会随即一起启动了.

Linux

1. 需要TomcatJK for Lunix20040506-domino-redirector-2.0.6-bin-linux-i386

http://tomcat.apache.org/connectors-doc/

2. 解压dsapi_redirector2到制定目录,复制libtomcat2.sodomino程序目录下(libnotes.so文件同目录)由于Linux的安全性,需要对libnotes.so进行权限配置,应与libnotes.so文件权限一样.

修改workers2.properties,在其中添加[uri]路径,以便JK能够读取,并可修改其中的一些配置,不过基本可以使用默认配置,并复制workers2.propertiesTomcat的配置目录(一般为conf)

修改libtomcat2.properies:

serverRoot对应Tomcat的程序目录,

workersFile对应workers2.properties的存放位置,

tomcatStart对应tomcat的启动程序,

tomcatStop对应tomcat的关闭程序,

tomcatTimeout对应tomcat的异常关闭延迟时间

:

serverRoot=/usr/local/apache/tomcat

workersFile=conf/workers2.properties

tomcatStart=bin/startup.sh

tomcatStop=bin/shutdown.sh

tomcatTimeout=30000

最后将libtomcat2.properies复制到Domino的数据目录下(/opt/lotus/notesdata),同样需要文件权限配置.

3. 复制Domino下的notes.jar,XML4J.jar\DATA\domino\java\NCSO.jarTomcatcommon\lib.复制log4jcommons pool的包到Tomcatcommon\lib

4. 启动Domino,修改服务器属性(names.nsf), internet协议-Http-DSAPI域中填入tomcat2,并在Domino Web Engine选项中选择使用第三方Servlet”

5. 重新启动Domino,Tomcat就会随即一起启动了.

工作了,不能用心的游戏了,就写点东西,也好怀念怀念。

自从买了PS2后,真真正正用心玩的就是Metal Gear Solid 3了,一开始只是抱着玩玩的态度,因为对Metal Gear Solid 2的印象不是太好。。Metal Gear Solid 2游戏性不是太好。。太过电影化了,而Metal Gear Solid 3 则做到了很好的平衡,玩上之后便欲罢不能,紧凑的剧情,鲜明的人物性格,一步步的将我带入冷战那个残酷的时代。

http://canyousee.blogbus.com/files/1161133693.jpg

big boss在Metal Gear Solid 3中与boss的初次相会

http://lh5.google.com/pigdogyourmother/RTQ81b4TABI/AAAAAAAAADM/lTH67AojUeY/2562829662950549874.jpg?imgmax=912

http://lh3.google.com/pigdogyourmother/RTRygFOWABI/AAAAAAAAADU/GosFgGWm4E0/0.jpgSnake 就是后来的Big Boss

http://lh5.google.com/pigdogyourmother/RTRy4_iRABI/AAAAAAAAADc/iEkaaSTefiE/u%3D3877967581%2C413250985%26gp%3D1.jpgBoss 真正的爱国者,却被自己所爱的国家给放弃

http://lh5.google.com/pigdogyourmother/RTRzfaPHABI/AAAAAAAAADk/l_LakOYoZAg/2005010300012282.jpgEVA 据说是中国的间谍

西风狂诗曲。。或许西风狂诗曲并不是一个很好的游戏,而我在这里将它写出来说明它还是有它的优点的。那就是它的剧情,1代的基督山复仇记 2代的王子复仇记 以及正传《创世纪战》的悲哀的剧情,都让人影响深刻。。。尤其是创世纪战1中的当深爱哥哥的弟弟,错杀了哥哥深爱的人之后,哥哥的那种痛苦与矛盾。呵呵,可能它的系统做的不是很好,BUG也很多,但是还是值得玩玩的

http://lh4.google.com/pigdogyourmother/RTQ8zV4uABI/AAAAAAAAAC8/qYekDfDYVBc/37154696929280891.jpg

http://lh4.google.com/pigdogyourmother/RTQ8ysYJABI/AAAAAAAAAC0/410XjnBOOjI/54043195532109694.jpg

战神。。什么都不用说了

http://lh4.google.com/pigdogyourmother/RTQ8yHxDABI/AAAAAAAAACs/6sHpK4qCdc4/2861193138263870545.jpg

BurnOut 极其爽快的Race

http://lh3.google.com/pigdogyourmother/RTQ8xp2IABI/AAAAAAAAACk/z1_FbPwJ5Oc/3399654768711356069.jpg

http://lh6.google.com/pigdogyourmother/RTQ8xapcABI/AAAAAAAAACc/OykQ7KHsfIo/3708151343186236442.jpg

http://lh5.google.com/pigdogyourmother/RTQ8xEQgABI/AAAAAAAAACU/n3njWro2tWo/53761720555393775.jpg

PS2的RPG很多,给我深刻影响的却不多,影之心作为一款另类而优秀的RPG,的确值得推荐。。

http://lh3.google.com/pigdogyourmother/RTQ8wd6RABI/AAAAAAAAACM/1Wqgqu4ssfc/5691705504066230751.jpg

http://lh5.google.com/pigdogyourmother/RTQ8u9BlABI/AAAAAAAAAB0/MnIILqDy6Ik/307089199591353689.jpg

http://lh3.google.com/pigdogyourmother/RTQ8umM4ABI/AAAAAAAAABs/v7oxlQSTcNg/3431179966102949509.jpg


PS上的经典游戏

FFT

http://lh5.google.com/pigdogyourmother/RTQ8uPIQABI/AAAAAAAAABk/_vWdXqlgoSw/36591746976095903.jpg

放浪冒险坛

http://lh6.google.com/pigdogyourmother/RTQ8t3OSABI/AAAAAAAAABc/MbZsKujcM4g/36591746976098981.jpg

http://lh3.google.com/pigdogyourmother/RTQ8thpQABI/AAAAAAAAABU/Jv2BSVoTocA/1727974882026771765.jpg

http://lh6.google.com/pigdogyourmother/RTQ8tQwsABI/AAAAAAAAABM/LsmFMbg1JOM/1188387351672444004.jpg

北欧女神

http://lh3.google.com/pigdogyourmother/RTQ8tDsyABI/AAAAAAAAABE/AV56lCFOBF8/2599702884899645686.jpg

http://lh5.google.com/pigdogyourmother/RTQ8sodmABI/AAAAAAAAAAs/HYGRGJTIaQw/53480245578430204.jpg

恶魔城-月下夜想曲

http://lh3.google.com/pigdogyourmother/RTQ8tIGuABI/AAAAAAAAAA8/fwN5zwxKxPY/2328642482327310863.jpg

http://lh3.google.com/pigdogyourmother/RTQ8s6IbABI/AAAAAAAAAA0/oB5qmnva544/2328642482327311779.jpg

Metal Gear Solid - Way to fall

Son, you’ve got a way to fall
They’ll tell you where to go, but they won’t know
Son, you’d better take it all
They’ll tell you what they know, but they won’t show
Oh, I’ve got something in my throat
I need to be alone, while I suffer
Son, you’ve got a way to kill
They’re picking on you still, but they don’t know
Son, you’d better wait to shine
They’ll tell you what is yours, but they’ll take mine
Oh, I’ve got something in my throat
I need to be alone, while I suffer
Oh, there’s a hole inside my boat
I need to stay afloat, for the summer
Lord…
Oh, I’ve got something in my throat
I need to be alone, while I suffer
Oh, there’s a hole inside my boat
I need to stay afloat, for the summer
Son, you’d better wait to fall
They’ll tell you where to go, but they won’t know

《Snake Eater》

what a thrill
with darkness and silence through the night
what a thrill
I’m searching and I’ll melt into you
what a fear in my heart
but you’re so supreme
I give my life
not for honor,but for you (snake eater)
in my time
there’ll be no one else
crime,it’s the way I fly to you (snake eater)
I’m still in a dream of the snake eater
someday you go through the rain
someday you feed on a tree frog
it’s ordeal,the trail to survive
for the day we see new light
I give my life
not for honor,but for you (snake eater)
in my time there’ll be no one else
crime,it’s the way I fly to you (snake eater)
I’m still in a dream of the snake eater
I’m still in a dream of the snake eater
S-N-A-K-E E-A-T-E-R

I am the wind

Cynthia Harrel

just like the wind
i’ve always been
drifting high up in a sky that never ends
through thick and thin
i always win
‘cause i will fight both life and death to save a friend
i face my destiny everyday i live
and the best of me is all i have to give
just like the sun (just like the sun)
when my day’s done
sometimes i don’t like
the person i’ve become
is the enemy within or a thousand men
should i walk the path of my worst or better half?
there’s someone testing me everyday i live
well, the best of me is all i have to give
i can’t pretend (i can’t pretend)
i am the wind (i am the wind)
and i don’t know if i will pass this way again
all things must end
good-bye my friend
think of me when you see the sun or feel the wind
i am the wind
i am the sun
and one day we’ll all be one
i am the wind
i am the sun
and one day we’ll all be one

i am the wind
i am the sun
and one day we’ll all be one
i am the wind
i am the sun
one day we’ll all be one
i am the wind
i am the sun
one day we’ll all be one
i am the wind
i am the sun
one day we’ll all be one
i am the wind
i am the sun
one day we’ll all be one
i am the wind
i am the sun
one day we’ll all be one

Broken Wings

種ともこ

I know this will not remain forever
However it’s beautiful
Your eyes, hands and your warm smile
They’re my treasure
It’s hard to forget
I wish there was a solution
Don’t spend your time in confusion
I’ll turn back now and spread
My broken wings still strong enough to cross the ocean with
My broken wings how far should I go drifting in the wind
Higher and higher in the light
My broken wings still strong enough to cross the ocean with
My broken wings how far should I go drifting in the wind
Across the sky, just keep on flying

计测のできない痛みと计测のできない时间の流れが
すべてを埋めてしまおうとしても
それでも私には感じられる
空から落ちてくるのは雨ではなくて
Did I ever chain you down to my heart
‘Cause I was afraid of you?
No, I couldn’t hold any longer
Love is not a toy
Let go of me now
The time we spent is perpetual
Our future is not real
So I ‘ll leap into the air
My broken wings still strong enough to cross the ocean with
My broken wings how far should I go drifting in the wind
Higher and higher in the light
My broken wings still strong enough to cross the ocean with
My broken wings how far should I go drifting in the wind
Across the sky, just keep on flying

空から落ちてくるのは あれは雨ではなくて…
終り

The Sore Feet Song<苦旅之歌>

苏格兰歌手Ally演唱

I walked ten thousand miles,ten thousands miles to reach you<我走遍千山万水只为了见你>
And every gasp to breath,I grabbed it just to find you<每一次喘息 不愿错过发现你的契机>
I climbed up every hill to get to you<我攀爬了每一座山峰为了呼唤你>
I wandered ancient lands to hold just you<徘徊于远古大地 只为了将你拥入怀里>

And every single step of the way,I paid<在旅途中留下了无数的孤单足迹>
Every single night and day I searched for you<在每个寂寞的昼夜搜索你的身影>
Through sand storms and hazy dawns I reached for you<穿越沙暴与拂晓 我们终将相遇>

I stole ten thousands pounds,ten thousand pounds to see you<我偷走了千万英镑只为了见你>
I robbed convenience stores coz I thought they’d make it easier<说不定从便利店劫取会比较容易>
I lived off rats and toads and I starved for you<我曾在漂泊中以老鼠和蟾蜍果腹>
I fought off giant bears and I killed them too<我也在与巨熊的搏斗中赢得胜利>

And every single step of the way,I paid<在旅途中留下了无数的孤单足迹>
Every single night and day I searched for you<在每个寂寞的昼夜搜索你的身影>
Through sand storms and hazy dawns I reached for you<穿越沙暴与拂晓 我们终将相遇>
I’m tired and I’m weak but I’m strong for you<虽然疲倦憔悴 但我会为你坚强>
I want to go home but my love gets me through<渴望踏上归程 爱让我永不放弃>

<![CDATA[ (来源:java编程思想)

本附录包含了大量有用的建议,帮助大家进行低级程序设计,并提供了代码编写的一般性指导:

(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如:
ThisIsAClassName
thisIsMethodOrFieldName
若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译期的常数。
Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。对于域名扩展名称,如com,org,net或者edu等,全部都应小写(这也是Java 1.1和Java 1.2的区别之一)。

(2) 为了常规用途而创建一个类时,请采取“经典形式”,并包含对下述元素的定义:

equals()
hashCode()
toString()
clone()(implement Cloneable)
implement Serializable

(3) 对于自己创建的每一个类,都考虑置入一个main(),其中包含了用于测试那个类的代码。为使用一个项目中的类,我们没必要删除测试代码。若进行了任何形式的改动,可方便地返回测试。这些代码也可作为如何使用类的一个示例使用。

(4) 应将方法设计成简要的、功能性单元,用它描述和实现一个不连续的类接口部分。理想情况下,方法应简明扼要。若长度很大,可考虑通过某种方式将其分割成较短的几个方法。这样做也便于类内代码的重复使用(有些时候,方法必须非常大,但它们仍应只做同样的一件事情)。

(5) 设计一个类时,请设身处地为客户程序员考虑一下(类的使用方法应该是非常明确的)。然后,再设身处地为管理代码的人考虑一下(预计有可能进行哪些形式的修改,想想用什么方法可把它们变得更简单)。
(6) 使类尽可能短小精悍,而且只解决一个特定的问题。下面是对类设计的一些建议:
■一个复杂的开关语句:考虑采用“多形”机制
■数量众多的方法涉及到类型差别极大的操作:考虑用几个类来分别实现
■许多成员变量在特征上有很大的差别:考虑使用几个类

(7) 让一切东西都尽可能地“私有”——private。可使库的某一部分“公共化”(一个方法、类或者一个字段等等),就永远不能把它拿出。若强行拿出,就可能破坏其他人现有的代码,使他们不得不重新编写和设计。若只公布自己必须公布的,就可放心大胆地改变其他任何东西。在多线程环境中,隐私是特别重要的一个因素——只有private字段才能在非同步使用的情况下受到保护。

(8) 谨惕“巨大对象综合症”。对一些习惯于顺序编程思维、且初涉OOP领域的新手,往往喜欢先写一个顺序执行的程序,再把它嵌入一个或两个巨大的对象里。根据编程原理,对象表达的应该是应用程序的概念,而非应用程序本身。

(9) 若不得已进行一些不太雅观的编程,至少应该把那些代码置于一个类的内部。

(10) 任何时候只要发现类与类之间结合得非常紧密,就需要考虑是否采用内部类,从而改善编码及维护工作(参见第14章14.1.2小节的“用内部类改进代码”)。

(11) 尽可能细致地加上注释,并用javadoc注释文档语法生成自己的程序文档。

(12) 避免使用“魔术数字”,这些数字很难与代码很好地配合。如以后需要修改它,无疑会成为一场噩梦,因为根本不知道“100”到底是指“数组大小”还是“其他全然不同的东西”。所以,我们应创建一个常数,并为其使用具有说服力的描述性名称,并在整个程序中都采用常数标识符。这样可使程序更易理解以及更易维护。

(13) 涉及构建器和异常的时候,通常希望重新丢弃在构建器中捕获的任何异常——如果它造成了那个对象的创建失败。这样一来,调用者就不会以为那个对象已正确地创建,从而盲目地继续。

(14) 当客户程序员用完对象以后,若你的类要求进行任何清除工作,可考虑将清除代码置于一个良好定义的方法里,采用类似于cleanup()这样的名字,明确表明自己的用途。除此以外,可在类内放置一个boolean(布尔)标记,指出对象是否已被清除。在类的finalize()方法里,请确定对象已被清除,并已丢弃了从RuntimeException继承的一个类(如果还没有的话),从而指出一个编程错误。在采取象这样的方案之前,请确定finalize ()能够在自己的系统中工作(可能需要调用System.runFinalizersOnExit(true),从而确保这一行为)。

(15) 在一个特定的作用域内,若一个对象必须清除(非由垃圾收集机制处理),请采用下述方法:初始化对象;若成功,则立即进入一个含有finally从句的try块,开始清除工作。

(16) 若在初始化过程中需要覆盖(取消)finalize(),请记住调用super.finalize()(若Object属于我们的直接超类,则无此必要)。在对finalize()进行覆盖的过程中,对super.finalize()的调用应属于最后一个行动,而不应是第一个行动,这样可确保在需要基础类组件的时候它们依然有效。

(17) 创建大小固定的对象集合时,请将它们传输至一个数组(若准备从一个方法里返回这个集合,更应如此操作)。这样一来,我们就可享受到数组在编译期进行类型检查的好处。此外,为使用它们,数组的接收者也许并不需要将对象“造型”到数组里。

(18) 尽量使用interfaces,不要使用abstract类。若已知某样东西准备成为一个基础类,那么第一个选择应是将其变成一个interface(接口)。只有在不得不使用方法定义或者成员变量的时候,才需要将其变成一个abstract(抽象)类。接口主要描述了客户希望做什么事情,而一个类则致力于(或允许)具体的实施细节。

(19) 在构建器内部,只进行那些将对象设为正确状态所需的工作。尽可能地避免调用其他方法,因为那些方法可能被其他人覆盖或取消,从而在构建过程中产生不可预知的结果(参见第7章的详细说明)。

(20) 对象不应只是简单地容纳一些数据;它们的行为也应得到良好的定义。

(21) 在现成类的基础上创建新类时,请首先选择“新建”或“创作”。只有自己的设计要求必须继承时,才应考虑这方面的问题。若在本来允许新建的场合使用了继承,则整个设计会变得没有必要地复杂。

(22) 用继承及方法覆盖来表示行为间的差异,而用字段表示状态间的区别。一个非常极端的例子是通过对不同类的继承来表示颜色,这是绝对应该避免的:应直接使用一个“颜色”字段。

(23) 为避免编程时遇到麻烦,请保证在自己类路径指到的任何地方,每个名字都仅对应一个类。否则,编译器可能先找到同名的另一个类,并报告出错消息。若怀疑自己碰到了类路径问题,请试试在类路径的每一个起点,搜索一下同名的.class文件。

(24) 在Java 1.1 AWT中使用事件“适配器”时,特别容易碰到一个陷阱。若覆盖了某个适配器方法,同时拼写方法没有特别讲究,最后的结果就是新添加一个方法,而不是覆盖现成方法。然而,由于这样做是完全合法的,所以不会从编译器或运行期系统获得任何出错提示——只不过代码的工作就变得不正常了。

<

p>(25) 用合理的设计方案消

<![CDATA[

一、避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。 例子: 代码 import java.util.Vector; class CEL { void method (Vector vector) { for (int i = 0; i < vector.size (); i++) // Violation ; // … } } 更正: class CEL_fixed { void method (Vector vector) { int size = vector.size () for (int i = 0; i < size; i++) ; // … } }

二、为’Vectors’ 和 ‘Hashtables’定义初始大小 JVM为Vector扩充大小的时候需要重新创建一个更大的数组,将原原先数组中的内容复制过来,最后,原先的数组再被回收。可见Vector容量的扩大是一个颇费时间的事。通常,默认的10个元素大小是不够的。你最好能准确的估计你所需要的最佳大小。 例子: 代码 import java.util.Vector; public class DIC { public void addObjects (Object[] o) { // if length > 10, Vector needs to expand for (int i = 0; i< o.length;i++) { v.add(o); // capacity before it can add more elements. } } public Vector v = new Vector(); // no initialCapacity. } 更正:自己设定初始大小。 public Vector v = new Vector(20); public Hashtable hash = new Hashtable(10);

三、在finally块中关闭Stream 程序中使用到的资源应当被释放,以避免资源泄漏。这最好在finally块中去做。不管程序执行的结果如何,finally块总是会执行的,以确保资源的正确关闭。 例子: 代码 import java.io.*; public class CS { public static void main (String args[]) { CS cs = new CS (); cs.method (); } public void method () { try { FileInputStream fis = new FileInputStream ("CS.java"); int count = 0; while (fis.read () != -1) count++; System.out.println (count); fis.close (); } catch (FileNotFoundException e1) { } catch (IOException e2) { } } } 更正:在最后一个catch后添加一个finally块

四、使用’System.arraycopy ()’代替通过来循环复制数组 ‘System.arraycopy ()’ 要比通过循环来复制数组快的多。 例子: 代码 public class IRB { void method () { int[] array1 = new int [100]; for (int i = 0; i < array1.length; i++) { array1 [i] = i; } int[] array2 = new int [100]; for (int i = 0; i < array2.length; i++) { array2 [i] = array1 [i]; // Violation } } } 更正: 代码 public class IRB { void method () { int[] array1 = new int [100]; for (int i = 0; i < array1.length; i++) { array1 [i] = i; } int[] array2 = new int [100]; System.arraycopy(array1, 0, array2, 0, 100); } }

五、让访问实例内变量的getter/setter方法变成”final” 简单的getter/setter方法应该被置成final,这会告诉编译器,这个方法不会被重载,所以,可以变成”inlined” 例子: 代码 class MAF { public void setSize (int size) { _size = size; } private int _size; } 更正: 代码 class DAF_fixed { final public void setSize (int size) { _size = size; } private int _size; }

六、避免不需要的instanceof操作 如果左边的对象的静态类型等于右边的,instanceof表达式返回永远为true。 例子: 代码 public class UISO { public UISO () {} } class Dog extends UISO { void method (Dog dog, UISO u) { Dog d = dog; if (d instanceof UISO) // always true. System.out.println("Dog is a UISO"); UISO uiso = u; if (uiso instanceof Object) // always true. System.out.println("uiso is an Object"); } } 更正: 删掉不需要的instanceof操作。

七、避免不需要的造型操作 所有的类都是直接或者间接继承自Object。同样,所有的子类也都隐含的“等于”其父类。那么,由子类造型至父类的操作就是不必要的了。例子: 代码 class UNC { String _id = "UNC"; } class Dog extends UNC { void method () { Dog dog = new Dog (); UNC animal = (UNC)dog; // not necessary. Object o = (Object)dog; // not necessary. } } 更正: 代码 class Dog extends UNC { void method () { Dog dog = new Dog(); UNC animal = dog; Object o = dog; } }

八、如果只是查找单个字符的话,用charAt()代替startsWith() 用一个字符作为参数调用startsWith()也会工作的很好,但从性能角度上来看,调用用String API无疑是错误的! 例子: 代码 public class PCTS { private void method(String s) { if (s.startsWith("a")) { // violation // … } } } 更正 将’startsWith()’ 替换成’charAt()’. 代码 public class PCTS { private void method(String s) { if (‘a’ == s.charAt(0)) { // … } } }

九、使用移位操作来代替’a / b’操作 "/"是一个很“昂贵”的操作,使用移位操作将会更快更有效。 例子: 代码 public class SDIV { public static final int NUM = 16; public void calculate(int a) { int div = a / 4; // should be replaced with "a >> 2". int div2 = a / 8; // should be replaced with "a >> 3". int temp = a / 3; } } 更正: 代码 public class SDIV { public static final int NUM = 16; public void calculate(int a) { int div = a >> 2; int div2 = a >> 3; int temp = a / 3; // 不能转换成位移操作 } }

十、使用移位操作代替’a b’ 同上。 [i]但我个人认为,除非是在一个非常大的循环内,性能非常重要,而且你很清楚你自己在做什么,方可使用这种方法。否则提高性能所带来的程序晚读性的降低将是不合算的。 例子: 代码 public class SMUL { public void calculate(int a) { int mul = a 4; // should be replaced with "a << 2". int mul2 = 8 a; // should be replaced with "a << 3". int temp = a 3; } } 更正: 代码 package OPT; public class SMUL { public void calculate(int a) { int mul = a << 2; int mul2 = a << 3; int temp = a * 3; // 不能转换 } }

十一、在字符串相加的时候,使用 ‘ ‘ 代替 " ",如果该字符串只有一个字符的话 例子: 代码 public class STR { public void method(String s) { String string = s + "d" // violation. string = "abc" + "d" // violation. } } 更正:将一个字符的字符串替换成’ ‘ 代码 public class STR { public void method(String s) { String string = s + ‘d’ string = "abc" + ‘d’ } }

十二、不要在循环中调用synchronized(同步)方法 方法的同步需要消耗相当大的资料,在一个循环中调用它绝对不是一个好主意。 例子: 代码 import java.util.Vector; public class SYN { public synchronized void method (Object o) { } private void test () { for (int i = 0; i < vector.size(); i++) { method (vector.elementAt(i)); // violation } } private Vector vector = new Vector (5, 5); } 更正:不要在循环体中调用同步方法,如果必须同步的话,推荐以下方式: 代码 import java.util.Vector; public class SYN { public void method (Object o) { } private void test () { synchronized{//在一个同步块中执行非同步方法 for (int i = 0; i < vector.size(); i++) { method (vector.elementAt(i)); } } } private Vector vector = new Vector (5, 5); }

十三、将try/catch块移出循环 把try/catch块放入循环体内,会极大的影响性能,如果编译JIT被关闭或者你所使用的是一个不带JIT的JVM,性能会将下降21%之多! 例子: 代码 import java.io.FileInputStream; public class TRY { void method (FileInputStream fis) { for (int i = 0; i < size; i++) { try { // violation _sum += fis.read(); } catch (Exception e) {} } } private int _sum; } 更正: 将try/catch块移出循环 代码 void method (FileInputStream fis) { try { for (int i = 0; i < size; i++) { _sum += fis.read(); } } catch (Exception e) {} }

<

p>十四、对于boolean值,避免不必要的等式判断 将一个boolean值与一个true比较是一个恒等操作(直接返回该boolean变量的值). 移走对于boolean的不必要操作至少会带来2个好处: 1)代码执行的更快 (生成的字节码少了5个字节); 2)代码也会更
加干净 ]]
>