<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>renyangok</title>
    <description>软件是一种态度</description>
    <link>http://renyangok.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>关于SAX，DOM，JAXP，JDOM，DOM4J的一些理解</title>
        <author>renyangok</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://renyangok.javaeye.com">renyangok</a>&nbsp;
          链接：<a href="http://renyangok.javaeye.com/blog/45359" style="color:red;">http://renyangok.javaeye.com/blog/45359</a>&nbsp;
          发表时间: 2007年01月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          
		<p>第一：首先介绍一下SAX，DOM，JAXP，JDOM，DOM4J的基本知识：<br />（注意：至于 JAXP  |   JAXB  |   JAXM  |   JAXR  |   JAX-RPC 分别指什么，查看<a href="http://gceclub.sun.com.cn/staticcontent/html/xml/faq/#jaxr">http://gceclub.sun.com.cn/staticcontent/html/xml/faq/#jaxr</a>_）</p>
		<p>1、sax、dom是两种对xml文档进行分析的方法（没有具体的实现，只有接口）<br />所以不是解释器，如果光有他们，你是完成不了对xml文档的处理的。<br />sax的包是org.xml.sax<br />dom的包是org.w3c.dom<br />包的名称很重要，它有助于你理解他们之间的关系。</p>
		<p>2、jaxp是api，他封装了sax\dom两种接口。并在sax\dom的基础之上，作了一套比较简单的api以供开发人员使用。<br />jaxp的包是javax.xml.parsers<br />可以看看jaxp的源文件，它的文件中包含了对sax或者dom的引用（import）<br />jaxp也不是具体的实现，他只是一套api。如果你仅仅有jaxp那是无法工作的<br />（其实jaxp只是完成对sax、dom的包装，生成了DocumentBuilderFactory\DocumentBuilder<br />和SAXParserFactory SAXParser。也就是设计模式中的工厂模式，他的好处就是具体的对象（ 解释器）建立由子类完成）</p>
		<p>3、xerces解释器（号称地球上最快的xml解释器）<br />在xerces中对jaxp中定义的SAXParser SAXParserFactory DocumentBuilder DocumentBuilderFactory进行了继承（extends）对应SAXParserImpl SAXParserFactoryImpl DocumentBuilderImpl DocumentBuilderFactoryImpl<br />这就是为什么你的classpath中只要有xerces.jar（其中包含了sax dom jaxp ）和 xercesImpl.jar就可以的原因了.</p>
		<p>4、什么时候可以用别的解释器 比如crimson呢<br />他也是和xerces一样 是解释器，很简单，用crimson.jar 替代xercesImpl.jar</p>
		<p>5、jdom和dom4j<br /> <br />W3C的DOM标准API难用的让人想撞墙，于是有一帮人开发Java专用的XML API目的是为了便于使用，这就是jdom的由来，开发到一半的时候，另一部分人又分了出来，他们有自己的想法，于是他们就去开发dom4j，形成了今天这样两个API，至于他们之间的性能，jdom全面惨败，dom4j大获全胜。我觉得jdom和dom4j就相当于sax/dom+jaxp，具体的解释器可以选择。</p>
		<p>第二：再介绍一下，dom,sax,jdom,dom4j的技术特点：</p>
		<p>1: DOM<br />DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构，然后才能做任何工作。由于它是基于信息层次的，因而 DOM 被认为是基于树或基于对象的。DOM 以及广义的基于树的处理具有几个优点。首先，由于树在内存中是持久的，因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航，而不是像 SAX 那样是一次性的处理。DOM 使用起来也要简单得多。<br />　　另一方面，对于特别大的文档，解析和加载整个文档可能很慢且很耗资源，因此使用其他手段来处理这样的数据会更好。这些基于事件的模型，比如 SAX。</p>
		<p>2:SAX<br />　　这种处理的优点非常类似于流媒体的优点。分析能够立即开始，而不是等待所有的数据被处理。而且，由于应用程序只是在读取数据时检查数据，因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上，应用程序甚至不必解析整个文档；它可以在某个条件得到满足时停止解析。一般来说，SAX 还比它的替代者 DOM 快许多。</p>
		<p>3:　选择 DOM 还是选择 SAX ？<br />　　对于需要自己编写代码来处理 XML 文档的开发人员来说，选择 DOM 还是 SAX 解析模型是一个非常重要的设计决策。 <br />　　DOM 采用建立树形结构的方式访问 XML 文档，而 SAX 采用的事件模型。 <br />　　DOM 解析器把 XML 文档转化为一个包含其内容的树，并可以对树进行遍历。用 DOM 解析模型的优点是编程容易，开发人员只需要调用建树的指令，然后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用 DOM 解析器的时候需要处理整个 XML 文档，所以对性能和内存的要求比较高，尤其是遇到很大的 XML 文件的时候。由于它的遍历能力，DOM 解析器常用于 XML 文档需要频繁的改变的服务中。 <br />　　SAX 解析器采用了基于事件的模型，它在解析 XML 文档的时候可以触发一系列的事件，当发现给定的tag的时候，它可以激活一个回调方法，告诉该方法制定的标签已经找到。SAX 对内存的要求通常会比较低，因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时，SAX 这种扩展能力得到了更好的体现。但用 SAX 解析器的时候编码工作会比较困难，而且很难同时访问同一个文档中的多处不同数据。 </p>
		<p>4:jdom <a href="http://www.jdom.org/">http://www.jdom.org</a><br />JDOM 的目的是成为 Java 特定文档模型，它简化与 XML 的交互并且比使用 DOM 实现更快。由于是第一个 Java 特定模型，JDOM 一直得到大力推广和促进。正在考虑通过“Java 规范请求 JSR-102”将它最终用作“Java 标准扩展”。从 2000 年初就已经开始了 JDOM 开发。<br />　　JDOM 与 DOM 主要有两方面不同。首先，JDOM 仅使用具体类而不使用接口。这在某些方面简化了 API，但是也限制了灵活性。第二，API 大量使用了 Collections 类，简化了那些已经熟悉这些类的 Java 开发者的使用。<br />　　JDOM 文档声明其目的是“使用 20%（或更少）的精力解决 80%（或更多）Java/XML 问题”（根据学习曲线假定为 20%）。JDOM 对于大多数 Java/XML 应用程序来说当然是有用的，并且大多数开发者发现 API 比 DOM 容易理解得多。JDOM 还包括对程序行为的相当广泛检查以防止用户做任何在 XML 中无意义的事。然而，它仍需要您充分理解 XML 以便做一些超出基本的工作（或者甚至理解某些情况下的错误）。这也许是比学习 DOM 或 JDOM 接口都更有意义的工作。<br />　　JDOM 自身不包含解析器。它通常使用 SAX2 解析器来解析和验证输入 XML 文档（尽管它还可以将以前构造的 DOM 表示作为输入）。它包含一些转换器以将 JDOM 表示输出成 SAX2 事件流、DOM 模型或 XML 文本文档。JDOM 是在 Apache 许可证变体下发布的开放源码。</p>
		<p>5: DOM4J   <a href="http://dom4j.sourceforge.net/">http://dom4j.sourceforge.net/</a><br />　虽然 DOM4J 代表了完全独立的开发结果，但最初，它是 JDOM 的一种智能分支。它合并了许多超出基本 XML 文档表示的功能，包括集成的 XPath 支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项，它通过 DOM4J API 和标准 DOM 接口具有并行访问功能。从 2000 下半年开始，它就一直处于开发之中。<br />　　为支持所有这些功能，DOM4J 使用接口和抽象基本类方法。DOM4J 大量使用了 API 中的 Collections 类，但是在许多情况下，它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是，虽然 DOM4J 付出了更复杂的 API 的代价，但是它提供了比 JDOM 大得多的灵活性。<br />　　在添加灵活性、XPath 集成和对大文档处理的目标时，DOM4J 的目标与 JDOM 是一样的：针对 Java 开发者的易用性和直观操作。它还致力于成为比 JDOM 更完整的解决方案，实现在本质上处理所有 Java/XML 问题的目标。在完成该目标时，它比 JDOM 更少强调防止不正确的应用程序行为。<br />　　DOM4J 是一个非常非常优秀的Java XML API，具有性能优异、功能强大和极端易用使用的特点，同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML，特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J。</p>
		<p>最后：我建议用dom4j</p>
		<p>　JDOM 和 DOM 在性能测试时表现不佳，在测试 10M 文档时内存溢出。在小文档情况下还值得考虑使用 DOM 和 JDOM。虽然 JDOM 的开发者已经说明他们期望在正式发行版前专注性能问题，但是从性能观点来看，它确实没有值得推荐之处。另外，DOM 仍是一个非常好的选择。DOM 实现广泛应用于多种编程语言。它还是许多其它与 XML 相关的标准的基础，因为它正式获得 W3C 推荐（与基于非标准的 Java 模型相对），所以在某些类型的项目中可能也需要它（如在 javascript 中使用 DOM）。<br />　　SAX表现较好，这要依赖于它特定的解析方式。一个 SAX 检测即将到来的XML流，但并没有载入到内存（当然当XML流被读入时，会有部分文档暂时隐藏在内存中）。<br />　　无疑，DOM4J是最好的，目前许多开源项目中大量采用 DOM4J，例如大名鼎鼎的 Hibernate 也用 DOM4J 来读取 XML 配置文件。如果不考虑可移植性，那就采用DOM4J吧！<br /></p>

          <br/>
          <span style="color:red;">
            <a href="http://renyangok.javaeye.com/blog/45359#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 08 Jan 2007 09:28:00 +0800</pubDate>
        <link>http://renyangok.javaeye.com/blog/45359</link>
        <guid>http://renyangok.javaeye.com/blog/45359</guid>
      </item>
      <item>
        <title>关于SAX，DOM，JAXP，JDOM，DOM4J的一些理解</title>
        <author>renyangok</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://renyangok.javaeye.com">renyangok</a>&nbsp;
          链接：<a href="http://renyangok.javaeye.com/blog/44891" style="color:red;">http://renyangok.javaeye.com/blog/44891</a>&nbsp;
          发表时间: 2007年01月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          
		<p>第一：首先介绍一下SAX，DOM，JAXP，JDOM，DOM4J的基本知识：<br />（注意：至于 JAXP  |   JAXB  |   JAXM  |   JAXR  |   JAX-RPC 分别指什么，查看<a href="http://gceclub.sun.com.cn/staticcontent/html/xml/faq/#jaxr">http://gceclub.sun.com.cn/staticcontent/html/xml/faq/#jaxr</a>_）</p>
		<p>1、sax、dom是两种对xml文档进行分析的方法（没有具体的实现，只有接口）<br />所以不是解释器，如果光有他们，你是完成不了对xml文档的处理的。<br />sax的包是org.xml.sax<br />dom的包是org.w3c.dom<br />包的名称很重要，它有助于你理解他们之间的关系。</p>
		<p>2、jaxp是api，他封装了sax\dom两种接口。并在sax\dom的基础之上，作了一套比较简单的api以供开发人员使用。<br />jaxp的包是javax.xml.parsers<br />可以看看jaxp的源文件，它的文件中包含了对sax或者dom的引用（import）<br />jaxp也不是具体的实现，他只是一套api。如果你仅仅有jaxp那是无法工作的<br />（其实jaxp只是完成对sax、dom的包装，生成了DocumentBuilderFactory\DocumentBuilder<br />和SAXParserFactory SAXParser。也就是设计模式中的工厂模式，他的好处就是具体的对象（ 解释器）建立由子类完成）</p>
		<p>3、xerces解释器（号称地球上最快的xml解释器）<br />在xerces中对jaxp中定义的SAXParser SAXParserFactory DocumentBuilder DocumentBuilderFactory进行了继承（extends）对应SAXParserImpl SAXParserFactoryImpl DocumentBuilderImpl DocumentBuilderFactoryImpl<br />这就是为什么你的classpath中只要有xerces.jar（其中包含了sax dom jaxp ）和 xercesImpl.jar就可以的原因了.</p>
		<p>4、什么时候可以用别的解释器 比如crimson呢<br />他也是和xerces一样 是解释器，很简单，用crimson.jar 替代xercesImpl.jar</p>
		<p>5、jdom和dom4j<br /> <br />W3C的DOM标准API难用的让人想撞墙，于是有一帮人开发Java专用的XML API目的是为了便于使用，这就是jdom的由来，开发到一半的时候，另一部分人又分了出来，他们有自己的想法，于是他们就去开发dom4j，形成了今天这样两个API，至于他们之间的性能，jdom全面惨败，dom4j大获全胜。我觉得jdom和dom4j就相当于sax/dom+jaxp，具体的解释器可以选择。</p>
		<p>第二：再介绍一下，dom,sax,jdom,dom4j的技术特点：</p>
		<p>1: DOM<br />DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构，然后才能做任何工作。由于它是基于信息层次的，因而 DOM 被认为是基于树或基于对象的。DOM 以及广义的基于树的处理具有几个优点。首先，由于树在内存中是持久的，因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航，而不是像 SAX 那样是一次性的处理。DOM 使用起来也要简单得多。<br />　　另一方面，对于特别大的文档，解析和加载整个文档可能很慢且很耗资源，因此使用其他手段来处理这样的数据会更好。这些基于事件的模型，比如 SAX。</p>
		<p>2:SAX<br />　　这种处理的优点非常类似于流媒体的优点。分析能够立即开始，而不是等待所有的数据被处理。而且，由于应用程序只是在读取数据时检查数据，因此不需要将数据存储在内存中。这对于大型文档来说是个巨大的优点。事实上，应用程序甚至不必解析整个文档；它可以在某个条件得到满足时停止解析。一般来说，SAX 还比它的替代者 DOM 快许多。</p>
		<p>3:　选择 DOM 还是选择 SAX ？<br />　　对于需要自己编写代码来处理 XML 文档的开发人员来说，选择 DOM 还是 SAX 解析模型是一个非常重要的设计决策。 <br />　　DOM 采用建立树形结构的方式访问 XML 文档，而 SAX 采用的事件模型。 <br />　　DOM 解析器把 XML 文档转化为一个包含其内容的树，并可以对树进行遍历。用 DOM 解析模型的优点是编程容易，开发人员只需要调用建树的指令，然后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用 DOM 解析器的时候需要处理整个 XML 文档，所以对性能和内存的要求比较高，尤其是遇到很大的 XML 文件的时候。由于它的遍历能力，DOM 解析器常用于 XML 文档需要频繁的改变的服务中。 <br />　　SAX 解析器采用了基于事件的模型，它在解析 XML 文档的时候可以触发一系列的事件，当发现给定的tag的时候，它可以激活一个回调方法，告诉该方法制定的标签已经找到。SAX 对内存的要求通常会比较低，因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时，SAX 这种扩展能力得到了更好的体现。但用 SAX 解析器的时候编码工作会比较困难，而且很难同时访问同一个文档中的多处不同数据。 </p>
		<p>4:jdom <a href="http://www.jdom.org/">http://www.jdom.org</a><br />JDOM 的目的是成为 Java 特定文档模型，它简化与 XML 的交互并且比使用 DOM 实现更快。由于是第一个 Java 特定模型，JDOM 一直得到大力推广和促进。正在考虑通过“Java 规范请求 JSR-102”将它最终用作“Java 标准扩展”。从 2000 年初就已经开始了 JDOM 开发。<br />　　JDOM 与 DOM 主要有两方面不同。首先，JDOM 仅使用具体类而不使用接口。这在某些方面简化了 API，但是也限制了灵活性。第二，API 大量使用了 Collections 类，简化了那些已经熟悉这些类的 Java 开发者的使用。<br />　　JDOM 文档声明其目的是“使用 20%（或更少）的精力解决 80%（或更多）Java/XML 问题”（根据学习曲线假定为 20%）。JDOM 对于大多数 Java/XML 应用程序来说当然是有用的，并且大多数开发者发现 API 比 DOM 容易理解得多。JDOM 还包括对程序行为的相当广泛检查以防止用户做任何在 XML 中无意义的事。然而，它仍需要您充分理解 XML 以便做一些超出基本的工作（或者甚至理解某些情况下的错误）。这也许是比学习 DOM 或 JDOM 接口都更有意义的工作。<br />　　JDOM 自身不包含解析器。它通常使用 SAX2 解析器来解析和验证输入 XML 文档（尽管它还可以将以前构造的 DOM 表示作为输入）。它包含一些转换器以将 JDOM 表示输出成 SAX2 事件流、DOM 模型或 XML 文本文档。JDOM 是在 Apache 许可证变体下发布的开放源码。</p>
		<p>5: DOM4J   <a href="http://dom4j.sourceforge.net/">http://dom4j.sourceforge.net/</a><br />　虽然 DOM4J 代表了完全独立的开发结果，但最初，它是 JDOM 的一种智能分支。它合并了许多超出基本 XML 文档表示的功能，包括集成的 XPath 支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项，它通过 DOM4J API 和标准 DOM 接口具有并行访问功能。从 2000 下半年开始，它就一直处于开发之中。<br />　　为支持所有这些功能，DOM4J 使用接口和抽象基本类方法。DOM4J 大量使用了 API 中的 Collections 类，但是在许多情况下，它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是，虽然 DOM4J 付出了更复杂的 API 的代价，但是它提供了比 JDOM 大得多的灵活性。<br />　　在添加灵活性、XPath 集成和对大文档处理的目标时，DOM4J 的目标与 JDOM 是一样的：针对 Java 开发者的易用性和直观操作。它还致力于成为比 JDOM 更完整的解决方案，实现在本质上处理所有 Java/XML 问题的目标。在完成该目标时，它比 JDOM 更少强调防止不正确的应用程序行为。<br />　　DOM4J 是一个非常非常优秀的Java XML API，具有性能优异、功能强大和极端易用使用的特点，同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML，特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J。</p>
		<p>最后：我建议用dom4j</p>
		<p>　JDOM 和 DOM 在性能测试时表现不佳，在测试 10M 文档时内存溢出。在小文档情况下还值得考虑使用 DOM 和 JDOM。虽然 JDOM 的开发者已经说明他们期望在正式发行版前专注性能问题，但是从性能观点来看，它确实没有值得推荐之处。另外，DOM 仍是一个非常好的选择。DOM 实现广泛应用于多种编程语言。它还是许多其它与 XML 相关的标准的基础，因为它正式获得 W3C 推荐（与基于非标准的 Java 模型相对），所以在某些类型的项目中可能也需要它（如在 javascript 中使用 DOM）。<br />　　SAX表现较好，这要依赖于它特定的解析方式。一个 SAX 检测即将到来的XML流，但并没有载入到内存（当然当XML流被读入时，会有部分文档暂时隐藏在内存中）。<br />　　无疑，DOM4J是最好的，目前许多开源项目中大量采用 DOM4J，例如大名鼎鼎的 Hibernate 也用 DOM4J 来读取 XML 配置文件。如果不考虑可移植性，那就采用DOM4J吧！<br /></p>

          <br/>
          <span style="color:red;">
            <a href="http://renyangok.javaeye.com/blog/44891#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 08 Jan 2007 09:28:00 +0800</pubDate>
        <link>http://renyangok.javaeye.com/blog/44891</link>
        <guid>http://renyangok.javaeye.com/blog/44891</guid>
      </item>
      <item>
        <title>项目一般需要的文档</title>
        <author>renyangok</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://renyangok.javaeye.com">renyangok</a>&nbsp;
          链接：<a href="http://renyangok.javaeye.com/blog/45360" style="color:red;">http://renyangok.javaeye.com/blog/45360</a>&nbsp;
          发表时间: 2007年01月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          
		<p>1、需求文档<br />2、设计文档<br />3、源代码<br />4、测试用例<br />5、验收报告<br />6、用户手册</p>

          <br/>
          <span style="color:red;">
            <a href="http://renyangok.javaeye.com/blog/45360#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 05 Jan 2007 17:17:00 +0800</pubDate>
        <link>http://renyangok.javaeye.com/blog/45360</link>
        <guid>http://renyangok.javaeye.com/blog/45360</guid>
      </item>
      <item>
        <title>项目一般需要的文档</title>
        <author>renyangok</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://renyangok.javaeye.com">renyangok</a>&nbsp;
          链接：<a href="http://renyangok.javaeye.com/blog/44892" style="color:red;">http://renyangok.javaeye.com/blog/44892</a>&nbsp;
          发表时间: 2007年01月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          
		<p>1、需求文档<br />2、设计文档<br />3、源代码<br />4、测试用例<br />5、验收报告<br />6、用户手册</p>

          <br/>
          <span style="color:red;">
            <a href="http://renyangok.javaeye.com/blog/44892#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 05 Jan 2007 17:17:00 +0800</pubDate>
        <link>http://renyangok.javaeye.com/blog/44892</link>
        <guid>http://renyangok.javaeye.com/blog/44892</guid>
      </item>
      <item>
        <title>el表达式不起作用的问题</title>
        <author>renyangok</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://renyangok.javaeye.com">renyangok</a>&nbsp;
          链接：<a href="http://renyangok.javaeye.com/blog/45361" style="color:red;">http://renyangok.javaeye.com/blog/45361</a>&nbsp;
          发表时间: 2007年01月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          
		<p>之前大量的符合jsp1.2标准的项目中用到了${***}，比如${1+2}，但本意就是想显示${1+2}，而不是3，所以应该有控制是否解析el表达式的选项，我觉得分为三个级别：</p>
		<p>1、设置整个应用服务器下的所有项目是否解析el表达式（控制所有项目） <br />（这个我还没找到在哪，但应该有）。</p>
		<p>2、设置整个项目使用el表达式，需要在web.xml中加上 （控制一个项目） <br />&lt;jsp-config&gt; <br />&lt;jsp-property-group&gt; <br />&lt;el-ignored&gt;false&lt;/el-ignored&gt; <br />&lt;/jsp-property-group&gt; <br />&lt;/jsp-config&gt;</p>
		<p>3、设置某个jsp页面使用el表达式，需要在jsp页面加上（控制单个页面） <br />&lt;%@ page isELIgnored="false"%&gt;</p>

          <br/>
          <span style="color:red;">
            <a href="http://renyangok.javaeye.com/blog/45361#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 04 Jan 2007 15:04:00 +0800</pubDate>
        <link>http://renyangok.javaeye.com/blog/45361</link>
        <guid>http://renyangok.javaeye.com/blog/45361</guid>
      </item>
      <item>
        <title>CSDN论坛面试经验和面试题集锦</title>
        <author>renyangok</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://renyangok.javaeye.com">renyangok</a>&nbsp;
          链接：<a href="http://renyangok.javaeye.com/blog/45362" style="color:red;">http://renyangok.javaeye.com/blog/45362</a>&nbsp;
          发表时间: 2006年12月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          
		<p align="left">
				<font size="6" color="#ff0000">
						<table id="table4" align="left">
								<tbody>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/mianshi060906.htm#[面试经验]" target="_self">面试经验</a>
														<a href="http://community.csdn.net/Expert/mianshi060906.htm#[综合/算法]" target="_self">综合/算法</a>
														<a href="http://community.csdn.net/Expert/mianshi060906.htm#[C/C++]" target="_self">C/C++/VC</a>
														<a href="http://community.csdn.net/Expert/mianshi060906.htm#[MS-SQL_Server]" target="_self">MS-SQL Server</a>
														<a href="http://community.csdn.net/Expert/mianshi060906.htm#[Java]" target="_self">Java</a>
														<a href="http://community.csdn.net/Expert/mianshi060906.htm#[.NET技术]" target="_self">.NET技术</a>
														<a href="http://community.csdn.net/Expert/mianshi060906.htm#[Oracle]" target="_self">Oracle</a>
														<a href="http://community.csdn.net/Expert/mianshi060906.htm#[其他]" target="_self">其他</a>
												</td>
										</tr>
										<tr>
												<td>
												</td>
										</tr>
										<tr>
												<td>[<a href="http://community.csdn.net/Expert/mianshi060906.htm#[微软系列]" target="_self">微软系列</a>] [<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4976379" target="_blank">INTEL</a>] [<a href="http://community.csdn.net/expert/Topicview1.asp?id=4976756" target="_blank">网易</a>] [<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4973289" target="_blank">中兴</a>] [<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4837098" target="_blank">华为</a>] [<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4952091" target="_blank">Google1</a><a href="http://community.csdn.net/Expert/TopicView1.asp?id=4869373">2</a>] [<a href="http://community.csdn.net/expert/Topicview1.asp?id=4926347" target="_blank">DELL</a>] [<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4945933">朗讯</a>] [<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4677111" target="_blank">神州数码</a>] [<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4938069" target="_blank">方正</a>] [<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4972598" target="_blank">SUN</a>]</td>
										</tr>
										<tr>
												<td> </td>
										</tr>
										<tr>
												<td>
														<b>
																<a name="[面试经验]">[面试经验]</a>
														</b>
												</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=5006004" target="_blank">高薪是怎么跳出来的？（转载）</a> （wjf4856）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/expert/topicview1.asp?id=5002550" title="最近几天招聘程序员的感想，另外附一份面试题，大家批批" rel="external">最近几天招聘程序员的感想，另外附一份面试题，大家批批</a>（jyk）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4844420" target="_blank">机会是给有准备的人的，我今天去上海微创面试的体会</a>（sanjie88）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4884168" target="_blank">面试经历分享：北京文思创新</a>（ghz）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4996671" target="_blank">面试的苦恼</a>（palts520）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4900374" target="_blank">面试阿里巴巴</a>（boona）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4930230" target="_blank">我的面试经历，一个字难！！！！！！！！！！</a>（zxs3543）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4934649" target="_blank">如何面试软件工程师？</a>（zenhan）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4959715" target="_blank">在网上看了不少公司面试笔试的文章，郁闷了</a>（BLGT）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4890715" target="_blank">前天面试失败,特来此作检讨.从今以后开始要好好学习.</a>（utmost100）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4980288" target="_blank">要到珠海优特公司面试，请教该做些什么准备？</a>（Builder_Soft）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4941030" target="_blank">美工面试一般都会问什么问题</a>（qs_25）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4975366" target="_blank">请问面试VB程序员要注意些什么？</a>（chinayokel）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4974782" target="_blank">没有面试经验，请大家指导一下</a>（chinayokel）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4983622" target="_blank">Asp.net面试一般问什么</a>（zhukuanliang）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4980092" target="_blank">急请一会要去面试，听说是上机。一般都出什么题呀</a>（tt5201）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4978405" target="_blank">紧急求助：面试时，企业考察编程能力一般会出怎样的题目，特别是VC++!</a>（ab2）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4975862" target="_blank">问个问题(视频聊天)和写写4次面试的烦恼</a>（jianjian8410）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4971581" target="_blank">[新手求助]电话面试都要准备那些方面?</a>（OpenHero）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4950876" target="_blank">为什么每次面试之后都没有结果啊</a>（fangza）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4957199" target="_blank">在华为地下室餐厅面试的来聊聊</a>（xubai）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4948431" target="_blank">过些天去面试, 软件测试方面, 请各位请提些建议,非常感谢</a>（Ripple_wang）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4953201" target="_blank">江湖救急！马上要去面试一个跟物流有关的技术职位，有做物流开发经验的吗？</a>（givemecool）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4950026" target="_blank">上周五去长沙大唐先一科技面试，十分郁闷，散分散心！</a>（lingfeng0626）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4945308" target="_blank">关于面试</a>（mystones）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4943843" target="_blank">做嵌入式开发，一般都面试哪方面的知识？</a>（werqqq）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4883263" target="_blank">这次面试太丢脸了，郁闷啊！</a>（feng13555）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4910313" target="_blank">继续那个：从东软面试回来郁闷中（转）</a>（mysticality）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4925384" target="_blank">NEC公司明天面试,向去过或在这个公司的兄弟请教,顶者勿入</a>（ATaoo）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4905654" target="_blank">面试5个月后收到华为录取通知，faint</a>（gomydream）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4883166" target="_blank">在面试的时候，自我介绍应该说些什么？</a>（luobo525）</td>
										</tr>
										<tr>
												<td> </td>
										</tr>
										<tr>
												<td>
														<b>
																<a name="[综合/算法]">[综合/算法]</a>
														</b>
												</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4994686" target="_blank">101道经典面试题 - 01</a>  <a href="http://community.csdn.net/Expert/TopicView1.asp?id=4994884">2</a><a href="http://community.csdn.net/Expert/TopicView1.asp?id=4997991">3</a><a href="http://community.csdn.net/Expert/TopicView1.asp?id=4998169">4</a><a href="http://community.csdn.net/Expert/TopicView1.asp?id=4999503">5</a><a href="http://community.csdn.net/Expert/TopicView1.asp?id=5000842">6</a><a href="http://community.csdn.net/Expert/TopicView1.asp?id=5001104">7</a><a href="http://community.csdn.net/Expert/TopicView1.asp?id=5001111">8</a><a href="http://community.csdn.net/Expert/TopicView1.asp?id=5001122">9</a> （china_cooooooooooder）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4911357" target="_blank">一个年薪10万美金的面试题</a>（ayungood）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4992360" target="_blank">面试考题，愁啊！！！</a>（mysticality）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4959570" target="_blank">[调查]去西安交大的一个软件公司面试，面试官问了一个问题，看有多少人能回答来，顺便散分</a>（bgqy2000）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4952091" target="_blank">Google面试的20题,知道的麻烦给点提示 .</a>（hansin）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4956006" target="_blank">据说是微软面试题，有答案了，但不知道为什么会是这样!</a>（DaChu）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4948089" target="_blank">月薪3万的一道面试题（看看你的IQ )</a>（cgtsea）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4829572" target="_blank">SZSM面试题:写一个可以返回任意两个string串的最大公串的函数,语言不限</a>（redbirdli）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4849344" target="_blank">分享一下：今天我们公司招聘产品设计师的面试题目……</a>（KiteGirl）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4672790" target="_blank">面试时一道超难的算法问题！！！</a>（justrun2005）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4907498" target="_blank">一道真正难倒亿人的智力题,这是微软的面试题</a>（66766960）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4860473" target="_blank">据说是一道微软月薪5w职位的面试题</a>（cjjfam）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4926347" target="_blank">DELL的英文面试题(硬件部分和操作系统)，兄弟们直接写下答案，切磋以下！</a>（zh050317）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/expert/Topicview1.asp?id=4976756">从网上搜集到的网易笔试题,大家一起讨论一下. </a>
												</td>
										</tr>
										<tr>
												<td> </td>
										</tr>
										<tr>
												<td>
														<p align="left">
																<b>
																		<a name="[C/C++]">[C/C++/VC]</a>
																</b>
														</p>
												</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4976379" target="_blank">再帖 几道面试题(据说是INTEL公司的)</a>（zdl1016）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4869373" target="_blank">[转帖]大家来试试GOOGLE面试题！！</a>（laiwusheng）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4945933" target="_blank">据说是朗训面试题</a>（flyiner）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4973289" target="_blank">我的中兴面试题,求达人给个答案啊</a>（flyabcd）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4866968" target="_blank">求面试题~南京联创的</a>（110120119）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=5000878" target="_blank">求教一面试题：编写一个函数比较两个整数大小，但不能使用任何比较操作符</a>（neoadane）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4691482" target="_blank">C语言面试题大汇总，个人觉得还是比较全地!!!</a>（free131）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4994656" target="_blank">前天的一道面试题，前辈帮看看！</a>（67676373）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4996157" target="_blank">微软经典面试题</a>（bastenf）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4988366" target="_blank">问个面试题</a>（zjbirdman）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4834987" target="_blank">面试问题之反转字符串中单词的顺序</a>（ugg）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4986821" target="_blank">求助：关于局部变量的一道面试题</a>（neoadane）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4990840" target="_blank">昨天朋友面试碰到的一面试题，请教大家</a>（petertangpei）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4988970" target="_blank">一个面试题</a>（xiaojun19830916）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4984763" target="_blank">两道有趣的面试题目.</a>（yangnix）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4957745" target="_blank">各位大侠请帮小弟作道面试题，先谢了！</a>（open_ocean）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4967695" target="_blank">面试问题,求助,送分</a>（OneAudollar）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4975577" target="_blank">１道面试题　看看</a>（gggaaakkk）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4952995" target="_blank">面试题1</a>（yangxudongseu）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4967370" target="_blank"> 面试题目,求助!</a>（OneAudollar）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4696384" target="_blank">又有一个面试题，大家看看</a>（yifongzhou）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4961303" target="_blank">面试题，有点难，欢迎</a>（xnkjdx1998）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4941421" target="_blank">大家看看面试题！</a>（yanjun885）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4928386" target="_blank">求解几个面试题，今天面的，郁闷死我了</a>（paskaa）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4939687" target="_blank">昨天的面试题,分享一下</a>（jianyachu）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4920101" target="_blank">一道面试纠错题，大家看看吧</a>（nysst_hxl）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4888707" target="_blank">一个关于指针的面试题，会者请进。</a>（fansgq）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4902262" target="_blank">软件外企C++面试题,大家试试看?</a>（OneAudollar）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4891422" target="_blank">两道Ｃ面试题,不小心你未必能做对哦</a>（ilelf）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4976962" target="_blank">[高手进]一个面试题，希望高手帮我解答，图形方面！</a>（yangc_83）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4976526" target="_blank">[要求置顶]开源软件的面试题——各位大哥们给点思路</a>（dream2013）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4952407" target="_blank">面试时被人问到两个问题</a>（yjukh）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4952397" target="_blank">求助：面试一些题目，高手们过来帮忙解答一下～</a>（yjukh）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4941585" target="_blank">今天的面试题（自学C果然够呛，望大家多多提示）</a>（ppsdog1956）</td>
										</tr>
										<tr>
												<td> </td>
										</tr>
										<tr>
												<td>
														<b>
																<a name="[MS-SQL_Server]">[MS-SQL Server]</a>
														</b>
												</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=5001364" target="_blank">sql server 面试时 的考题!!(整理)</a>（2344095）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4677111" target="_blank">神州数码11道面试题求解</a>（jinder22）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4921045" target="_blank">3棵面试题,大家来看看...................</a>（hanchi8008）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4912885" target="_blank">关于事务的问题(面试题)</a>（zyq_10_25）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4999448" target="_blank">sql server 面试时 的考题!!</a>（2344095）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4977423" target="_blank">昨天看了一个朋友的面试题，大家也来看看</a>（THE_ROCK）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4970257" target="_blank">这SQL语句我真的不会写?面试题目</a>（hzchl219）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4965875" target="_blank">棘手的（ＳＱＬ）面试题</a>（songyutou）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4965369" target="_blank">面试题！</a>（zyq_10_25）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4958497" target="_blank">我在面试时遇到的sql语句,请，！！！！</a>（polo_van）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4945552" target="_blank">面试问题，请帮忙解答！！</a>（songcan）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4656253" target="_blank">这个sql语句该怎么写？（面试题）</a>（csdn02）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4929413" target="_blank">这边还有40分.求面试题:关于存储过程和触发器的,并附答案呀!!!!!!!!!!!!!!</a>（fairan）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4666927" target="_blank">面试问题 大表、小表 ，内联查询，大表放在前面还是后面查询速度更快</a>（jietuan）</td>
										</tr>
										<tr>
												<td> </td>
										</tr>
										<tr>
												<td>
														<b>
																<a name="[Oracle]">[Oracle]</a>
														</b>
												</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4959736" target="_blank">DBA常见面试题征集答案，并希望达人补充，希望此贴让所有想做DBA的人有点方向。</a>（pegtop）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4936931" target="_blank">面试题</a>（zyq_10_25）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4923103" target="_blank">我今天面试的SQL题目,欢迎刚毕业的同学来试一试!!!</a>（kong361）</td>
										</tr>
										<tr>
												<td> </td>
										</tr>
										<tr>
												<td>
														<b>
																<a name="[Java]">[Java]</a>
														</b>
												</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=5000213" target="_blank">共享一些面试题</a>（wts173）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4938069" target="_blank">方正的面试题目</a>（jmh0525）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4972598" target="_blank">一个很妖的问题(sun公司的面试题）</a>（CCJHJ）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4886612" target="_blank">高分！面试的时候，考官这样问我，我要怎么回答！！ 谢谢！！定给高分！</a>（</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4931205" target="_blank">外企的一道面试题.还请高手多多指点指点(急)!谢了！！</a>（ayorange）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4996724" target="_blank">Java面试题</a>（x_hong）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4983340" target="_blank">一公司面试题，做一翻译字典，要把不同的字典放在不同的服务器，啊</a>（totti1110）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4989998" target="_blank">请教一道面试题?</a>（javaf1）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4978080" target="_blank">本人自己遇到的面试题（急！急！急！）</a>（caiheng520）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4957446" target="_blank">一道面试题：这么确定a是不是B类的一个实例。谢谢</a>（luofengjava）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4954922" target="_blank">一个Hibernate 的面试题, 现场分析问题</a>（this_is_alan）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4953000" target="_blank">面试题!!</a>（mousefog）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4823127" target="_blank">面试题目！谁能告诉我答案啊！</a>（yinlei920）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4934717" target="_blank">面试题</a>（Hmilyl）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4946795" target="_blank">感兴趣的话来看一下这道面试题</a>（chenfive）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4927959" target="_blank">高分求教!!!一道面试题(url链接传中文参数值乱码问题)</a>（tooker）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4933779" target="_blank">面试题60分!请</a>（zyq_10_25）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4930517" target="_blank">面试题求答案</a>（zhyhongyuan）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4734432" target="_blank">共享J2ME面试题目，欢迎大家积极参与</a>（Mailbomb）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4917078" target="_blank">今天的面试题</a>（Hmilyl）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4823053" target="_blank">一道java面试题（今天刚面试回来）</a>（cuiter）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4903782" target="_blank">面试关于JSP+oracl的问题</a>（coolcat_1981）</td>
										</tr>
										<tr>
												<td> </td>
										</tr>
										<tr>
												<td>
														<b>
																<a name="[.NET技术]">[.NET技术]</a>
														</b> </td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4701374" target="_blank">在网上看到的面试题大全,有兴趣的朋友可以来试试看</a>（greatbag）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4789569" target="_blank">dotNet高级软件工程师面试题</a>（flyinsky333）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4912254" target="_blank">.net面试题集</a>（liuxingjin）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4985303" target="_blank">闲来无事,做了一道面试题:100位数字相乘</a>（czhenq）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4844679" target="_blank">**大型软件公司.net面试题！一定的看！</a>（aspjsp）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4919442" target="_blank">我们公司面试基本完成，现公开部分面试题，感兴趣的来看看，同时也是给出标准答案供面试者参考。</a>（Ivony）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4960928" target="_blank">昨天面试微软，只有这一题不会做。</a>（amingo）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4907839" target="_blank">一道真正难倒亿人的智力题,这是微软的面试题</a>（66766960）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4708511" target="_blank">【MS的一道面试题】Session问题</a>（cxyppppp）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4973443" target="_blank">我们公司的一道面试题</a>（jobenc）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4981336" target="_blank">有点麻烦的面试题，请给个核心算法</a>（iacpdj）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4972468" target="_blank">一道.net面试题？？？</a>（never_give_up520）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4974039" target="_blank">一道面试题，大家解答！</a>（tigerlgf）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4970877" target="_blank">今天面试的两个问题，没能回答好，郁闷！</a>（zhanghaif）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4984785" target="_blank">面试题大家都来看看 急~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</a>（willyer）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4976261" target="_blank">一道面试题，怎么也没看懂，看看</a>（iacpdj）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4967868" target="_blank">同学去面试的两个面试题!</a>（longshaoye）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4949837" target="_blank">面试题</a>（karso）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4944931" target="_blank">不知道是垃圾面试题还是好的面试题？大家看看吧！</a>（rex1984）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4938357" target="_blank">面试遇到这种题，晕了！求各位施予援手!</a>（songcan）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4937121" target="_blank">一道面试题，没做出来！</a>（cloud_1981）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4929461" target="_blank">面试题目:如何在客户端新建一个项目到服务器端</a>（evila_love）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4899072" target="_blank">一道外企机试面试--------</a>（getbyling）</td>
										</tr>
										<tr>
												<td> </td>
										</tr>
										<tr>
												<td>
														<b>
																<a name="[其他]">[其他]</a>
														</b>
												</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4904071" target="_blank">网络安全方面的面试题</a>（vagrantisme）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4975036" target="_blank">软件测试/质量评估（QA）面试的题目，想想</a>（qiuzhizhe）</td>
										</tr>
										<tr>
												<td>[汇编]<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4981984" target="_blank">来者有分，面试题，贴出来一起讨论，超难！！！！！</a>（crtd024）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4982604" target="_blank">出了套面试题，大家看看，这让没经验值的人做合不合适</a>（wojiudaofen）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4929593" target="_blank">急问一道关于测试的面试题</a>（xjh_Love_paopao）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4880902" target="_blank">一道关于路由器的面试题,!!</a>（Gamehal）</td>
										</tr>
										<tr>
												<td>[Linux/Unix社区]<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4970921" target="_blank">今天面试的时候的问题没有能够回答出来的题，郁闷！各位帮忙看看</a></td>
										</tr>
										<tr>
												<td>[Linux/Unix社区]<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4991844" target="_blank">请教面试题一则</a>（ty263）</td>
										</tr>
										<tr>
												<td>[Windows]<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4894686" target="_blank">昨天面试，考官问我平时用户端的数据怎么做备份的，大家来谈谈！</a>（ballatong）</td>
										</tr>
										<tr>
												<td>[Windows]<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4939323" target="_blank">求面试题</a>（qiuyinggxnn）</td>
										</tr>
										<tr>
												<td>[ASP]<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4954944" target="_blank">下午去面试遇上了一个很有挑战的问题,有没高手路过?</a>（me121121）</td>
										</tr>
										<tr>
												<td>[VB]<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4949024" target="_blank">VB面试过后不过，问问大家这几题该怎么回答</a>（xiebird）</td>
										</tr>
										<tr>
												<td> </td>
										</tr>
										<tr>
												<td>
														<b>
																<a name="[微软系列]">[微软系列]</a>
														</b>
												</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4833630" target="_blank">[转贴]微软面试题系列（1）</a>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4833651" target="_blank">2</a>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4833685" target="_blank">3</a>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4833700" target="_blank">4</a>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4833709" target="_blank">5</a>（fire_dragon）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4907498" target="_blank">一道真正难倒亿人的智力题,这是微软的面试题</a>（66766960）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4860473" target="_blank">据说是一道微软月薪5w职位的面试题</a>（cjjfam）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4956006" target="_blank">据说是微软面试题，有答案了，但不知道为什么会是这样!</a>（DaChu）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4996157" target="_blank">微软经典面试题</a>（bastenf）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4960928" target="_blank">昨天面试微软，只有这一题不会做。</a>（amingo）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4907839" target="_blank">一道真正难倒亿人的智力题,这是微软的面试题</a>（66766960）</td>
										</tr>
										<tr>
												<td>
														<a href="http://community.csdn.net/Expert/TopicView1.asp?id=4708511" target="_blank">【MS的一道面试题】Session问题</a>（cxyppppp）</td>
										</tr>
								</tbody>
						</table>
				</font>
		</p>
		<div align="left">
				<table id="table3" align="center">
						<tbody>
								<tr>
										<td>
										</td>
								</tr>
						</tbody>
				</table>
		</div>

          <br/>
          <span style="color:red;">
            <a href="http://renyangok.javaeye.com/blog/45362#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 31 Dec 2006 16:09:00 +0800</pubDate>
        <link>http://renyangok.javaeye.com/blog/45362</link>
        <guid>http://renyangok.javaeye.com/blog/45362</guid>
      </item>
      <item>
        <title> Web服务器开发环境下的线程安全问题</title>
        <author>renyangok</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://renyangok.javaeye.com">renyangok</a>&nbsp;
          链接：<a href="http://renyangok.javaeye.com/blog/45363" style="color:red;">http://renyangok.javaeye.com/blog/45363</a>&nbsp;
          发表时间: 2006年12月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          
		<p>Servlet是在多线程环境下的。即可能有多个请求发给一个servelt实例，每个请求是一个线程。<br />struts下的action也类似，同样在多线程环境下。可以参考struts user guide: <a href="http://struts.apache.org/struts-action/userGuide/building_controller.html">http://struts.apache.org/struts-action/userGuide/building_controller.html</a> 中的Action Class Design Guidelines一节:  Write code for a multi-threaded environment - Our controller servlet creates only one instance of your Action class, and uses this one instance to service all requests. Thus, you need to write thread-safe Action classes. Follow the same guidelines you would use to write thread-safe Servlets.<br />译:为多线程环境编写代码。我们的controller servlet指挥创建你的Action 类的一个实例，用此实例来服务所有的请求。因此，你必须编写线程安全的Action类。遵循与写线程安全的servlet同样的方针。<br /> <br />1.什么是线程安全的代码<br />  在多线程环境下能正确执行的代码就是线程安全的。<br />  安全的意思是能正确执行，否则后果是程序执行错误，可能出现各种异常情况。</p>
		<p>2.如何编写线程安全的代码<br />  很多书籍里都详细讲解了如何这方面的问题，他们主要讲解的是如何同步线程对共享资源的使用的问题。主要是对synchronized关键字的各种用法，以及锁的概念。<br />  Java1.5中也提供了如读写锁这类的工具类。这些都需要较高的技巧，而且相对难于调试。<br /> <br />  但是，线程同步是不得以的方法,是比较复杂的,而且会带来性能的损失。等效的代码中，不需要同步 在编写容易度和性能上会更好些。<br />  我这里强调的是什么代码是始终为线程安全的、是不需要同步的。如下:<br />  1)常量始终是线程安全的，因为只存在读操作。<br />  2)对构造器的访问(new 操作)是线程安全的，因为每次都新建一个实例，不会访问共享的资源。<br />  3)最重要的是:局部变量是线程安全的。因为每执行一个方法，都会在独立的空间创建局部变量，它不是共享的资源。局部变量包括方法的参数变量。<br />    struts user guide里有：<br />    Only Use Local Variables - The most important principle that aids in thread-safe coding is to use only local variables, not instance variables , in your Action class.<br />    译:只使用用局部变量。--编写线程安全的代码最重要的原则就是，在Action类中只使用局部变量，不使用实例变量。</p>
		<p> <br />总结：<br />    在Java的Web服务器环境下开发，要注意线程安全的问题。最简单的实现方式就是在Servlet和Struts Action里不要使用类变量、实例变量，但可以使用类常量和实例常量。<br />如果有这些变量，可以将它们转换为方法的参数传入，以消除它们。<br />    注意一个容易混淆的地方：被Servlet或Action调用的类中(如值对象、领域模型类)中是否可以安全的使用实例变量？如果你在每次方法调用时<br />新建一个对象，再调用它们的方法，则不存在同步问题---因为它们不是多个线程共享的资源，只有共享的资源才需要同步---而Servlet和Action的实例对于多个线程是共享的。<br />换句话说，Servlet和Action的实例会被多个线程同时调用，而过了这一层,如果在你自己的代码中没有另外启动线程，且每次调用后续业务对象时都是先新建一个实例再调用，则都是线程安全的。</p>

          <br/>
          <span style="color:red;">
            <a href="http://renyangok.javaeye.com/blog/45363#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 31 Dec 2006 15:31:00 +0800</pubDate>
        <link>http://renyangok.javaeye.com/blog/45363</link>
        <guid>http://renyangok.javaeye.com/blog/45363</guid>
      </item>
      <item>
        <title>《JavaScript权威指南》读书笔记</title>
        <author>renyangok</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://renyangok.javaeye.com">renyangok</a>&nbsp;
          链接：<a href="http://renyangok.javaeye.com/blog/45364" style="color:red;">http://renyangok.javaeye.com/blog/45364</a>&nbsp;
          发表时间: 2006年12月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          
		<p>－－－－－－－－－－－－－－－－－－－－第一部分 javascript的核心－－－－－－－－－－－－－－－－－－－－<br />第二章 词法结构<br />1、javascript使用Unicode字符集<br />2、大小写敏感<br />3、JS会忽略程序中记号之间的空格、制表符、换行符，除非它们是字符串或正则表达式直接量的一部分<br />4、单行注释//，多行注释/*......*/,注释不能嵌套。</p>
		<p>第三章 数据类型和值<br />1、<br />五种基本类型：数字、文本字符串、布尔值、null（空）、undefined（未定义）。<br />三种引用类型：数组、函数、对象。对象分为：普通对象、专用对象（例如Date、Error、RegExp）</p>
		<p>第四章 变量<br />1、js的变量是无类型的<br />2、变量的声明：<br />var i;//声明<br />var i = 10; //声明＋初始化<br />var i = 0, j = 0, k =0;//声明多个变量<br />3、重复声明：不会出错，重复声明作为一条负值语句<br />4、遗漏声明：未声明就赋值的变量会被隐式声明为全局变量，即使此变量在函数体内。<br />5、变量的作用域：分为全局变量和局部变量，没有级块作用域（{}之间不是一个作用域）。<br />6、未定义的变量和未赋值的变量<br />未定义的变量指未声明（包括隐式声明）的变量，使用它会产生错误。未赋值的变量是声明了但没有赋值，会得到默认值undefined。<br />7、基本类型和引用类型：参考第二章1中内容，注意，字符串是基本类型，但它的传递确实引用传递。<br />8、无用存储单元的收集（GC）<br />9、全局变量是全局对象的变量，局部变量是调用对象的变量</p>
		<p>第五章 表达式和运算符<br />1、最简单的表达式是直接量（值是本身）或变量名（值是变量所存放或引用的值）。表达式是简单表达式通过运算符的合并。<br />2、由于js中所有数字都是浮点型的，所以除法的结果也是浮点型的，eg：5/2=2.5;*/0=正无穷或负无穷;0/0=NaN<br />3、相等运算符（==）和等同运算符（===），（!==和!===道理一样）</p>
		<p>第六章 语句<br />书121页6.20JavaScript语句小节。</p>
		<p>第七章 函数<br />1、定义方法<br />function f(x, y) { return x * y; }<br />var f = new Function("x", "y", "return x*y");//前n-1个字符串表示参数，最后一个字符串是函数主体<br />var f = function(x, y) { return x * y };//函数直接量，没有函数名<br />2、函数内部有一个Arguments的对象arguments，它包含实际传入此函数的参数信息。<br />function f(x,y,z){<br /> var actual = arguments.length;//实际参数个数<br /> var expected = arguments.callee.length;//方法名.length表示要求参数个数<br /> return actual == expected;<br />}<br />alert(f(1,2,3))</p>
		<p>第八章 对象<br />1、对象的创建<br />var o = new Object();<br />var circle = { x:0, y:0, radius:2 };//对象直接量<br />2、属性的枚举（只列出用户定义的属性和方法（包括原型对象的属性和方法），不包含预定义的属性和方法），例子：<br />var a = new Object();<br />a.num = 10;<br />a.fun = function(){return 5;};<br />function display(obj){<br /> var names = "";<br /> for(var name in obj)<br />  names += name + "\n";<br /> alert(names);<br />}<br />display(a);<br />3、未定义的属性是undefined，与数组一样。<br />4、原型对象和继承：用构造函数把对象的属性和方法初始化效率很低，因为每个此类对象都存一份这些的副本，更有效的方法是通过原型对象的方法声明方法和属性使对象共享这些。寻找方法或属性的方法是现在本对象找，找不到再去原型对象里找，直到Object。<br />    javascript是以原型对象为基础的继承机制，而不是像java一样以类为基础的继承机制。<br />function Father(){}<br />function Son(){}</p>
		<p>Father.prototype.name = "max";<br />Son.prototype = Father;//只能保证取道Father的变量和方法，无法取到Father.prototype的<br />Son.prototype = new Father();//可以取到Father.prototype的</p>
		<p>document.write(Father.name);//不是max，因为不创建Father的对象的话，就只在Father里找，不会到他的prototype里找。<br />var father = new Father();<br />document.write(father.name);//是max<br />5、关联数组：<br />object.property<br />object.["property"]<br />以上两种方式访问对象，后一种被称为关联数组（associative array）</p>
		<p>第九章 数组<br />1、创建数组：<br />var a = new Array();<br />var a = new Array(5, 4, 3, "test");//数组为[5,4,3,"test"]<br />var a = new Array(10);//10表示此数组有10个元素，每个都是undefined（未赋值的数组元素默认为undefined）。<br />数组直接量：<br />var a = [2, "test",[1,2]]//多维数组<br />2、数组是稀疏的（不连续）<br />a[0] = 1;<br />a[1000] = "test";<br />a.length = <br />3、数组的长度总是比最大元素的下标多一，<br />var a = new Array();<br />a[1] = 2;<br />a[1000] = 3;<br />a.length = 1001;未定义的都为undefined</p>
		<p>第十章 使用正则表达式的模式匹配<br />1、javascript1.2实现了Perl4正则表达式，javascript1.5实现了Perl1.5正则表达式的大型子集。<br />2、正则表达式可以实现模式匹配、文本检索、替换。<br />3、直接量字符P175，字符类P176，重复字符P177，选择分组引用字符P180，锚字符P181，标志P183，不支持的P183</p>
		<p>第十一章 JavaScript的更多主题<br />1、自动数据类型转换P190。<br />2、数字到字符串转换：<br />var s = String(number);<br />var s = number + "";<br />3、Function()构造函数和函数直接量的区别：<br />首先，构造函数Function（）允许在运行时动态的创建和编译js代码，但函数直接量却是程序结构的一个静态部分，像function语句一样。<br />其次，作为上面的必然结构，每次调用Function()就会解析函数体并创建一个新的函数对象，如在循环中效率很低，而函数直接量不用每次重新编译，也不用创建对象。<br />再次，Function()创建的函数不使用词法作用域，而总是被当作顶级函数来编译。<br />eg：<br />var y = "globle";<br />function func(){<br /> var y = "local";<br /> return new Function("return y");<br />}<br />alert(func());//输出“globle”</p>
		<p>－－－－－－－－－－第二部分 客户端的javascript－－－－－－－－－</p>

          <br/>
          <span style="color:red;">
            <a href="http://renyangok.javaeye.com/blog/45364#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 31 Dec 2006 15:29:00 +0800</pubDate>
        <link>http://renyangok.javaeye.com/blog/45364</link>
        <guid>http://renyangok.javaeye.com/blog/45364</guid>
      </item>
      <item>
        <title>URI , URL , URN 连续与区别</title>
        <author>renyangok</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://renyangok.javaeye.com">renyangok</a>&nbsp;
          链接：<a href="http://renyangok.javaeye.com/blog/45365" style="color:red;">http://renyangok.javaeye.com/blog/45365</a>&nbsp;
          发表时间: 2006年12月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          
		<p>URI(Uniform Resoure Identifier:统一资源标识符),URL(Uniform Resoure Location:统一资源定位器),URN(Uniform Resource Name统一资源</p>
		<p>名),URC(Uniform Resource Citation统一资源引用符)</p>
		<p>URI、URL和URN是识别、定位和命名互联网上的资源的标准途径; URL,URN是URI的子集.</p>
		<p>     URI不能定位或读取/写入资源。这是统一的资源定位器（URL）的任务。URL是一种URI，但是它的大纲组件是已知的网络协议（简称协议</p>
		<p>），并且它把URI组件与某种协议处理程序（一种资源定位器和根据协议建立的约束规则与资源通讯的读/写机制）。</p>
		<p>　　URI一般不能为资源提供持久不便的名称。这是统一的资源命名（URN）的任务。URN也是一种URI，但是全球唯一的、持久不便的，即使资</p>
		<p>源不在存在或不再使用。 </p>
		<p>      web上地址的基本形式是URI,它代表统一资源标识符。有两种形式：<br />      URL：目前URI的最普遍形式就是无处不在的URL或统一资源定位器。<br />      URN：URL的一种更新形式，统一资源名称(URN, Uniform Resource Name)不依赖于位置，并且有可能减少失效连接的个数。但是其流行</p>
		<p>还需假以时日，因为它需要更精密软件的支持。</p>
		<p>体系中的URI、URL和URN是彼此关联的。URI的范畴位于体系的顶层，URL和URN的范畴位于体系的底层。这种排列显示URL和URN都是URI的子范畴</p>
		<p>，　URI表示的是统一的资源标识，它是以某种统一的（标准化的）方式标识资源的简单字符串。典型情况下，这种字符串以scheme（命名URI</p>
		<p>的名字空间的标识符--一组相关的名称）开头，语法如下：</p>
		<p>[scheme:] scheme-specific-part </p>
		<p>URI以scheme和冒号开头。Scheme用大写/小写字母开头，后面为空或者跟着更多的大写/小写字母、数字、加号、减号和点号。冒号把scheme与</p>
		<p>scheme-specific-part分开了，并且scheme-specific-part的语法和语义（意思）由URI的名字空间决定。 　 </p>
		<p>其中一个例子是<a href="http://www.cnn.com">http://www.cnn.com</a>，其中http是scheme，//www.cnn.com是 scheme-specific-part，并且它的scheme与scheme-specific-</p>
		<p>part被冒号分开了。 </p>
		<p>我们可以把URI按照绝对的或相对的分类。绝对的URI指以scheme（后面跟着冒号）开头的URI。前面提到的<a href="http://www.cnn.com">http://www.cnn.com</a>就是绝对的URI</p>
		<p>的一个例子，其它的例子还有<a href="mailto:jeff@javajeff.com">mailto:jeff@javajeff.com</a>、<a href="news:comp.lang.java.help">news:comp.lang.java.help</a>和xyz://whatever。你可以把绝对的URI看作是以某种方</p>
		<p>式引用某种资源，而这种方式对标识符出现的环境没有依赖。 　　 </p>
		<p>如果使用文件系统作类比，绝对的URI类似于从根目录开始的某个文件的路径。与绝对的URI不同的，相对的URI不是以scheme（后面跟着冒号）</p>
		<p>开始的URI。 </p>
		<p>它的一个例子是articles/articles.html。你可以把相对的URI看作是以某种方式引用某种资源，而这种方式依赖于标识符出现的环境。如果用</p>
		<p>文件系统作类比，相对的URI类似于从当前目录开始的文件路径。</p>
		<p>URI：</p>
		<p>Web上可用的每种资源 - HTML文档、图像、视频片段、程序等 - 由一个通过通用资源标志符（Universal Resource Identifier, 简称"URI"）</p>
		<p>进行定位。 <br />URI一般由三部分组成：<br />1. 访问资源的命名机制。 <br />2. 存放资源的主机名。 <br />3. 资源自身的名称，由路径表示。 <br />注：大多数人可能熟悉"URL"，而不是URI。URL是URI命名机制的一个子集。</p>
		<p>URL：</p>
		<p>URL是Uniform Resource Location的缩写，译为"统一资源定位符"。通俗地说，URL是Internet上用来描述信息资源的字符串，主要用在各种</p>
		<p>WWW客户程序和服务器程序上，特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源，包括文件、服务器的地址和目录等</p>
		<p>。 <br />URL的格式<br />URL的格式由下列三部分组成： <br />第一部分是协议（或称为服务方式）； <br />第二部分是存有该资源的主机IP地址（有时也包括端口号）； <br />第三部分是主机资源的具体地址。，如目录和文件名等。 <br />第一部分和第二部分之间用"：//"符号隔开，第二部分和第三部分用"/"符号隔开。第一部分和第二部分是不可缺少的，第三部分有时可以省略</p>
		<p>。<br />URL的缺点：<br />当信息资源的存放地点发生变化时，必须对URL作相应的改变。因此人们正在研究新的信息资源表示方法，例如：URI(Universal Resource </p>
		<p>Identifier)即"通用资源标识"（参见RFC 1630）、URN（Uniform Resource Name）即"统一资源名"和URC（Uniform Resource Citation）即"</p>
		<p>统一资源引用符"等。</p>
		<p> </p>

          <br/>
          <span style="color:red;">
            <a href="http://renyangok.javaeye.com/blog/45365#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 31 Dec 2006 15:27:00 +0800</pubDate>
        <link>http://renyangok.javaeye.com/blog/45365</link>
        <guid>http://renyangok.javaeye.com/blog/45365</guid>
      </item>
      <item>
        <title>Java中文问题及最优解决方案（本地化）</title>
        <author>renyangok</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://renyangok.javaeye.com">renyangok</a>&nbsp;
          链接：<a href="http://renyangok.javaeye.com/blog/45366" style="color:red;">http://renyangok.javaeye.com/blog/45366</a>&nbsp;
          发表时间: 2006年12月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
           
<div>  <!--StartFragment --><span be:lasthandle="cns!AADDE4734A6787F!107" be:sortkey="" be:firsthandle="cns!AADDE4734A6787F!135" id="BlogViewId" be:sortmode="Normal">　Abstract：本文深入分析了Java程序设计中Java编译器对java源文件和JVM对class类文件的编码/解码过程，通过此过程的解析透视出了Java编程中中文问题产生的根本原因，最后给出了建议的最优化的解决Java中文问题的方法。  
<p>　　<strong>1、中文问题的来源 </strong></p><p>    计算机最初的操作系统支持的编码是单字节的字符编码，于是，在计算机中一切处理程序最初都是以单字节编码的英文为准进行处理。随着计算机的发展，为了适应世界其它民族的语言（当然包括我们的汉字），人们提出了UNICODE编码，它采用双字节编码，兼容英文字符和其它民族的双字节字符编码，所以，目前，大多数国际***的软件内部均采用UNICODE编码，在软件运行时，它获得本地支持系统（多数时间是操作系统）默认支持的编码格式，然后再将软件内部的 UNICODE转化为本地系统默认支持的格式显示出来。Java的JDK和JVM即是如此，我这里说的JDK是指国际版的JDK，我们大多数程序员使用的是国际化的JDK版本，以下所有的JDK均指国际化的JDK版本。我们的汉字是双字节编码语言，为了能让计算机处理中文，我们自己制定的gb2312、 GBK、GBK2K等标准以适应计算机处理的需求。所以，大部分的操作系统为了适应我们处理中文的需求，均定制有中文操作系统，它们采用的是GBK, GB2312编码格式以正确显示我们的汉字。如：中文Win2K默认采用的是GBK编码显示，在中文WIN2k中保存文件时默认采用的保存文件的编码格式也是GBK的，即，所有在中文WIN2K中保存的文件它的内部编码默认均采用GBK编码，注意：GBK是在GB2312基础上扩充来的。</p><p>    由于Java语言内部采用UNICODE编码，所以在JAVA程序运行时，就存在着一个从UNICODE编码和对应的操作系统及浏览器支持的编码格式转换输入、输出的问题，这个转换过程有着一系列的步骤，如果其中任何一步出错，则显示出来的汉字就会出是乱码，这就是我们常见的JAVA中文问题。</p><p>    同时，Java是一个跨平台的编程语言，也即我们编写的程序不仅能在中文windows上运行，也能在中文Linux等系统上运行，同时也要求能在英文等系统上运行（我们经常看到有人把在中文win2k上编写的JAVA程序，移植到英文Linux上运行）。这种移植操作也会带来中文问题。</p><p>    还有，有人使用英文的操作系统和英文的IE等浏览器，来运行带中文字符的程序和浏览中文网页，它们本身就不支持中文，也会带来中文问题。</p><p>    几乎所有的浏览器默认在传递参数时都是以UTF-8编码格式来传递，而不是按中文编码传递，所以，传递中文参数时也会有问题，从而带来乱码现象。</p><p>    总之，以上几个方面是JAVA中的中文问题的主要来源，我们把以上原因造成的程序不能正确运行而产生的问题称作：JAVA中文问题。</p><p>　<strong>　2、JAVA编码转换的详细过程 </strong></p><p>    我们常见的JAVA程序包括以下类别：<br />     *直接在console上运行的类(包括可视化界面的类)<br />     *JSP代码类（注：JSP是Servlets类的变型）<br />     *Servelets类<br />     *EJB类<br />     *其它不可以直接运行的支持类</p><p>    这些类文件中，都有可能含有中文字符串，并且我们常用前三类JAVA程序和用户直接交互，用于输出和输入字符，如：我们在JSP和Servlet中得到客户端送来的字符，这些字符也包括中文字符。无论这些JAVA类的作用如何，这些JAVA程序的生命周期都是这样的：</p><p>    *编程人员在一定的操作系统上选择一个合适的编辑软件来实现源程序代码并以.java扩展名保存在操作系统中，例如我们在中文win2k中用记事本编辑一个java源程序；<br />     *编程人员用JDK中的javac.exe来编译这些源代码，形成.class类(JSP文件是由容器调用JDK来编译的)；<br />     *直接运行这些类或将这些类布署到WEB容器中去运行，并输出结果。<br />    那么，在这些过程中，JDK和JVM是如何将这些文件如何编码和解码并运行的呢？</p><p>这里，我们以中文win2k操作系统为例说明JAVA类是如何来编码和被解码的。 </p><p></p><p>    <strong>第一步，</strong>我们在中文win2k中用编辑软件如记事本编写一个Java源程序文件(包括以上五类JAVA 程序)，程序文件在保存时默认采用了操作系统默认支持GBK编码格式(操作系统默认支持的格式为file.encoding格式)形成了一个.java文件，也即，java程序在被编译前，我们的JAVA源程序文件是采用操作系统默认支持的file.encoding编码格式保存的，java源程序中含有中文信息字符和英文程序代码；要查看系统的file.encoding参数，可以用以下代码：<br />　　public class ShowSystemDefaultEncoding {<br />　　public static void main(String[] args) {<br />　　String encoding = System.getProperty("file.encoding");<br />　　System.out.println(encoding);<br />　　}}</p><p>   <strong> 第二步，</strong>我们用JDK的javac.exe文件编译我们的Java源程序，由于JDK是国际版的，在编译的时候，如果我们没有用-encoding参数指定我们的 JAVA源程序的编码格式，则javac.exe首先获得我们操作系统默认采用的编码格式，也即在编译java程序时，若我们不指定源程序文件的编码格式，JDK首先获得操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式，如WIN2k，它的值为GBK)，然后JDK就把我们的java源程序从file.encoding编码格式转化为JAVA内部默认的 UNICODE格式放入内存中。然后，javac把转换后的unicode格式的文件进行编译成.class类文件，此时.class文件是 UNICODE编码的，它暂放在内存中，紧接着，JDK将此以UNICODE编码的编译后的class文件保存到我们的操作系统中形成我们见到的. class文件。对我们来说，我们最终获得的.class文件是内容以UNICODE编码格式保存的类文件，它内部包含我们源程序中的中文字符串，只不过此时它己经由file.encoding格式转化为UNICODE格式了。</p><p>    这一步中，对于JSP源程序文件是不同的，对于JSP，这个过程是这样的：即WEB容器调用JSP编译器，JSP编译器先查看JSP文件中是否设置有文件编码格式，如果JSP文件中没有设置JSP文件的编码格式，则JSP编译器调用JDK先把JSP文件用JVM默认的字符编码格式(也即WEB容器所在的操作系统的默认的file.encoding)转化为临时的Servlet类，然后再把它编译成UNICODE格式的class类，并保存在临时文件夹中。如：在中文win2k上，WEB容器就把JSP文件从GBK编码格式转化为UNICODE格式，然后编译成临时保存的Servlet类，以响应用户的请求。</p><p>    <strong>第三步，运行第二步编译出来的类，分为三种情况：</strong></p><p>    A、 直接在console上运行的类<br />    B、 EJB类和不可以直接运行的支持类(如JavaBean类)<br />    C、 JSP代码和Servlet类<br />    D、 JAVA程序和数据库之间<br />    下面我们分这四种情况来看。<br />   <strong> A、直接在console上运行的类</strong></p><p>    这种情况，运行该类首先需要JVM支持，即操作系统中必须安装有JRE。运行过程是这样的：首先java启动JVM，此时JVM读出操作系统中保存的 class文件并把内容读入内存中，此时内存中为UNICODE格式的class类，然后JVM运行它，如果此时此类需要接收用户输入，则类会默认用 file.encoding编码格式对用户输入的串进行编码并转化为unicode保存入内存（用户可以设置输入流的编码格式）。程序运行后，产生的字符串（UNICODE编码的）再回交给JVM，最后JRE把此字符串再转化为file.encoding格式(用户可以设置输出流的编码格式)传递给操作系统显示接口并输出到界面上。</p><p>    对于这种直接在console上运行的类，它的转化过程可用图1更加明确的表示出来：</p><p>图1</p><p align="center"><img src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0404/pic/0430java_1.gif" style="CURSOR: pointer" /></p><p align="left">以上每一步的转化都需要正确的编码格式转化，才能最终不出现乱码现象。<br /><br />    <strong>B、EJB类和不可以直接运行的支持类(如JavaBean类)<br /><br /></strong>    由于EJB类和不可以直接运行的支持类，它们一般不与用户直接交互输入和输出，它们常常与其它的类进行交互输入和输出，所以它们在第二步被编译后，就形成了内容是UNICODE编码的类保存在操作系统中了，以后只要它与其它的类之间的交互在参数传递过程中没有丢失，则它就会正确的运行。<br />这种EJB类和不可以直接运行的支持类, 它的转化过程可用图2更加明确的表示出来： </p><p></p><p>图2</p><p align="center"><img src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0404/pic/0430java_2.gif" style="CURSOR: pointer" /></p><p><br />   <strong> C、JSP代码和Servlet类</strong></p><p>    经过第二步后，JSP文件也被转化为Servlets类文件，只不过它不像标准的Servlets一校存在于classes目录中，它存在于WEB容器的临时目录中，故这一步中我们也把它做为Servlets来看。</p><p>    对于Servlets，客户端请求它时，WEB容器调用它的JVM来运行Servlet，首先，JVM把Servlet的class类从系统中读出并装入内存中，内存中是以UNICODE编码的Servlet类的代码，然后JVM在内存中运行该Servlet类，如果Servlet在运行的过程中，需要接受从客户端传来的字符如：表单输入的值和URL中传入的值，此时如果程序中没有设定接受参数时采用的编码格式，则WEB容器会默认采用ISO-8859- 1编码格式来接受传入的值并在JVM中转化为UNICODE格式的保存在WEB容器的内存中。Servlet运行后生成输出，输出的字符串是 UNICODE格式的，紧接着，容器将Servlet运行产生的UNICODE格式的串（如html语法，用户输出的串等）直接发送到客户端浏览器上并输出给用户，如果此时指定了发送时输出的编码格式，则按指定的编码格式输出到浏览器上，如果没有指定，则默认按ISO-8859-1编码发送到客户的浏览器上。这种JSP代码和Servlet类，它的转化过程可用图3更加明确地表示出来：</p><p>图3</p><p align="center"><img src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0404/pic/0430java_3.gif" style="CURSOR: pointer" /></p><p align="left"><strong>D、Java程序和数据库之间</strong></p><p></p><p>    对于几乎所有数据库的JDBC驱动程序，默认的在JAVA程序和数据库之间传递数据都是以ISO-8859-1为默认编码格式的，所以，我们的程序在向数据库内存储包含中文的数据时，JDBC首先是把程序内部的UNICODE编码格式的数据转化为ISO-8859-1的格式，然后传递到数据库中，在数据库保存数据时，它默认即以ISO-8859-1保存，所以，这是为什么我们常常在数据库中读出的中文数据是乱码。<br />    对于JAVA程序和数据库之间的数据传递，我们可以用图4清晰地表示出来</p><p>图4</p><p align="center"><img src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0404/pic/0430java_4.gif" style="CURSOR: pointer" /></p><p><br /><strong>    3、分析常见的JAVA中文问题几个必须清楚的原则<br /></strong><br />    首先，经过上面的详细分析，我们可以清晰地看到，任何JAVA程序的生命期中，其编码转换的关键过程是在于：最初编译成class文件的转码和最终向用户输出的转码过程。<br />    其次，我们必须了解JAVA在编译时支持的、常用的编码格式有以下几种：<br />    *ISO-8859-1，8-bit, 同8859_1,ISO-8859-1,ISO_8859_1等编码<br />    *Cp1252，美国英语编码，同ANSI标准编码<br />    *UTF-8，同unicode编码<br />    *GB2312，同gb2312-80,gb2312-1980等编码<br />    *GBK , 同MS936，它是gb2312的扩充<br />    及其它的编码，如韩文、日文、繁体中文等。同时，我们要注意这些编码间的兼容关体系如下：<br />    unicode和UTF-8编码是一一对应的关系。GB2312可以认为是GBK的子集，即GBK编码是在gb2312上扩展来的。同时，GBK编码包含了20902个汉字，编码范围为：0x8140-0xfefe，所有的字符可以一一对应到UNICODE2.0中来。</p><p>    再次，对于放在操作系统中的.java源程序文件，在编译时，我们可以指定它内容的编码格式，具体来说用-encoding来指定。注意：如果源程序中含有中文字符，而你用-encoding指定为其它的编码字符，显然是要出错的。用-encoding指定源文件的编码方式为GBK或gb2312，无论我们在什么系统上编译含有中文字符的JAVA源程序都不会有问题，它都会正确地将中文转化为UNICODE存储在class文件中。<br />    <br />    然后，我们必须清楚，几乎所有的WEB容器在其内部默认的字符编码格式都是以ISO-8859-1为默认值的，同时，几乎所有的浏览器在传递参数时都是默认以UTF-8的方式来传递参数的。所以，虽然我们的Java源文件在出入口的地方指定了正确的编码方式，但其在容器内部运行时还是以ISO-8859- 1来处理的。<br /></p></span><br /><!--StartFragment --> <span be:lasthandle="cns!AADDE4734A6787F!107" be:sortkey="" be:firsthandle="cns!AADDE4734A6787F!135" id="BlogViewId" be:sortmode="Normal"><strong>4、中文问题的分类及其建议最优解决办法</strong><p>    了解以上JAVA处理文件的原理之后，我们就可以提出了一套建议最优的解决汉字问题的办法。<br />    我们的目标是：我们在中文系统中编辑的含有中文字符串或进行中文处理的JAVA源程序经编译后可以移值到任何其它的<a href="http://www.pconline.com.cn/pcedu/soft/st/"><u><font color="#0000ff">操作系统</font></u></a>中正确运行，或拿到其它操作系统中编译后能正确运行，能正确地传递中文和英文参数，能正确地和<a href="http://www.pconline.com.cn/pcedu/empolder/db/"><u><font color="#0000ff">数据库</font></u></a>交流中英文字符串。<br />    我们的具体思路是：在JAVA程序转码的入口和出口及JAVA程序同用户有输入输出转换的地方限制编码方法使之正确即可。</p><p>    <strong>具体解决办法如下：</strong></p><p>  <strong>  1、 针对直接在console上运行的类</strong><br />    对于这种情况，我们建议在程序编写时，如果需要从用户端接收用户的可能含有中文的输入或含有中文的输出，程序中应该采用字符流来处理输入和输出，具体来说，应用以下面向字符型节点流类型：<br />    对文件：FileReader，FileWrieter <br />        其字节型节点流类型为：FileInputStream，FileOutputStream<br />    对内存（数组）：CharArrayReader，CharArrayWriter<br />        其字节型节点流类型为：ByteArrayInputStream，ByteArrayOutputStream<br />    对内存（字符串）：StringReader，StringWriter<br />    对管道：PipedReader，PipedWriter<br />        其字节型节点流类型为：PipedInputStream，PipedOutputStream<br />    同时，应该用以下面向字符型处理流来处理输入和输出：<br />    BufferedWriter，BufferedReader<br />        其字节型的处理流为：BufferedInputeStream，BufferedOutputStream<br />    InputStreamReader，OutputStreamWriter<br />    其字节型的处理流为：DataInputStream，DataOutputStream<br />    其中InputStreamReader和InputStreamWriter用于将字节流按照指定的字符编码集转换到字符流，如：<br />    InputStreamReader in = new InputStreamReader(System.in，"GB2312")；<br />    OutputStreamWriter out = new OutputStreamWriter (System.out，"GB2312")；<br />    例如：采用如下的示例JAVA编码就达到了要求：</p><p>    //Read.java<br />    import java.io.*;<br />    public class Read {<br />    public static void main(String[] args) throws IOException {<br />    String str = "\n中文测试，这是内部硬编码的串"+"\ntest english character";<br />    String strin= "";<br />    BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in,"gb2312")); //设置输入接口按中文编码<br />    BufferedWriter stdout = new BufferedWriter(new OutputStreamWriter(System.out,"gb2312")); //设置输出接口按中文编码<br />    stdout.write("请输入:");<br />    stdout.flush();<br />    strin = stdin.readLine();<br />    stdout.write("这是从用户输入的串："+strin);<br />    stdout.write(str);<br />    stdout.flush();<br />    }}<br />    同时，在编译程序时，我们用以下方式来进行：<br />    javac -encoding gb2312 Read.java<br />    其运行结果如图5所示：<br /></p><p align="center"><img src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0405/pic/040508_java1.gif" style="CURSOR: pointer" /></p><p>    图5<br /><strong>2、 针对EJB类和不可以直接运行的支持类(如JavaBean类)</strong></p><p>    由于这种类它们本身被其它的类调用，不直接与用户交互，故对这种类来说，我们的建议的处理方式是内部程序中应该采用字符流来处理程序内部的中文字符串（具体如上面一节中一样），同时，在编译类时用-encoding gb2312参数指示源文件是中文格式编码的即可。</p><p><br /><strong>    3、 针对Servlet类</strong></p><p>    针对Servlet，我们建议用以下方法：（我建议将.java文件设置为UTF8编码的。当然如果是用Eclipse的话，只要设置下就是了。对于数据库，我以为编码最好设置为UTF8,便于国际化 。尽可能的使用UTF8码，  千里草）</p><p>    在编译Servlet类的源程序时，用-encoding指定编码为GBK或GB2312，且在向用户输出时的编码部分用response对象的 setContentType("text/html;charset=GBK");或gb2312来设置输出编码格式，同样在接收用户输入时，我们用 request.setCharacterEncoding("GB2312")；这样无论我们的servlet类移植到什么操作系统中，只有客户端的浏览器支持中文显示，就可以正确显示。如下是一个正确的示例：</p><p>    //HelloWorld.java<br />    package hello;<br />    import java.io.*;<br />    import javax.servlet.*;<br />    import javax.servlet.http.*;<br />    public class HelloWorld extends HttpServlet<br />    {<br />    public void init() throws ServletException { }<br />    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException<br />    {<br />    request.setCharacterEncoding("GB2312"); //设置输入编码格式<br />    response.setContentType("text/html;charset=GB2312"); //设置输出编码格式<br />    PrintWriter out = response.getWriter(); //建议使用PrintWriter输出<br />    out.println("&lt;hr&gt;");<br />    out.println("Hello World! This is created by Servlet!测试中文!");<br />    out.println("&lt;hr&gt;");<br />    }<br />    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException<br />    {<br />    request.setCharacterEncoding("GB2312"); //设置输入编码格式<br />    response.setContentType("text/html;charset=GB2312"); //设置输出编码格式<br />    String name = request.getParameter("name");<br />    String id = request.getParameter("id");<br />    if(name==null) name="";<br />    if(id==null) id="";<br />    PrintWriter out = response.getWriter(); //建议使用PrintWriter输出<br />    out.println("&lt;hr&gt;");<br />    out.println("你传入的中文字串是：" + name);<br />    out.println("&lt;hr&gt;你输入的id是：" + id);<br />    out.println("&lt;hr&gt;");<br />    }<br />    public void destroy() { }<br />    }<br />        请用javac -encoding gb2312 HelloWorld.java来编译此程序。<br />        测试此Servlet的程序如下所示：<br />    &lt;%@page contentType="text/html; charset=gb2312"%&gt;<br />    &lt;%request.setCharacterEncoding("GB2312");%&gt;<br />    &lt;html&gt;&lt;head&gt;&lt;title&gt;&lt;/title&gt;<br />    &lt;Script language="JavaScript"&gt;<br />    function Submit() {<br />    //通过URL传递中文字符串值给Servlet<br />    document.base.action = "./HelloWorld?name=中文";<br />    document.base.method = "POST";<br />    document.base.submit();<br />    }<br />    &lt;/Script&gt;<br />    &lt;/head&gt;</p><p>&lt;body bgcolor="#FFFFFF" text="#000000" topmargin="5"&gt;<br />    &lt;form name="base" method = "POST" target="_self"&gt;<br />    &lt;input name="id" type="text" value="" size="30"&gt;<br />    &lt;a href = "JavaScript:Submit()"&gt;传给Servlet&lt;/a&gt;<br />    &lt;/form&gt;&lt;/body&gt;&lt;/html&gt;<br />    其运行结果如图6所示：<br /></p><p></p><p align="center"><img src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0405/pic/040508_java2.gif" style="CURSOR: pointer" /></p><p>    图6<br /> <strong>   4、 JAVA程序和数据库之间</strong></p><p>    为避免JAVA程序和数据库之间数据传递出现乱码现象，我们建议采用以下最优方法来处理：<br />    1、 对于JAVA程序的处理方法按我们指定的方法处理。<br />    2、 把数据库默认支持的编码格式改为GBK或GB2312的。</p><p>    如：在mysql中，我们可以在配置文件my.ini中加入以下语句实现：<br />    在[mysqld]区增加：<br />    default-character-set=gbk<br />    并增加：<br />    [client]<br />    default-character-set=gbk<br />    在SQL Server2K中，我们可以将数据库默认的语言设置为Simplified Chinese来达到目的。</p><p><strong>    5、 针对JSP代码</strong></p><p>    由于JSP是在运行时，由WEB容器进行动态编译的，如果我们没有指定JSP源文件的编码格式，则JSP编译器会获得服务器操作系统的 file.encoding值来对JSP文件编译的，它在移植时最容易出问题，如在中文win2k中可以很好运行的jsp文件拿到英文linux中就不行，尽管客户端都是一样的，那是因为容器在编译JSP文件时获取的操作系统的编码不同造成的（在中文wink中的file.encoding和在英文 Linux中file.encoding是不同的，且英文Linux的file.encoding对中文不支持，所以编译出来的JSP类就会有问题）。<a href="http://www.pconline.com.cn/pcedu/soft/lan/jywgl/"><u><font color="#0000ff">网络</font></u></a>上讨论的大多数是此类问题，多是因为JSP文件移植平台时不能正确显示的问题，对于这类问题，我们了解了JAVA中程序编码转换的原理，解决起来就容易多了。我们建议的解决办法如下：</p><p>    1、我们要保证JSP向客户端输出时是采用中文编码方式输出的，即无论如何我们首先在我们的JSP源代编中加入以下一行：</p><p>    &lt;<a href="mailto:%@page"><u><font color="#0000ff">%@page</font></u></a> contentType="text/html; charset=gb2312"%&gt;<br />    2、为了让JSP能正确获得传入的参数，我们在JSP源文件头加入下面一句：<br />    &lt;%request.setCharacterEncoding("GB2312");%&gt;<br />    3、为了让JSP编译器能正确地解码我们的含有中文字符的JSP文件，我们需要在JSP源文件中指定我们的JSP源文件的编码格式，具体来说，我们在JSP源文件头上加入下面的一句即可：<br />    &lt;<a href="mailto:%@page"><u><font color="#0000ff">%@page</font></u></a> pageEncoding="GB2312"%&gt;或&lt;<a href="mailto:%@page"><u><font color="#0000ff">%@page</font></u></a> pageEncoding="GBK"%&gt;<br />    这是JSP规范2.0新增加的指令。<br />    我们建议使用此方法来解JSP文件中的中文问题，下面的代码是一个正确做法的JSP文件的测试程序：</p><p>//testchinese.jsp<br />    &lt;%@page pageEncoding="GB2312"%&gt;<br />    &lt;%@page contentType="text/html; charset=gb2312"%&gt;<br />    &lt;%request.setCharacterEncoding("GB2312");%&gt;<br />    &lt;%<br />    String action = request.getParameter("ACTION");<br />    String name = "";<br />    String str = "";<br />    if(action!=null &amp;&amp; action.equals("SENT"))<br />    {<br />    name = request.getParameter("name");<br />    str = request.getParameter("str");<br />    }<br />    %&gt;<br />    &lt;html&gt;<br />    &lt;head&gt;<br />    &lt;title&gt;&lt;/title&gt;<br />    &lt;Script language="JavaScript"&gt;<br />    function Submit()<br />    {<br />    document.base.action = "?ACTION=SENT&amp;str=传入的中文";<br />    document.base.method = "POST";<br />    document.base.submit();<br />    }<br />    &lt;/Script&gt;<br />    &lt;/head&gt;<br />    &lt;body bgcolor="#FFFFFF" text="#000000" topmargin="5"&gt;<br />    &lt;form name="base" method = "POST" target="_self"&gt;<br />    &lt;input type="text" name="name" value="" size="30"&gt;<br />    &lt;a href = "JavaScript:Submit()"&gt;提交&lt;/a&gt;<br />    &lt;/form&gt;<br />    &lt;%<br />    if(action!=null &amp;&amp; action.equals("SENT"))<br />    {<br />    out.println("&lt;br&gt;你输入的字符为："+name);<br />    out.println("&lt;br&gt;你通过URL传入的字符为："+str);<br />    }<br />    %&gt;<br />    &lt;/body&gt;<br />    &lt;/html&gt;<br />    如图7是此程序运行的结果示意图：<br /></p><p></p><p align="center"><img src="http://www.pconline.com.cn/pcedu/empolder/gj/java/0405/pic/040508_java3.gif" border="0" height="347" hspace="0" alt="" style="WIDTH: 500px; CURSOR: pointer" width="500" /></p><p>    图7</p><p><strong>    5、总结</strong></p><p>    在上面的详细分析中，我们清晰地给出了JAVA在处理源程序过程中的详细转换过程，为我们正确解决JAVA编程中的中文问题提供了基础。同时，我们给出了认为是最优的解决JAVA中文问题的办法。</p></span><!--StartFragment --><span be:lasthandle="cns!AADDE4734A6787F!107" be:sortkey="" be:firsthandle="cns!AADDE4734A6787F!135" id="BlogViewId" be:sortmode="Normal"><strong><font color="#000000"><u>我的补充（需要特别注意）： 在表单（form ）提交时，如果提交的方法为get，那么request.setCharacterEncoding() 是不起作用的。此时在服务器端得到的字符编码仍然是ISO8859-1，而不是你设置的编码。所以一般我们在提交数据时，尽量使用post方法，此时 request.setCharacterEncoding()方法起效。<br /></u></font></strong></span><br /><!--StartFragment --> 如果非要使用get方法传form则要转换一下才行： <br />  -----   <br />  &lt;%@   page   contentType="text/html;charset=gb2312"%&gt;   <br />  &lt;%!   <br />          public   String   getStr(String   str){   <br />  try{   <br />  String   temp_p=str;   <br />  byte[]   temp_t=temp_p.getBytes("ISO8859-1");   <br />  String   temp=new   String(temp_t);   <br />  return   temp;   <br />  }   <br />  catch(Exception   e){   <br />  }   <br />  return   "null";   <br />    }   <br />    %&gt;   <br />  然后把String   userId=request.getParameter("userId");改成   <br />  String   userId=getStr(request.getParameter("userId"));   <br />－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br />我来说一下tomcat如何实现JSP的你就明白了。<br />预备知识：<br />　1.字节和unicode<br />　　Java内核是unicode的，就连class文件也是，但是很多媒体，包括文件/流的保存方式<br />　　是使用字节流的。 因此Java要对这些字节流经行转化。char是unicode的，而byte是字节.<br />　　Java中byte/char互转的函数在sun.io的包中间有。其中ByteToCharConverter类是中调度，<br />　　可以用来告诉你，你用的Convertor。其中两个很常用的静态函数是<br />　　 public static ByteToCharConverter getDefault() ;<br />　　 public static ByteToCharConverter getConverter(String encoding);<br />　　如果你不指定converter，则系统会自动使用当前的Encoding,GB平台上用GBK,EN平台上用<br />　　8859_1<br />　　<br />　　我们来就一个简单的例子：<br />　　　　　"你"的gb码是：0xC4E3 ,unicode是0x4F60<br />　　　　　你用:<br />　　　　　--encoding="gb2312";<br />　　　　　--byte b[]={(byte)'\u00c4',(byte)'\u00E3'};<br />　　　　　--convertor=ByteToCharConverter.getConverter(encoding);<br />　　　　　--char [] c=converter.convertAll(b);<br />　　　　　--for(int i=0;i&lt;c.length;c++)<br />　　　　　--{<br />　　　　　-- System.out.println(Integer.toHexString(c[i]));<br />　　　　　--}<br />　　　　　--打印出来是0x4F60<br />　　　　　--但是如果使用8859_1的编码，打印出来是<br />　　　　　--0x00C4,0x00E3<br />　　　　　----例１<br />　　　　 反过来：<br />　　　　  --encoding="gb2312";<br />　　　　  --char c[]={'\u4F60'};<br />　　　　　--convertor=ByteToCharConverter.getConverter(encoding);<br />　　　　　--byte [] b=converter.convertAll(c);<br />　　　　　--for(int i=0;i&lt;b.length;c++)<br />　　　　　--{<br />　　　　　-- System.out.println(Integer.toHexString(b[i]));<br />　　　　　--}<br />　　　　　　--打印出来是：0xC4,0xE3<br />　　　　　　----例２<br />　　　　　　--如果用8859_1就是0x3F，?号，表示无法转化　　　　　　--<br />　　　　　 很多中文问题就是从这两个最简单的类派生出来的。而却有很多类　　<br />　　不直接支持把Encoding输入，这给我们带来诸多不便。很多程序难得用encoding<br />　　了，直接用default的encoding，这就给我们移植带来了很多困难<br />　　--<br />　　2.UTF-8<br />　　--UTF-8是和Unicode一一对应的，其实现很简单<br />　　--<br />　　-- 7位的Unicode: 0 _ _ _ _ _ _ _<br />　　--11位的Unicode: 1 1 0 _ _ _ _ _ 1 0 _ _ _ _ _ _<br />　　--16位的Unicode: 1 1 1 0 _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _<br />　　--21位的Unicode: 1 1 1 1 0 _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _<br />　　--大多数情况是只使用到16位以下的Unicode:<br />　　--"你"的gb码是：0xC4E3 ,unicode是0x4F60<br />　　--我们还是用上面的例子<br />　　--　　--例１：0xC4E3的二进制：<br />　　--　　--　　　 1 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1<br />　　--　　--　　　 由于只有两位我们按照两位的编码来排，但是我们发现这行不通，<br />　　--　　--　　　 因为第７位不是0因此，返回"?"<br />　　--　　--　　　 <br />　　--　　--例２：0x4F60的二进制：<br />　　--　　--　　　 0 1 0 0 1 1 1 1 0 1 1 0 0 0 0 0 <br />　　--　　--　　　 我们用UTF-8补齐，变成：<br />　　--　　--　　　 11100100 10111101 10100000<br />　　--　　--　　　 E4--BD-- A0<br />　　--　　--　　　 于是返回0xE4,0xBD,0xA0<br />　　--　　--<br />　　3.String和byte[]<br />　　--String其实核心是char[],然而要把byte转化成String，必须经过编码。<br />　　--String.length()其实就是char数组的长度，如果使用不同的编码，很可<br />　　--能会错分，造成散字和乱码。<br />　　--例：<br />　　----byte [] b={(byte)'\u00c4',(byte)'\u00e3'};<br />　　----String str=new String(b,encoding);　　----<br />　　----如果encoding=8859_1，会有两个字，但是encoding=gb2312只有一个字　　----<br />　　--这个问题在处理分页是经常发生<br />　　4.Reader,Writer/InputStream,OutputStream<br />　　--Reader和Writer核心是char，InputStream和OutputStream核心是byte。<br />　　--但是Reader和Writer的主要目的是要把Char读/写InputStream/OutputStream<br />--一个reader的例子：<br />--文件test.txt只有一个"你"字，0xC4,0xE3--<br />--String encoding=;<br />--InputStreamReader reader=new InputStreamReader(<br />----new FileInputStream("text.txt"),encoding);<br />--char []c=new char[10];<br />--int length=reader.read(c);<br />--for(int i=0;i&lt;c.length;i++)<br />----System.out.println(c[i]);<br />　　--如果encoding是gb2312，则只有一个字符，如果encoding=8859_1，则有两个字符<br />　　--------<br />--<br />--<br />　　<br />　　 ----<br />　2.我们要对Java的编译器有所了解：<br />　--javac -encoding<br />　 我们常常没有用到ENCODING这个参数。其实Encoding这个参数对于跨平