﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-月亮的太阳</title><link>http://www.blogjava.net/zyb9114/</link><description>小乖的BLOG</description><language>zh-cn</language><lastBuildDate>Sun, 07 Sep 2008 15:40:37 GMT</lastBuildDate><pubDate>Sun, 07 Sep 2008 15:40:37 GMT</pubDate><ttl>60</ttl><item><title>本地连接属性出现“出现意外错误”，及复制粘贴部分功能失效。</title><link>http://www.blogjava.net/zyb9114/archive/2008/07/28/217976.html</link><dc:creator>月亮的太阳</dc:creator><author>月亮的太阳</author><pubDate>Mon, 28 Jul 2008 02:42:00 GMT</pubDate><guid>http://www.blogjava.net/zyb9114/archive/2008/07/28/217976.html</guid><wfw:comment>http://www.blogjava.net/zyb9114/comments/217976.html</wfw:comment><comments>http://www.blogjava.net/zyb9114/archive/2008/07/28/217976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zyb9114/comments/commentRss/217976.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyb9114/services/trackbacks/217976.html</trackback:ping><description><![CDATA[打开本地连接属性出现&#8220;出现意外错误&#8221;。
原因不明，在网上找了个解决办法如下<br />
<!---->点开始,运行：<!----><br />
<!---->regsvr32 %systemroot%\system32\netshell.dll<br />
<!---->regsvr32 %systemroot%\system32\ole32.dll<br />
<br />
另外还发现原来复制、粘贴（文件中的内容可以，但文件本身不行，并且可以从A复制到桌面，再从桌面复制到B，但不能从A - B）不能用的问题也解决了。<br />
<img src ="http://www.blogjava.net/zyb9114/aggbug/217976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyb9114/" target="_blank">月亮的太阳</a> 2008-07-28 10:42 <a href="http://www.blogjava.net/zyb9114/archive/2008/07/28/217976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Commons-logging + Log4j 入门指南(转摘)</title><link>http://www.blogjava.net/zyb9114/archive/2008/05/19/201439.html</link><dc:creator>月亮的太阳</dc:creator><author>月亮的太阳</author><pubDate>Mon, 19 May 2008 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/zyb9114/archive/2008/05/19/201439.html</guid><description><![CDATA[一 ：为什么同时使用commons-logging和Log4j?为什么不仅使用其中之一？
<br />
<br />
Commons-loggin的目的是为&#8220;所有的Java日志实现&#8221;提供一个统一的接口，它自身的日志功能平常弱（只有一个简单的
SimpleLog?），所以一般不会单独使用它。Log4j的功能非常全面强大，是目前的首选。我发现几乎所有的Java开源项目都会用到Log4j，
但我同时发现，所有用到Log4j的项目一般也同时会用到commons-loggin。我想，大家都不希望自己的项目与Log4j绑定的太紧密吧。另外
一个我能想到的&#8220;同时使用commons-logging和Log4j&#8221;的原因是，简化使用和配置。
<br />
<br />
二 ：Commons-logging能帮我们做什么？
<br />
<br />
提供一个统一的日志接口，简单了操作，同时避免项目与某个日志实现系统紧密a耦合很贴心的帮我们自动选择适当的日志实现系统（这一点非常好！）它甚至不需要配置
<br />
<br />
这里看一下它怎么&#8220;&#8216;很贴心的&#8217;帮我们&#8216;自动选择&#8217;&#8216;适当的&#8217;日志实现系统&#8221;：
<br />
<br />
1)  首先在classpath下寻找自己的配置文件commons-logging.properties，如果找到，则使用其中定义的Log实现类；
<br />
<br />
2)  如果找不到commons-logging.properties文件，则在查找是否已定义系统环境变量org.apache.commons.logging.Log，找到则使用其定义的Log实现类；
<br />
<br />
<br />
<br />
建立一个叫 ：CATALINA_OPTS 的环境变量
<br />
给他的值 ： - Dorg.apache.commons.logging.Log =
org.apache.commons.logging.impl.SimpleLog -
Dorg.apache.commons.logging.simplelog.defaultlog = warn
<br />
<br />
3)  否则，查看classpath中是否有Log4j的包，如果发现，则自动使用Log4j作为日志实现类；
<br />
<br />
4)  否则，使用JDK自身的日志实现类（JDK1.4以后才有日志实现类）；
<br />
<br />
5)  否则，使用commons-logging自己提供的一个简单的日志实现类SimpleLog；
<br />
<br />
（以上顺序不保证完全准确，请参考官方文档）
<br />
<br />
可见，commons-logging总是能找到一个日志实现类，并且尽可能找到一个&#8220;最合适&#8221;的日志实现类。我说它&#8220;很贴心&#8221;实际上是因为：
<br />
<br />
1、可以不需要配置文件；
<br />
2、自动判断有没有Log4j包，有则自动使用之；
<br />
3、最悲观的情况下也总能保证提供一个日志实现（SimpleLog）。
<br />
<br />
<br />
可以看到，commons-logging对编程者和Log4j都非常友好。
<br />
<br />
为了简化配置commons-logging，一般不使用commons-logging的配置文件，也不设置与commons-logging相关的系
统环境变量，而只需将Log4j的Jar包放置到classpash中就可以了。这样就很简单地完成了commons-logging与Log4j的融
合。如果不想用Log4j了怎么办？只需将classpath中的Log4j的Jar包删除即可。就这么简单！
<br />
<br />
代码应该怎么写？
<br />
我们在需要输出日志信息的&#8220;每一人&#8221;类中做如下的三个工作：
<br />
<br />
1、导入所有需的commongs-logging类：
<br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a href="http://touch.javaeye.com/blog/31632#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="复制代码"><img src="http://touch.javaeye.com/images/icon_copy.gif" alt="复制代码" /></a></div>
</div>
<ol class="dp-j" start="1">
    <li><span><span class="number">1</span><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;&nbsp;org.apache.commons.logging.Log;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">2</span><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;&nbsp;org.apache.commons.logging.LogFactory;&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre style="display: none;" name="code" class="java">1  import  org.apache.commons.logging.Log;
2  import  org.apache.commons.logging.LogFactory; </pre>
如果愿意简化的话，还可以两行合为一行：
<br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a href="http://touch.javaeye.com/blog/31632#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="复制代码"><img src="http://touch.javaeye.com/images/icon_copy.gif" alt="复制代码" /></a></div>
</div>
<ol class="dp-j" start="1">
    <li><span><span class="number">1</span><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;&nbsp;org.apache.commons.logging.&nbsp;*&nbsp;;&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre style="display: none;" name="code" class="java">1  import  org.apache.commons.logging. * ; </pre>
2、在自己的类中定义一个org.apache.commons.logging.Log类的私有静态类成员：
<br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a href="http://touch.javaeye.com/blog/31632#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="复制代码"><img src="http://touch.javaeye.com/images/icon_copy.gif" alt="复制代码" /></a></div>
</div>
<ol class="dp-j" start="1">
    <li><span><span class="number">1</span><span>&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">static</span><span>&nbsp;&nbsp;Log&nbsp;log&nbsp;&nbsp;=&nbsp;&nbsp;LogFactory.getLog(YouClassName.&nbsp;</span><span class="keyword">class</span><span>&nbsp;);&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre style="display: none;" name="code" class="java">1  private   static  Log log  =  LogFactory.getLog(YouClassName. class ); </pre>
注意这里定义的是static成员，以避免产生多个实例。
<br />
<br />
LogFactory.getLog()方法的参数使用的是当前类的class，这是目前被普通认为的最好的方式。为什么不写作LogFactory.getLog(this.getClass())？因为static类成员访问不到this指针！
<br />
<br />
3、使用org.apache.commons.logging.Log类的成员方法输出日志信息：
<br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a href="http://touch.javaeye.com/blog/31632#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="复制代码"><img src="http://touch.javaeye.com/images/icon_copy.gif" alt="复制代码" /></a></div>
</div>
<ol class="dp-j" start="1">
    <li><span><span class="number">1</span><span>&nbsp;log.debug(&nbsp;</span><span class="string">"&nbsp;111&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">2</span><span>&nbsp;log.info(&nbsp;</span><span class="string">"&nbsp;222&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">3</span><span>&nbsp;log.warn(&nbsp;</span><span class="string">"&nbsp;333&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">4</span><span>&nbsp;log.error(&nbsp;</span><span class="string">"&nbsp;444&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">5</span><span>&nbsp;log.fatal(&nbsp;</span><span class="string">"&nbsp;555&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre style="display: none;" name="code" class="java">1 log.debug( " 111 " );
2 log.info( " 222 " );
3 log.warn( " 333 " );
4 log.error( " 444 " );
5 log.fatal( " 555 " ); </pre>
这
里的log，就是上面第二步中定义的类成员变量，其类型是org.apache.commons.logging.Log，通过该类的成员方法，我们就可
以将不同性质的日志信息输出到目的地（目的地是哪里？视配置可定，可能是stdout，也可能是文件，还可能是发送到邮件，甚至发送短信到手机&#8230;&#8230;详见下
文对log4j.properties的介绍）：
<br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a href="http://touch.javaeye.com/blog/31632#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="复制代码"><img src="http://touch.javaeye.com/images/icon_copy.gif" alt="复制代码" /></a></div>
</div>
<ol class="dp-j" start="1">
    <li><span><span class="number">1</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;debug()&nbsp;&nbsp;&nbsp;输出&#8220;调试&#8221;级别的日志信息；&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">2</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;info()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输出&#8220;信息&#8221;级别的日志信息；&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">3</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;warn()&nbsp;&nbsp;&nbsp;&nbsp;输出&#8220;警告&#8221;级别的日志信息；&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">4</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输出&#8220;错误&#8221;级别的日志信息；&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">5</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fatal()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输出&#8220;致命错误&#8221;级别的日志信息；&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre style="display: none;" name="code" class="java">1         debug()   输出&#8220;调试&#8221;级别的日志信息；
2         info()      输出&#8220;信息&#8221;级别的日志信息；
3         warn()    输出&#8220;警告&#8221;级别的日志信息；
4         error()     输出&#8220;错误&#8221;级别的日志信息；
5         fatal()      输出&#8220;致命错误&#8221;级别的日志信息； </pre>
根据不同的性质，日志信息通常被分成不同的级别，从低到高依次是：
<br />
&#8220;调试（DEBUG）&#8221;&#8220;信息（INFO）&#8221;&#8220;警告（WARN）&#8221;&#8220;错误（ERROR）&#8221;&#8220;致命错误（FATAL）&#8221;。
<br />
为什么要把日志信息分成不同的级别呢？这实际上是方便我们更好的控制它。比如，通过Log4j的配置文件，我们可以设置&#8220;输出&#8216;调试&#8217;及以上级别
的日志信息&#8221;（即&#8220;调试&#8221;&#8220;信息&#8221;&#8220;警告&#8221;&#8220;错误&#8221;&#8220;致命错误&#8221;），这对项目开发人员可能是有用的；我们还可以设置&#8220;输出&#8220;警告&#8221;及以上级别的日志信息&#8221;
（即&#8220;警告&#8221;&#8220;错误&#8221;&#8220;致命错误&#8221;），这对项目最终用户可能是有用的。
<br />
<br />
仅从字面上理解，也可以大致得出结论：最常用的应该是debug()和info()；而warn()、error()、
<br />
fatal()仅在相应事件发生后才使用。
<br />
<br />
从上面三个步骤可以看出，使用commons-logging的日志接口非常的简单，不需要记忆太多东西：仅仅用到了两个类Log,
LogFactory，并且两个类的方法都非常少（后者只用到一个方法，前者经常用到的也只是上面第三步中列出的几个），同时参数又非常简单。
<br />
<br />
上面所介绍的方法是目前被普通应用的，可以说是被标准化了的方法，几乎所有的人都是这么用。如果不信，或想确认一下，就去下载几个知名的Java开源项目源代码看一下吧。
<br />
<br />
下面给出一个完整的Java类的代码：
<br />
<br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a href="http://touch.javaeye.com/blog/31632#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="复制代码"><img src="http://touch.javaeye.com/images/icon_copy.gif" alt="复制代码" /></a></div>
</div>
<ol class="dp-j" start="1">
    <li><span><span class="number">1</span><span>&nbsp;&nbsp;</span><span class="keyword">package</span><span>&nbsp;&nbsp;liigo.testlog;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">2</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">3</span><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;&nbsp;org.apache.commons.logging.Log;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">4</span><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;&nbsp;org.apache.commons.logging.LogFactory;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">5</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">6</span><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">class</span><span>&nbsp;&nbsp;TestLog&nbsp;&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">7</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">private</span><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">static</span><span>&nbsp;&nbsp;Log&nbsp;log&nbsp;&nbsp;=&nbsp;&nbsp;LogFactory.getLog(TestLog.&nbsp;</span><span class="keyword">class</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">8</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">void</span><span>&nbsp;&nbsp;test()&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">9</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.debug(&nbsp;</span><span class="string">"&nbsp;111&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">10</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&nbsp;</span><span class="string">"&nbsp;222&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">11</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.warn(&nbsp;</span><span class="string">"&nbsp;333&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">12</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.error(&nbsp;</span><span class="string">"&nbsp;444&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">13</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.fatal(&nbsp;</span><span class="string">"&nbsp;555&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">14</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">15</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">16</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">static</span><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">void</span><span>&nbsp;&nbsp;main(String[]&nbsp;args)&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">17</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TestLog&nbsp;testLog&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;</span><span class="keyword">new</span><span>&nbsp;&nbsp;TestLog();&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">18</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;testLog.test();&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">19</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">20</span><span>&nbsp;}&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre style="display: none;" name="code" class="java">1  package  liigo.testlog;
2
3  import  org.apache.commons.logging.Log;
4  import  org.apache.commons.logging.LogFactory;
5
6   public   class  TestLog  {
7      private   static  Log log  =  LogFactory.getLog(TestLog. class );
8       public   void  test()   {
9         log.debug( " 111 " );
10         log.info( " 222 " );
11         log.warn( " 333 " );
12         log.error( " 444 " );
13         log.fatal( " 555 " );
14     }
15
16       public   static   void  main(String[] args)   {
17         TestLog testLog  =   new  TestLog();
18         testLog.test();
19     }
20 } </pre>
<br />
只要保证commons-logging的jar包在classpath中，上述代码肯定可以很顺利的编译通过。那它的执行结果是怎么样的呢？恐怕会有很大的不同，请继续往下看。
<br />
Log4j在哪里呢？它发挥作用了吗？
<br />
应该注意到，我们上面给出的源代码，完全没有涉及到Log4j——这正是我们所希望的，这也正是commons-logging所要达到的目标之一。
<br />
可是，怎么才能让Log4j发挥它的作用呢？答案很简单，只需满足&#8220;classpath中有Log4j的jar包&#8221;。前面已经说过了，
commons-logging会自动发现并应用Log4j。所以只要它存在，它就发挥作用。（它不存在呢？自然就不发挥作用，commons-
logging会另行选择其它的日志实现类。）
<br />
<br />
注意：配置文件log4j.properties对Log4j来说是必须的。如果classpath中没有该配置文件，或者配置不对，将会引发运行时异常。
<br />
这样，要正确地应用Log4j输出日志信息，log4j.properties的作用就很重要了。好在该文件有通用的模板，复制一份（稍加修改）就可以使
用。几乎每一个Java项目目录内都会有一个log4j.properties文件，可下载几个Java开源项目源代码查看。本文最后也附一个模板性质的
log4j.properties文件，直接复制过去就可以用，或者根据自己的需要稍加修改。后文将会log4j.properties文件适当作一些介
绍。
<br />
这里顺便提示一点：如果不用commons-logging，仅仅单独使用Log4j，操作上反而要稍微麻烦一些，因为Log4j需要多一点点的初始化代码（相比commons-logging而言）：
<br />
<br />
<br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a href="http://touch.javaeye.com/blog/31632#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="复制代码"><img src="http://touch.javaeye.com/images/icon_copy.gif" alt="复制代码" /></a></div>
</div>
<ol class="dp-j" start="1">
    <li><span><span class="number">1</span><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;&nbsp;org.apache.log4j.Logger;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">2</span><span>&nbsp;&nbsp;</span><span class="keyword">import</span><span>&nbsp;&nbsp;org.apache.log4j.PropertyConfigurator;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">3</span><span>&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;&nbsp;</span><span class="keyword">class</span><span>&nbsp;&nbsp;TestLog4j&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">4</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">static</span><span>&nbsp;&nbsp;Logger&nbsp;logger&nbsp;&nbsp;=&nbsp;&nbsp;Logger.getLogger(TestLog4j.&nbsp;</span><span class="keyword">class</span><span>&nbsp;);&nbsp;&nbsp;</span><span class="comment">//&nbsp;First&nbsp;step&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">5</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="keyword">public</span><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">static</span><span>&nbsp;&nbsp;&nbsp;</span><span class="keyword">void</span><span>&nbsp;&nbsp;main(String&nbsp;args[])&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">6</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PropertyConfigurator.configure(&nbsp;</span><span class="string">"&nbsp;log4j.properties&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span><span class="comment">//&nbsp;Second&nbsp;step&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">7</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.debug(&nbsp;</span><span class="string">"&nbsp;Here&nbsp;is&nbsp;some&nbsp;DEBUG&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span><span class="comment">//&nbsp;Third&nbsp;step&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">8</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.info(&nbsp;</span><span class="string">"&nbsp;Here&nbsp;is&nbsp;some&nbsp;INFO&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;<span class="number">9</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.warn(&nbsp;</span><span class="string">"&nbsp;Here&nbsp;is&nbsp;some&nbsp;WARN&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">10</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.error(&nbsp;</span><span class="string">"&nbsp;Here&nbsp;is&nbsp;some&nbsp;ERROR&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">11</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.fatal(&nbsp;</span><span class="string">"&nbsp;Here&nbsp;is&nbsp;some&nbsp;FATAL&nbsp;"</span><span>&nbsp;);&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">12</span><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span><span class="number">13</span><span>&nbsp;}&nbsp;&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<pre style="display: none;" name="code" class="java">1  import  org.apache.log4j.Logger;
2  import  org.apache.log4j.PropertyConfigurator;
3  public  class  TestLog4j   {
4     static  Logger logger  =  Logger.getLogger(TestLog4j. class );  // First step
5       public   static   void  main(String args[])   {
6       PropertyConfigurator.configure( " log4j.properties " );  // Second step
7       logger.debug( " Here is some DEBUG " );  // Third step
8       logger.info( " Here is some INFO " );
9       logger.warn( " Here is some WARN " );
10       logger.error( " Here is some ERROR " );
11       logger.fatal( " Here is some FATAL " );
12    }
13 } </pre>
<br />
不过也就多出一行。但这至少说明，引用commons-logging并没有使问题复杂化，反而简单了一些。在这里1+1就小于2了。这也验证了前面的结论。
<br />
<br />
总结
<br />
将commons-logging和Log4j的jar包都放置到classpath下，同时也将Log4j的配置文件放到classpath中，两者就可以很好的合作。
<br />
采用Log4j配合commons-logging作为日志系统，是目前Java领域非常非常流行的模式，使用非常非常的普遍。两者的结合带来的结果就是：简单 + 强大。
<br />
<br />
commons-logging提供了简捷、统一的接口，不需要额外配置，简单；
<br />
<br />
Log4j功能非常全面、强大；
<br />
<br />
commons-logging仅仅对Log4j(当然还包括其它LOG实现)作了一层包装，具体的日志输出还是在内部转交给身后的Log4j来处理；而Log4j虽然做了所有的事情，却甘作绿叶，从不以真身示人。
<br />
<br />
两者堪称绝配。
<br />
<br />
对log4j.properties的一点介绍
<br />
下面对log4j.properties文件内容作一点点介绍，以后文所附log4j.properties文件为例：
<br />
<br />
除去以#开头的注释以及空行，第一行有用的内容是：
<br />
<br />
1  log4j.rootLogger  =  DEBUG, CONSOLE,A1
<br />
log4j.rootLogger是最最重要的一个属性了，它定义日志信息的&#8220;输出级别&#8221;和&#8220;输出目的地&#8221;。
<br />
关键看&#8220;=&#8221;后面的值，&#8220;DEBUG, CONSOLE,A1&#8221;这里我们要把它分成两部分：第一个逗号之前的是第一部分，指定&#8220;输出级别&#8221;；后面的是第二部分，指定&#8220;输出目的地&#8221;。可以同时指定多个&#8220;输出目的地&#8221;，以逗号隔开。
<br />
具体到上面这一行：它指定的&#8220;输出级别&#8221;是&#8220;DEBUG&#8221;；它指定的&#8220;输出目的地&#8221;是&#8220;CONSOLE&#8221;和&#8220;A1&#8221;。
<br />
<br />
注意：
<br />
<br />
&#8220;输出级别&#8221;有可选的五个值，分别是DEBUG、INFO、WARN、ERROR、FATAL，它们是由Log4j系统定义的。
<br />
<br />
&#8220;输出目的地&#8221;就是我们自己定义的了，就在log4j.properties的后面部分，此文件定义的&#8220;输出目的地&#8221;有CONSOLE、FILE、
ROLLING_FILE、SOCKET、LF5_APPENDER、MAIL、DATABASE、A1、im。该文件之所以可作主模板，就是因为它比较
全面地定义了各种常见的输出目的地（控制台、文件、电子邮件、数据库等）。
<br />
<br />
好，下面详细解释&#8220;log4j.rootLogger=DEBUG, CONSOLE,A1&#8221;这一行：
<br />
<br />
指定&#8220;输出级别&#8221;是&#8220;DEBUG&#8221;，即，仅输出级别大于等于&#8220;调试（DEBUG）&#8221;的日志信息。如果此处指定的是&#8220;WARN&#8221;则仅调用warn()、
error()、fatal()方法输出的日志信息才被输出到&#8220;输出目的地&#8221;，而调用debug()、info()方法输出的日志信息不被输出到&#8220;输出目
的地&#8221;。明白了吗？Log4j就是以这种方式来过滤控制日志信息的输出与否，这也是对日志信息进行级别分类的目的。
<br />
指定&#8220;输出目的地&#8221;是&#8220;CONSOLE&#8221;和&#8220;A1&#8221;，即，将指定的日志信息（根据日志级别已进行了过滤）同时输出到的&#8220;控制台&#8221;和&#8220;SampleMessages.log4j文件&#8221;。
<br />
<br />
<br />
为什么说&#8220;CONSOLE&#8221;表示将日志信息输出到&#8220;控制台&#8221;呢？那就要看一下后文的定义了：
<br />
<br />
# 应用于控制台
<br />
<br />
1 log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender
<br />
2 log4j.appender.Threshold = DEBUG
<br />
3 log4j.appender.CONSOLE.Target = System.out
<br />
4 log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
<br />
5 log4j.appender.CONSOLE.layout.ConversionPattern = [framework]  % d  -   % c  -%- 4r [ % t]  %- 5p  % c  % x  -   % m % n
<br />
6 #log4j.appender.CONSOLE.layout.ConversionPattern = [start] % d
{DATE} [DATE] % n % p[PRIORITY] % n % x[NDC] % n % t[THREAD] n %
c[CATEGORY] % n % m[MESSAGE] % n % n <br />
为什么说&#8220;A1&#8221;表示将日志信息输出到&#8220;SampleMessages.log4j文件&#8221;呢？还要看后文的定义：
<br />
<br />
1 log4j.appender.A1 = org.apache.log4j.DailyRollingFileAppender
<br />
2 log4j.appender.A1.File = SampleMessages.log4j
<br />
3 log4j.appender.A1.DatePattern = yyyyMMdd - HH ' .log4j '
<br />
4 log4j.appender.A1.layout = org.apache.log4j.xml.XMLLayout
<br />
注意：这里的定义没有指定输出文件的路径，它的路径实际上是 java.user.path的值。
<br />
您应该已经注意到，在定义&#8220;输出目的地&#8221;时，还可以指定日志格式、时间、布局等相关信息。略过。
<br />
<br />
好了，我可以根据需要，将这一行修改为：
<br />
<br />
1 log4j.rootLogger  =  ERROR, CONSOLE,FILE,MAIL
<br />
将&#8220;错误（ERROR）&#8221;及&#8220;致命错误（FATAL）&#8221;级别的日志信息同时输出到控制台、文件，并且发电子邮件向系统管理员报告。是不是很爽？
（如果将&#8220;调试（DEBUG）&#8221;级别的日志信息邮件给管理员，恐怕迟早会把他/她的邮箱涨爆，哪怕用的是Gmail！再次理解了&#8220;将日志信息分为不同级
别&#8221;的意图了吧？）
<br />
<br />
附：一个有用的log4j.properties文件模板
<br />
<br />
<br />
<div class="bar">
<div class="tools">Java代码 <a href="http://touch.javaeye.com/blog/31632#" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" title="复制代码"><img src="http://touch.javaeye.com/images/icon_copy.gif" alt="复制代码" /></a></div>
</div>
<ol class="dp-j" start="1">
    <li><span><span>&nbsp;##Log4J的配置之简单使它遍及于越来越多的应用中了&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>##Log4J配置文件实现了输出到控制台、文件、回滚文件、发送日志邮件、输出到数据库日志表、自定义标签等全套功能。择其一二使用就够用了。&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>##此文件（log4j.properties）内容来自网络，非本文作者liigo原创。&nbsp;&nbsp;</span></li>
    <li><span>log4j.rootLogger&nbsp;=&nbsp;DEBUG,&nbsp;CONSOLE,A1&nbsp;&nbsp;</span></li>
    <li><span>log4j.addivity.org.apache&nbsp;=&nbsp;<span class="keyword">true</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>#&nbsp;应用于控制台&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.CONSOLE&nbsp;=&nbsp;org.apache.log4j.ConsoleAppender&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.Threshold&nbsp;=&nbsp;DEBUG&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.CONSOLE.Target&nbsp;=&nbsp;System.out&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.CONSOLE.layout&nbsp;=&nbsp;org.apache.log4j.PatternLayout&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.CONSOLE.layout.ConversionPattern&nbsp;=&nbsp;[framework]&nbsp;&nbsp;%&nbsp;d&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;%&nbsp;c&nbsp;&nbsp;-%-&nbsp;4r&nbsp;[&nbsp;%&nbsp;t]&nbsp;&nbsp;%-&nbsp;5p&nbsp;&nbsp;%&nbsp;c&nbsp;&nbsp;%&nbsp;x&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;%&nbsp;m&nbsp;%&nbsp;n&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>#log4j.appender.CONSOLE.layout.ConversionPattern&nbsp;=&nbsp;[start]&nbsp;%&nbsp;d&nbsp;&nbsp;{DATE}&nbsp;[DATE]&nbsp;%&nbsp;n&nbsp;%&nbsp;p[PRIORITY]&nbsp;%&nbsp;n&nbsp;%&nbsp;x[NDC]&nbsp;%&nbsp;n&nbsp;%&nbsp;t[THREAD]&nbsp;n&nbsp;%&nbsp;c[CATEGORY]&nbsp;%&nbsp;n&nbsp;%&nbsp;m[MESSAGE]&nbsp;%&nbsp;n&nbsp;%&nbsp;n&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>#应用于文件&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.FILE&nbsp;=&nbsp;org.apache.log4j.FileAppender&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.FILE.File&nbsp;=&nbsp;file.log&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.FILE.Append&nbsp;=&nbsp;<span class="keyword">false</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>log4j.appender.FILE.layout&nbsp;=&nbsp;org.apache.log4j.PatternLayout&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.FILE.layout.ConversionPattern&nbsp;=&nbsp;[framework]&nbsp;&nbsp;%&nbsp;d&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;%&nbsp;c&nbsp;&nbsp;-%-&nbsp;4r&nbsp;[&nbsp;%&nbsp;t]&nbsp;&nbsp;%-&nbsp;5p&nbsp;&nbsp;%&nbsp;c&nbsp;&nbsp;%&nbsp;x&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;%&nbsp;m&nbsp;%&nbsp;n&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>#&nbsp;Use&nbsp;&nbsp;<span class="keyword">this</span><span>&nbsp;&nbsp;layout&nbsp;&nbsp;</span><span class="keyword">for</span><span>&nbsp;&nbsp;LogFactor&nbsp;&nbsp;</span><span class="number">5</span><span>&nbsp;&nbsp;analysis&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>#&nbsp;应用于文件回滚&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.ROLLING_FILE&nbsp;=&nbsp;org.apache.log4j.RollingFileAppender&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.ROLLING_FILE.Threshold&nbsp;=&nbsp;ERROR&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.ROLLING_FILE.File&nbsp;=&nbsp;rolling.log&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.ROLLING_FILE.Append&nbsp;=&nbsp;<span class="keyword">true</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>log4j.appender.ROLLING_FILE.MaxFileSize&nbsp;=&nbsp;10KB&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.ROLLING_FILE.MaxBackupIndex&nbsp;=&nbsp;<span class="number">1</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>log4j.appender.ROLLING_FILE.layout&nbsp;=&nbsp;org.apache.log4j.PatternLayout&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.ROLLING_FILE.layout.ConversionPattern&nbsp;=&nbsp;[framework]&nbsp;&nbsp;%&nbsp;d&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;%&nbsp;c&nbsp;&nbsp;-%-&nbsp;4r&nbsp;[&nbsp;%&nbsp;t]&nbsp;&nbsp;%-&nbsp;5p&nbsp;&nbsp;%&nbsp;c&nbsp;&nbsp;%&nbsp;x&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;%&nbsp;m&nbsp;%&nbsp;n&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>#应用于socket&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.SOCKET&nbsp;=&nbsp;org.apache.log4j.RollingFileAppender&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.SOCKET.RemoteHost&nbsp;=&nbsp;localhost&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.SOCKET.Port&nbsp;=&nbsp;<span class="number">5001</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>log4j.appender.SOCKET.LocationInfo&nbsp;=&nbsp;<span class="keyword">true</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>#&nbsp;Set&nbsp;up&nbsp;&nbsp;<span class="keyword">for</span><span>&nbsp;&nbsp;Log&nbsp;Facter&nbsp;&nbsp;</span><span class="number">5</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>log4j.appender.SOCKET.layout&nbsp;=&nbsp;org.apache.log4j.PatternLayout&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.SOCET.layout.ConversionPattern&nbsp;=&nbsp;[start]&nbsp;%&nbsp;d&nbsp;&nbsp;{DATE}&nbsp;[DATE]&nbsp;%&nbsp;n&nbsp;%&nbsp;p[PRIORITY]&nbsp;%&nbsp;n&nbsp;%&nbsp;x[NDC]&nbsp;%&nbsp;n&nbsp;%&nbsp;t[THREAD]&nbsp;%&nbsp;n&nbsp;%&nbsp;c[CATEGORY]&nbsp;%&nbsp;n&nbsp;%&nbsp;m[MESSAGE]&nbsp;%&nbsp;n&nbsp;%&nbsp;n&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>#&nbsp;Log&nbsp;Factor&nbsp;&nbsp;<span class="number">5</span><span>&nbsp;&nbsp;Appender&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>log4j.appender.LF5_APPENDER&nbsp;=&nbsp;org.apache.log4j.lf5.LF5Appender&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.LF5_APPENDER.MaxNumberOfRecords&nbsp;=&nbsp;<span class="number">2000</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>#&nbsp;发送日志给邮件&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.MAIL&nbsp;=&nbsp;org.apache.log4j.net.SMTPAppender&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.MAIL.Threshold&nbsp;=&nbsp;FATA&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.MAIL.BufferSize&nbsp;=&nbsp;<span class="number">10</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>log4j.appender.MAIL.From&nbsp;=&nbsp;web<span class="annotation">@www</span><span>.wuset.com&nbsp;&nbsp;</span></span></li>
    <li><span>log4j.appender.MAIL.SMTPHost&nbsp;=&nbsp;www.wusetu.com&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.MAIL.Subject&nbsp;=&nbsp;Log4J&nbsp;Message&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.MAIL.To&nbsp;=&nbsp;web<span class="annotation">@www</span><span>.wusetu.com&nbsp;&nbsp;</span></span></li>
    <li><span>log4j.appender.MAIL.layout&nbsp;=&nbsp;org.apache.log4j.PatternLayout&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.MAIL.layout.ConversionPattern&nbsp;=&nbsp;[framework]&nbsp;&nbsp;%&nbsp;d&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;%&nbsp;c&nbsp;&nbsp;-%-&nbsp;4r&nbsp;[&nbsp;%&nbsp;t]&nbsp;&nbsp;%-&nbsp;5p&nbsp;&nbsp;%&nbsp;c&nbsp;&nbsp;%&nbsp;x&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;%&nbsp;m&nbsp;%&nbsp;n&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>#&nbsp;用于数据库&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.DATABASE&nbsp;=&nbsp;org.apache.log4j.jdbc.JDBCAppender&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.DATABASE.URL&nbsp;=&nbsp;jdbc:mysql:&nbsp;<span class="comment">//&nbsp;localhost:3306/test&nbsp;&nbsp;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span>log4j.appender.DATABASE.driver&nbsp;=&nbsp;com.mysql.jdbc.Driver&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.DATABASE.user&nbsp;=&nbsp;root&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.DATABASE.password&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.DATABASE.sql&nbsp;=&nbsp;INSERT&nbsp;INTO&nbsp;LOG4J&nbsp;(Message)&nbsp;VALUES&nbsp;(&nbsp;<span class="string">'&nbsp;[framework]&nbsp;%d&nbsp;-&nbsp;%c&nbsp;-%-4r&nbsp;[%t]&nbsp;%-5p&nbsp;%c&nbsp;%x&nbsp;-&nbsp;%m%n&nbsp;'</span><span>&nbsp;)&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>log4j.appender.DATABASE.layout&nbsp;=&nbsp;org.apache.log4j.PatternLayout&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.DATABASE.layout.ConversionPattern&nbsp;=&nbsp;[framework]&nbsp;&nbsp;%&nbsp;d&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;%&nbsp;c&nbsp;&nbsp;-%-&nbsp;4r&nbsp;[&nbsp;%&nbsp;t]&nbsp;&nbsp;%-&nbsp;5p&nbsp;&nbsp;%&nbsp;c&nbsp;&nbsp;%&nbsp;x&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;%&nbsp;m&nbsp;%&nbsp;n&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.A1&nbsp;=&nbsp;org.apache.log4j.DailyRollingFileAppender&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.A1.File&nbsp;=&nbsp;SampleMessages.log4j&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.A1.DatePattern&nbsp;=&nbsp;yyyyMMdd&nbsp;-&nbsp;HH&nbsp;<span class="string">'&nbsp;.log4j&nbsp;'</span><span>&nbsp;&nbsp;&nbsp;&nbsp;</span></span></li>
    <li><span>log4j.appender.A1.layout&nbsp;=&nbsp;org.apache.log4j.xml.XMLLayout&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>#自定义Appender&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.im&nbsp;&nbsp;=&nbsp;&nbsp;net.cybercorlin.util.logger.appender.IMAppender&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.im.host&nbsp;&nbsp;=&nbsp;&nbsp;mail.cybercorlin.net&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.im.username&nbsp;&nbsp;=&nbsp;&nbsp;username&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.im.password&nbsp;&nbsp;=&nbsp;&nbsp;password&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.im.recipient&nbsp;&nbsp;=&nbsp;&nbsp;corlin<span class="annotation">@cybercorlin</span><span>.net&nbsp;&nbsp;</span></span></li>
    <li><span>log4j.appender.im.layout&nbsp;=&nbsp;org.apache.log4j.PatternLayout&nbsp;&nbsp;&nbsp;</span></li>
    <li><span>log4j.appender.im.layout.ConversionPattern&nbsp;&nbsp;=&nbsp;[framework]&nbsp;&nbsp;%&nbsp;d&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;%&nbsp;c&nbsp;&nbsp;-%-&nbsp;4r&nbsp;[&nbsp;%&nbsp;t]&nbsp;&nbsp;%-&nbsp;5p&nbsp;&nbsp;%&nbsp;c&nbsp;&nbsp;%&nbsp;x&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;%&nbsp;m&nbsp;%&nbsp;n&nbsp;&nbsp;</span></li>
    <li><span>&nbsp;&nbsp;</span></li>
    <li><span>#&nbsp;结束</span></li>
</ol>
日志信息格式中几个符号所代表的含义：<br />
&nbsp;-X号: X信息输出时左对齐；<br />
&nbsp;%p: 输出日志信息优先级，即DEBUG，INFO，WARN，ERROR，FATAL,<br />
&nbsp;%d: 输出日志时间点的日期或时间，默认格式为ISO8601，也可以在其后指定格式，比如：%d{yyy MMM dd HH:mm:ss,SSS}，输出类似：2002年10月18日 22：10：28，921<br />
&nbsp;%r: 输出自应用启动到输出该log信息耗费的毫秒数<br />
&nbsp;%c: 输出日志信息所属的类目，通常就是所在类的全名<br />
&nbsp;%t: 输出产生该日志事件的线程名<br />
&nbsp;%l: 输出日志事件的发生位置，相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程，以及在代码中的行数。举例：Testlog4.main (TestLog4.java:10)<br />
&nbsp;%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。<br />
&nbsp;%%: 输出一个"%"字符<br />
&nbsp;%F: 输出日志消息产生时所在的文件名称<br />
&nbsp;%L: 输出代码中的行号<br />
&nbsp;%m: 输出代码中指定的消息,产生的日志具体信息<br />
&nbsp;%n: 输出一个回车换行符，Windows平台为"\r\n"，Unix平台为"\n"输出日志信息换行<br />
&nbsp;可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如：<br />
&nbsp;1)%20c：指定输出category的名称，最小的宽度是20，如果category的名称小于20的话，默认的情况下右对齐。<br />
&nbsp;2)%-20c:指定输出category的名称，最小的宽度是20，如果category的名称小于20的话，"-"号指定左对齐。<br />
&nbsp;3)%.30c:指定输出category的名称，最大的宽度是30，如果category的名称大于30的话，就会将左边多出的字符截掉，但小于30的话也不会有空格。<br />
&nbsp;4)%20.30c:如果category的名称小于20就补空格，并且右对齐，如果其名称长于30字符，就从左边较远输出的字符截掉。<br />
<img src ="http://www.blogjava.net/zyb9114/aggbug/201439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyb9114/" target="_blank">月亮的太阳</a> 2008-05-19 17:05 <a href="http://www.blogjava.net/zyb9114/archive/2008/05/19/201439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AutoItX 1.4/2.63实现sendkeys和许多强大功能的COM组件(作者: Jonathan Bennett) </title><link>http://www.blogjava.net/zyb9114/archive/2006/12/20/89042.html</link><dc:creator>月亮的太阳</dc:creator><author>月亮的太阳</author><pubDate>Wed, 20 Dec 2006 07:04:00 GMT</pubDate><guid>http://www.blogjava.net/zyb9114/archive/2006/12/20/89042.html</guid><wfw:comment>http://www.blogjava.net/zyb9114/comments/89042.html</wfw:comment><comments>http://www.blogjava.net/zyb9114/archive/2006/12/20/89042.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zyb9114/comments/commentRss/89042.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyb9114/services/trackbacks/89042.html</trackback:ping><description><![CDATA[作者：Jonathan Bennett 主页(英文): <a href="http://www.hiddensoft.com/AutoIt/">http://www.hiddensoft.com/AutoIt/</a>  <br />说明: 陶清 ( <a href="mailto:taoqing@163.net">taoqing@163.net</a> )<br />本地下载：AutoItx是免费组件! cool!<br />1.4版本   <a href="http://www.pdriver.com/pb02/10/autoit14.zip">http://www.pdriver.com/pb02/10/autoit14.zip</a> (size: 62kb)<br />2.63版本  <a href="http://www.pdriver.com/pb02/10/AutoIt263.exe">http://www.pdriver.com/pb02/10/AutoIt263.exe</a> (size: 612kb) 
<p>  VB 3.0就已经提供了一个很特别很有用的函数Sendkeys，能模拟键盘的操作，能以极为简单的方式实现许多演示或自动化工作。可惜PB中一直不能实现（即使用ＡＰＩ实现在起来非常复杂，功能也不AutoITx内核好并且调用方便）</p><p>  本系统是老外写的一个com组件，原理是根据从windows98开始windows自带提供了Microsoft's scripting engines来包装的调用。</p><p>  Microsoft's scripting engines类似于DOS时代的.bat处理文件，提供了许多方法(以com对象的方式)来方便用户调用windows的许多功能。</p><p>  如果你在电脑中搜索 *.vbs文件（一般都在windows目录下）会找到一些例程，仔细阅读这些例题你将会发现非常有用。包括了有控制excel，网络共享名的联接方式。</p><p>　本AutoItX提供了许多强大的功能，如下，其中第1,2点是我认为最有用的功能。<br /><strong><font color="darkred"><em>(cool!)</em></font></strong>1.支持sendkeys ，除ctrl+alt+del不允许外，其余的任何键你都可以模拟发送。包括组合键。还有特殊按键.<br />例如最常见的组合键, ctrl + a , 只需要使用sendkeys (<br /><font color="darkred"><strong><em>(cool!)</em></strong></font>2.重启,开机，注册销等操作(2.63版本支持windows98/me/nt/2000)，如你使用nt 4.0，强烈推荐要升级到sp6<br />3.支持窗口控制函数，最小化，隐藏，恢复，等待某窗口出现(如某messagebox)，将指定的窗口放到最前面<br />4.sleep命令(pb中有)<br />5.ini的读写(pb中有)<br />6.对windows的剪贴板的copy, paste操作<br />7.模拟mouse的移动，点击，拖拽。</p><p>调用示范(test.hta代码)<br />如果你下载的是1.4版本，先使用regsvr32 AutoItX.dll的方式注册 </p><p>&lt;script language="VBScript"&gt;<br />Sub RunProgram<br />Dim oShell<br />Dim oAutoIt<br />Set oShell = CreateObject("WScript.Shell")<br />Set oAutoIt = CreateObject("AutoItX.Control")<br />oShell.Run "C:\Progra~1\swglxt\SWGLXT.exe", 1, FALSE<br />oAutoIt.WinWaitActive "登陆", ""<br />'oAutoIt.Send "myname"<br />'oAutoIt.Send "{TAB}"<br />'oAutoIt.Send "mypassword"<br />'oAutoIt.Send "{ENTER 2}"</p><p>End Sub<br />&lt;/script&gt;<br />&lt;input type="button" value="test" onclick="RunProgram"&gt;</p><p><strong><font color="darkred">下面的命令是在屏幕x=50, y=200的位置模拟点击mouse左键<br /></font></strong>myoleobject.LeftClick( 50, 200)</p><p><strong><font color="darkred">下面的命令是模拟按下组合键ctrl + v</font></strong><br />myoleobject.send("{CTRLDOWN}v{CTRLUP}") </p><p>关于具体的键盘代码对应表可见其帮助文件. 1.4版本的帮助文件名是 AutoItX.chm</p><p>  注意截止到写本文的时候最新版本是 2.63,　因为我用1.4版本测试后已经完全满足了sendkeys功能，如果你需要在xp或2000下调用AutoItX的关机等功能，则建议你下载2.63版本。<br />  2.63已经支持 windows 2000/xp，同时提供activex或dll方式的调用，还提供了书写script并编译成exe独自执行的功能（即你可以不用第三方的软件，如pb,vb,delphi来写)<br />  2.63下载后可以直接安装。<br />  1.4版本的提供的.vbs例程我已经修改了，可以用于简体windows下面，而2.63版本因为其针对英文windows所写的sample，所以有些地方你需要修改，例如其中一个例程<br />C:\Program Files\AutoIt\Examples\_Run_Me_First.aut <br />其中有一个等待写字板出现的函数调用如下：<br />WinWait, Untitled - Notepad<br />你需要将它改为<br />WinWait, 无标题 - 记事本<br />才能正常运行。否则winwait会一直等到有一个窗口标题为Untitled - Notepad的窗口出现才继续执行script</p><img src ="http://www.blogjava.net/zyb9114/aggbug/89042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyb9114/" target="_blank">月亮的太阳</a> 2006-12-20 15:04 <a href="http://www.blogjava.net/zyb9114/archive/2006/12/20/89042.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat5.5.20连接池DBCP、C3P0配置(含官方配置)</title><link>http://www.blogjava.net/zyb9114/archive/2006/12/12/87275.html</link><dc:creator>月亮的太阳</dc:creator><author>月亮的太阳</author><pubDate>Tue, 12 Dec 2006 07:41:00 GMT</pubDate><guid>http://www.blogjava.net/zyb9114/archive/2006/12/12/87275.html</guid><wfw:comment>http://www.blogjava.net/zyb9114/comments/87275.html</wfw:comment><comments>http://www.blogjava.net/zyb9114/archive/2006/12/12/87275.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zyb9114/comments/commentRss/87275.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyb9114/services/trackbacks/87275.html</trackback:ping><description><![CDATA[<p>
<strong>DBCP:</strong><br />
<font color="#0033ff">第一种方法</font>:修改$CATALINA_HOME\conf\server.xml,在<font color="#ff0000">&lt;GlobalNamingResources&gt;</font>中添加:<br />
&lt;Resource name="jdbc/dsname" auth="Container" type="javax.sql.DataSource"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxActive="100" maxIdle="30" maxWait="200"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; driverClassName="@DB-DRIVERNAME@"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; username="@DB-USERNAME@" password="@DB-PASSWORD@" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url="@DB-URL@"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; defaultAutoCommit="true" removeAbandoned="true" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; removeAbandonedTimeout="60" logAbandoned="true"/&gt;<br />
<br />
然后在$CATALINA_HOME\conf\Catalina\localhost,创建应用相关的*.xml文件,在此文件的&lt;context&gt;中添加:<br />
&lt;ResourceLink<br />
&nbsp;&nbsp;&nbsp; global="jdbc/dsname"<br />
&nbsp;&nbsp;&nbsp; name="jdbc/dsname"<br />
&nbsp;&nbsp;&nbsp; type="javax.sql.DataSourcer"/&gt;<br />
<br />
<font color="#0033ff">第二种方法:</font>直接在$CATALINA_HOME\conf\Catalina\localhost,创建应用相关的*.xml文件,在此文件的&lt;context&gt;中添加:<br />
&lt;Resource name="jdbc/dsname" auth="Container" type="javax.sql.DataSource"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxActive="100" maxIdle="30" maxWait="200"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; driverClassName="@DB-DRIVERNAME@"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; username="@DB-USERNAME@" password="@DB-PASSWORD@" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url="@DB-URL@"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; defaultAutoCommit="true" removeAbandoned="true" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; removeAbandonedTimeout="60" logAbandoned="true"/&gt;<br />
<br />
<font color="#0033ff">还有一种是官方配置:<br />
</font>1.修改$CATALINA_HOME\conf\server.xml,Context对应你的web应用的目录名,放到<font color="#ff0000">&lt;host&gt;</font>中间:<br />
&lt;Context docBase="test" path="/test" debug="5" reloadable="true" crossContext="true"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;Resource name="jdbc/dsname" auth="Container" type="javax.sql.DataSource"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxActive="100" maxIdle="30" maxWait="200"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; driverClassName="@DB-DRIVERNAME@"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; username="@DB-USERNAME@" password="@DB-PASSWORD@" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url="@DB-URL@"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; defaultAutoCommit="true" removeAbandoned="true" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; removeAbandonedTimeout="60" logAbandoned="true"/&gt;<br />
&lt;/Context&gt;<br />
2.在你的WEB应用的web.xml中添加:<br />
&lt;resource-ref&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;DB Connection&lt;/description&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;res-ref-name&gt;jdbc/dsname&lt;/res-ref-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;res-auth&gt;Container&lt;/res-auth&gt;<br />
&nbsp; &lt;/resource-ref&gt;<br />
<br />
第一种和第三种差不多,第一种第一段其实就是用<a href="http://localhost:8080/admin">http://localhost:8080/admin</a>添加DataSource后生成的,要多写一个WEB应用相关的XML来绑定连接池,第三种把这个文件集成到了server.xml中,和连接池的绑定交给了web.xml,但共同不方便的是如果TOMCAT下有多个应用,在开发中可能有的应用是不需要启动的,那你就要去修改server.xml.<br />
第二种方法的优点也正是另外两种方法的缺点,个人比较喜欢第二种方法,一个是TOMCAT版本更换比较方便,是的之前备份应用相关XML就可以了;二是如果不需要启动不相关的应用直接把文件名改一下,比如说加个.bak后缀就可以了.</p>
<br />
<p><br />
</p>
<p><strong>C3P0:</strong></p>
<p>因为TOMCAT自带的DBCP有很多BUG，所有有时会使用C3P0来替代，配置方法和上边的结构基本一样，注意几个参数名称不一样就可以了，另外还要把C3P0的JAR包放到classpath</p>
<p>&lt;Resource name="jdbc/name" auth="Container" type="<strong>com.mchange.v2.c3p0.ComboPooledDataSource</strong>"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxPoolSize="30" minPoolSize="1" initialPoolSize="5" acquireIncrement="2"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; idleConnectionTestPeriod="60" maxIdleTime="60"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; driverClass="@DB-DRIVERNAME@"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>user</strong>="@DB-USERNAME@" password="@DB-PASSWORD@" <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>jdbcUrl</strong>="@DB-URL@"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>factory</strong>="org.apache.naming.factory.BeanFactory"/&gt;<br />
</p>
<p><font color="#ff0000"><br />
</font></p>
<p><font color="#ff0000">其实还有其它的方法,另外需要注意的一点是数据库相关的JDBC驱动要放到$CATALINA_HOME\common\lib下边,不然会class not found!</font></p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/zyb9114/aggbug/87275.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyb9114/" target="_blank">月亮的太阳</a> 2006-12-12 15:41 <a href="http://www.blogjava.net/zyb9114/archive/2006/12/12/87275.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>激情捷克 悲情捷克 </title><link>http://www.blogjava.net/zyb9114/archive/2006/06/23/54739.html</link><dc:creator>月亮的太阳</dc:creator><author>月亮的太阳</author><pubDate>Fri, 23 Jun 2006 09:16:00 GMT</pubDate><guid>http://www.blogjava.net/zyb9114/archive/2006/06/23/54739.html</guid><wfw:comment>http://www.blogjava.net/zyb9114/comments/54739.html</wfw:comment><comments>http://www.blogjava.net/zyb9114/archive/2006/06/23/54739.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zyb9114/comments/commentRss/54739.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyb9114/services/trackbacks/54739.html</trackback:ping><description><![CDATA[
		<font size="4">头一次认识捷克队是在96年欧洲杯的决赛,那年正值高考,记得决赛好像是7月1号左右,我和同学王SIR在他家的小屋里看欧洲杯决赛,那时真的不喜欢这支队伍,我一向是不太喜欢黑马,尤其是在大赛的决赛中,最喜欢那种传统强队的对决.比埃尔霍夫打入的金球真的是让我兴奋不已,时间过的真快,2000年欧洲杯捷克和法国,荷兰分在一个小组,当时荷兰是东道,法国正值全盛,捷克和丹麦就这样做了刀下之鬼.04年欧洲杯我认为是足球大赛里最失败的一届杯赛,捷克本来最有希望拿到冠军,小组赛逆转荷兰成为当届和英法大战齐名的经典,可是居然被希腊淘汰,当时因为还是比较喜欢法国一些,对捷克被淘汰也没什么感觉.时间来到了2006年,捷克被分在真正的死亡之组,世界排名前十的队伍有三支分在这个小组,小组首场3:0横扫世界排名第五的美国让人看到了希望,可惜命运就是这样捉弄人,第二场被强硬的加纳人拼掉,在少一人的情况下还全场狂攻不止,最后一场背水一战,顶替内斯塔上场的马特拉齐居然顶入一球,半场结束中场大将波拉克又被罚下,情况和第二场一模一样,捷克人又一次悲壮的倒下了.从来没有见过一个人能把一支球队诠释的这么淋漓尽致,内德维德好像就是捷克队的一个缩影,从性格到命运,战神一般的人物,铁一般的意志,火一般的激情,正是捷克队最好的写照.<br /><br />10年前博格,内德维德,博波斯基,他们长发飘飘,驰骋赛场,10年后博格已经退役,内德维德,博波斯基已经不再年轻,扬科勒,斯米切尔(因伤退出),扬库洛夫斯基,巴罗什,罗西基,都是一些血性男人.当然还有不能不提左扑右挡,勇冠三军的切赫,看着切赫竭尽全力的在PIPPO的脚下奋力救球,却是那样的无助.他们总能踢出激情四射的足球.没想到10年后,在他轰然倒下的那一刻,他在我心中竟然占据了一个很深的位置! </font>
<img src ="http://www.blogjava.net/zyb9114/aggbug/54739.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyb9114/" target="_blank">月亮的太阳</a> 2006-06-23 17:16 <a href="http://www.blogjava.net/zyb9114/archive/2006/06/23/54739.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>大量经典评书下载</title><link>http://www.blogjava.net/zyb9114/archive/2006/05/24/47874.html</link><dc:creator>月亮的太阳</dc:creator><author>月亮的太阳</author><pubDate>Wed, 24 May 2006 10:59:00 GMT</pubDate><guid>http://www.blogjava.net/zyb9114/archive/2006/05/24/47874.html</guid><wfw:comment>http://www.blogjava.net/zyb9114/comments/47874.html</wfw:comment><comments>http://www.blogjava.net/zyb9114/archive/2006/05/24/47874.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zyb9114/comments/commentRss/47874.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyb9114/services/trackbacks/47874.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 西游记-100http://music.yingang.net/song/wenxue/stf-xyj/001-100/1.mp3http://music.yingang.net/song/wenxue/stf-xyj/001-100/100.mp3薛家将-180　　http://music.ooowww.com/part8/1.Wmahttp://music.ooowww.com/part8/1...&nbsp;&nbsp;<a href='http://www.blogjava.net/zyb9114/archive/2006/05/24/47874.html'>阅读全文</a><img src ="http://www.blogjava.net/zyb9114/aggbug/47874.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyb9114/" target="_blank">月亮的太阳</a> 2006-05-24 18:59 <a href="http://www.blogjava.net/zyb9114/archive/2006/05/24/47874.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>看看8家银行的10种还款方式,各有优缺点</title><link>http://www.blogjava.net/zyb9114/archive/2006/05/22/47526.html</link><dc:creator>月亮的太阳</dc:creator><author>月亮的太阳</author><pubDate>Mon, 22 May 2006 12:43:00 GMT</pubDate><guid>http://www.blogjava.net/zyb9114/archive/2006/05/22/47526.html</guid><wfw:comment>http://www.blogjava.net/zyb9114/comments/47526.html</wfw:comment><comments>http://www.blogjava.net/zyb9114/archive/2006/05/22/47526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zyb9114/comments/commentRss/47526.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyb9114/services/trackbacks/47526.html</trackback:ping><description><![CDATA[1<u>各大银行</u>：<b>等额本息、等额本金</b><br />日前国内各大银行，采用较多的传统浮动利率房贷为“等额本息”和“等额本金”还款法两种。<br />等额本息：购房者在贷款期内，每月以相等的金额偿还本金和利息。<br /><b>优点</b>：每月还款额相等，便于购房者安排资金支出。<br /><b>缺点</b>：还款开始阶段，先还的利息较多本金较少，总的算下来，利息总支出是所有还款方式中最高的。<br />等额本金：借款人将每月本金等额偿还，然后根据剩余本金计算利息，还款额初期较多，随每月递减。<br /><b>优点</b>：与等额本息相比，可以节省大量利息支出。<br /><b>缺点</b>：还款开始阶段月供比较高。<br /><u>适合人群</u>：等额本息适用于经济收平均的购房者；等额本金适用于经济能力较强的购房者。<br /><br />2<u>光大银行</u>：<b>固定、浮动利率互转业务</b><br />固定利率房贷与浮动利率房贷转换，使借款人可以更灵活地规避利率波动风险，从容安排安放家庭支出，降低借款成本，方便家庭理财。<br /><b>优点</b>：规避利率上调风险。同时，与同品种的招商银行和建设银行相比，光大银行的优惠利率已经牌同业中的较低水平。<font color="#f70938">已申请浮动利率的客户转换固定利率业务，银行不收取任何费用。</font><br /><b>缺点</b>：对于已输固定利率房贷，且固定利率贷款续期在上年以上年以下的客户，在缴纳一定违约金的情况下，才能申请转办浮动利率房贷。<br /><u>适用人群</u>：对利率未来预期看涨的客户，可选择固定利率房贷，来规避利率上涨带来的风险。<br /><br />3<u>农业银行</u>：<b>接力房货</b><br />针对子女作为所购房屋的产权人，父母双方或一方与其子女可作为共同借款人，接力还款。说通俗点，就是父母还不了的，由子女接着还。<br /><b>优点</b>：可以将借款人年龄及贷款年限适当延长，不受相关规定的限制。<br /><b>缺点</b>：父母和子女之间有可能<font color="#ff0033">因房屋产权出现纠纷</font>，或继承人之间因遗产处理问题发生纠纷。<br /><u>适用人群</u>：作为子女的借款人预期未来收情况较好，但目前收偏低，按现行规定可贷金额较少，希望通过啬父母作为共同借款人以增加贷款金额。<br /><br />4<u>深圳发展银行</u>：<b>双周供</b><br />将还款方式从原来每月一次，变为每两周一次，每次还款额基本为原来月供的一半。<br /><b>优点</b>：比月供减少利息支出，并且<font color="#ff0033">能缩短还款期限</font>。<br /><b>缺点</b>：对月收入不宽裕或者工资发放不定时的借款人来说，可能会带来一些信用风险。<br /><u>适用人群</u>：每月收入可以分多次入账，还款能力充足，或准备缩短还款期限的贷款人。<br /><br />5<u>上海银行</u>：<b>宽限期还款</b><br />宽限期还款方式是指个人住房贷款发放后，在合同约定的一定时期内，贷款人只需每月支付利息，暂不归还贷款本金。待宽限期结束后，对贷款发放金额按合同约定的等额本金或等额酬金或等额本息方式还本付息。<br /><b>优点</b>：可适当减轻购房者借款初期的还款压力，保证原有生活计划安排不受影响。<br /><b>缺点</b>：增加首年因未冲还本金而导致的<font color="#ff0033">利息支出</font>。<br /><u>适用人群</u>：用于买房集中用款带来的资金紧张善的客户群。<br /><br />6<u>建设银行</u>：<b>个贷通</b><br />为帮助客户盘活个人资产，建行推出“房产一次抵押，贷款循环使用”的“个贷通”业务。该产品面向建设银行已有的个人贷款的客户，只要设立一次个人房地产最高额抵押，优质个人客户即拥有相应授信额度，在授信期限内可享受随需随贷的一站式融资服务。<br /><b>优点</b>：市民在按时还贷的同时，还购车、旅游、再购房、创业等多方面个人融资需求时，无需再次输贷款需求时，无需再次办理贷款审批，就可在最高授信额度范围内多次循环使用。<br /><b>缺点</b>：<font color="#ff0066">多次循环融资</font>，但利率无明显优惠。<br /><u>适用人群</u>：贷款抵押物只有一件，但有多次贷款需要的客户。<br /><br />7<u>民生银行</u>：<b>移动组合房贷</b><br />允许客户针对不同时期的家庭收情况和个人投资理财习惯，订制个性化的还款方案。而且在还款期内，还款方式还可以随时调整。<br /><b>优点</b>：便于贷款人根据自己的收入预期，灵活调整自己的还款方式，有能力时多还，压力大时少还。与等额本息方式相比，移动组合房货还可能节省一部分利息支出。<br /><b>缺点</b>：由于还款总期限是固定的，因此如果还款数额较低的月份较多，<font color="#f70938">后期还款压力也就会越大。</font><br /><u>适用人群</u>：适用收入不固定的消费者买房。<br /><br />8<u>交通银行</u>：<b>二手房贷优惠措施</b><br />交行在“您贷款、您做主”的二手房贷款活动中推出了多项住房按揭服务措施。<font color="#f70968">交行对个贷客户最多可实行项费用的减免政策</font>，其减免项目包括：一年内提前还款手续费、公证费、商业贷款保险费、评估费和担保费等。<br /><b>优点</b>：降低个人申请二手房贷款的相应费用。<br /><b>缺点</b>：减免政策还需按房屋、个人等实际情况而定。<br /><u>适用人群</u>：适用面广，除高端资质客户适用外，普通客户也能申请使用此业务，来减免二手房申请成本。<br /><br />9<u>中国银行</u>：<b>直客式房贷</b><br />“直客式”房贷又叫“超前按揭”，就是个人先找银行贷款，然后再去买房，银行直接贷款给买房者，不用经过开发商担保，贷款的额度、占总房款比例、期限以及还款方式等，都可以根据购房者的需求决定。<br /><b>优点</b>：买房时可以输一次性付款，这样房价通常可以得到一定幅度的优惠，另外由于避开了开发商和中介，“<font color="#ff0033">直客式房贷”可以节省一笔中介费</font>。<br /><b>缺点</b>：没有开发商担保的借款人需要寻找专业的担保公司因此会多付一笔担保费。<br /><u>适用人群</u>：有稳定收入，有良好的授信纪录，所购房屋一次性付款优惠较多的借款人。<br /><br />10<u>中国银行</u>：<b>贷活两便</b><br />房贷客户只要将期月供扣款账户申请为“房贷理财账户”，如有闲钱存入该账户，存款余额超过一定金额以上的部分按一定比例被视作提前还贷，可达到养活贷款利息支出的目的。同时这一账户本身又具有活期账户的所有功能，客户可随时从账户中支取部分或全部存款用投资。<br /><b>优点</b>：手中有些闲钱，既可以提前还贷养活利息支出，又可以随时支配进行其他投资获益。<br /><b>缺点</b>：提前还款对金额有一定限制，<font color="#ff0000">门槛定在10万元以上</font>。<br /><u>适用人群</u>：想提前还款且有投资意向的客户。<br /><img src ="http://www.blogjava.net/zyb9114/aggbug/47526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyb9114/" target="_blank">月亮的太阳</a> 2006-05-22 20:43 <a href="http://www.blogjava.net/zyb9114/archive/2006/05/22/47526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修改Windows mobile系统注册表(PDAFANS)</title><link>http://www.blogjava.net/zyb9114/archive/2006/04/17/41498.html</link><dc:creator>月亮的太阳</dc:creator><author>月亮的太阳</author><pubDate>Mon, 17 Apr 2006 11:47:00 GMT</pubDate><guid>http://www.blogjava.net/zyb9114/archive/2006/04/17/41498.html</guid><wfw:comment>http://www.blogjava.net/zyb9114/comments/41498.html</wfw:comment><comments>http://www.blogjava.net/zyb9114/archive/2006/04/17/41498.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zyb9114/comments/commentRss/41498.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyb9114/services/trackbacks/41498.html</trackback:ping><description><![CDATA[
		<span style="FONT-SIZE: 12px">1、优化输入法的速度<br /><br />[注册表：hkey_current_user/controlpanel/accessibility/<br />修改这两个字串 chartimeout 和 holdtimeout<br />chartimeout值是英文输入法的待选时间（就是按键后出现所按键的首字母并且下面有横线，这时可以多次按键选择次字母、第三字母的时间）；holdtimeout是中文输入时选定汉字需要长按键的时间。<br />chartimeout通常400－500就可以了，再快就手忙脚乱了，holdtimeout建议200－300，甚至可以更低<br />要改回去缺省值是10000和800。<br /><br />2、改变闹钟和提醒的响铃次数<br /><br />HKEY_CURRENT_USER<br /><br />　Controlpanel-Sounds-clock-script:apw3pr（闹钟）<br /><br />　　-reminder-script:apw3pr（提醒）<br /><br />　　-callwaiting-script:apw3pr（来电等待）<br /><br />　　另：如没有该键值，则新建之，w后的数字为间隔时间秒，可自行决定，r为重复响铃直到按键取消。<br /><br />3、改变开始菜单的前几项的快捷方式的排列顺序和开机时默认的桌面快捷方式。<br /><br />　　HKEY_CURRENT_USER <br />Software-Microsoft-shell-startmenu-order<br /><br />　　-startmru-initialorder<br /><br />　　以上两个主键的键值是一些.lnk文件，上面的一个就是开始菜单的前几项的快捷方式，要改变他们的排列顺序只要找到storage\windows\start menu 文件夹里的.lik文件，将你需要*前排列的几项替换该主键的原有键值就可以了。（其实有一个较简单的方法：在storage\windows\start menu 文件夹里再建几个如程序，通讯等等的文件夹，把不常用的.lnk文件移动到里面，只剩你要置前的那几个.lnk文件，自然就到第一页了。）<br /><br />　　下面一个就是开机时默认的几个桌面快捷方式，修改方法同上。<br /><br />4、改变铃声的存储位置。先在sd卡上建个文件夹，这里举例为\Storage Card\ring<br /><br />HKEY_CURRENT_USER<br />Controlpanel－Soundcategories－Notification－directory：\Storage Card\ring\（短消息）<br /><br />－ring－directory：\Storage Card\ring\（电话）<br /><br />－reminder－directory：\Storage Card\ring\（提醒）<br /><br />－alarm－directory：\Storage Card\ring\（闹钟）<br /><br /><br />5、加大系统字体的大小<br /><br />HKEY_CURRENT_USER<br />Controlpanel-Accessiblity-fontsize：3<br /><br />一般改到3就好了，太大了一页显示不了几行了。<br /><br />6、修改"全球通"<br /><br />HKEY_CURRENT_USER\Software\Microsoft\home\keys\113<br />Default = 全球通<br />Open = \Storage\windows\short_press.lnk<br /><br />7、修改通话记录的容量<br />打开注册表编辑器，<br />\HKEY_CURRENT_USER\ControlPanel\Phone\<br />CallHistoryMAX 在“Value data”下为你想要的值，建议200-500，太大了打开时会有点慢 。<br /><br />8、更改彩信默认存放位置<br />HKEY_LOCAL_MACHINE\SOFTWARE\ArcSoft\ArcSoft MMS UA\Config\Folder 下，点击“查看”会出现下面的几个<br />CannedTextFile 路径：\Storage\Program Files\ArcSoft\ArcSoft MMS UA\CannedText.txt（常用短语）<br />UAContentsPath 路径：\Storage\My Documents\UAContents\MMS UA （彩信存放处）<br />UnknownPath 路径：\Storage\My Documents\UnknownType Files （未知文件存放处）<br />VideoPath 路径：\Storage\My Documents （视频文件另存为处）<br />AudioDecPath 路径：\Storage\Windows （音频播放支持）<br />SoundPath 路径：\Storage\My Documents （音频文件另存为处）<br />VideoDecPath 路径：\Storage\Windows （视频播放支持）<br />PicturePath 路径：\Storage\My Documents\My Pictures （图片文件另存为处）<br /><br />9、如何修改china Mobile为其他名字<br />在HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\RIL\OPERATORNAMES下建立新的string，value name填中国移动的网络号"46000",value data随便填你要显示的字符，联通的网络号为46001。<br /><br />10、关闭弹出式菜单的声音<br />HKEY_CURRENT_USER<br />--&gt; ControlPanel<br />--&gt; Sounds<br />--&gt; MenuPopup<br />--&gt; Sound<br />把 value data 改为 *none* <br /><br /><br />11、关闭弹出式菜单下级菜单的声音<br />HKEY_CURRENT_USER<br />--&gt; ControlPanel<br />--&gt; Sounds<br />--&gt; MenuCommand<br />--&gt; Sound<br />把 value data 改为 *none* <br /><br /><br />12、注册表修改启动画面方法<br />　　(图片大小应为176*220)<br />使用注册表软件HKEY_LOCAL_MACHINE\Software\Microsoft\Splash Screen修改或增加以下四项串值(设置自己图片的路径)<br /><br />　　MSBitmapCarrierBitmap MSshutdownBitmap CarrierShutdownBitmap<br />图片的显示顺序就是四项从左到右的顺序,即开机画面先显示MSBitmap,再显示CarrierBitmap.关机画面先MSshutdownBitmap再显示CarrierShutdownBitmap.<br />注:检测外置sd卡在开机后,所以请不要把开机画面放在外置sd卡内.否则系统会自动调用缺省图片.<br />还有两个DWORD参数-CarrierShutdownTimeout MSShutdownTimeout<br />分别设置关机画面的延迟时间<br /><br />13、更改SmartPhone系统声音<br />首先打开注册表编辑器，路径为：HKEY_CURRENT_USER/ControlPanel/Sounds下的键值：<br /><br />CallDrop(电话错误）<br />CallWaiting(呼叫等待）<br />Clook(闹铃）<br />Congestion(占线音）<br />Disconnect(录音结束）<br />E-mail(邮件）<br />IM(即时信息）<br />Infbeg(网络连接）<br />Infend(网络挂断）<br />Dialing(开始录音）<br />Interrupt(断开连接）<br />Lowbattery(电量警告）<br />Menupopup(菜单跳出）<br />MenuCommand(选项确定）<br />Netbegin(开始网络连接）<br />Netend(断开网络连接）<br />Netint(网络连接受阻碍）<br />Password(命令通过）<br />Ring Tone0(线路1铃声）<br />Ring Tone1(线路2铃声）<br />SMS(短信）<br />SystemAsterisk(感叹）<br />..........Default(系统错误警告）<br />..........Exdamation(感叹）<br />..........Hand(惊叹）<br />..........Question(疑问）<br />Toolkit(STK服务）<br />VotceMail(语音信息）<br />VrecBeg(电话拨出）<br />VrecEng(通话结束）<br />Warning(系统提醒）<br /><br />14、更改彩信50KB的限制！<br />　　首先进入注册表hkey_local_machine--software--arcsoft--arcsoft mms us--config--ui--sizelimit--按检视把senddefault和sendlimit5里面的数字改为1024000就可以把发送限制改为1m了,因为1M等于1025KB，所以2048000就是2M，依次类推！ <br /></span>
<img src ="http://www.blogjava.net/zyb9114/aggbug/41498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyb9114/" target="_blank">月亮的太阳</a> 2006-04-17 19:47 <a href="http://www.blogjava.net/zyb9114/archive/2006/04/17/41498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>showModalDialog和showModelessDialog使用心得</title><link>http://www.blogjava.net/zyb9114/archive/2006/04/07/39734.html</link><dc:creator>月亮的太阳</dc:creator><author>月亮的太阳</author><pubDate>Fri, 07 Apr 2006 02:07:00 GMT</pubDate><guid>http://www.blogjava.net/zyb9114/archive/2006/04/07/39734.html</guid><wfw:comment>http://www.blogjava.net/zyb9114/comments/39734.html</wfw:comment><comments>http://www.blogjava.net/zyb9114/archive/2006/04/07/39734.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zyb9114/comments/commentRss/39734.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyb9114/services/trackbacks/39734.html</trackback:ping><description><![CDATA[
		<span id="ArticleContent1_ArticleContent1_lblContent">  showModalDialog和showModelessDialog使用心得 <br /><p>    Javascript有许多内建的方法来产生对话框，如：window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如： 
</p><p>    showModalDialog() (IE 4+ 支持)<br />　  showModelessDialog() (IE 5+ 支持)</p><p>    window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框，由于是对话框，因此它并没有一般用window.open()打开的窗口的所有属性。</p><p>    window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。 </p><p>    当我们用showModelessDialog()打开窗口时，不必用window.close()去关闭它，当以非模态方式［IE5］打开时， 打开对话框的窗口仍可以进行其他的操作，即对话框不总是最上面的焦点，当打开它的窗口ＵＲＬ改变时，它自动关闭。而模态［ＩＥ４］方式的对话框始终有焦点（焦点不可移走，直到它关闭）。模态对话框和打开它的窗口相联系，因此我们打开另外的窗口时，他们的链接关系依然保存，并且隐藏在活动窗口的下面。</p><p>使用方法如下：<br />    vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])<br />    vReturnValue = window.showModelessDialog(sURL [, vArguments] [, sFeatures])</p><p>参数说明：<br />    sURL<br />   必选参数，类型：字符串。用来指定对话框要显示的文档的URL。<br />    vArguments<br />   可选参数，类型：变体。用来向对话框传递参数。传递的参数类型不限，包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。<br />    sFeatures<br />   可选参数，类型：字符串。用来描述对话框的外观等信息，可以使用以下的一个或几个，用分号“;”隔开。<br />    dialogHeight 对话框高度，不小于１００px，ＩＥ４中dialogHeight 和 dialogWidth 默认的单位是em，而ＩＥ５中是px，为方便其见，在定义modal方式的对话框时，用px做单位。<br /> 　 dialogWidth: 对话框宽度。<br /> 　 dialogLeft: 距离桌面左的距离。<br /> 　 dialogTop: 离桌面上的距离。<br /> 　 center: {yes | no | 1 | 0 }：窗口是否居中，默认yes，但仍可以指定高度和宽度。<br /> 　 help: {yes | no | 1 | 0 }：是否显示帮助按钮，默认yes。<br /> 　 resizable: {yes | no | 1 | 0 } ［ＩＥ５＋］：是否可被改变大小。默认no。<br /> 　 status: {yes | no | 1 | 0 } ［IE5+］：是否显示状态栏。默认为yes[ Modeless]或no[Modal]。<br />    scroll:{ yes | no | 1 | 0 | on | off }：指明对话框是否显示滚动条。默认为yes。</p><p>还有几个属性是用在HTA中的，在一般的网页中一般不使用。<br />    dialogHide:{ yes | no | 1 | 0 | on | off }：在打印或者打印预览时对话框是否隐藏。默认为no。<br />    edge:{ sunken | raised }：指明对话框的边框样式。默认为raised。<br />    unadorned:{ yes | no | 1 | 0 | on | off }：默认为no。</p><p>传入参数：<br />    要想对话框传递参数，是通过vArguments来进行传递的。类型不限制，对于字符串类型，最大为4096个字符。也可以传递对象，例如：</p><p>test1.htm<br /><span class="code">&lt;script&gt;<br />  var mxh1 = new Array("mxh","net_lover","孟子E章")<br />  var mxh2 = window.open("about:blank","window_mxh")<br />  // 向对话框传递数组<br />  window.showModalDialog("test2.htm",mxh1)<br />  // 向对话框传递window对象<br />  window.showModalDialog("test3.htm",mxh2)<br />&lt;/script&gt;</span>test2.htm<br /><span class="code">&lt;script&gt;<br />  var a = window.dialogArguments<br />  alert("您传递的参数为：" + a)<br />&lt;/script&gt;</span> <br />test3.htm<br /><span class="code">&lt;script&gt;<br />  var a = window.dialogArguments<br />  alert("您传递的参数为window对象，名称：" + a.name)<br /> &lt;/script&gt;</span></p><p> 可以通过window.returnValue向打开对话框的窗口返回信息，当然也可以是对象。例如：</p><p>test4.htm<br /><span class="code">&lt;script&gt;<br />  var a = window.showModalDialog("test5.htm")<br />  for(i=0;i&lt;a.length;i++) alert(a[i])<br />&lt;/script&gt;</span>test5.htm<br /><span class="code"> &lt;script&gt;<br /> function sendTo()<br /> {<br />  var a=new Array("a","b")<br />  window.returnValue = a<br />  window.close()<br /> }<br /> &lt;/script&gt;<br /> &lt;body&gt;<br /> &lt;form&gt;<br />  &lt;input value="返回" type=button onclick="sendTo()"&gt;<br /> &lt;/form&gt;</span></p><p>常见问题：<br />1，如何在模态对话框中进行提交而不新开窗口？<br />   如果你 的 浏览器是IE5.5+,可以在对话框中使用带name属性的iframe，提交时可以制定target为该iframe的name。对于IE4+，你可以用高度为0的frame来作。例如：</p><p> test6.htm<br /><span class="code">&lt;script&gt;<br />  window.showModalDialog("test7.htm")<br /> &lt;/script&gt;</span> test7.htm<br /><span class="code">if(window.location.search) alert(window.location.search)<br /> &lt;frameset rows="0,*"&gt;<br />  &lt;frame src="about:blank"&gt;<br />  &lt;frame src="test8.htm"&gt;<br /> &lt;/frameset&gt;</span> test8.htm<br /><span class="code">&lt;form target="_self" method="get"&gt;<br /> &lt;input name=txt value="test"&gt;<br /> &lt;input type=submit&gt;<br /> &lt;/form&gt;<br /> &lt;script&gt;<br /> if(window.location.search) alert(window.location.search)<br /> &lt;/script&gt;<br /></span> </p><p>2,可以通过http://servername/virtualdirname/test.htm?name=mxh方式直接向对话框传递参数吗？<br /> 答案是不能。但在frame里是可以的。<br /><br />一、showModalDialog和showModelessDialog有什么不同？<br />　　showModalDialog：被打开后就会始终保持输入焦点。除非对话框被关闭，否则用户无法切换到主窗口。类似alert的运行效果。<br />　　showModelessDialog：被打开后，用户可以随机切换输入焦点。对主窗口没有任何影响(最多是被挡住一下而以。:P)</p><p>二、怎样才让在showModalDialog和showModelessDialog的超连接不弹出新窗口？<br />　　在被打开的网页里加上&lt;base target="_self"&gt;就可以了。这句话一般是放在&lt;html&gt;和&lt;body&gt;之间的。</p><p>三、怎样才刷新showModalDialog和showModelessDialog里的内容？<br />　　在showModalDialog和showModelessDialog里是不能按F5刷新的，又不能弹出菜单。这个只能依靠javascript了，以下是相关代码：</p><p>&lt;body onkeydown="if (event.keyCode==116){reload.click()}"&gt;<br />&lt;a id="reload" href="filename.htm" style="display:none"&gt;reload...&lt;/a&gt;</p><p>　　将filename.htm替换成网页的名字然后将它放到你打开的网页里，按F5就可以刷新了，注意，这个要配合&lt;base target="_self"&gt;使用，不然你按下F5会弹出新窗口的。</p><p>四、如何用javascript关掉showModalDialog(或showModelessDialog)打开的窗口。<br />　　&lt;input type="button" value="关闭" onclick="window.close()"&gt;<br />　　也要配合&lt;base target="_self"&gt;，不然会打开一个新的IE窗口，然后再关掉的。</p><p>五、showModalDialog和showModelessDialog数据传递技巧。<br />　　(作者语：本来想用一问一答形式来写的，但是我想不出这个怎么问，所以只好这样了。)<br />　　这个东西比较麻烦，我改了好几次了不是没办法说明白(语文水平越来越差了)，只好用个例子说明了。<br />　　例子：<br />　　　　现在需要在一个showModalDialog(或showModelessDialog)里读取或设置一个变量var_name</p><p>　　　　　　一般的传递方式：<br />　　　　　　　　window.showModalDialog("filename.htm",var_name)<br />　　　　　　　　//传递var_name变量<br />　　　　　　在showModalDialog(或showModelessDialog)读取和设置时：<br />　　　　　　　　alert(window.dialogArguments)//读取var_name变量<br />　　　　　　　　window.dialogArguments="oyiboy"//设置var_name变量<br />　　　　这种方式是可以满足的，但是当你想在操作var_name同时再操作第二个变理var_id时呢？就无法再进行操作了。这就是这种传递方式的局限性。<br />　　　　<br />　　　　　　以下是我建议使用的传递方式：<br />　　　　　　　　window.showModalDialog("filename.htm",window)<br />　　　　　　　　//不管要操作什么变量，只直传递主窗口的window对象<br />　　　　　　在showModalDialog(或showModelessDialog)读取和设置时：<br />　　　　　　　　alert(window.dialogArguments.var_name)//读取var_name变量<br />　　　　　　　　window.dialogArguments.var_name="oyiboy"//设置var_name变量</p><p>　　　　　　　　同时我也可以操作var_id变量<br />　　　　　　　　alert(window.dialogArguments.var_id)//读取var_id变量<br />　　　　　　　　window.dialogArguments.var_id="001"//设置var_id变量</p><p>　　　　　　　　同样还可以对主窗口的任何对象进行操作，如form对象里的元素。<br />　　　　　　　　window.dialogArguments.form1.index1.value="这是在设置index1元素的值"</p><p>六、多个showModelessDialog的相互操作。<br />　　因为光说很费劲，我就偷点懒，直接用代码来说了，如果不明白的话那就直接来信(oyiboy#163.net(使用时请将#改成@))问我吧。</p><p>　　以下代码的主要作用是在一个showModelessDialog里移动别一个showModelessDialog的位置。</p><p>　　主文件的部份js代码。<br />　　var s1=showModelessDialog('控制.htm',window,"dialogTop:1px;dialogLeft:1px"） //打开控制窗口<br />　　var s2=showModelessDialog('about:blank',window,"dialogTop:200px;dialogLeft:300px"）　　//打开被控制窗口</p><p>　　控制.htm的部份代码。<br />　　&lt;script&gt;<br />　　　　//操作位置数据，因为窗口的位置数据是"xxxpx"方式的，所以需要这样的一个特殊操作函数。<br /> function countNumber(A_strNumber,A_strWhatdo)<br /> {<br />  A_strNumber=A_strNumber.replace('px','')<br />  A_strNumber-=0<br />  switch(A_strWhatdo)<br />  {<br />  case "-":A_strNumber-=10;break;<br />  case "+":A_strNumber+=10;break;<br />  }<br />  return A_strNumber + "px"<br /> }<br />　　&lt;/script&gt;<br />　　&lt;input type="button" onclick="window.dialogArguments.s2.dialogTop=countNumber(window.dialogArguments.s2.dialogTop,'-')" value="上移"&gt;<br />　　&lt;input type="button" onclick="window.dialogArguments.s2.dialogLeft=countNumber(window.dialogArguments.s2.dialogLeft,'-')" value="左移"&gt;<br />　　&lt;input type="button" onclick="window.dialogArguments.s2.dialogLeft=countNumber(window.dialogArguments.s2.dialogLeft,'+')" value="右移"&gt;<br />　　&lt;input type="button" onclick="window.dialogArguments.s2.dialogTop=countNumber(window.dialogArguments.s2.dialogTop,'+')" value="下移"&gt;</p><p>　　以上关键部份是：<br />　　　　窗口命名方式：var s1=showModelessDialog('控制.htm',window,"dialogTop:1px;dialogLeft:1px"）<br />　　　　变量访问方式：window.dialogArguments.s2.dialogTop</p><p>　　这个例子只是现实showModelessDialog与showModelessDialog之间的位置操作功能，通过这个原理，在showModelessDialog之间相互控制各自的显示页面，传递变量和数据等。这要看各位的发挥了。</p></span>
<img src ="http://www.blogjava.net/zyb9114/aggbug/39734.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyb9114/" target="_blank">月亮的太阳</a> 2006-04-07 10:07 <a href="http://www.blogjava.net/zyb9114/archive/2006/04/07/39734.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>世界顶级男士衬衫</title><link>http://www.blogjava.net/zyb9114/archive/2006/03/23/36990.html</link><dc:creator>月亮的太阳</dc:creator><author>月亮的太阳</author><pubDate>Thu, 23 Mar 2006 01:58:00 GMT</pubDate><guid>http://www.blogjava.net/zyb9114/archive/2006/03/23/36990.html</guid><wfw:comment>http://www.blogjava.net/zyb9114/comments/36990.html</wfw:comment><comments>http://www.blogjava.net/zyb9114/archive/2006/03/23/36990.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zyb9114/comments/commentRss/36990.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyb9114/services/trackbacks/36990.html</trackback:ping><description><![CDATA[ 
<center><img src="http://image2.sina.com.cn/nx/n/2006-03-22/U1421P133T3D27374F57DT20060322134307.jpg" border="1" /><br /><font class="f12"><div style="PADDING-TOP: 3px" align="center">时尚男人的世界<br /></div></font></center><font class="f12"><div align="center"><a href="http://eladies.sina.com.cn/pic/index.shtml" target="_blank"><b></b></a> </div></font><center></center><br /><p>　　有些读者可能会对一些品牌没有入围而感到奇怪。当然，那些未入围的品牌中，不乏品质极佳的。但是，这里所选出的衬衫品牌至少满足了以下3个基本要求之一：物有所值；在衬衫设计方面有革命性的贡献；或由业界公认的大师设计。 </p><p>　　<strong>阿玛尼 </strong></p><p>　　阿玛尼(Giorgio Armani)这一品牌在男装方面享有至尊的地位。20世纪后半叶，阿玛尼涉猎男装时尚的全部内容，无人能与之匹敌。这一品牌还有一个精明之处，与微软盖茨(Bill Gates)设计的网络浏览器如出一辙——很难与其他品牌的产品相配。很多男士已经发现或即将发现，阿玛尼套装只有在和阿玛尼衬衫搭配时才看起来顺眼。即便是伦敦杰明街上(Jermyn Street，以经营高品质的女士和绅士服装著称——编者注)其他品牌的衬衫和阿玛尼套装搭配起来，也会看起来有些奇怪。难免有人问，为什么一开始要花那么多钱去买阿玛尼的套装呢？ </p><p>　　阿玛尼衬衫的风格，与其套装一样宽松随意，但取材十分考究。阿玛尼的衬衫面料包括亚麻、埃及棉、丝绸、羊毛、粘胶纤维，甚至还有开司米。独具匠心的面料挑选和设计，是阿玛尼的特色之一，确保每款阿玛尼衬衫都能保有清晰的阿玛尼特点。阿玛尼套装从休闲到正装拥有很多种风格，每种款式都有对应系列的衬衫。衬衫领子可分为纽扣式、敞角式、无领式和按扣式；袖子又分常规和加长两种袖长。阿玛尼的衬衫都是在意大利由机器缝制出来的，阿玛尼不从事衬衫的定制业务。 </p><p>　　价格：根据不同的面料，阿玛尼衬衫的价格从295到900美元不等。 </p><p>　<strong>　先驰 </strong></p><p>　　1926年创立于<span class="yqlink"><a class="akey" title="罗马" onclick="activateYQinl(this);return false;" href="http://www.iask.com/n?k=罗马" target="_blank">罗马</a></span>的先驰(Davide Cenci)，是意大利顶尖衬衫品牌之一。直到1982年，先驰才在纽约开设分店，省却了美国客人跨洋越海的劳顿。先驰之所以让顾客如此着迷，是因为它将意大利式的创造力和精美做工与英国式严谨稳健的风格巧妙地融合在一起。 </p><p>　　乍看先驰衬衫时，很难分辨出与其他名贵衬衫品牌的不同之处，但细细看来，你就会从其脱俗的面料色彩，或是区别于杰明街其它衬衫的随意剪裁风格，辨别出先驰的印记。先驰衬衫不但样式养眼，而且手感绵软、剪裁大胆。只有意大利才能造就这样的尤物。面料全部是意大利产品，而且所有先驰衬衫都在意大利生产。 </p><p>　　先驰衬衫分成3个系列：机器制造的预制系列、半手工系列和全手工系列。领子的样式又分成3种：大敞角、中敞角和尖角。领子和袖子部分都是双线缝制，无需上浆也能保证整齐高雅的外观。 </p><p>　　价格：预制衬衫的售价，从136美元到325美元不等，定制衬衫售价在195美元到425美元之间。 </p><p>　　<strong>夏尔凡 </strong></p><p>　　慕美的天分，法国人从来都不缺，夏尔凡(Charvet)便是明证。1838年创立于巴黎的夏尔凡，专为世界各地最挑剔的客户设计并生产精美高雅的衬衫。漫步在位于凡尔登广场的夏尔凡时装店，本身就是一程心灵满足的唯美之旅，光鲜耀人的衬衫和领带，熠熠生辉的丝绸锦缎，品种齐全的珍稀面料，还有恭敬殷勤的销售人员，都让人赏心悦目。 </p><p>　　顾客在销售人员的带领下，搭乘小电梯上2楼试衣。这里可供选择的衬衫制作种类分成制成品、特约品、量体裁衣或定制品。按照客人选择衬衫的不同制作种类，首席裁缝会为客人量体。然后，客人被带往楼下的面料室，在6000多种面料中挑选自己中意的衬衫面料。 </p><p>　　面料从100支双经单纬府绸到220支高支府绸，所有这些面料都是来自瑞士、<span class="yqlink"><a class="akey" title="意大利" onclick="activateYQinl(this);return false;" href="http://www.iask.com/n?k=意大利" target="_blank">意大利</a></span>和英格兰。除了府绸，还有牛津纺、轻罗、华尔纱、青年纺、麻纱、凹凸细纹布、斜纹布、丝绸和亚麻。选好面料后，销售人员会协助您选择领子和袖子的式样。每一件衬衫，都出自夏尔凡位于巴黎市郊的工厂。无论是定制还是预制，每件衬衫只由一名女工全程负责，这名女工独自完成这件衬衫除了缝纽扣孔和熨烫之外的所有生产工序。 </p><p>　　夏尔凡跻身世界最贵衬衫品牌行列，但依然物有所值。细节之处的用心，确保每件夏尔凡衬衫在尽显高贵的同时，又不失舒适。 </p><p>　　价格：预制衬衫起价285美元。 </p><p>　<strong>　普莱诗 </strong></p><p>　　在美国，普莱诗(J. Press)是最富学院气的品牌。这样的品牌定位对于其他品牌来说无异于饮鸩止渴，但对于普莱诗来说却成了甜美的山泉。几十年来，普莱诗已经基本成为哈佛和耶鲁大学学生和教授们的必选品牌。普莱诗创办于1902年，位于耶鲁大学所在的康涅狄格州的纽黑文城，主营正式套装、风格保守的领带，还有精美昂贵的衬衫。 </p><p>　　尽管普莱诗衬衫不再局限于传统的蓝色或白色纽扣领的样式，但这两种样式依然是主打产品。这里的衬衫——无论是牛津纺面料、尖领、正装式样，还是法式袖子——各种尺码齐全，而且式样常年不变。请注意，普莱诗不从事衬衫定制业务，因为这类业务与美国工业化传统有些相左。 </p><p>　　价格：普莱诗预制衬衫的价格，从牛津纺纽扣领式的55美元到正装衬衫的89.5美元不等。 </p><p>　<strong>　H&amp;H </strong></p><p>　　H&amp;H(Harvie &amp; Hudson)在杰明街众多顶尖衬衫制造商中，堪称确保质量商誉前提下，谨慎拓展业务的典范。开创于1920年的H&amp;H，是当今杰明街上惟一始终没有易主的品牌。H&amp;H的衬衫做工精美，一方面保留着传统纯色样式，另一方面还引入了更活泼的条纹面料和色调(如红色、深紫色等)。和很多顶尖衬衫品牌一样，H&amp;H某些样式的衬衫也是限量生产，每两年发布一次衬衫新款。 </p><p>　　H&amp;H所有的预制衬衫，都采用埃及双经单纬府绸做面料、特有的平角领子样式和珠贝纽扣；而定制衬衫的面料就包括特级棉、海岛棉、巴里纱和丝绸。更重要的是，H&amp;H是为数不多的几个仍保留有现场工厂的品牌之一。当然，这样会增加成本，但这里的做工具备顶级水平。尽管H&amp;H也有定制业务，但那些不愿定制衬衫的特体顾客依然可以在这里订购预制好的衬衫。H&amp;H还为其白衬衫提供换袖换领服务。 </p><p>　　价格：预制衬衫起价64.5英镑。斜纹面料正装衬衫起价99.5英镑。定制衬衫起价145英镑。首次定制的顾客，要求至少订做4件衬衫。 </p><p>　　<strong>H&amp;K </strong></p><p>　　H&amp;K(Hilditch &amp; Key)是英国最早向海外拓展市场的顶级衬衫品牌之一。创立于1899年的H&amp;K，一直是杰明街上最响亮的品牌之一。早在1981年，H&amp;K就开始跻身国际市场，因此H&amp;K在欧洲、美国和远东都享有很高的客户知名度。时至今日，H&amp;K的衬衫依然保持着最高的质量水平。 </p><p>　　H&amp;K品牌的所有衬衫都是手工剪裁的，衬衫的躯干部分用剪刀，领子部分用裁刀。然后，衬衫各部分再用缝纫机缝制出来。衬衫采用单针缝制，配以珠贝纽扣，而领子是由两部分手工缝制而成的。背部缝合的衬衫抵肩，保证了穿着的舒适性。面料多采用100支双经单纬府绸；其他面料还包括青年纺、巴里纱、麻纱、牛津纺、山型斜纹纺、棉毛混纺和凹凸纺，当然还有永远走俏但十分昂贵的海岛棉。面料的样式又可分为各类纯色、条纹、孟加拉棉和方块。 </p><p>　　价格：定制衬衫起价69.95英镑。 </p><p>　<strong>　爱马仕 </strong></p><p>　　爱马仕 (Hermes)早就跻身于全球最大奢侈用品生产商的行列。但鲜为人知的是，爱马仕其实也是全球顶尖的衬衫制造商。尽管爱马仕的预制衬衫在其全球众多商店中都能买到，但只有亲身造访位于巴黎的店铺，您才能真正领略爱马仕定制衬衫的神奇和优雅。 </p><p>　　拥有160年历史的爱马仕，原先只是一家专门生产鞍具的皮货制造商。这家公司为每件时装精心设计并甄选最上乘的面料。爱马仕衬衫面料包括100支双经单纬府绸、海岛棉和丝绸。单线缝制、翻转缝合、后分式抵肩和双褶袖筒，这一切都保证爱马仕衬衫在享有高雅外观的同时，不失穿着的舒适性。可供选择的领子样式包括：直角式、英国式、<span class="yqlink"><a class="akey" title="意大利" onclick="activateYQinl(this);return false;" href="http://www.iask.com/n?k=意大利" target="_blank">意大利</a></span>式、纽扣式和按扣式。袖子分成普通式和法国式(反袖式)两种。爱马仕每年发布两次新面料和款式。 </p><p>　　价格：爱马仕的预制衬衫起价295美元。 </p><p>　　<strong>杰尼亚 </strong></p><p>　　创建于1910年的意大利品牌杰尼亚(Ermenegildo Zegna)原先是一家为高档男装提供面料的纺织品公司。 </p><p>　　20世纪60年代，这家公司开始涉足制衣业。面料经营积累下来的多年经验和自家拥有纺织厂，使这家家族企业很快晋升为意大利男装行业中的领头羊。今天，杰尼亚已经将业务拓展到美国，旗下的西服和衬衫赢得了时尚和高雅的美名。 </p><p>　　杰尼亚衬衫分成3个系列：柔软系列、匠心系列和那不勒斯系列。柔软系列的衬衫版型宽大飘逸，适于在不用打领带的休闲环境下穿着。匠心系列则是那些经典正装衬衫，有标准领或大分领、法式袖子或纽扣式袖子等样式。那不勒斯系列是杰尼亚品牌中最昂贵的系列，所用顶级面料都出自杰尼亚自己的工厂。 </p><p>　　与其他衬衫制造商不同的是，杰尼亚衬衫不是手工剪裁，而是由一套特殊的电脑控制剪裁系统完成的。当然，剪裁工序后的很多其他工序(比如缝纽扣孔)都是手工完成的。杰尼亚衬衫拥有自己独特的式样设计，面料全部都是其纺织厂用特级埃及棉花加工出来的。杰尼亚生产预制衬衫的同时，也接受顾客定制的要求。 </p><p>　　价格：预制衬衫起价205美元；定制衬衫起价265美元。首次定制衬衫的顾客，最少订做3件。 </p><p>　　<strong>N&amp;L </strong></p><p>　　身为伊顿公学(Eton School)指定服装供应商，N&amp;L(New &amp; Lingwood)是伦敦杰明街上最著名的专有品牌之一，沃尔夫的小说《虚无的篝火》也为其增色不少。世代以来，英国著名的贵族学校伊顿公学的学子和那些模仿伊顿学子的人们，都来N&amp;L选购衣服——即便从伊顿公学毕业后，这些人仍旧保留着这一习惯。这种习惯可能源于店铺设计给人的一种舒适感，店员十分殷勤的服务，还有这里的衬衫，无论是预制还是定制的，质量都是顶级的。 </p><p>　　因为来店选购衬衫的顾客多出身豪门，惯于消费高档物品，所以N&amp;L在制作衬衫时格外精心。N&amp;L将定制衬衫顾客的尺寸记录下来，以便这些顾客日后能随时从世界任何一个角落订制衬衫。N&amp;L的顾客群更倾向于传统式样，当然伊顿公学精英学生俱乐部的成员除外，他们享有穿着亮色马甲的特权。20世纪90年代，N&amp;L收购了伦敦萨维尔街(Savile Row，毗邻杰明街，以制作顶级西服等服装著称)上最后一家定制衬衫品牌博凌傲德(Bowring &amp; Arundel)。 </p><p>　　价格：预制衬衫的起价78英镑，而正装衬衫起价95英镑。 </p><p>　　<strong>品克 </strong></p><p>　　品克(Thomas Pink)的崛起，在伦敦高档衬衫界至今仍是一个不可思议的谜。1984年创建的品克，算不上杰明街的传统老店。但正因为品牌的新鲜、式样新颖而又价格适中，所以很快为英国年轻人所接受。由于市场反应强烈，于是品克开始在英国和美国各地开设分店。1999年，品克被<span class="yqlink"><a class="akey" title="奢侈品" onclick="activateYQinl(this);return false;" href="http://www.iask.com/n?k=奢侈品" target="_blank">奢侈品</a></span>巨头路威酩轩集团(LVMH)收购。 </p><p>　　品克衬衫依然保持着做工精美和定价适中的传统。品克衬衫的面料包括：特级埃及100支双经单纬纯棉府绸、皇家牛津纺、海岛棉、麻纱、罗纹纺和山形斜纹纺。所有面料都在意大利织成，然后运往爱尔兰，在那里完成剪裁、缝纫和成型等工序。品克除保留传统纯色、条纹和方块式样外，还限量生产一些与众不同的式样。 </p><p>　　两个系列衬衫的领子部分，都留有3英寸的小下摆。袖子式样分成法国式和纽扣式。品克不提供衬衫定制服务。 </p><p>　　价格：黑标(Black Label)系列衬衫起价130美元；正装衬衫起价195美元。 </p><p>　<strong>　T&amp;A </strong></p><p>　　T&amp;A(Turnbull &amp; Asser)包含了杰明街顶尖衬衫品牌的所有亮点。无论是在其伦敦老店，还是在纽约曼哈顿的新店里，人们都可以在各式货架间和爱德华式氛围中随性漫步。一排排色彩鲜亮的衬衫，好似满屋的美妇，不时吸引着顾客的眼光。 </p><p>　　大气的剪裁再配上T&amp;A特有的高领，您会发现它是和领带搭配最为完美的衬衫。20世纪80年代，T&amp;A亮色条纹衬衫曾红极一时，在美国尤为如此。甚至到现在，店员也很愿意给那些初次进店的美国顾客展示颜色鲜亮的衬衫款式。当然，T&amp;A也有很多颜色素雅的款式。T&amp;A在伦敦开设的定制工作室位于柏丽街(Bury Street)的街角，好像一座阿拉丁藏宝洞，顾客可以在这里花上数小时翻阅面料样品簿(大约有1000多种不同的面料)，身边还有一群资深销售人员耐心地为顾客讲解。 </p><p>　　T&amp;A衬衫除了预制和定制系列外，另辟一种“特制”系列，将预制式样的衬衫根据特殊顾客的需求做部分调整，比如加长衣袖或拓宽衣领。 </p><p>　　价格：预制衬衫起价220美元，特制衬衫起价240美元，海岛棉面料的衬衫起价265美元。定制衬衫从260美元到410美元不等。首次定制的顾客，要求至少定制3件衬衫。</p><img src ="http://www.blogjava.net/zyb9114/aggbug/36990.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyb9114/" target="_blank">月亮的太阳</a> 2006-03-23 09:58 <a href="http://www.blogjava.net/zyb9114/archive/2006/03/23/36990.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>昨天选婚纱照</title><link>http://www.blogjava.net/zyb9114/archive/2006/03/16/35541.html</link><dc:creator>月亮的太阳</dc:creator><author>月亮的太阳</author><pubDate>Thu, 16 Mar 2006 01:48:00 GMT</pubDate><guid>http://www.blogjava.net/zyb9114/archive/2006/03/16/35541.html</guid><wfw:comment>http://www.blogjava.net/zyb9114/comments/35541.html</wfw:comment><comments>http://www.blogjava.net/zyb9114/archive/2006/03/16/35541.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/zyb9114/comments/commentRss/35541.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyb9114/services/trackbacks/35541.html</trackback:ping><description><![CDATA[删除了......<img src ="http://www.blogjava.net/zyb9114/aggbug/35541.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyb9114/" target="_blank">月亮的太阳</a> 2006-03-16 09:48 <a href="http://www.blogjava.net/zyb9114/archive/2006/03/16/35541.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>坎通纳点评足坛最佳11人：马拉多纳比贝利出色</title><link>http://www.blogjava.net/zyb9114/archive/2006/03/15/35462.html</link><dc:creator>月亮的太阳</dc:creator><author>月亮的太阳</author><pubDate>Wed, 15 Mar 2006 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/zyb9114/archive/2006/03/15/35462.html</guid><wfw:comment>http://www.blogjava.net/zyb9114/comments/35462.html</wfw:comment><comments>http://www.blogjava.net/zyb9114/archive/2006/03/15/35462.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/zyb9114/comments/commentRss/35462.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyb9114/services/trackbacks/35462.html</trackback:ping><description><![CDATA[<CENTER><IMG alt=坎通纳点评足坛最佳11人：马拉多纳比贝利出色 src="http://image2.sina.com.cn/ty/g/2006-03-14/U370P6T12D2101393F44DT20060314131153.jpg" border=1><BR><IMG height=5 src="http://image2.sina.com.cn/home/c.gif" width=1><BR>《442》杂志网络版截屏图 <BR></CENTER>
<CENTER><FONT size=2><IMG alt=坎通纳点评足坛最佳11人：马拉多纳比贝利出色 src="http://image2.sina.com.cn/ty/g/2006-03-14/U370P6T12D2101393F45DT20060314124621.jpg" border=1><BR><IMG height=5 src="http://image2.sina.com.cn/home/c.gif" width=1><BR></FONT>坎通纳叹服马拉多纳<BR></CENTER>
<P>　　近日，前法国球星坎通纳应著名足球杂志《442》邀请，评出一套自己心中的最佳阵容。曼联官方网站在转载这一消息时称：坎通纳选出的最佳11人绝对值得一看。哥伦比亚疯狂门将伊基塔的入选有些出人意料，其实也不难理解，伊基塔和坎通纳都属于“不按理出牌”的个性球员。当然坎通纳评选的最佳阵容中也包括马拉多纳、克鲁伊夫、贝肯鲍尔等足坛将相级人物，其中有关球王的争论，曼联国王给出了自己的答案：马拉多纳永远是最棒的。已故的曼联天才贝斯特也在11人之中。在评选最后，坎通纳还颇为风趣地把主帅位<!--SPORTSZW_HZH_BEGIN--> 
<TABLE cellSpacing=0 cellPadding=0 align=left border=0>
<TBODY>
<TR>
<TD>
<DIV id=PublicRelation5 name="PublicRelation"><!--NEWSZW_HZH_BEGIN--><!--NEWSZW_HZH_END--></DIV></TD></TR></TBODY></TABLE><!--SPORTSZW_HZH_END-->置留给了自己。</P>
<P>　　坎通纳点评最佳11人阵容。</P>
<P>　　<B>守门员：伊基塔(哥伦比亚疯狂门将)</B></P>
<P>　　坎通纳点评：是的，他喜欢恶作剧，但他同时也是个伟大的门将。我喜欢他的精力充沛，对比赛的那种兴奋，以及渴望冒险。他确实犯过低级失误，但是他的精神没错。记得“蝎子摆尾”吧，他没让皮球钻进球网，这就够了。我希望他在我的球队里继续娱乐足球。</P>
<P>　　<B>右后卫：儒尼奥尔(巴西82年<SPAN class=yqlink><A class=akey title=世界杯 onclick="activateYQinl(this);return false;" href="http://www.iask.com/n?k=世界杯" target=_blank>世界杯</A></SPAN>主力右后卫)</B></P>
<P>　　坎通纳点评：他是一个强壮的球员，一个真男人。他在82年世界杯上为巴西队贡献很多，攻防俱佳。我喜欢这种后卫，他总能让人觉得，是在享受足球。</P>
<P>　　<B>中卫：贝肯鲍尔(德国足球皇帝)</B></P>
<P>　　坎通纳点评：他是一个领袖。他可以优雅地控球，技术出色。不过他伤了我的心：74年世界杯，当我还只有8岁的时候，世界杯决赛他们赢了荷兰。我是荷兰球迷，但是他战胜了我支持的球队。荷兰队输的时候我哭了，非常伤心，不过现在我认识到德国皇帝的伟大。</P>
<P>　　<B>左后卫：法切蒂(意大利著名后卫、现任国米主席)</B></P>
<P>　　必须选个意大利后卫，没人比法切蒂更好。我只是在电视中看过他踢球，但是立刻被吸引住了。他属于球场上的贵族，技术出众，勤奋努力，并且作为左后卫，他还能破门。</P>
<P>　　<B>后腰：基恩(<SPAN class=yqlink> <A class=akey title=曼联 onclick="activateYQinl(this);return false;" href="http://www.iask.com/n?k=曼联" target=_blank>曼联</A></SPAN>前任队长、99年红魔三冠王重臣)</B></P>
<P>　　坎通纳点评：为什么选基恩？原因还用说吗！他曾是中场之王，可以踢任何位置，既能担任进攻核心，也能退到后卫前面竖起一道屏障，他还能突然冲到对方门前破门得分。在比赛中应该做什么，他头脑特别清楚。我跟他一起踢了4个赛季，告诉你们我的真实感觉，有他在身后，我感觉好极了。</P>
<P>　　<B>右前卫：瓦尔德拉玛(哥伦比亚鼎盛时期的中场核心)</B></P>
<P>　　坎通纳点评：很多人只记得他的头发，但他确实是一个非常出色的球员。我们曾在蒙彼利埃一起踢过，他能让人感受到很大压力。球场下他是一个害羞、安静的人，但是性格坚强。体格不算强壮，但是他的视野和技术特棒，他能把球踢到球场任何一个位置。自从瓦尔德拉玛退役后，哥伦比亚衰落了，这是公论。</P>
<P>　　<B>左前卫：马拉多纳(阿根廷一代球王)</B></P>
<P>　　坎通纳点评：有人说贝利是球王，但是在我眼里，马拉多纳永远是最棒的！他为阿根廷赢得了86年世界杯，90年惜败，94年他原本有望再次为阿根廷捧起冠军金杯，却在关键时刻被禁赛了。马拉多纳和贝利之间最大的区别是，前者身边没有任何伟大球员做帮手，他用自己的力量给球队带来成功、胜利。如果阿根廷没有马拉多纳，他们不会捧起大力神杯，但是如果巴西没了贝利，还是能成为王者。</P>
<P>　　<B>右边锋：加林查(巴西盘球大师)</B></P>
<P>　　坎通纳：很遗憾，我只能看到他的一些片断，很少的片断，但是他肯定是我喜欢的那类球员，完美的球员。人们对他的评价，以及资料上对他的记载，都令我被他吸引。他的技术太完美了。</P>
<P>　　<B>左边锋：克鲁伊夫(荷兰全攻全守的代表)</B></P>
<P>　　我钟情70年代的荷兰，他们的比赛令我兴奋，克鲁伊夫就是其中最好的一个。他是我儿时的偶像，我的卧室里就贴着他的海报。他是球场上的创造者，球队的心脏。阿贾克斯掀起了一场足球革命，他是这场革命的领袖。如果他愿意，他能在任何位置上成为最出色的那一个。</P>
<P>　　<B>前锋：肯佩斯(78年阿根廷世界杯夺冠功臣)</B></P>
<P>　　坎通纳：他帮助阿根廷捧起了世界杯冠军，并且在瓦伦西亚留下出色战绩。他能破门，但最吸引我的一点是他踢球时的优雅。他身高不错，有空中优势，脚下也很快，临门一脚技术出色。</P>
<P>　　<B>前锋：贝斯特(曼联一代天才)</B></P>
<P>　　贝斯特是另一个入选坎通纳<SPAN class=yqlink><A class=akey title=最佳阵容 onclick="activateYQinl(this);return false;" href="http://www.iask.com/n?k=最佳阵容" target=_blank>最佳阵容</A></SPAN>的曼联球星，去年11月贝斯特去世的时候，坎通纳曾说：“他去天堂和上帝踢球了，希望他能给我留个位置。”看来法国人对这位红魔前辈相当喜爱。)</P>
<P>　　坎通纳点评：他是个无拘无束的人，而且极具个人魅力。有贝斯特在，我相信球队大巴上一定是充满欢笑。他喜欢享受生活，但是当他站在球场上的时候心无旁骛。遗憾的是他过早离开了老特拉福德，不过他留下了无数珍贵的回忆。</P>
<P>　　<B>主教练：坎通纳</B></P>
<P>　　我把克鲁伊夫选为进攻核心之后，冒出个念头，既然队员由我来选，那么我就应该是这支球队的领导者。如果能拥有这样一支球队，我会非常高兴。我想我们一定会创造很多美妙的时刻。</P><img src ="http://www.blogjava.net/zyb9114/aggbug/35462.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyb9114/" target="_blank">月亮的太阳</a> 2006-03-15 17:30 <a href="http://www.blogjava.net/zyb9114/archive/2006/03/15/35462.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DSLR新手课堂 详细解读DSLR等效倍率</title><link>http://www.blogjava.net/zyb9114/archive/2006/03/15/35461.html</link><dc:creator>月亮的太阳</dc:creator><author>月亮的太阳</author><pubDate>Wed, 15 Mar 2006 09:28:00 GMT</pubDate><guid>http://www.blogjava.net/zyb9114/archive/2006/03/15/35461.html</guid><wfw:comment>http://www.blogjava.net/zyb9114/comments/35461.html</wfw:comment><comments>http://www.blogjava.net/zyb9114/archive/2006/03/15/35461.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zyb9114/comments/commentRss/35461.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyb9114/services/trackbacks/35461.html</trackback:ping><description><![CDATA[随着数码单反相机市场的发展，越来越多的朋友打算购入或者已经购入了属于自己的数码单反相机。对于许多刚刚上手数码单反的朋友来说，一些关于DSLR的问题还有待进一步了解，比如，“等效倍率”也许会给你带来一些疑问，为什么有的数码单反相机在配置镜头的时候还需要在焦段上乘以一个等效倍率，而有的则不需要呢？<FONT face=Verdana>等效倍率对镜头的其他参数到底有什么影响呢？</FONT> 本文整理自Canon 《EF Lens Work III》，希望能帮你回答这个问题。 
<P>一、感光器件面积&nbsp;&nbsp; 135画幅的成像面积为：36 x 24 mm。</P>
<P>&nbsp;&nbsp;&nbsp; 由于135画幅成为最为流行的胶片画幅，所以135画幅称为全画幅。</P>
<P>&nbsp;&nbsp;&nbsp; 现在生产的绝大多数数码SLR (简称DSLR)所采用的镜头都是原有的135系列镜头。</P>
<P>&nbsp;&nbsp;&nbsp; 由于制造成本的原因，DSLR所使用的感光器件(CMOS/CCD)多数都不是全画幅的，感光器件的实际面积都比135画幅小。</P>
<P>&nbsp;&nbsp;&nbsp; 比如Canon DSLR采用了下列三种面积的感光器件：</P>
<P align=center><IMG alt="" src="http://www.pconline.com.cn/digital/dc/daogou/basics/0602/pic/000228236_1.jpg" border=0></P>
<P align=center><IMG alt="" src="http://www.pconline.com.cn/digital/dc/daogou/basics/0602/pic/000228237_1.jpg" border=0></P>
<P align=center><IMG alt="" src="http://www.pconline.com.cn/digital/dc/daogou/basics/0602/pic/000228238_1.jpg" border=0></P>
<P>&nbsp;&nbsp;&nbsp; 注：EOS 10D/EOS D60/EOS D30的感光器件面积是同样的。</P>
<P>二、感光器件面积与视角</P>
<P>&nbsp;&nbsp;&nbsp; 感光器件的面积决定了影像画面视角。对于全画幅的DSLR而言，其视角同135画幅一样，安装35mm的镜头，其视角等同35mm的视角。而感光器件的面积比全画幅小的，实际视角也随之变小:感光器件面积越小，视角就越小。比如将100mm镜头安装在EOS 1D和EOS 10D上，其有效视角分别相当于130mm和160mm。</P>
<P align=center><IMG alt="" src="http://www.pconline.com.cn/digital/dc/daogou/basics/0602/pic/000228239_1.jpg" border=0></P>
<P align=center><IMG alt="" src="http://www.pconline.com.cn/digital/dc/daogou/basics/0602/pic/000228240_1.jpg" border=0></P>
<P align=center><IMG alt="" src="http://www.pconline.com.cn/digital/dc/daogou/basics/0602/pic/000228241_1.jpg" border=0></P>
<P>&nbsp;&nbsp;&nbsp; 这里就引出一个概念:相当于135画幅的倍率 (简称等效倍率)。</P>
<P>&nbsp;&nbsp;&nbsp; 对于EOS 1D和EOS 10D而言，它们的等效倍率分别为1.3X和1.6X。其实这些等效倍率不是很严格的，可以按照 [等效倍率 = 135画幅对角线长度/(感光器件对角线长度)] 来估算。感光器件面积的减小，实际上相当于在全画幅中切割下中央部分，对于所使用镜头的光圈没有影响，也就是说，使用镜头的实际最大光圈不受该等效倍率的影响。显然，由于这个倍率的存在，给长焦镜头的使用带来焦距增加的好处，比如300/2.8镜头，使用在EOS 10D上，其有效视角等于480/2.8的镜头。不过，在给长焦镜头带来优点的同时，对于广角镜头的使用就带来负面的影响。比如16mm的镜头，用在EOS 10D上，有效视角就相当于约25mm的视角范围了。</P>
<P align=center><IMG alt="" src="http://www.pconline.com.cn/digital/dc/daogou/basics/0602/pic/000228242_1.jpg" border=0></P>
<P align=center><IMG alt="" src="http://www.pconline.com.cn/digital/dc/daogou/basics/0602/pic/000228243_1.jpg" border=0></P>
<P align=center>全画幅相机上使用25mm焦距拍摄的画面</P>
<P align=center><IMG alt="" src="http://www.pconline.com.cn/digital/dc/daogou/basics/0602/pic/000228244_1.jpg" border=0></P>
<P align=center>16mm镜头在EOS 10D上拍摄的画面</P>
<P align=left>三、景深与透视关系</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; 由于出现了等效倍率的概念，那么这个等效倍率是否对画面的景深和透视关系也有影响呢?前面说了:感光器件面积的减小，实际上相当于在全画幅中切割下中央部分。那么对于画面而言:只要拍摄机位不发生变化，景深和透视关系没有发生变化。</P>
<P>&nbsp;&nbsp;&nbsp; 比如EF 85/1.8 USM，安装在EOS 10D上，等效于136/1.8镜头。但是在同样机位使用 [EF 85/1.8 USM + EOS 10D] 和 [EF 135/2L USM + EOS 1Ds] 拍摄，这个136/1.8的景深和焦外成像依然是85/1.8的景深和焦外成像效果，并不能等同于135/2的景深和焦外成像效果。</P>
<P>&nbsp;&nbsp;&nbsp; 归纳如下：</P>
<P>&nbsp;&nbsp;&nbsp; 等效倍率的出现，除了改变有效视角外，不改变三个主要参数:最大光圈、景深、透视关系。</P><img src ="http://www.blogjava.net/zyb9114/aggbug/35461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zyb9114/" target="_blank">月亮的太阳</a> 2006-03-15 17:28 <a href="http://www.blogjava.net/zyb9114/archive/2006/03/15/35461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>详细分解相机测光模式</title><link>http://www.blogjava.net/zyb9114/archive/2006/03/15/35460.html</link><dc:creator>月亮的太阳</dc:creator><author>月亮的太阳</author><pubDate>Wed, 15 Mar 2006 09:22:00 GMT</pubDate><guid>http://www.blogjava.net/zyb9114/archive/2006/03/15/35460.html</guid><wfw:comment>http://www.blogjava.net/zyb9114/comments/35460.html</wfw:comment><comments>http://www.blogjava.net/zyb9114/archive/2006/03/15/35460.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zyb9114/comments/commentRss/35460.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zyb9114/services/trackbacks/35460.html</trackback:ping><description><![CDATA[<STRONG>相机测光模式<BR><BR></STRONG>大多数的数码相机或传统傻瓜相机，大多数都具备这几种测光方式：中央平均测光、中央局部测光、点测光以及评价测光。这几种测光方式基本可以应付目前所有的拍摄，但是在影楼以及一些专业场合或者广告拍摄，摄影师依旧依赖测光表的数值来进行拍摄。<BR><BR><B>一、中央重点平均测光（或简称：中央平均测光）</B><BR><BR>中央平均测光是采用最多的一种测光模式，几乎所有的相机生产厂商都将中央平均测光作为相机默认的测光方式。中央平均测光主要是考虑到一般摄影者习惯将拍摄主体也就是需要准确曝光的东西放在取景器的中间，所以这部分拍摄内容是最重要的。因此负责测光的感官元件会将相机的整体测光值有机的分开，中央部分的测光数据占据绝大部分比例，而画面中央以外的测光数据作为小部分比例起到测光的辅助作用。经过相机的处理器对这两格数值加权平均之后的比例，得到拍摄的相机测光数据。例如尼康的相机采用的就是中央重点平均测光，尼康相机的中央部分测光占据整个测光比例的75％（这个比例各家品牌不同而有所差异），其他非中央部分逐渐延伸至边缘的测光数据占据了25％的比例。在大多数拍摄情况下中央重点测光是一种非常实用、也是应用最广泛的测光模式，但是如果您需要拍摄的主体不在画面的中央或者是在逆光条件下拍摄，中央重点测光就不适用了。<BR><BR>中央重点测光是一种传统测光方式，大多数相机的测光算法是重视画面中央约2/3的位置，对周围也予于某些程度的考虑。对于习惯使用中央重点测光的摄影者，用这种方式测光比使用多区评价测光方式更加容易控制效果。<BR><BR>适用拍摄用途：个人旅游照片，特殊风景照片等。<BR><BR><BR><B>二、中央部分测光（或称：局部测光）</B><BR><BR>中央部分测光和中央平均测光是两种不同的测光方式，中央平均测光是以中央区域为主其他区域为辅助的测光方式，而中央部分测光则是只对画面中央的一块区域进行测光，测光范围大约是百分之三至百分之十二进行测光。中央部分测光模式是适合一些光线比较复杂的场景，此时需要得到更准确的曝光，采用中央部分测光可以得到拍摄主体准确曝光的照片。中央部分测光可针对一些特殊的恶劣的拍摄环境应用，能更加确保相机处理器计算出画面中央主要表现对象部分所需要的曝光量。在舞台、演出、逆光等场景中这种模式最为合适，不过由于分割测光（矩阵测光）模式的兴起，这种模式现在已经逐渐较少在相机中出现了。而佳能是坚持采用中央部分测光（局部测光）的厂商，一直到最新推出的EOS&nbsp;30V胶片相机以及EOS&nbsp;20D数码单反相机中都设计了9％区域范围的局部测光，这可以让没有点测光功能的相机在拍摄一些光线复杂条件下的画面时减小光线对主体的影响。<BR><BR>局部测光方式是对画面的某一局部进行测光。当被摄主体与背景有着强烈明暗反差，而且被摄主体所占画面的比例不大时，运用这种测光方式最合适；在这种情况下，局部测光比第一二种测光方式准确，又不象点测光方式那样由于测光点太狭小需要一定测光经验才不容易失误。<BR><BR>适用拍摄用途：特定条件下需要准确的测光，测光范围比点测光更大时。<BR><BR><B>三、点测光（SPOT）</B><BR><BR>中央平均测光（中央重点平均测光）虽然可以充分的表现整个画面的光线反应，但是也有许多不足之处，例如需要精准的小范围物体曝光准确时，中央平均测光（中央重点平均测光）就不那么好使了，即使是中央部分测光（局部测光）有时范围也有些大。为了克服这些不足之处，一些厂商研发出此种点（SPOT）测光模式来避免光线复杂条件下或逆光状态下环境光源对主体测光的影响；点测光的范围是以观景窗中央的一极小范围区域作为曝光基准点，大多数点测相机的测光区域为百分之一至百分之三，相机根据这个较窄区域测得的光线，作为曝光依据。这是一种相当准确的测光方式，但对于新手来说，却不那么好掌握，怎样去区别一个测光点，变成了一个需要学习的技巧，错误的测光点所拍出来的画面不是过曝就是欠曝，造成严重的曝光误差。由于点测光的技巧，还可以用在日益盛行的数字相机微距拍摄时大放光彩上，这样可以让微距部分曝光更加准确。因此喜爱微距拍摄者必须尽力学好这种测光方式，初步可以选则画面中的中间小区域来作为测光基准点。点测光在人像拍摄时也是一个好武器，可以准确的对人物局部（例如脸部、甚至是眼睛）进行准确的曝光。<BR><BR>点测光只对很小的区域准确测光，区域外景物的明暗对测光无影响，所以测光精度很高，其用途主要是可对远处特定的小区域测光。掌握这种测光方式一是要求摄影者对所使用相机的点测特性有一定了解，懂得选定反射率为18%左右的测光点，或能对高于或低于18%反射率的测光点凭经验作出曝光补偿。点测方式主要供专业摄影师或对摄影技术很了解的人使用。点测方式使用不当会添乱。<BR><BR>适用拍摄用途：舞台摄影，个人艺术照，新闻特写照