2008年10月29日星期三

动词的"ない形"

一类动词:
把"ます形"去掉"ます"后的最后一个音变成相应的"あ段"音,后加"ない";如果最后音为"い",把"い"变成"わ"再加上"ない"
二类动词:
把"ます"去掉后加上"ない"
三类动词:
"来(き)ます"变成"来(こ)ない",把"します"变成成"しない"

语法:
动ないで ください
表示否定的命令
部屋の かぎお忘れないでください。

动なければ なりません
表示必须。
李さんは 今日 早く 帰らなければなりません。

动なくても いいです
表示不做某事也可以。
あしたは 残業(ざんぎょう)し なくてもいいです。


2008年10月27日星期一

日语中的比较

名1 は 名2より 一类行/二类行です
名词1比名词2更具有形容词所表示的性质
李さんは 森さんより 若(わか)いです。
中国(ちゅうごく)は 日本(にほん)より 広いです。
上海(シャンハイ)は 北京(ペキン)より にぎやかです。
中国は 日本より ずっと 広いです。
名2より 名1のほうが 一类行/二类行です
与名2相比,名1跟具有形容词的性质
日本より 中国のほうが広いです。
北京より 東京のほうが暖かいです。
大坂より 東京の方がにぎやかです。
名1 は 名2ほど 一类行く ないです/二类行では ありません。
名1和名2比,更不具有形容词的性质。
東京の冬(ふゆ) は 北京のふゆ ほど 寒くないです。
神戸は大坂ほどにぎやかではありません。
私の部屋は王さんの部屋ほど きれいでは ありません。
名1 の中(なか)で 名2 が いちばん 一类行/二类行です
在某个范围内,名2最具有形容词的性质。
スポーツのなかで サッカーが おもしろいです。
日本料理(にほんりょうり)の中で 寿司が いちばん おいしいです。
名1と名2と どちらが 一类行/二类行ですか
名1和名2哪个更具有形容词的性质?
日本語と 英語と どちらが 難しいですか。
どの 名/いつ/どれ/だれ/何が いちばん 一类行/二类行 ですか
三个以上事物中,最具有形容词性质的东西?
このなかで どの料理が いちばん おいしいですか。

2008年10月23日星期四

语法汇总

名 は 名 です
相当于汉语的"~是~"。

名 は 名 ではありません
相当于汉语"~不是~"

名 は 名 ですか
相当于汉语"~是~吗?"

名 の 名
表示前面的是后面的名词的从属机构或单位等

これ/それ/あれは 名 です
相当于"这个","那个"。

名[场所]に 名[物/人]が あります/います
某处有某人/物

名[物/人]は 名[场所]に あります/います
某人/物在某处

名[时间]に 动
表示动作发生的时间

名[时间]から 名[时间]まで 动
表示某动作发生在某个时间段

名[场所]へ 动
使用"行きます""帰ります"等表示移动的动词时,表示移动的目的地,这里"へ"读作"え"

名[场所]から 动
使用移动动词时,表示移动的起点

名[交通工具]で 动
交通工具用"で"表示,不用交通工具而步行用"歩いて"

名 を 动
动词的对象用"を"表示

名[场所] で 动
表示动作进行的场所,表示存在的场所用"に"

名1[人] は 名2[人]に 名3[物]を あげます
(名1)送给(名2)(名3)

名1[人] は 名2[人]に 名3[物]を もらいます
(名1)从(名2)得到(名3)

名[人]に 会います
表示所见到的对象用助词"に"

动词的て形

一段动词、カ变、サ变动词接"て"事,动词连用形和接"ます"时相同。
五段动词比较例外。
词尾是"く"和"ぐ"的动词,接"て"时,要发生"イ音变",即去掉"く"或"ぐ",加上"いて"或"いで"。
書(か)くー>書きますー>書いて
嗅(か)ぐー>嗅ぎますー>嗅いで
词尾是"う","つ","る"的动词,接"て"时,要发生"促音变",
買(か)うー>買いますー>買って
待(ま)つー>待ちますー>待って
知(し)るー>知りますー>知って
词尾是"ぬ","ぶ","む"的动词,接"て"时,发生"拨音变",
死(し)ぬー>死にますー>死んで
呼(よ)ぶー>呼びますー>呼んで
読(よ)むー>読みますー>読んで
动词"行く"接"て"是,不发生"イ音变",而发生"促音变",是个例外
行くー>行きますー>行って

语法:

动て 动【相继发生】
表示两个以上的动作依照时间的顺序相继发生。
昨日 デバートへ 行って 買い物します。
家へ 帰って 宿題(しゅくだい)をします。
図書館え 行って 本を かりて、家へ 帰ります。

动でから 动【相继发生】
表述两个以上动词按时间顺序相继发生,但でから在一个句子中不能出现两次以上
李さんは 毎晩(まいばん) ラジオを 聞(き)いてから 寝ます。

动て ください
请求某人做某事
ここに 住所(じゅしょ)と 名前を 書いて ください。

动て います【正在进行】
表示动作或变化正在进行时
小野さんは 今 新聞(しんぶん)を 読んで います。

动ても いいです
表示许可
家で 仕事を しても いいです。

动ては いけません。
飛行機(ひこうき)のなかで タバコを すってはいけません。

名て います【结果状态】
表示动作结束后留下的结果状态
森さんは 車を 持(も)っています。

2008年10月22日星期三

形容词

一类形容词 :

一类形容词是以"い"结尾的形容词。做谓语是后面加"です"。
四川料理(しせんりょうり)は 辛(から)いです。
あのスープは 冷(つめ)たいです。
このお茶(ちゃ)は 熱(あつ)いです。
一类形容词做谓语时的否定形式是将词尾的"い"变成"く"在加上"ないです"或"ありません"
このスープは (熱)あつくないづす。
今日(きょ)は (寒)さむくないづす。
この本(ほん)は 高く(たかく)ありません。
"いいです"的否定形式是"よく ないづす"或"よく ありません"
一类形容词作谓语是的过去形式
将词尾的"い"变成"かった"在加上"です"。其过去形式的否定形式是则是把词尾的"い"变成"く 
なかったです"或者"く ありませんでした"
旅行(りょこう)は 楽(たの)しかったです。
昨日(きのう)は 寒(さむ)くなかったです。
昨日(きのう)は  寒(さむ)くありませでした。
"いいです"的过去形式是"よかったです"、过去否定则是"よくなかったです"或"よくありませんでした"
一类形容词修饰名词
可直接修饰名词
広(ひろ)い国(くに)
青(あい)い海(うみ)
おいしい料理(りょうり)
白(しろ)い紙(かみ

二类形容词
二类形容词是不以"い"结尾的形容词。做谓语时要在后面加"で"。过去形式是"でした"。
京都(きょうと)の紅葉(もみじ) 有名(ゆうめい)です。
この通(とお)はり静(しず)かです。
この町(まち)はにぎやかでした。
二类形容词做谓语时的否定形式是"二类形容词+でわ ありません"。过去形式的否定形式是"で
わありませんでした"。在口语中"でわ"一般说成"じゃ"。
この通(とお)りは にぎやかでわありません。
昨日(きのう)は 暇(ひま)じゃありませんでした。
二类形容词修饰名词时,用"二类动词+な+名词"的形式。
奈良(なら)は静(しず)かな町(まち)です。
奈良(なら)はにぎやかな町(まち)でわありません

WebWork程序骨架

初次学习了WebWork,花了一个下午终于把第一个Demo程序发布成功了,简单的把WebWork程序的骨架说明一下。

环境:Eclipse3.4.0+Tomcat6.0.18+tomcatPlugin3.2.1

为了在Tomcat里面发布方便,用了Eclipse上的一个插件tomcatPlugin,建立一个Tomcat Project,关于Eclipse里面Tomcat的配置在这就不说了。

*.jsp文件是工程有关的jsp前端页面,action以及相关的配置文件均在WEB-INF文件夹下面。

WEB-INF包括了三个文件夹lib,classes,src,以及目录下的web.xml文件。在web.xml文件中主要定义了引用的标间库和servlet的一些设置,以及一些事件监听等等。

scr下面主要存有一些action。这个文件是与WEB-INF下的classes夹是相互映射的,classes下的文件即是scr下的文件经过编译后的文件。
根目录下的xwork.xml文件,是该程序的骨架配置文件,主要定义了该WebWork程序的action,result和intercepter。
webwork.properties是相关的属性文件,其作用以后在说明。
剩下的文件就是一些java写的action类,比如HelloWorld.java

lib文件夹下面主要是一些引用的jar包

xwork.jar WebWork构建所依赖的XWork类库
common-logging.jar 通用的日志类库,WebWork用它为Log4J或者JDK1.4+提供透明的日志记录
oscore.jar OSCore,一个来自OpenSymphony公司的通用功能类库
velocity-dep.jar 依赖的Velocity类库
ognl.jar 对象图导航语言(OGNL),WebWork中使用的表达式语言
versions.txt 主要记录这些依赖的类库的版本号等信息。


2008年10月21日星期二

Inversion of Control(控制反转)

一、什么是IoC

IoC就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。
 
下面我们以几个例子来说明什么是IoC。
假设我们要设计一个Girl和一个Boy类,其中Girl有kiss方法,即Girl想要Kiss一个Boy。那么,我们的问题是,Girl如何能够认识一个Boy?
 
在我们中国,常见的MM与GG的认识方式有以下几种:
1.青梅竹马;2.亲友介绍;3.父母包办。
 
那么哪一种才是最好的呢?

青梅竹马:Girl从小就知道自己的Boy
public class Girl{
void kiss(){
Boy boy=new Boy(); }
}
然而从开始就创建的Boy缺点就是无法再更换。而且要负责Boy的整个生命周期。如果我们的Girl想要换一个怎么办?

亲友介绍:由中间人负责提供Boy来见面。
public class Girl{
void kiss(){
Boy boy=BoyFactory.createBoy();
}
}
亲友介绍,固然是好。如果不满意,尽管另外换一个好了。但是,亲友BoyFactory经常是以Singleton的形式出现,不然就是,存在Golobals,无处不在,无处不能。实在是太繁琐一点,不够灵活。我为什么一定要这个亲友掺和进来呢?为什么一定要付给她介绍费呢?万一最好的朋友爱上了我的男朋友呢?

父母包办:一切交给服务,自己不用费吹灰之力,只需要等着Kiss就好了。
public class Girl{
void kiss(Boy boy){
//kiss boy
boy.kiss();
}
}
Well,这是对Girl最好的办法,只要想办法贿赂了Girl的服务,并把Boy交给他。那么我们就可以轻松的和Girl来Kiss了。看来几千年传统的父母之命还真是有用的。至少Boy和Girl不用自己瞎忙乎了。

这就是IoC,将对象的创建和获取提取到外部。由外部容器提供需要的组件。
我们知道好莱坞原则:“Do not call us, we will call you.” 意思就是,You, girlie, do not call the boy. We will feed you a boy。 
 
我们还应该知道依赖倒转原则即 Dependence Inversion Princinple,DIP。

Eric Gamma说,要面向抽象编程。面向接口编程是面向对象的核心。   
组件应该分为两部分,即:   
Service,所提供功能的声明;   
Implementation,Service的实现。   
好处是:多实现可以任意切换,防止“everything depends on everything”问题。即具体依赖于具体。   
所以,我们的Boy应该是实现Kissable接口。这样一旦Girl不想kiss可恶的Boy的话,还可以kiss可爱的kitten和慈祥的grandmother。

二、IoC的Type

IoC的Type是指Girl得到Boy的几种不同方式。我们逐一来说明.

IoC Type 0:不用IoC
public class Girl implements Servicable{
private Kissable kissable;
public Girl(){
kissable=new Boy();
}
public void kissYourKissable(){
kissable.kiss();
}
}
Girl自己建立自己的Boy,很难更换,很难共享给别人,只能单独使用,并负责完全的生命周期。

IoC Type1:
public class Girl implements Servicable{
Kissable kissable;
public void service(ServiceManager mgr){
kissable=(Kissable)mgr.lookup("kissable");
}
public void kissYourKissable(){
kissable.kiss();
}
}
这种情况出现于Avalon Framework。一个组件实现了Servicable接口,就必须实现service方法,并传入一个ServiceManager。其中会有需要的组件。只需要在service方法中初始化需要的Boy。
另外,J2EE中从context取得对象也属于Type1.它依赖于配置文件。

IoC Type2:
public class Girl{
private Kissable kissable;
public void setKissable(Kissable kissable){
this.kissable=kissable;
}
public void kissYourKissable(){
kissable.kiss();
}
}
Type2出现在Spring Framework,是通过JavaBean的set方法将需要的Boy传递给Girl。它必须依赖于配置文件。

IoC Type3:
public class Girl{
private Kissable kissable;
public Girl(Kissable kissable){
this.kissable=kissable;
}
public void kissYourKissable(){
kissable.kiss();
}
}
这就是PicoContainer的组件。通过构造函数传递Boy给Girl。
代码:
PicoContainer container=new DefaultPicoContainer();
container.registerComponentImplementation(Boy.class);
container.registerComponentImplementation(Girl.class);
Girl girl=(Girl)container.getComponentInstance(Girl.class);
girl.kissYourKissable();

2008年10月16日星期四

动词的"基本型"

从动词的变化形式上,可以分为五段动词、一段动词、サ变动词、カ变动词等4类变化形式。如:
五段动词:行く、ある、飛ぶ
一段动词:起きる、食べる
サ变动词:する
カ变动词:来る
五段动词的词尾都是"ウ"段假名,如:"く、ぐ、す、つ、ね、ぶ、る、う"等。后续助动词时,词尾将在"ア、イ、ウ、エ、オ"五段的各段上变化,并因此得名。例如:"行く"的词尾"く"在接"ます"时,变化为它的"イ"段假名"き",然后加"ます"。如:
いくー>いきます;あるー>あります
一段动词的词尾都是"る"。而"る"前面的假名,或者是"イ"段假名,因它是"ウ"段假名的上一段假名,因而得名"上一段动词";或者是"エ"段假名,因为与"ウ"段假名的下面一段,因而得名"下一段假名",统称"一段动词"。一般动词在接"ます"时,去掉"る"加"ます"即可。如:
おきるー>おきます;たべるー>たべます
サ变动词只有一个,即"する"。在接"ます"时,词干的"す"变"し"加"ます"。如:
するー>します
カ变动词也只有一个,即"くる"。在接"ます"是,词干的"く"变"き"加"ます"。如:
くるー>きます
另外:
五段动词可以称为一类动词
一段动词可以称为二类动词
サ变、カ变动词合称为三类动词

语法:
名[人] は 动[基本型] ことばできます
表示可能。
森さんは 中華料理を 作る ことばできますか。
ーはい。できます。

名 は 动(基本型) ことです
谓语的内容是一种动作、行为是使用这个句型。
森さんの夢は外国で 働(はたら)くことです。

名(基本型) 前に,~
表示一个动作在另一个动作之前发生时,用此句型。
こちらへ 来る 前に 電話を かけてください。

我的简介