有日子没来了,今天把以前用海阔天空这个名称在另一个博客上的一些记忆放上来做个记录

时间:2021-01-02 04:03:34

海阔天空
星期六, 二月 11, 2006
Helix Server11.01安装,配置,客户端连接亲历

1、安装Helix Server,按照提示做就可以,把相应的端口号填上或者用默认的也可以(要注意一点就是http端口默认80,但因为一般80用于浏览网页了,所以最好换成别的如8011等)。 提示是否安装成windows服务,是或者不是都行。

2、配置Helix
---运行Helix Administrator
---Server Setup--〉Mount Points-->RealSystem Content中填写资源播放路径
---Server Setup--〉IP Binding中添加绑定的IP地址,如果要使得本机的多个IP都可用的话,增加IP: 0.0.0.0就可以了。

3、客户端连接
运行RealPlayer, 文件-->打开, 对话框中写rtsp://IP/路径/文件名,就可以了。
例如:如果当时绑定的IP是172.23.0.27,对应的Mount Point的路径是movie
movie的目录结构是这样的:
movie--
|
+动画片
|
雪孩子.rm
蜡笔小新.rmvb

那么我们就输入这样的地址: rtsp://172.23.0.27/动画片/雪孩子.rm

这样就可以构建一套不错的流媒体服务了,OK!


星期五, 十二月 16, 2005
FAT32文件系统的限制

相对于NTFS文件系统,FAT32有很多不足之处,以下简单介绍两个实例:

1. 单个目录下所存储文件数目的限制

有网友曾经在FAT32分区上解压缩一个里面包含大量文件的rar压缩包,当解压缩到解压缩到2万多个文件时,Windows提示无法创建新的目录或者文件。

这和FAT32文件系统本身的属性特点限制有关,对于FAT32文件系统来说,在单个文件夹内,最多可以创建65534个子目录和文件。如果其中的某些子目录和文件采用长文件名的话,则会远远不足65534个子目录和文件,所以如果winrar压缩包的某些文件或者目录采用长文件名的话,那么这种情况属于正常。

2. 单个文件大小的限制

FAT32文件系统下单个文件不能超过4GB,所以在创建一些大容量视频文件、创建虚拟机映象文件时必须注意最好存放在NTFS文件系统下。

可以参考以下的微软官方网页,以了解详细的文件系统特性比较的信息:http://www.microsoft.com/resources/documen...kc_fil_tdrn.asp


星期二, 十一月 08, 2005
vss管理web项目,签出注意事项

默认的站点web端口一般是80,如果你签出的时候还有别的站点也用了80端口,只是主机头不一样,这种情况下很可能签出不成功,vss可能会总去找另一个站点的路径,这种情况下解决的方法是,删除该站点,或者占时将该站点的端口改成别的,签出项目完成后,再改回来。

 

星期三, 十一月 02, 2005
出现无法进行调试,无法打开Internet Explorer 的解决方法

1、右健-->浏览方式

2、aspnet_regiis -i

3、项目属性-->配置-〉调试--〉始终使用Internet Explorer 修改修改看看


不刷新页面客户端获得服务器端数据方法

1、AjaX : 用javascript+XmlHttp

2、<script src="***.asp"></script>


星期四, 九月 29, 2005
偶尔看到今天是亚冠半决赛,但一看简直令人生气之级
一帮大竹竿在场上瞎晃,一个破网被当成了筛子。


星期六, 九月 03, 2005
OTA下载手机视频(.3gp)我的例子

C#:
----------------------

<%@ Page Language="C#" %>
using System;
using System.IO;
using System.Text;

<%


System.IO.FileStream fs;

string strFilePath="3gp/1124437605753.3gp";
fs=System.IO.File.OpenRead(Server.MapPath(strFilePath));

Response.Clear();
Response.Buffer = true;
Response.AddHeader( "Content-Disposition:", "attachment; filename=abc.3gp" );
Response.Charset = "UTF-8";
Response.ContentType = "application/octet-stream";

byte [] bytes = new Byte[fs.Length];
fs.Read(bytes,0,(int)fs.Length);
fs.Close();

Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
%>

 


System.IO.FileStream fs;

//'string strFilePath="3gp/1124437605753.3gp";
string strFilePath="game/kjava.jad";
fs=System.IO.File.OpenRead(Server.MapPath(strFilePath));

Response.Clear();
Response.Buffer = true;
Response.AddHeader( "Content-Disposition:", "attachment; filename=kjava.jar" );
//'Response.AddHeader( "Content-Disposition:", "attachment; filename=abc.3gp" );
Response.Charset = "UTF-8";
Response.ContentType = "application/octet-stream";

byte [] bytes = new Byte[fs.Length];
fs.Read(bytes,0,(int)fs.Length);
fs.Close();

Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
--------------------

 

asp:

---------------------

<%
Dim File
Dim oFile
Dim sr
dim FileStream
Dim strFilePath

strFilePath="3gp/1124437605753.3gp"
Set FileStream = Server.CreateObject("Adodb.Stream")
FileStream.Open
FileStream.Type = 1
FileStream.LoadFromFile(Server.MapPath(strFilePath))
With Response
.Clear()
.Buffer = true
.AddHeader "Content-Disposition:", "attachment; filename=123.3gp"
.AddHeader "Content-Length", cstr(FileStream.Size)
.Charset = "UTF-8"
.ContentType = "application/octet-stream"
.BinaryWrite FileStream.Read
.Flush
.End

End With
FileStream.Close

%>


Dim File
Dim oFile
Dim sr
dim FileStream
Dim strFilePath

strFilePath="3gp/1124437605753.3gp"
Set FileStream = Server.CreateObject("Adodb.Stream")
FileStream.Open
FileStream.Type = 1
FileStream.LoadFromFile(Server.MapPath(strFilePath))
With Response
.Clear()
.Buffer = true
.AddHeader "Content-Disposition:", "attachment; filename=123.3gp"
.AddHeader "Content-Length", cstr(FileStream.Size)
.Charset = "UTF-8"
.ContentType = "application/octet-stream"
.BinaryWrite FileStream.Read
.Flush
.End

End With
FileStream.Close


---------------------


星期五, 九月 02, 2005
OTA下载手机游戏配置心得

在iis中增加mime类型:

.jad text/vnd.sun.j2me.app-descriptor

.jar application/java-archive

在页面上加一个连接指向.jad文件就行,不必写程序用流的方式来推送(象.3gp这种视频文件的下载就需要以流的方式推送),这个连结最好是绝对地址:

例如:<a href=http://wap.xxx.com/test/product1.3gp title="">下载</a>

另外,在.jad文件中指向.jar文件的属性MIDlet-Jar-URL也要用绝对地址:

例如:MIDlet-Jar-URL: http://wap.xxx.com:8080/game/kjava.jar

可以用sun j2sdk自带的OTA provision工具进行测试,下载过程。


星期四, 九月 01, 2005
.net签处工程心得

在vs .net ide中的源代码管理-->从源代码管理中打开,将vss中的工程建立到本地,如果想让签出来的工程放在某个目录下,必须将当前web根目录设置到该目录上,即可。


星期三, 八月 03, 2005
那永远是最可爱的人
一片感人的文章,那段直抵人灵魂深处的情感http://club.news.sohu.com/newsmain.php?c=102&b=shilin&a=30674&c=102


星期二, 七月 26, 2005
CMMI
昨天听一个朋友提到CMMI这个东西,这种软件工程模型到底好在什么地方,如何应用到实际的管理和工作中,都是让我很想知道. 不知道会不会有这样的机会


星期四, 七月 14, 2005
中国放弃日本战争赔款的来龙去脉

 
按照国际惯例,在每一份战后签署的和约中都包括战争赔偿的内容。这种由战败国向战胜国缴纳的赔偿,款额往往大得惊人,如1894-1895年甲午战争结束后,战胜的日本就通过《马关条约》以战争赔偿的名义从战败的中国清*手中掠走白银两亿两。

第二次世界大战中,作为世界反法西斯同盟重要组成部分的中国,在长达14年的抗日战争中,付出了巨大的民族牺牲。然而,令人惊异的是,在战争结束后,战败的日本却没有作为主要战胜国之一的中国缴付赔款!更令人不解的是,那些受战争破坏远较中国为轻的东南亚国家却不同程度地获得了赔偿,其中缅甸、菲律宾、印度尼西亚所得赔款分别为2亿美元、5.5亿美元和2.23亿美元,甚至连当时尚未统一的越南南方吴庭艳政权也获得了赔款3900万美元。

这究竟是怎么一回事?

我们还是让历史本身作出回答吧。

一、张群曾在*六届四中全会上大声疾呼:“决不放弃我们对日要求应得的赔偿!”

1945年8月15日,伴随着广播中日本天皇裕仁停战诏书的公布,在中国大地上飞扬跋扈了整整十四个年头的太阳旗颓然坠地——中国抗日战争作为世界反法西斯战争中不可分割的一部分最终取得了胜利。

1945年9月2日上午10时,日本代表在停泊在东京湾的美国战舰“密苏里号”上,签署了投降书。在德意日法西斯三国轴心集团中,日本是最后一个在投降书上签字的。

在此之前,意大利与德国已分别于1943年9月3日和1945年5月7日向盟军投降。从表面上看,日本是在包括美国投掷原子弹和苏联出兵东北的行动在内的盟军联合打击下乞降的,但实际上,对促使日本投降真正发挥决定性作用的是中国八年的全面抗战。
中国的抗日战争贡献最大、损失也最大。据统计,在这场历时持久的战争中,中国军民伤亡人数总计高达3500万;各种损失折合当时美元计算数额高达1000亿以上。

面对如此惨重的经济损失,要求罪魁祸首日本给予中国战争赔偿是天经地义的。中国*对此态度相当明确,当时的国民*外长王世杰在阐述战后中国对日基本政策时指出:尽管中国不主张采取狭隘的报复主义,但就赔款问题则“应一本正义与公道之要求,以从事解决。”为此,中国*特意成立了一个调查委员会,负责调查和统计战争中各项人力、物力损失的情况,以便对日提出赔偿要求。

中国要求日本赔偿的政策与盟国战后对战败国总的政策是一致的。早在1945年2月英美苏首脑举行雅尔塔会议时,便制定了要求德意日法西斯国家给予盟国战争赔偿的原则。规定德国应赔偿200亿美元,其中100亿归苏联,80亿归英美,20亿归其他国家。战后,英、美、法、苏对德国实行分区占领,成立盟国管制委员会,德国的赔偿以盟国从各占领区拆迁工业设施抵偿。同时,对于追随德国与盟军作战的意大利、罗马尼亚、保加利亚、匈牙利、芬兰五国同样提出了赔偿要求。1947年2月10日盟国与上述五国计立的和约中规定,意、罗、保、匈、芬五国分别向苏联、南斯拉夫、埃塞俄比亚、希腊四国赔偿2.55亿、3亿、0.7亿、4亿和3亿美元。

对于日本,以美英苏中为首的同盟国在日本投降后成立了一个赔偿委员会,专门协商日本赔偿问题。1945年11月5日,该委员会一致认为,为了剥夺日本进行战争的产业能力,防止军国主义复活,决定加重日本的战争赔偿。方式是把日本工业设备的一大半拆迁给各战争受害国作为赔偿。为此,指示各国分头调查、统计战争期间的损失,以便具体确定赔偿的方案。

1947年10月25日,经过两年多的调查核实,同盟各国向日本提出了索赔要求,总计金额为540亿美元,中国也在其中。但是在赔偿如何分配的问题上,各国意见不一,英国要求占有赔偿的25%,美国要求34%,苏联要求14%,法国要占12%,澳大利亚要占28%,仅这几个国家,还未包括受害最重的中国的要求,分配比例总和已超过了100%。

中国在会上以“受害最久,牺牲最烈”为由据理力争,坚持应获日本赔偿总数的40%,但各国不依,仅同意占30%,此后各方争执不休,问题一拖再拖,久而未决。国民*由于忙于打内战,因而后来对日本赔偿的分配问题也就无心顾及了。不过,*政要张群在1947年9月9日*六届四中全会上所作的外交报告中仍大声疾呼:“决不放弃我们对日要求应得的赔偿!”这充分表明了当时国民*的态度。

而日本方面,直到旧金山对日和约签字,从未向任何国家提起过战争赔偿问题。这中间一晃就是四年。

二、美国为称霸世界,操纵旧金山,会议把中国拒之门外

1951年7月12日,美国公布了对日和约草案,并在7月20日向同盟各国发出了召开旧金山会议的邀请函,从而把一度被搁置的对日和约问题再次提上日程。

但是,令世界各国大为惊讶的是,在美国起草的对日和约草案中所列的对日作战国家的名单中没有中国,其后中国也没有收到出席旧金山和会的邀请函。这意味着中国——这个在反抗日本法西斯作战中历时最长、贡献最大、损失最重的国家,将不得参加盟国对日和约的拟定和签署工作。旧金山和会把中国关在了门外。

毫无疑问,美国是策划将中国排除在对日集体缔约之外的主谋。此举的出笼与当时美苏对立的国际形势及美国战后称霸世界、遏制苏联的全球战略有着密切的关系。

二战结束后,美国凭借战争中壮大起来的军事和经济实力,急于在世界建立“美国式的和平”,充当世界的霸主。但是战后实力同样强大的苏联以及在苏联影响下在东欧建立的一系列新兴的*国家的存在,打破了美国的梦想。美国便在“遏制共产主义扩张”的幌子下,纠合西方资本主义国家在世界各地与苏联展开角逐。于是,在反法西斯战争中曾经并肩浴血奋战的昔日盟友开始分道扬镰。至五十年代初,美苏对峙的冷战格局已经形成。此间发生的国际事件如中国人民解放战争的爆发,东、西德的分裂以及朝鲜三八线的划分,无不被打上美苏冷战的时代烙印。其中,中国事态的发展最典型地反映了这一时代特色。

从1947年至1951年,对中国人来说的确称得上是天翻地覆、*易主的4年。这期间,点燃内战战火的蒋介石退踞*;而*领导的*人则于1949年10月在北京升起了第一面五星红旗,宣告了新中国的诞生。面对中国形势的变化,美、苏两大战后强国采取了截然相反的态度。苏联于1949年10月立即承认了新生的*,而美国则极力否认新中国的合法地位,执意拉扯着日趋末落的蒋介石*。

为了平衡新中国的诞生给资本主义阵营带来的冲击,就必须在远东重新扶植一个新的反共堡垒,以遏制共产主义的发展。美国选中了日本。1948年1月6日,美国陆军部长亚罗尔在一次演讲中公开宣布:“今后对日占领政策是扶植强有力的日本*,……以便起到可以防御今后在远东方面发生新的共产主义威胁的堡垒作用。”这标志着美国对日政策来了个180度的大转变——由战后初期的抑日变为扶日。此后,美国走上了重新武装日本的道路。

1950年6月,朝鲜半岛爆发的战争点燃了美苏两大阵营间的第一次武装冲突。随着美国和中国先后的介入,朝鲜战争已由单纯的内战升级为一场国际战争。

美国为了打赢这场所谓“遏制共产主义扩张”的战争,急欲启用日本这一反共先锋。为此,美国力主尽快与日本缔结和约,解除对日本的军事管制,恢复其主权,以便使日本尽快加入反共的行列中。召开旧金山会议的建议,就是在这种火药味极浓的气氛中提出的。

但是,由于美苏对中国*的认同不一,在邀请国、共哪一方出席旧金山会议的问题上双方发生了争执:美国不承认**,主张由*蒋介石*参加和会,这遭到了苏联*的坚决反对。眼看旧金山会议有搁浅的危险,美国为了早日实现其扶日反共的
目的,竟然置中国作为主要战胜国的权益于不顾,借口盟国对中国*的认同有分歧而单方决定不邀请中国代表出席旧金山和会,主张中国应在会外与日本单独缔结和约,对于将由中国哪一方与日本缔约,美国强调“应由日本去决定”。这种把中国排除在对日和约谈判之外并且给予日本选择缔约对象权利的做法,使中国在对日和约问题上失去了主动地位。中国海峡两岸对美国无视中国权益的作法均表示了强烈的反对:7月16日,蒋介石在*发表谈话指出:“中国被拒绝参加对日和约签字,乃破坏国际信义之举,*决不容忍。”8月15日,*外长代表新中国*对此提出了*,指出将于9月4日在旧金山召开的对日和约会议,背弃了国际义务,中国不予承认。

然而,美国当局不顾中国方面的强烈*,一意孤行,于9月4日-8日召开了有52个国家出席的旧金山会议,并操纵会议通过了对日和约。

旧金山和约是很不公正的条约,它把对日作战的起始时间定为1941年12月7日,从而抹杀了中国人民自1931年9月18日起,特别是1937年7月7日至1941年12月7日这几年对日寇的单独抗击的历史。同时,和约在赔偿问题上极力宽大日本,只是泛泛地规定:“*对战争中造成的损害及痛苦,将向盟国支付赔偿。”对于具体数额根本没有提及,同时对战胜国的赔偿要求作了原则上的限制:即只能“利用日本人民在制造上、打捞上及对各该盟国的贡献的其他服务上的技能与劳作,作为协定赔偿各国修复其所受损失的费用”,而且必须在“日本可以维持生存的经济范围内进行”。这种重重限制的赔偿规定就是以日本人的劳务充作赔偿,实际上是变相减免日本的战争赔偿,与1945年盟国赔偿委员会作出的加重赔偿的原则是相抵触的。因而遭到了亚洲、欧洲正义国家的反对。除了中国、朝鲜、越南未被邀请赴会外,缅甸和印度拒绝出席会议,而出席会议的苏联、捷克斯洛伐克和波兰会后拒绝签字。这样,由于中、印、苏等国的抵制,当时世界上有一半的人口是不承认旧金山和约的。

9月18日,*外长代表新中国*严厉谴责了旧金山和约,指斥它是“一个复活日本军国主义,敌视中苏,威胁亚洲,准备新的侵略战争的条约”。同时声明,“旧金山和约由于没有*参加准备、拟制和签订,*人民*认为是非法的、无效的,因而是绝对不能承认的。”然而,与新中国*捍卫民族权益的严正态度相反,退踞*的*当局为了争得与日本缔约的所谓“正统地位”,转而承认旧金山和约,追随美国的意愿走上了与日本单独缔约的道路。1951年9月12日,*当局外长叶公超发表声明表示:*当局愿意以旧金山和约为蓝本与日本签订双边和约。

三、日本利用旧金山和约玩弄花招,美国推波助澜,台北为争正统放弃赔款

1951年9月8日签订的旧金山和约,极大地改善了日本战后所处的不利地位,因而11月26日,*会便非常痛快地批准了这个和约。与旧金山和约同样给日本带来好处的,即日本对于中日双边和约缔结对象的选择权。日本当时的首相吉田茂很兴奋地宣布:“日本现在有选择媾和对手之权,对于如何行使此权,应考虑客观环境,考虑中国情形以及其与日本将来之关系,不拟轻予决定。”言下之意即日本一定要充分利用这一权利谋取最大的益处。事后证明,吉田*的确在这个问题上绞尽脑汁,大做文章,极尽阴险、奸诈之能事。

为了等待时机,日本*在与中国缔和问题上采取了拖延的对策,但为了防止盟国指责它蓄意拖延,吉田*煞费苦心地搞了一个民意测验,让*民就同北京还是台北缔结和约表态,但得出的结果却令人哭笑不得:支持与台北或北京缔约的比例一模一样,均为38%,而余下的24%则是无所谓的。这样,吉田*便以民意难辨,难以作出决断为由,理直气壮地拒不表态,静观事态的发展。而私下里针对*急于与之缔约的心理,不时散布一些可能与北京缔和的言论。

1951年10月25日,蒋介石派驻日本代表董显光拜会日本内阁官房长官冈崎胜男,询问有关缔约的事宜。冈崎不慌不忙地答道:“我国现在若与贵国订立双边和约,势将引起大陆中国国民对我之仇视”,因此,“我们现在的政策是要慢慢等待时机,以待日本实现独立自主后,研究何时同中国签订和约或选择中国的哪一方问题,我国历来尊重中华民国*,遗憾的是,中华民国*的领土只限于*。”言下之意似乎是并不准备与*方面缔约。

五天以后,吉田在日本参议院的演讲更让*心惊。吉田公开表示:“如果*在今后三年内提议根据旧金山和约与日本讨论缔结和约,日本*自然愿意谈判并缔约,丝毫不会提出反对。”事后吉田还在会见董显光时表示:“日本不能忽视大陆上四亿五千万中国人的感情。”

日本政要的一系列言论,使*当局如坐针毡,*当局为了保住所谓的正统地位,一方面连续电令驻美大使顾维钧策动美国对日施加压力,一方面又在草拟的对日和约当中广作让步,特别是在日本方面尤为敏感的赔偿问题上更为明显。如草案中规定:中国“承认*如欲维持足以生存之经济,则其资源目前不足以完全赔偿所有此类损失及灾难,同时并承担其他义务”,因此,只要求“利用*民为中华民国从事生产打捞及其他工作,以作为补偿。除此以外,中华民国放弃一切赔偿要求,放弃该国及其国民因*及*民在作战过程中所采取任何行动而产生之其他要求。”这个草案已初步放弃了日本赔偿,仅仅保留了一部分劳务补偿内容。

与此同时,*当局又处处小心谨慎,生怕惹恼了日本,丧失了缔约的机会。有个小插曲充分表现了这一点,即当驻美大使顾维钧遵命与美方交涉后,美国合众社发了一个消息,内称顾大使对日本拖延双边和约表示不快。*外交部闻讯大惊失色,立即查询此事,并发表否认声明,指称电讯报导有误等等,由此可见*诚惶诚恐到了何种程度。

由于美国当时出于反共目的,在亚洲奉行的是扶日而不弃蒋的政策,因此,在*力争与日本签约的问题上给予了大力支持。1951年11月5日,美国白宫表示:“坚决反对日本与*拉笼关系之任何企图。”此后又于12月10日,派旧金山和约的主要策划人之一,负责对日缔约的杜勒斯作为特使赴日,以促成日蒋和约而对吉田*施加压力。杜勒斯直接了当地要求日本与*缔约,并威胁道:“如果日本*不同中华民国签订和约,美国国会就不批准旧金山条约。”

在美国的强硬干预及*方面作出了重大让步的情况下,日本*才“不情愿”地改变了态度。12月24日,吉田表示不承认*中国,愿与*缔结和约。1952年1月30日,日本委任河田烈为中日和谈首席全权代表赴台,与国民*外长叶公超进行双边谈判。

1952年2月30日谈判正式开始,至4月28日和约签字,前后进行了正式会谈3次、非正式会谈18次,历时67天。谈判期间,日本方面又一次暴露了其阴险、狡猾的面目。

战争赔偿问题是和约的重要内容,因而在这个问题上争论十分激烈。根据中方起草的和约草案,在赔偿问题上只要求日本对中国提供劳务补偿,其他赔偿已经放弃,这是*当局作出的重大让步,而且与旧金山和约的原则一致。但日本对此却坚决反对,蛮不讲理地坚持*可以根据旧金山和约没收日本在华财产和资产作为补偿,不应再提劳务补偿的要求。由于双方观点相差悬殊,谈判多次陷入僵局。不仅如此,日本仿佛把战败国的身份忘在了脑后,竟多次提出自己起草的和约草案,气焰嚣张至极。

而*方面在谈判初期自恃有美国撑腰,认为只要美国以不批准旧金山和约相威胁,便不难最终迫使日本就范,因而在谈判中据理力争,态度甚为坚决。对中方草案只作细节修改,重大原则毫不让步。谁知至3月下旬,风云突变,美国先于3月20日,操纵国会以66票对10票批准了旧金山和约,后于4月16日宣布旧金山和约将于4月28日生效。美国的行径对*当局来说不啻于背后一刀。因为美国国会承认旧金山和约,使*在对日谈判中失掉了最有力的王牌;同时,美国限定了和约生效时间等于给了日本有力支持。因为一旦和约正式生效,日本解脱了战败国的束缚,恢复了主权,在对华缔约问题上将更为主动,这对*来讲极为不利。在这种形势逆转的情势下,蒋介石*为了赶在旧金山和约生效前与日本达成和约,*在赔偿问题上作出全面让步,于3月25日决定放弃全部赔偿。仅在条约草案中列入下述文字:“日本承认其赔偿之义务,我方亦承认日本无力作出全部赔偿,为此……我方宣布放弃以劳务进行赔偿之要求。”

然而,得了势的日本变本加厉,居然抓住*方面急于签约的心理,对上述行文也不接受,坚持在和约中取消有关赔偿问题的条款,否则采取拖延的方法,拒不谈判。*当局无可奈何,于4月12日答应了日本的要求。但是,蒋、日和约的最后签字直到4月28日下午3时才告完成,此时距旧金山和约生效仅仅还剩7个小时。

因此,在蒋日和约的正文中通篇找不到赔偿二字,其相关内容仅是在和约以外的议定书中加以确认的。

议定书第一条乙项原文为:

“为对日本人民表示宽大与友好之意起见,中华民国自动放弃根据旧金山和约第十四条甲项第一款*所应供应之服务之利益。”

另一处相关内容是在和约正文附录的记录中,原文是:

*全权代表:

“本人了解:中华民国既已如本约议定书第一项乙款所述自动放弃服务补偿,……是否如此?”

中华民国全权代表:

“然,即系如此。”

蒋日和约的缔结,引起了新中国人民的强烈*,1952年5月5日,即和约签字一周后,*总理代表**严正声明:“对于美国所宣布生效的非法的单独对日和约,是绝对不能承认的;对于公开侮辱并敌视中国人民的吉田蒋介石和约,是坚决反对的”。并且指责蒋介石所谓放弃赔偿要求的允诺是“慷他人之慨”,中国*和人民绝对不予承认。

四、中日邦交正常化联合声明指出:为了中日两国人民的友好关系,中国放弃对日本的赔偿要求

1972年2月21日上午11时27分,当那架银白色的总统专机掠过浩瀚的太平洋,在*首都北京机场降落的一刹那,以中美苏三国为基点的国际战略新格局便诞生了。

美国总统尼克松访华的实况,通过卫星向世界各地进行转播。这次行动改善了自1949年10月1日起中美间相互敌视的历史,在世界范围内引起的震动不亚于一场大地震。

受到冲击最严重的莫过于中国东部近邻日本。面对美国180度的急转变,一贯追随美国敌视中国的日本措手不及,当时的日本首相佐藤荣作是歪着嘴看完电视转播的。但是政治是排斥感情的,“识时务者为俊杰”,佐藤内阁深谙此理。尽管内心不满,但为了跟上美国的步伐,日本*在尼克松访华后,便秘密地委托东京都知事美浓部在访华时给*总理捎信,表示佐藤首相“要求亲自访华”。谁知当即被*以“佐藤*说了不做”为由加以拒绝,并宣布中日谈判不以佐藤为对象。佐藤*碰了一鼻子灰。

*回绝佐藤的试探,并非表示中国不愿与日本复交,相反,新中国早在1949年6月20日便发表过迅速准备对日和约的社论。仅仅因为日本*追随美国,承认蒋介石政权并与之缔结非法和约,才导致中日两国长期的敌对。尼克松总统访华后,形势的发展有利于解决中日历史上遗留的问题,因此*曾明确指出:中日恢复邦交问题“应该采取积极的态度,谈得成也好,谈不成也好,总之,现在到了火候,要抓紧。”*回绝佐藤,一方面体现了欲擒故纵的外交策略,一方面也是对长期敌视中国人民的佐藤*的一个惩诫。

果然,6月17日,佐藤荣作内阁**,7月7日,田中角荣内阁登场。田中在就职当天便表示了要与中国恢复邦交的愿望。对此*于7月9日迅速作出了反应,他在欢迎也门***代表团的宴会上专门加了一句:“田中内阁7日成立,在外交方面声明要加紧实现中日邦交正常化,这是值得欢迎的。”随即又让中日友协副秘书长孙平化借率领上海舞剧团在东京访问演出之机,转告田中:“只要田中首相能到北京当面谈,一切问题都好商量。”

当时日本*要想恢复中日邦交必须解决两个问题,一个是如何对待中国一再坚持的中日复交三原则(三原则的主要内容是:一、*是代表中国的唯一合法*;二、*是*领土不可分割的一部分;三、日台条约是非法的、无效的,必须废除),另一个就是有关日本战争赔偿问题。关于这一问题,中国*在不承认日台条约时已强调指出:“日本军国主义者杀害了上千万中国人,使中国蒙受数百亿美元的公共财产和私人财产的损失。中国拥有要求赔偿这些损失的权利”。这就意味着日本对中国的赔偿数额将相当大。日本既然避免不了这一问题,便转而指望中国高抬贵手。为了探摸中国的态度,预先就双方的争执点达成谅解,需要一个从中穿针引线的人。当时日本公明党委员长、正在访华的竹入义胜充当了这个重要的角色。1975年竹入义胜在他的回忆录中记述了他于1972年7月25日与中国方面会晤的细节:

“我把我们的意见全说了,共有十几条,并告诉他们,如果你们赞成这些意见,事情就好办了。……周总理最后问我,假如我们接受你们的建议,日本*会采取行动吗?于是,我就从北京打电话给田中先生,请他作出决断。田中回答‘行’,很干脆。最后一次拜会*总理的时候,周总理拿出一份打印文件并对我说‘这基本上是我们关于日中联合声明的原始方案。’我很吃惊,内容和后来的日中联合声明差不太多。”竹入义胜的活动为中日邦交谈判打下了基础。

关于日本战争赔偿的问题,在中方草案第七条这样写着:“为了中日两国人民的友谊,**放弃对*要求战争赔偿的权利。”但是在日后中日联合声明的正文中行文有了个别改动,去掉了“权利”二字换上了“要求”。

外交文件上的一字之差,往往掩盖着谈判桌上的翻云覆雨,唇枪舌剑。在中方放弃赔偿的问题上,中日双方果然有一场短兵相接的较量。

1972年9月26日,田中首相抵达北京的第二天,中日两国在人民大会堂举行第一轮外长谈判。当谈判进行到中方草案第七款赔偿问题时,日方代表高岛忽然狂妄地声称,根据1952年日本与*缔结的和约,日本战争赔偿问题已经解决,因而不存在中国放弃什么赔偿权利的问题。同时对中日间终止战争状态等提法一一表示拒绝,会谈因此不欢而散。

次日,*会见田中,一反前一天温和的态度,以严厉的口气谴责了日本的行为。他说:“听了今天上午外长会谈的汇报。高岛条约局长是破坏日中邦交正常化来的吧。日中邦交正常化是个政治问题,不是法律问题。高岛局长是搞讼棍那一套嘛!我不认为高岛局长的意见是田中首相和大平外相的本意。”同时周总理对中日赔偿问题再次重申不承认*的允诺,指出:“当时蒋介石已逃到*,他是在缔结旧金山和约后才签订日台条约,表示所谓放弃赔偿要求的。那时他已不能代表全中国,是慷他人之慨。遭受战争损失的主要是在大陆上。我们是从两国人民的友好关系出发,不想使日本人民因赔偿负担而受苦,所以放弃了赔偿的要求。”“*主张不要日本人民负担赔款,我向日本朋友传达,而你们的条约局长高岛先生反过来不领情,说蒋介石已说过不要赔款,这个话是对我们的侮辱,我们绝对不能接受。我们经过50年革命,蒋介石早已被中国人民所推翻。高岛先生的说话不符合你们两位的精神。”面对*总理义正辞严的声明,田中一行垂头丧气,连晚饭都吃不下去了。

第二天,中日联合声明起草小组再次开会,高岛一上来便对他上次的言行表示道歉,声言*民对中国放弃战争赔款的要求深为感动。至此,由于战争赔偿问题引起的风波方才平息下去。不过中方体谅到日本方面的难处,同意将声明中有关赔偿的“权利”一词换为“要求”。

1972年9月29日上午10时20分,中日两国代表在人民大会堂签署了中日邦交正常化的联合声明。声明第七条写道:

“**宣布:为了中日两国人民的友好关系,放弃对*的战争赔偿要求。”

至此,中日两国间悬而未决长达27年之久的赔偿问题,以中国*的大义放弃而画上了句号。


星期六, 七月 09, 2005
当心XML文件中的非法字符
在XML文件中有些字符是被禁止使用的。以下技巧会告诉你如何识别它们、它们何时出现以及如何采取相应的措施。
by Jonathan Goodyear

几天前我用过一个在ASP.NET中定义的标准的AdRotator 服务器控件。你也许对AdRotator还不太熟悉,它可以使你在Web网页中随意选取广告(banner)。AdRotator用一个XML文件作为数据源,其结构很简单: <Advertisements>
  <Ad>
    <ImageUrl>banner.gif</ImageUrl>
    <NavigateUrl>page.aspx</NavigateUrl>
    <AlternateText>Click Here</AlternateText>
    <Impressions>2000</Impressions>
    <Keyword>top_banner_slot</Keyword>          
  </Ad>
</Advertisements>


你可以将<Ad>元素添加到文件中使每个广告循环出现。在本文中我想着重介绍一下<NavigatedURl>元素。 如果用AdRotator服务器控件点击一个广告,浏览器便会重新定向到由该元素指定的URL上。这在通常情况下会运行的很好,但这一次我却发现它出错了:

This is an unexpected token. Expected 'SEMICOLON'

这使我花了些功夫去研究这个错误。后来我通过这个ASP.NET页面中显示的出错回溯列表(stack trace)找到了解决这个奇怪错误的线索。和你猜想的一样,.NET Framework的 System.Xml 命名空间下的XmlDocument类会在内部加载广告文件,该文件由AdRotator 服务器控件的AdvertisementFile属性所指定。在加载的过程中它遇到一个使它出错的字符。在检查XML广告文件的时候,我发现在其中一个<NavigateUrl>元素中使用了一个XML的非法字符--一个表示“和”的“&”字符。实际上,在XML文件中被禁止使用的ASCII字符共有五个:

&lt;  < 小于
&gt; > 大于
&amp; &  和
&apos; ' 单引号
&quot; " 双引号


注意尽管“&”字符被用在转义字符序列(escape character sequence)中,但在需要它本身时仍要进行转义(使用转义字串)。同样在C#里如果字符串中包含“”时需要双写它。这就解释了为什么有时会出现“缺少分号”这一含义模糊的出错信息。所以当XML剖析器在我的<NavigateUrl>元素中找到这个“&”字符时,它就会去找相对应的分号来关闭当前的转义序列,如果找不到就会抛出一个异常。

幸运的是,解决问题的方法只是简单地将<NavigateUrl>元素中的“&”字符用转义序列“&amp;”来代替就可以了。请注意不止是在使用AdRotator服务器控件时会有这个问题,用在.NET的XML文件也可能会出现这个问题。使用以下代码也会产生异常: XmlDocument d = new XmlDocument();
d.Load(@"c:ads.xml");


它产生的异常和前面在ASP.NET中出现的异常很相似:

An unhandled exception of type 'System.Xml.XmlException' occurred in system.xml.dll Additional information: System error.

因此,如果你的XML解析到一个突发的问题,你不妨检查一下XML文件中的数据,看看是不是用到了什么非法字符。有时候出问题的正是这些小地方。


星期三, 六月 15, 2005
Java学习从入门到精通

ava Learning Path (一)、工具篇

一、 JDK (Java Development Kit)

JDK 是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握 JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。其中IBM的JDK包含的JVM(Java Virtual Machine)运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比Sun JDK好很多。但不管怎么说,我们还是需要先把Sun JDK掌握好。

1、 JDK的下载和安装
JDK又叫做J2SE(Java2 SDK Standard Edition),可以从Sun的Java网站上下载到,http://java.sun.com/j2se/downloads.html ,JDK当前最新的版本是J2SDK1.4.2,建议下载该版本的JDK,下载页面在这里:http://java.sun.com/j2se/1.4.2/download.html

下载好的JDK是一个可执行安装程序,默认安装完毕后会在C:Program FilesJava目录下安装一套JRE(供浏览器来使用),在C:j2sdk1.4.2下安装一套JDK(也包括一套JRE)。然后我们需要在环境变量PATH的最前面增加java的路径C:j2sdk1.4.2bin。这样JDK就安装好了。

2、 JDK的命令工具
JDK的最重要命令行工具:
java: 启动JVM执行class
javac: Java编译器
jar: Java打包工具
javadoc: Java文档生成器
这些命令行必须要非常非常熟悉,对于每个参数都要很精通才行。对于这些命令的学习,JDK Documentation上有详细的文档。

二、 JDK Documentation

Documentation 在JDK的下载页面也有下载连接,建议同时下载Documentation。Documentation是最最重要的编程手册,涵盖了整个Java所有方面的内容的描述。可以这样说,学习Java编程,大部分时间都是花在看这个Documentation上面的。我是随身携带的,写Java代码的时候,随时查看,须臾不离手。

三、 应用服务器(App Server)

App Server是运行Java企业组件的平台,构成了应用软件的主要运行环境。当前主流的App Server是BEA公司的Weblogic Server和IBM公司的Websphere以及免费的Jboss,选择其中一个进行学习就可以了,个人推荐Weblogic,因为它的体系结构更加干净,开发和部署更加方便,是Java企业软件开发人员首选的开发平台。下面简要介绍几种常用的App Server:

1、 Tomcat
Tomcat 严格意义上并不是一个真正的App Server,它只是一个可以支持运行Serlvet/JSP的Web容器,不过Tomcat也扩展了一些App Server的功能,如JNDI,数据库连接池,用户事务处理等等。Tomcat被非常广泛的应用在中小规模的Java Web应用中,因此本文做一点下载、安装和配置Tomcat的介绍:

Tomcat是Apache组织下Jakarta项目下的一个子项目,它的主网站是:http://jakarta.apache.org/tomcat/ ,Tomcat最新版本是Tomcat4.1.27,软件下载的连接是:http://www.apache.org/dist/jakarta/tomcat-4/binaries/

下载Tomcat既可以直接下载zip包,也可以下载exe安装包(个人建议zip更干净些),不管哪种情况,下载完毕安装好以后(zip直接解压缩就可以了)。需要设置两个环境变量:

JAVA_HOME=C:j2sdk1.4.2
CATALINA_HOME=D:tomcat4 (你的Tomcat安装目录

这样就安装好了,启动Tomcat运行CATALINA_HOMEbinstartup.bat,关闭Tomcat运行shutdown.bat脚本。Tomcat启动以后,默认使用8080端口,因此可以用浏览器访问http://localhost:8080来测试Tomcat是否正常启动。

Tomcat提供了两个Web界面的管理工具,URL分别是: http://localhost:8080/admin/index.jsp http://localhost:8080/manager/html
在启用这两个管理工具之前,先需要手工配置一下管理员用户和口令。用一个文本工具打开CATALINA_HOMEconftomcat-users.xml这个文件,加入如下几行:

<role rolename="manager"/>
<role rolename="admin"/>
<user username="robbin" password="12345678" roles="admin,manager,tomcat"/>

这样用户"robbin"就具备了超级管理员权限。重新启动Tomcat以后,你就可以使用该用户来登陆如上的两个管理工具,通过Web方式进行Tomcat的配置和管理了。

2、 BEA Weblogic
Weblogic可以到BEA的网站上免费注册之后下载到最新的Weblogic8.1企业版,License可以免费使用1年时间,其实这已经完全足够了。Weblogic的下载连接:http://commerce.bea.com/index.jsp,Weblogic的在线文档:http://edocs.bea.com/

3、 IBM Webshpere
Websphere同样可以下载到免费的试用版本,到IBM的developerWorks网站可以看到Websphere试用产品的下载和相关的Websphere的资料,developerWorks中文网站的连接是:http://www-900.ibm.com/developerWorks/cn/wsdd/ ,Websphere的下载连接:http://www7b.software.ibm.com/wsdd/downloads/WASsupport.html

4、 Jboss
Jboss是免费开源的App Server,可以免费的从Jboss网站下载:http: //www.jboss.org/index.html,然而Jboss的文档是不免费,需要花钱购买,所以为我们学习Jboss设置了一定的障碍。在 Jdon上有几篇不错的Jboss配置文档,可以用来参考:http://www.jdon.com/idea.html

四、 Java应用的运行环境

Java的应用可以简单分为以下几个方面:

1、 Java的桌面应用
桌面应用一般仅仅需要JRE的支持就足够了。

2、 Java Web应用
Java的Web应用至少需要安装JDK和一个web容器(例如Tomcat),以及一个多用户数据库,Web应用至少分为三层:
Browser层:浏览器显示用户页面
Web层:运行Servlet/JSP
DB层:后端数据库,向Java程序提供数据访问服务

3、 Java企业级应用
企业级应用比较复杂,可以扩展到n层,最简单情况会分为4层:
Browser层:浏览器显示用户页面
Client层:Java客户端图形程序(或者嵌入式设备的程序)直接和Web层或者EJB层交互
Web层:运行Servlet/JSP
EJB层:运行EJB,完成业务逻辑运算
DB层:后端数据库,向Java程序提供数据访问服务

4、 Java嵌入式应用
Java嵌入式应用是一个方兴未艾的领域,从事嵌入式开发,需要从Sun下载J2ME开发包,J2ME包含了嵌入式设备专用虚拟机KVM,和普通的JDK中包含的JVM有所不同。另外还需要到特定的嵌入式厂商那里下载模拟器。

Java Learning Path(二)、书籍篇

学习一门新的知识,不可能指望只看一本,或者两本书就能够完全掌握。需要有一个循序渐进的阅读过程。我推荐Oreilly出版的Java系列书籍。

在这里我只想补充一点看法,很多人学习Java是从《Thinking in Java》这本书入手的,但是我认为这本书是不适合初学者的。我认为正确的使用这本书的方法应该是作为辅助的读物。《Thinking in Java》并不是在完整的介绍Java的整个体系,而是一种跳跃式的写作方法,是一种类似tips的方法来对Java很多知识点进行了深入的分析和解释。

对于初学者来说,最好是找一本Java入门的书籍,但是比较完整的循序的介绍Java的语法,面向对象的特性,核心类库等等,在看这本书的同时,可以同步来看《Thinking in Java》,来加深对Java的理解和原理的运用,同时又可以完整的了解Java的整个体系。

对于Java的入门书籍,蔡学镛推荐的是Oreilly的《Exploring Java, 2nd Edition》 或者《Java in a Nutshell,2nd Edition(针对C++背景)》,我并没有看过这两本书。其实我觉得电子工业出版社的《Java 2编程详解》或者《Java 2从入门到精通》就很不错。

在所有的Java书籍当中,其实最最有用的,并不是O'reilly的 Java Serials,真正最最有用处是JDK的Documentation!几乎你想获得的所有的知识在Documentation里面全部都有,其中最主要的部分当然是Java基础类库的API文档,是按照package来组织的,对于每一个class都有详细的解释,它的继承关系,是否实现了某个接口,通常用在哪些场合,还可以查到它所有的public的属性和方法,每个属性的解释,意义,每个方法的用途,调用的参数,参数的意义,返回值的类型,以及方法可能抛出的异常等等。可以这样来说,所有关于Java编程方面的书籍其实都不过是在用比较通俗易懂的语言,和良好的组织方式来介绍 Documentation里面的某个package里面包含的一些类的用法而已。所以万变不离其宗,如果你有足够的能力来直接通过 Documentation来学习Java的类库,那么基本上就不需要看其他的书籍了。除此之外,Documentation也是编程必备的手册,我的桌面上有三个Documentation的快捷方式,分别是J2SDK1.4.1的Documentation,Servlet2.3的 Documentation和J2SDKEE1.3.1的Documentation。有了这个三个Documentation,什么其他的书籍都不需要了。

对于Java Web 编程来说,最核心的是要熟悉和掌握HTTP协议,这个就和Java无关了,在熟悉HTTP协议之后,就需要熟悉Java的实现HTTP协议的类库,也就是 Servlet API,所以最重要的东西就是Servlet API。当然对于初学者而言,直接通过Servlet API来学习Web编程有很大的难度,我推荐O'reilly的《Java Server Pages 》这本书来学习Web 编程。

EJB 的书籍当中,《Enterprise JavaBeans, 2nd Edition》是一本很不错的书, EJB的学习门槛是比较高,入门很难,但是这本书完全降低了学习的难度,特别重要的一点是,EJB的学习需要结合一种App Server的具体实现,所以在学习EJB的同时,必须同步的学习某种App Server,而这本书相关的出了三本书,分别是Weblogic6.1,Websphere4.0和JBoss3.0上面部署书中例子的实做。真是既有理论,又有实践。在学习EJB的同时,可以边看边做,EJB的学习会变得很轻松。

但是这本书也有一个问题,就是版本比较旧,主要讲 EJB1.1规范和部分EJB2.0的规范。而Ed Roman写的《Mastering EJB 2.0》这本书完全是根据EJB2.0规范写的,深入浅出,覆盖了EJB编程的各个方面,并且还有很多编程经验tips,也是学习EJB非常推荐的书籍之一。

如果是结合Weblogic来学习J2EE的话,《J2EE应用与BEA Weblogic Server》绝对是首选读物,虽然是讲述的Weblogic6.0,仍然值得购买,这本书是BEA官方推荐的教材,作者也是BEA公司的工程师。现在中文版已经随处可见了。这本书结合Weblogic介绍了J2EE各个方面的技术在Weblogic平台上的开发和部署,实践指导意义非常强。

在掌握了Java平台基础知识和J2EE方面的知识以后,更进一步的是学习如何运用OO的方法进行软件的设计,那么就一定要学习"设计模式"。Sun公司出版了一本《J2EE核心模式》,是每个开发Java企业平台软件的架构师必备的书籍。这本书全面的介绍了J2EE体系架构的各种设计模式,是设计师的必读书籍。

Java Learning Path(三)过程篇

每个人的学习方法是不同的,一个人的方法不见得适合另一个人,我只能是谈自己的学习方法。因为我学习Java是完全自学的,从来没有问过别人,所以学习的过程基本上完全是自己摸索出来的。我也不知道这种方法是否是比较好的方法,只能给大家提供一点参考了。

学习Java的第一步是安装好JDK,写一个Hello World,? 其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加载Class的;另一个问题是package和import问题,如何来寻找类的路径问题。把这两个问题摸索清楚了,就扫除了学习Java和使用JDK的最大障碍。推荐看一下王森的《Java深度历险》,对这两个问题进行了深入的探讨。

第二步是学习Java的语法。Java的语法是类C++的,基本上主流的编程语言不是类C,就是类C++的,没有什么新东西,所以语法的学习,大概就是半天的时间足够了。唯一需要注意的是有几个不容易搞清楚的关键字的用法,public,protected,private,static,什么时候用,为什么要用,怎么用,这可能需要有人来指点一下,我当初是完全自己琢磨出来的,花了很久的时间。不过后来我看到《Thinking in Java》这本书上面是讲了这些概念的。

第三步是学习Java的面向对象的编程语言的特性的地方。比如继承,构造器,抽象类,接口,方法的多态,重载,覆盖,Java的异常处理机制。对于一个没有面向对象语言背景的人来说,我觉得这个过程需要花很长很长时间,因为学习Java之前没有 C++的经验,只有C的经验,我是大概花了一个月左右吧,才彻底把这些概念都搞清楚,把书上面的例子反复的揣摩,修改,尝试,把那几章内容反复的看过来,看过去,看了不下5遍,才彻底领悟了。不过我想如果有C++经验的话,应该一两天时间足够了。那么在这个过程中,可以多看看《Thinking in Java》这本书,对面向对象的讲解非常透彻。可惜的是我学习的时候,并没有看到这本书,所以自己花了大量的时间,通过自己的尝试和揣摩来学会的。

第四步就是开始熟悉Java的类库。Java的基础类库其实就是JDK安装目录下面jrelibrt.jar这个包。学习基础类库就是学习rt.jar。基础类库里面的类非常非常多。据说有3000多个,我没有统计过。但是真正对于我们来说最核心的只有4个,分别是
java.lang.*;
java.io.*;
java.util.*;
java.sql.*;

这四个包的学习,每个包的学习都可以写成一本厚厚的教材,而O'reilly也确实是这样做的。我觉得如果时间比较紧,是不可能通过读四本书来学习。我觉得比较好的学习方法是这样的:
首先要通读整个package的框架,了解整个package的class,interface,exception的构成,最好是能够找到介绍整个包框架的文章。这些专门介绍包的书籍的前几章应该就是这些总体的框架内容介绍。

对包整体框架的把握并不是要熟悉每个类的用法,记住它有哪些属性,方法。想记也记不住的。而是要知道包有哪些方面的类构成的,这些类的用途是什么,最核心的几个类分别是完成什么功能的。我在给人培训的时候一般是一次课讲一个包,所以不可能详细的介绍每个类的用法,但是我反复强调,我给你们讲这些包的不是要告诉你们类的方法是怎么调用的,也不要求你们记住类的方法调用,而是要你们了解,Java给我们提供了哪些类,每个类是用在什么场合,当我遇到问题的时候,我知道哪个类,或者哪几个类的组合可以解决我的问题,That'all!,当我们具体写程序的时候,只要你知道该用哪个类来完成你的工作就足够了。编码的时候,具体的方法调用,是边写代码,边查Documentation,所有的东西都在Documentation里面,不要求你一定记住,实际你也记不住 3000多个类的总共将近10万个方法调用。所以对每个包的总体框架的把握就变得极为重要。

第五步,通过上面的学习,如果学的比较扎实的话,就打好了Java的基础了,剩下要做的工作是扫清Documentation里面除了上面4个包之外的其他一些比较有用处的类。相信进展到这一步,Java的自学能力已经被培养出来了,可以到了直接学习Documentation的水平了。除了要做GUI编程之外,JDK里面其他会有用处的包是这些:
java.text.*;
java.net.*;
javax.naming.*;
这些包里面真正用的比较多的类其实很少,只有几个,所以不需要花很多时间。

第六步,Java Web 编程,Web编程的核心是HTTP协议,HTTP协议和Java无关,如果不熟悉HTTP协议的话,虽然也可以学好Servlet/JSP编程,但是达不到举一反三,一通百通的境界。所以HTTP协议的学习是必备的。如果熟悉了HTTP协议的话,又有了Java编程的良好的基础,学习 Servlet/JSP简直易如反掌,我学习Servlet/JSP就用了不到一周的时间,然后就开始用JSP来做项目了。

在Servlet/JSP 的学习中,重头仍然是Servlet Documentation。Servlet API最常用的类很少,花比较少的时间就可以掌握了。把这些类都看一遍,多写几个例子试试。Servlet/JSP编程本质就是在反复调用这些类来通过 HTTP协议在Web Server和Brower之间交谈。另外对JSP,还需要熟悉几个常用JSP的标记,具体的写法记不住的话,临时查就是了。

此外Java Web编程学习的重点要放在Web Application的设计模式上,如何进行业务逻辑的分析,并且进行合理的设计,按照MVC设计模式的要求,运用Servlet和JSP分别完成不同的逻辑层,掌握如何在Servlet和JSP之间进行流程的控制和数据的共享,以及Web Application应该如何配置和部署。

第七步,J2EE编程
以上的学习过程如果是比较顺利的话,进行到这一步,难度又陡然提高。因为上面的知识内容都是只涉及一个方面,而像EJB,JMS,JTA等核心的J2EE规范往往是几种Java技术的综合运用的结晶,所以掌握起来难度比较大。

首先一定要学习好JNDI,JNDI是App Server定位服务器资源(EJB组件,Datasouce,JMS)查找方法,如果对JNDI不熟悉的话,EJB,JMS这些东西几乎学不下去。 JNDI其实就是javax.naming.*这个包,运用起来很简单。难点在于服务器资源文件的配置。对于服务器资源文件的配置,就需要看看专门的文档规范了,比如web.xml的写法,ejb-jar.xml的写法等等。针对每种不同的App Server,还有自己的服务资源配置文件,也是需要熟悉的。

然后可以学习JTA,主要是要理解JTA对于事务的控制的方法,以及该在什么场合使用JTA。这里可以简单的举个例子,我们知道一般情况可以对于一个数据库连接进行事务控制(conn.setAutoCommit (false),....,conn.commit()),做为一个原子操作,但是假设我的业务需求是要把对两个不同数据库的操作做为一个原子操作,你能做的到吗?这时候只能用JTA了。假设操作过程是先往A数据库插一条记录,然后删除B数据库另一个记录,我们自己写代码是控制不了把整个操作做为一个原子操作的。用JTA的话,由App Server来完成控制。

在学习EJB之前要学习对象序列化和RMI,RMI是EJB的基础。接着学习JMS和EJB,对于EJB来说,最关键是要理解EJB是如何通过RMI来实现对远端对象的调用的,以及在什么情况下要用到EJB。

在学习完EJB,JMS这些东西之后,你可能会意识到要急不可待学习两个领域的知识,一个是UML,另一个是Design Pattern。Java企业软件的设计非常重视框架(Framework)的设计,一个好的软件框架是软件开发成功的必要条件。在这个时候,应该开始把学习的重点放在设计模式和框架的学习上,通过学习和实际的编程经验来掌握EJB的设计模式和J2EE的核心模式。

J2EE规范里面,除了EJB,JMS,JTA,Servlet/JSP,JDBC之外还有很多很多的企业技术,这里不一一进行介绍了。

另外还有一个最新领域Web Services。Web Services也完全没有任何新东西,它像是一种黏合剂,可以把不同的服务统一起来提供一个统一的调用接口,作为使用者来说,我只要获得服务提供者给我的WSDL(对服务的描述),就够了,我完全不知道服务器提供者提供的服务究竟是EJB组件,还是.Net组件,还是什么CORBA组件,还是其他的什么实现,我也不需要知道。Web Services最伟大的地方就在于通过统一的服务提供方式和调用方式,实现了整个Internet服务的共享,是一个非常令人激动的技术领域。Web Services好像目前还没有什么很好的书籍,但是可以通过在网络上面查资料的方式来学习。

Java Learning Path(四) 方法篇

Java 作为一门编程语言,最好的学习方法就是写代码。当你学习一个类以后,你就可以自己写个简单的例子程序来运行一下,看看有什么结果,然后再多调用几个类的方法,看看运行结果,这样非常直观的把类给学会了,而且记忆非常深刻。然后不应该满足把代码调通,你应该想想看如果我不这样写,换个方式,再试试行不行。记得哪个高人说过学习编程就是个破坏的过程,把书上的例子,自己学习Documentation编写的例子在运行通过以后,不断的尝试着用不同的方法实现,不断的尝试破坏代码的结构,看看它会有什么结果。通过这样的方式,你会很彻底的很精通的掌握Java。

举个例子,我们都编过Hello World


public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World");}}


很多初学者不是很理解为什么main方法一定要这样来定义public static void main(String[] args),能不能不这样写?包括我刚学习Java的时候也有这样的疑问。想知道答案吗?很简单,你把main改个名字运行一下,看看报什么错误,然后根据出错信息进行分析;把main的public取掉,在试试看,报什么错误;static去掉还能不能运行;不知道main方法是否一定要传一个 String[]数组的,把String[]改掉,改成int[],或者String试试看;不知道是否必须写args参数名称的,也可以把args改成别的名字,看看运行结果如何。

我当初学习Java的时候就是这样做的,把Hello World程序反复改了七八次,不断运行,分析运行结果,最后就彻底明白为什么了main方法是这样定义的了。

此外,我对于staic,public,private,Exception,try{ }catch {}finally{}等等等等一开始都不是很懂,都是把参考书上面的例子运行成功,然后就开始破坏它,不断的根据自己心里面的疑问来重新改写程序,看看能不能运行,运行出来是个什么样子,是否可以得到预期的结果。这样虽然比较费时间,不过一个例子程序这样反复破坏几次之后。我就对这个相关的知识彻底学通了。有时候甚至故意写一些错误的代码来运行,看看能否得到预期的运行错误。这样对于编程的掌握是及其深刻的。

其中特别值得一提的是JDK有一个非常棒的调试功能,-verbose
java -verbose
javac -verbose 以及其它很多JDK工具都有这个选项
-verbose 可以显示在命令执行的过程中,JVM都依次加载哪里Class,通过这些宝贵的调试信息,可以帮助我们分析出JVM在执行的过程中都干了些什么。

另外,自己在学习过程中,写的很多的这种破坏例程,应该有意识的分门别类的保存下来,在工作中积累的典型例程也应该定期整理,日积月累,自己就有了一个代码库了。遇到类似的问题,到代码库里面 Copy & Paste ,Search & Replace,就好了,极大提高了开发速度。最理想的情况是把一些通用的例程自己再抽象一层,形成一个通用的类库,封装好。那么可复用性就更强了。

所以我觉得其实不是特别需要例程的,自己写的破坏例程就是最好的例子,如果你实在对自己写的代码不放心的话,我强烈推荐你看看JDK基础类库的Java源代码。在JDK安装目录下面会有一个src.zip,解开来就可以完整的看到整个JDK基础类库,也就是rt.jar的Java源代码,你可以参考一下 Sun是怎么写Java程序的,规范是什么样子的。我自己在学习Java的类库的时候,当有些地方理解的不是很清楚的时候,或者想更加清晰的理解运作的细节的时候,往往会打开相应的类的源代码,通过看源代码,所有的问题都会一扫而空。

Java Learning Path(五)资源篇

1、 http://java.sun.com/ (英文)
Sun的Java网站,是一个应该经常去看的地方。不用多说。

2、http://www-900.ibm.com/developerWorks/cn/
IBM的developerWorks网站,英语好的直接去英文主站点看。这里不但是一个极好的面向对象的分析设计网站,也是Web Services,Java,Linux极好的网站。强烈推荐!!!

3、http://www.javaworld.com/ (英文)
关于Java很多新技术的讨论和新闻。想多了解Java的方方面面的应用,这里比较好。

4、http://dev2dev.bea.com.cn/index.jsp
BEA的开发者园地,BEA作为最重要的App Server厂商,有很多独到的技术,在Weblogic上做开发的朋友不容错过。

5、http://www.huihoo.com/
灰狐动力网站,一个专业的中间件网站,虽然不是专业的Java网站,但是在J2EE企业应用技术方面有深厚的造诣。

6、http://www.theserverside.com/ (英文)
TheServerSide是一个著名的专门面向Java Server端应用的网站。

7、http://www.javaresearch.org/
Java研究组织,有很多优秀的Java方面的文章和教程,特别是在JDO方面的文章比较丰富。

8、http://www.cnjsp.org/
JSP技术网站,有相当多的Java方面的文章和资源。

9、http://www.jdon.com/
Jdon论坛,是一个个人性质的中文J2EE专业技术论坛,在众多的Java的中文论坛中,Jdon一个是技术含量非常高,帖子质量非常好的论坛。

10、http://sourceforge.net/
SourgeForge是一个开放源代码软件的大本营,其中也有非常非常丰富的Java的开放源代码的著名的软件。


星期四, 六月 09, 2005
风靡office的管理寓言

  这些寓意深刻的管理寓言在办公室里流行着。其实,更多时候小故事往往比大道理更能打动人。于是,小编采撷了这些精彩的小故事,希望能带给您一点愉悦和启发......


  关于基础——

  纪昌学箭......


  纪昌向飞卫学射箭,飞卫没有传授具体的射箭技巧,却要求他必须学会盯住目标而眼睛不能眨动,纪昌花了两年,练到即使椎子向眼角刺来也不眨一下眼睛的功夫。


飞卫又进一步要求纪昌练眼力,标准要达到将体积较小的东西能够清晰地放大,就像在近处看到一样。纪昌苦练三年,终于能将最小的虱子看成车轮一样大,纪昌张开弓,轻而易举地一箭便将虱子射穿。飞卫得知结果后,对这个徒弟极为满意。

 

  学习射箭必须先练眼力,基础的动作扎实了,应用就可以千变万化;企业的经营也是一样,基本的人事、财务、技术、业务一定要好好掌握,那么后续就可以鸿图大展了。
办企业有如修塔,如果只想往上砌砖,而忘记打牢基础,总有一天塔会倒塌。

  拾鸡者......


  曾有这样一个人,每天都要去偷邻居的鸡,有人告诉他说:"这样的行为,不符合君子之道。"那人回答说:"那就减少一点好了,以后每月偷一只鸡,等到明年的时候,就完全不偷了。"

 

  这也是一种循序渐进的理论?是不是很荒谬?但是我们有时候自己就做着这样的事情。吸烟有害身体,怎么办呢?戒掉吧,每天少抽点;企业的管理机制有问题,一步一步来解决。可是事情到了最后怎么样?烟依然还在抽,企业的问题还是没有彻底解决,一步一步来嘛!


  明智的管理者在制定一项政策的时候,总是会记得这样一件事——制定一个日程安排表,不实现目标决不罢休。
计划使我们的思想具体化而体现出我们期望做什么,什么时候做好,谁去做什么事,以及如何做。

  老农移石......


  有一位老农的农田当中,多年以来横亘着一块大石头。这块石头碰断了老农的好几把犁头,还弄坏了他的中耕机。老农对此无可奈何,巨石成了他种田时挥之不去的心病。

 

  一天,在又一把犁头打坏之后,想起巨石给他带来的无尽麻烦,终于下决心了结这块巨石。于是,他找来撬棍伸进巨石底下,却惊讶地发现,石头埋在地里并没有想象那么深,那么厚,稍使劲道就可以把石头撬起来,再用大锤打碎,清出地里,老农脑海里闪过多年被巨石困扰的情景,再想到可以更早些把这桩头疼事处理掉,禁不住一脸的苦笑。


  从这则寓言故事中,我们会领悟出企业管理中的道理:遇到问题应立即弄清根源,有问题更须立即处理,决不可拖延。


  企业管理活动中,往往会遇到反复出现的问题或不良现象,如若讳疾忌医或拖延了事,积压下来,就必然给企业造成困难,甚至使企业的生产经营活动无法正常进行,严重时还会威胁到企业的生存。所以,对企业管理中出现频率较多的问题,不应回避,而是抓住苗头,及时调查,追根溯源,及时找出解决的途径和办法。


  蜘蛛修网......


  一座破旧的庙里住着两只蜘蛛,一只在屋檐下,一只在佛龛上。一天,旧庙的屋顶塌掉了,幸运的是,两只蜘蛛没有受伤,他们依然在自己的地盘上忙碌地编织起蜘蛛网。没过几天,佛龛上的蜘蛛发现自己的网总是被搞破。一只小鸟飞过,一阵小风刮起,都会让它忙着修上半天。它去问屋檐下的蜘蛛:"我们的丝没有区别,工作的地方也没有改变。为什么我的网总是会破,而你的却没事呢?"屋檐下的蜘蛛笑着说:"难道你没有发现我们头上的屋檐已经没有了吗?"

 

  修网自然很重要,但了解网破的原因更重要。经常会看见忙得团团转的管理者,这些在管理中充当救火队员的管理者就像那只忙碌的蜘蛛一样,没有考虑过问题的根源是什么。


  关于组织文化——

  钓螃蟹的故事......


  钓过螃蟹的人或许都知道,篓子中放了一群螃蟹,不必盖上盖子,螃蟹是爬不出去的,因为只要有一只想往上爬,其他螃蟹便会纷纷攀附在它的身上,结果是把它拉下来,最后没有一只出得去。

 

  组织中也应该留意与去除所谓的"螃蟹文化"。企业里常有一些分子,不喜欢看别人的成就与杰出表现,天天想尽办法破坏与打压,如果不予去除,久而久之,组织里只剩下一群互相牵制、毫无生产力的螃蟹。


  老鹰喂食的故事......

  老鹰是所有鸟类中最强壮的种族,根据动物学家所做的研究,这可能与老鹰的喂食习惯有关。


  老鹰一次生下四五只小鹰,由于它们的巢穴很高,所以猎捕回来的食物一次只能喂食一只小鹰,而老鹰的喂食方式并不是依平等的原则,而是哪一只小鹰抢得凶就给谁吃,在此情况下,瘦弱的小鹰吃不到食物都死了,最凶狠的存活下来,代代相传,老鹰一族愈来愈强壮。

 

  这是一个适者生存的故事,它告诉我们,"公平"不能成为组织中的公认原则,组织若无适当的淘汰制度,常会因小仁小义而耽误了进化,在竞争的环境中将会遭到自然淘汰。


  关于领导艺术——

  两只刺猬......


  两只困倦的刺猬,由于寒冷而拥在一起。可因为各自身上都长着刺,于是它们离开了一段距离,但又冷得受不了,于是凑到一起。几经折腾,两只刺猬终于找到一个合适的距离:既能互相获得对方的温暖而又不致于被扎。

 

  "刺猬"法则就是人际交往中的"心理距离效应"。领导者要搞好工作,应该与下属保持亲密关系,这样做可以获得下属的尊重。与下属保持心理距离,避免在工作中丧失原则。


  北风和南风......


  北风和南风比威力,看谁能把行人身上的大衣脱掉。北风首先来一个冷风凛冽寒冷刺骨,结果行人把大衣裹得紧紧的。南风则徐徐吹动,顿时风和日丽,行人因为觉得春意上身,始而解开纽扣,继而脱掉大衣,南风获得了胜利。

 

  这则寓言形象地说明了一个道理:温暖胜于严寒。领导者在管理中运用"南风"法则,就是要尊重和关心下属,以下属为本,多点人情味,使下属真正感觉到领导者给予的温暖,从而去掉包袱,激发工作的积极性。


  老虎的孤独......


  作为森林王国的统治者,老虎几乎饱尝了管理工作中所能遇到的全部艰辛和痛苦。它终于承认,原来老虎也有软弱的一面。它多么渴望,可以像其他动物一样,享受与朋友相处的快乐;能在犯错误时得到哥们儿的提醒和忠告。


  它问猴子:"你是我的朋友吗?",猴子满脸堆笑着回答:"当然,我永远是您最忠实的朋友。"

  "既然如此,"老虎说,"为什么我每次犯错误时,都得不到你的忠告呢?"

  猴子想了想,小心翼翼地说:"作为您的属下,我可能对您有一种盲目崇拜,所以看不到您的错误。也许您应该去问一问狐狸。"

  老虎又去问狐狸。狐狸眼珠转了一转,讨好地说:"猴子说得对,您那么伟大,有谁能够看出您的错误呢?"


  和可怜的老虎一样,许多主管也时常会体味到"高处不胜寒"的孤独。由于组织结构上的等级制度,主管和部属之间隔着一道深深的鸿沟。所有的部属对你的态度,都像对待老虎一样敬而远之,因为:指出你的错误容易,可万一你恼羞成怒,他们不是自取其祸吗?更何况,由于立场不同,有些部属不仅不会阻止你犯错,反而会等着看你的笑话!尤有甚者,个别员工可能等的就是你倒台的这一天,他正好可以取而代之。

 

  想要部属指出主管的缺点或错误,必须满足三个条件:第一,他能确信自己得到好处;第二,他得足够勇敢;第三,作为主管的你,具有明辨是非的眼力和包容的胸怀