<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>htqx</title>
    <description>javaeye 的博客真垃圾,都是一个板式.</description>
    <link>http://htqx.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>java万岁</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169706" style="color:red;">http://htqx.javaeye.com/blog/169706</a>&nbsp;
          发表时间: 2008年03月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          博客园来到这里混啦.<img src="/images/smiles/icon_surprised.gif"/><img src="/images/smiles/icon_cool.gif"/><img src="/images/smiles/icon_lol.gif"/>
          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169706#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 10 Mar 2008 09:23:11 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169706</link>
        <guid>http://htqx.javaeye.com/blog/169706</guid>
      </item>
      <item>
        <title>信息产业部联合各部委色情图片鉴别说明 </title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169600" style="color:red;">http://htqx.javaeye.com/blog/169600</a>&nbsp;
          发表时间: 2008年03月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><font face="Times New Roman"></font><br />
<span style="background-color: yellow">（这是信息产业部发布的一则说明，黄色部分是本人的评论，与原文无关，请留意。）</span><br />
引言 </p>
<p>&nbsp;</p>
<p>　　近年来，互联网和移动通信网络发展迅猛，在丰富、方便人民群众社会生活的同时，也给一些不法分子利用网络散布淫秽色情等有害信息提供了机会。为严厉打击互联网和手机上的违法犯罪活动，集中整治败坏社会风气、危害社会稳定、利用网络传播淫秽色情信息的违法行为，中央宣传部、公安部、教育部、信息产业部、文化部、国家广播电影电视总局、新闻出版总署、国务院新闻办、银监会、全国&#8220;扫黄打非&#8221;工作小组办公室自<font face="Times New Roman">2007</font>年<font face="Times New Roman">4</font>月至<font face="Times New Roman">9</font>月在全国范围内组织开展依法打击网络淫秽色情专项行动。此次专项行动是在互联网发展与管理的新形势下，针对人民群众反映强烈的网络违法不良信息等问题，为整顿互联网秩序、保障互联网长远健康发展的重大措施，也是为下一代健康成长创造良好和谐网络环境的重要举措。作为互联网行业主管部门，信息产业部将严格按照中央的统一部署和要求，认真履行职责，落实各项措施，为专项行动取得最终成效提供良好的支撑保障。<font face="Times New Roman"> </font></p>
<p><font face="Times New Roman"></font></p>
<p>&nbsp;</p>
<p>信息产业部联合各部委色情图片鉴别说明 </p>
<p>&nbsp;</p>
<p>１、网站内有这些文字的：<font face="Times New Roman"> <span style="background-color: yellow">（按照这个规则，大概这篇说明是色中之色，只是按照个别字眼来区分内容，是无视我国五千年文化的举措）</span></font></p>
<p>做爱、性爱、性交、性事、性游戏、性高潮、性欲、色欲、情欲、情色、少女高潮、<font face="Times New Roman">X</font>夜激情、失身、春宵、轮奸、<font face="Times New Roman">AV</font>女优、<font face="Times New Roman">SM</font>、绳虐、叫床、赤裸、少儿勿入、裸体、色诱、情色、喷血、波波、声色场所、骚、两性狂情、<font face="Times New Roman">18</font>岁以下勿入<font face="Times New Roman">/</font>看、禁片、<font face="Times New Roman">A</font>级、三级、<font face="Times New Roman">AV</font>女优、夜激情、处女，妖、野、隐私、热辣、干柴烈火、你敢上吗、猛料、美少女、禁区、风骚、高潮、云雨图、销魂、乳房、巨波、偷拍、调情、欲望。 </p>
<p>&nbsp;</p>
<p>２、有此类的图片网站：<font face="Times New Roman"> </font></p>
<p>（<font face="Times New Roman">1</font>）以提供暴力、恐怖为主题的图片，包括但不限于包含以下内容的图片：鲜血、尸体、骨架、死神形象等。<span style="background-color: yellow">&nbsp;（死神形象真那么可怕？网络不是面向低龄儿童的，这不过是些老人们无法接受不同文化的表现，在外国就有鬼节之类的，也就是人们装扮成鬼怪的节日）</span></p>
<p>（<font face="Times New Roman">2</font>）提供反动图片。 </p>
<p>（<font face="Times New Roman">3</font>）用女性和男性的乳、臀、腹的名称或别称来命名图片，及以联想性词语命名。（除了手，脚外其他命名都不行） <span style="background-color: yellow">（手和脚要色也是可以的）</span></p>
<p>（<font face="Times New Roman">4</font>）业务命名必须和业务内容一致，不得误导、诱惑客户使用业务。 </p>
<p>（<font face="Times New Roman">5</font>）不得提供以女性和男性的乳、臀、腹为主题的图片。 </p>
<p>（<font face="Times New Roman">6</font>）图片中出现女性的乳、臀、腹部位，必须着以衣物，不能以人体彩绘的名义裸露以上部位。男性的臀、腹部位必须着以衣物。衣物必须能够将这些部位完全包裹，不得暴露。（泳装系列不行，<font face="Times New Roman">1/3</font>露胸不行）<font color="#ffffff">sudu8.com</font> <span style="background-color: yellow">（泳装不行，老爷们爱看的选美小姐，似乎泳装乃必须环节，难道电视台的年龄群会比网络狭窄）</span></p>
<p>（<font face="Times New Roman">7</font>）有提供两性间过分亲密接触的图片，如爱抚。同时出现两性的图片，双方躯干（肩以下大腿中部以上）部位必须必须着以衣物，不得裸露。 <span style="background-color: yellow">（电视台的老爷们你们做到了么）</span></p>
<p>（<font face="Times New Roman">8</font>）有提供同性间亲密接触的图片，如接吻。（同性和异性接吻的都不放） </p>
<p>（<font face="Times New Roman">9</font>）有提供自慰的图片。 <span style="background-color: yellow">（穿着衣服的自慰）</span></p>
<p>（<font face="Times New Roman">10</font>）有提供所谓情趣用品、<font face="Times New Roman">SM</font>用品、成人用品的图片。 </p>
<p>（<font face="Times New Roman">11</font>）图片必须尊重人性，不得出现侮辱、伤害人性和人格的图片，如下跪、磕头、残疾人、捆绑等。 <span style="background-color: yellow">（残疾人不能拍照了？）</span></p>
<p>（<font face="Times New Roman">13</font>）尊重历史人物，在未得到合法授权的情况下，不得出现历史人物的图片。 <span style="background-color: yellow">（展示历史人物照片是不尊重历史人物？向死人要授权？）</span></p>
<p>（<font face="Times New Roman">14</font>）图片中人物不得摆出挑逗、诱惑、恐吓的姿势 <span style="background-color: yellow">（电影一堆这种动态图片）</span></p>
<p>（<font face="Times New Roman">15</font>）不得以卡通图片的名义提供包含以上内容的图片。 </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>３、与性有关的业务： </p>
<p>（<font face="Times New Roman">1</font>）所有提供含有性教育内容的服务，必须具备国家主管机关的合法授权。坚决反对打着性教育的幌子进行黄色、不健康内容贩卖的业务。 </p>
<p>（<font face="Times New Roman">2</font>）所有提供含有性咨询内容的服务，必须获得具备性咨询资格的机构合法授权。坚决反对打着性咨询的幌子进行黄色、不健康内容贩卖的业务。 </p>
<p>（<font face="Times New Roman">3</font>）不得以含有性暗示、性诱惑、性挑逗、性误导的词语命名业务，包括但不限于：妖、野、喷血、波波、隐私、<font face="Times New Roman">18</font>岁以下勿入<font face="Times New Roman">/</font>看、处女终结者、热辣、性爱、性游戏、夜激情、床、情色、干柴烈火、你敢上吗、失身、春宵、色欲、猛料等。（第三条不清楚的情况下参考第六条） <span style="background-color: yellow">（隐私、床、猛料离性诱惑很远吧，难道我还不够色）</span></p>
<p>（<font face="Times New Roman">4</font>）与性相关的业务必须遵循倡导健康生活方式、普及性知识的原则，导向健康明确，表述清晰无歧义，不得含糊、晦涩、摸棱两可，不得误导、挑逗、诱惑客户。 </p>
<p><font face="Times New Roman"><font face="Arial">（</font>5</font>）不得以叙述、案例、小说等任何方式，对性行为、性过程、性方式进行描述。（不能出现第一人称或第三人称的表述） </p>
<p>（<font face="Times New Roman">6</font>）在对性知识进行介绍时，必须使用学术界的标准用词，不得以通俗性词语来描述，如床上功夫、床第教战等。 </p>
<p>（<font face="Times New Roman">7</font>）不得介绍所谓情趣用品、<font face="Times New Roman">SM</font>用品、成人用品。 </p>
<p>（<font face="Times New Roman">8</font>）在与性知识无关的语句中，不得对性器官进行任何描述。（如果不是男女保健专栏内的话不能出现性器官的描述） </p>
<p>（<font face="Times New Roman">9</font>）严禁违返国家法律法规的网站内容也不行。（即黄赌毒）<br />
</p>
<br />
<br />
<span style="background-color: yellow">总体的评论：<br />
虽然国家能够重视网络内容的健康性值得肯定，但是在做法上非常不恰当。要根本解决现在的问题，首先要析出真正的受众群体，而不是混淆不清的一概而论。因为成年人，青年人，儿童的兴趣爱好，心智都有很大的差别，叫成年人去看儿童剧，叫儿童去看成人片，无疑都是不恰当的。你能忍受天天看儿童剧么？你不觉得电视上的情情爱爱更吸引你么，这才是真是的人性。兴趣爱好并不是永恒的，而是分阶段的，不能认为某个阶段的兴趣爱好才是最恰当的，比如老年人的兴趣爱好，强制实施在青壮少年上；或着儿童的爱好实施在老中青上，都会是很无理很荒谬的事情。兴趣爱好随着身心的变化而变化，也随着经济社会地位的不同而有所差异。这种差异是不能随便抹杀的，不能将天天到剧院看现代剧的所谓&#8220;高级趣味&#8221;强加在普通老百姓身上，生活水平，人际关系都决定&#8220;俗&#8221;人也要有&#8220;俗&#8221;人的生活方式。娱乐消遣是人们生产劳动之余的一个不可轻视的补充，就好像阴与阳，相互相承，想要骡子卖力干活，又不想让他吃草，这是不可能的事情。而我们的政府是否真的认为&#8220;娱乐消遣&#8221;和生产活动同样会带来税收，是应该&#8220;两手抓两手都要紧&#8221;的大事呢？很明显的，群众的娱乐被轻视了。</span><br />
<br />
<br />
<br />
<br />
<br />

          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169600#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 03 Mar 2008 13:56:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169600</link>
        <guid>http://htqx.javaeye.com/blog/169600</guid>
      </item>
      <item>
        <title>一起来声讨百度</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169601" style="color:red;">http://htqx.javaeye.com/blog/169601</a>&nbsp;
          发表时间: 2008年02月29日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <img src="http://www.cnblogs.com/Emoticons/baimantou/103828514.gif" alt="" /><br />
今天百度公布了自己的IM的下载，高高兴兴下载，却不能登陆~<br />
<img src="http://www.cnblogs.com/Emoticons/baimantou/134950908.gif" alt="" /><br />
然后想去注册一个账号吧，以后也许用的着，发现账号已经被注册。原来自己已经注册了，用了自己常用的密码试着登陆，结果都提示密码错误，真有够奇怪的了。没办法只好试着找回密码。结果发现找回密码居然要回答问题。虽然问题使自己写的，但是连密码都忘了，还能记住不常用的问题么？如果问题是逻辑问题，哪么不害怕别人登陆么？比如1+2等于多少，实质上这个问题要麽是一种个人隐私，要么就是完全与问题无关要紧的&#8220;密码&#8221;。当然没理由写自己的隐私，稍微有点安全意识的人。因此回答问题来取回密码等于依赖另外一个密码来取回密码，这够傻的。<br />
<img src="http://www.cnblogs.com/Emoticons/baimantou/202015694.gif" alt="" /><br />
既然别人已经写了邮箱，为啥不直接发到邮箱，还要自作聪明的设置一套无聊的二重密码，将忘记密码的人置于何地？然后我试着注册一个新的账号，发现所有问题的根源在于：注册的时候对密码格式是有要求的。一般人都有自己的密码，而是所有密码基本一样，这就是为何人们在不同的地方，哪么多密码的场合，还能正确登陆。如果对密码有要求，那么只能用一个不常用的密码来登陆，不用多久就会忘记掉。难道百度希望这些人在登陆的时候碰到麻烦？有够傻的了。<br />
<img src="http://www.cnblogs.com/Emoticons/baimantou/202015412.gif" alt="" /><br />
<br />
<br />
不尊重用户的习惯，就是不尊重用户。不要老以为自己想的就是正确，将自己的逻辑用在别人的身上，你有权宣扬自己的观点，但是没有权利强制改变别人的作风。商人们都自命自己什么都向钱看，什么都以用户喜好为原则，其实还是顽固的坚持一些无聊的个人喜好，与用户为敌，而这些坚持不过是懒惰，无知，肤浅的体现！<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />

          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169601#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 29 Feb 2008 16:21:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169601</link>
        <guid>http://htqx.javaeye.com/blog/169601</guid>
      </item>
      <item>
        <title>桌面软件应该注意到的几点原则</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169602" style="color:red;">http://htqx.javaeye.com/blog/169602</a>&nbsp;
          发表时间: 2008年02月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />
很多软件，到了新的系统，就立刻完蛋。大部分原因并不在于操作系统有很大的改进，操作系统本身是需要尽量考虑到兼容性的，除非必要，否则谁也不想放弃原来的兼容性。进而，那些在新系统却用不了的软件，应该好好考虑自己的设计原则是否有问题。我们知道驱动，往往是不能兼容新系统的，因为越是底层的东西，越容易改变，就和面向对象的原则那样，根据高层接口来编程，然后保持接口不变性，而内部的底层的细节反而很容易改变。如果是杀毒软件之类的与系统内核相关性很高的东西，不兼容新的系统可以谅解，但是一个普通的桌面程序，无端端的就不能兼容，那就是程序员太过放纵，走了旁门左道造成的。<br />
<br />
vista出来之后，这种不规范的编程呈现的问题就越来越明显。在我看来，除了不滥用程序功能，做到最低访问权限这个老生常谈的设计原则外，还应该考虑到将来是多用户访问环境。因为对安全性的更多注重，windows本身也向服务器的多用户权限安全模型靠拢。因此就算用户这台pc就他自己用，也不能保证用户不需要创建一个低权限的账号，以求更高的安全性。我们必须保证桌面软件设计成能够在低权限，多用户的环境下正常运行的模式。<br />
<br />
并不是高权限就一定不能在低权限用户下运行，比如杀毒软件，他不管谁登陆也能正常使用的。只要设计合理（包含合理的权限申请，并不是欺骗自己将原本就需要高权限的软件做成低权限的就是一个好设计），普通账号也能有良好的使用体验。其中，尤其以用户数据的管理这个需要注意，比如千千静音这个软件，可以在低权限账号正常使用，但是播放器列表却不能保存，原因在于它将播放列表放在程序的目录下，而不是针对每个账号分别存放在各自的相关可存放的目录中。桌面软件应该考虑将用户数据和相关账号关联起来，每账号应该有自己独立的用户信息。播放器要播放的列表，是私人的东西，即使不是权限的原因可以更改保存，用户也并不希望这样做。<br />
<br />
QQ在vista下的低权限账号会提示权限不够。QQ为何需要哪么高的权限？明明不过是区区的桌面程序而已。可见其设计还是存在很多不足。<br />
<br />
windows因为历史的原因，以前不太注重安全性和多用户的权限模型，因此往后修修补补的改进系统，有很多设计是存在不足的。比如安装程序，为什么程序都放在c盘的Program Files文件夹，这样真的好么，如何区分不同的帐户来安装不同的程序呢？对不。另一个是windows的分区模式，低权限的用户是不是能够将文件保存在其他盘呢？这个又值得商权。<br />
<br />
可以预见的是，将来桌面软件应该可以在低权限多个账号中正常使用，尽量能在低权限账号中安装；而windows也会更明确区分管理员和普通用户的作业差别。只有这样才能简化电脑终端之间的交互问题，和在不同设备访问系统的资源；用户的电脑再也不是孤立于网络大洋的一个岛屿，桌面程序必须做好这种准备。<br />
<br />
<br />
<br />
<br />

          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169602#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 25 Feb 2008 19:30:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169602</link>
        <guid>http://htqx.javaeye.com/blog/169602</guid>
      </item>
      <item>
        <title>坐牢洗黑钱的办法</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169603" style="color:red;">http://htqx.javaeye.com/blog/169603</a>&nbsp;
          发表时间: 2008年02月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />
<span style="background-color: #ffff00">柜员机取出假钱---&gt;银行无责<br />
网上银行被盗---&gt;储户责任 <br />
柜员机出现故障少给钱---&gt;用户负责 <br />
柜员机出现故障多给钱---&gt;用户盗窃，被判无期 <br />
银行多给了钱---&gt;储户义务归还 <br />
银行少给了钱---&gt;离开柜台概不负责 <br />
广东开平银行行长贪污4亿---&gt;判12年<br />
广东老百姓多取ATM机17万---&gt;判无期 <br />
声明：转发不会送你人民币，但如果你觉得作为消费者，全中国十三亿储户不公平的，请转发</span><br />
<br />
今天在QQ群里收到这样的消息。看到了所谓的法律，阶级性是多么的强，天子犯法，与庶民同罪，看来还是个遥远的梦想!<br />
之后，突然想到一个通过坐牢来洗黑钱的办法，藉此献给各位身居高位的&#8220;同好者&#8221;。<br />
<br />
比如，广东开平一个乡下地方的银行行长，能贪到4亿？<br />
可能性很低。<br />
其实他可以和他的&#8220;朋友&#8221;设计，将所有人的贪污金额算到他头上，因为法律很&#8220;喜欢&#8221;有钱人，因此贪污的越多，获益与代价的比就越高，因此他判了12年，平均每个月工资：27万7千，爽不。当然，并不是所有钱都能享用，还要上交一部分给国家。资料显示，绝大多数这种贪污，都只是追讨会少数的一部分钱，另外那部分去哪里了？不得而知。<br />
<br />
这样下来，钱就被洗白了。恩，终于又有一部分人先富起来了！<br />
<br />
<br />
<br />
<br />
<br />
<br />

          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169603#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 25 Feb 2008 13:28:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169603</link>
        <guid>http://htqx.javaeye.com/blog/169603</guid>
      </item>
      <item>
        <title>取代迅雷的下载软件</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169604" style="color:red;">http://htqx.javaeye.com/blog/169604</a>&nbsp;
          发表时间: 2008年02月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />
迅雷是一个很出色的下载软件，一下在击败了曾经占据大半壁江山的什么网络蚂蚁，下载快车之类的东西。为什么？一个字：快！<br />
<br />
为什么迅雷可以做到那么快，主要是应用了一个下载技术：p2sp。<br />
虽然我也不清楚具体的细节，但基本原理是从多个服务器分段下载数据，即使每一个服务器速度不快，多了也能组合起来，充分利用带宽。我们知道，中国的网络是很不稳定的，因此网络蚂蚁这些软件就能够保证从一个服务器稳定的下载软件，因为会不断的重试，断了又重连上，如果是单线程，可能因为网络不稳定的原因，速度慢慢下降（可能是下载线程自动匹配服务器的速度，一不稳定就稍微降低速度，造成越来越慢的效果），直到断线，就好象ie那样。通过多个线程，不断的&#8220;重启&#8221;慢速线程，来改善网络不稳定这个大环境。但是即使这些工作都做足了，还是因为线路的原因，有些服务器的连接速度不理想，这个时候，多个服务器（迅雷收集了服务器的信息，知道那些地方有相同的文件，所以能够分别连上他们，进而才能下载同一个文件不同的段落）就能够进一步的解决这个问题了。因此，除非是采用p2sp技术的下载软件，否则理论上是无法取代迅雷的。<br />
<br />
偶然的发现，腾讯的下载软件竟然也是p2sp的，这个软件本人严重不建议使用，因为我曾经使用了一段时间，去下载一个大型软件，提示速度100k，看上去很稳定的样子，觉得很好用，结果等了几个小时，却只是下载了一下部分，感觉上用的时间也太长了吧，最后通过看总用时和下载的数据大小，算出来的速度才只有10几k。这种欺骗性的行为，实在让人痛恨！！<br />
<br />
所以软件技术也不是主要的，不是标称p2sp就一定快，起码我们也要选一些厚道的软件开发商，否则所有的承诺也许不过是一句谎言！<br />
<br />
因此我们将目光投向西方资本主义发达国家，看看传说中的Orbit如何。<br />
<br />
软件介绍：<br />
Orbit Downloader 是一款来自国外的类迅雷下载加速器。在下载方式上采用了P2P来提高下载速度，P2P除了加速外，也能在一定程度上防止死链接。加上服务器端，下载方式就是P2SP，和迅雷基本一样。和迅雷不同的是,这个功能是可选项,换句话说,用户可以自行决定启用或关闭P2P功能.只是这个软件在国内用的人似乎都不多,所以就算现在启用P2P功能,在加速、防死链接上的作用目前不是太明显吧。<br />
<br />
软件特点:<br />
超强的下载加速功能 <br />
支持 Youtube 上的视频及 Rapidshare 上的文件的下载<br />
能够捕捉在线 Flash 及各种流媒体 <br />
支持 IE,Firefox,Maxthon,Opera 浏览器<br />
支持元文件链接下载 <br />
支持 HTTP,HTTPS, FTP, MMS 和 RTSP 协议的文件下载 <br />
支持代理服务器的任意配置<br />
支持下载中止和续传<br />
具有常规文件管理功能<br />
<br />
<br />
下载链接：<br />
<a href="http://download.it168.com/01/0122/70660/70660_3.shtml">http://download.it168.com/01/0122/70660/70660_3.shtml</a><br />
<br />
正如软件介绍里说的，p2sp技术很看地域性的，只有使用的人越多，效果才能更好。既然如此，为何我们还要不辞劳苦的去取缔迅雷呢？主要是迅雷已经不是一个简单的下载软件，它上面有太多对普通用户无用的东西，尤其在电脑性能不是很好的机子上，显得过于庞大～～简洁也是一种美学的需要。同时迅雷上的资讯品味也较为低俗。<br />
<br />
为了我们的美好未来，用户自身应该有所坚持，扶持一些有竞争力的软件，才能迫使开发商走向一条有利于用户的道路。<br />
我开始用Orbit啦，即使某些状况下速度比不上迅雷，但是不耗费资源也是一个优势，希望你也来尝试一下外国菜吧～～<br />
<br />
<br />
<br />

          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169604#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 23 Feb 2008 01:24:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169604</link>
        <guid>http://htqx.javaeye.com/blog/169604</guid>
      </item>
      <item>
        <title>百度推出新IM如何制胜腾讯老QQ</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169605" style="color:red;">http://htqx.javaeye.com/blog/169605</a>&nbsp;
          发表时间: 2008年02月21日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />
这里的策略并不是官方的，而是本大侠的个人看法。<br />
<br />
应该不少人认为百度IM无所作为，尤其在中国市场无法与QQ竞争，在外国市场无法与MSN竞争。既然很多强大的&#8220;前辈&#8221;都无法逆转QQ这种垄断地位，百度再走这个模式，又怎么可能有好的结果。因此，百度如果是制作传统的IM软件，是犯了方向性错误。如何才是制胜之道，本大侠认为只有走一条不一样的IM之路。<br />
<br />
IM曾经是一个不能盈利的市场，但是QQ却盈利了，这一切在于有效的资源利用。拥有资源，如果善加利用，那么就有将不可能变成可能的力量。<br />
<br />
百度的资源在哪里？一个是搜索，还有就是什么贴吧之类的周边产品都极有人气。一般人都不会投入人力资源在自己不擅长的项目，因此即使是有很大的平台优势，如果不够自动化，也不见得会利用起来。唯有IM和web2.0的产品结合起来，唯有web2.0的用户模型才能和IM的特性做到天衣无缝。<br />
<br />
因为传统的IM只是很简陋的信息交换系统，虽然增加视频，语音等内容，但是却缺少信息分类和整理的功能。作为一个普及的web前端，这样未尝太过狭隘。QQ群是一种扩展，进行了一点信息的归类，但是内容还是平板型的。我们知道，网络bbs等早就具备主题讨论等高级信息分类功能，只是作为传统的浏览器前端，无法具备QQ等软件的优秀用户体验。<br />
<br />
QQ在早期曾经想过与网站进行结合，但是那时候web2.0的概念还没有成熟，没有区分网站的建设者与网站的使用者的区别，普通用户根本不具备如此丰富的专业知识，因此注定失败。而在后来引入的QQ空间，QQ秀等虽然取得重大成功，却只是对这个概念的肤浅实现，远没有达到&#8220;实用化&#8221;的阶段。科技应该改变生活，成为生活的一部分，而不是一种装饰。<br />
<br />
我所看到的未来，是IM与博客，bbs，建设性社区，视频分享等结合起来，具备强大信息检索与交互能力，将IM作为一个强大的web2.0前端的世界。<br />
<br />
下面补一个软件构想图，<img src="http://www.cnblogs.com/Emoticons/msn/teeth_smile.gif" alt="" />，还很粗糙：<br />
<br />
<img src="/images/cnblogs_com/htqx/web2IM.png" border="0" height="706" alt="" width="1092" /><br />
<br />
<br />
<br />

          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169605#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 21 Feb 2008 01:19:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169605</link>
        <guid>http://htqx.javaeye.com/blog/169605</guid>
      </item>
      <item>
        <title>网络游戏=过家家</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169606" style="color:red;">http://htqx.javaeye.com/blog/169606</a>&nbsp;
          发表时间: 2008年02月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />
先规范一下术语。&#8220;网络游戏&#8221;指的是大话西游，魔兽世界等网络rpg练级杀怪游戏，不包含跑跑卡丁车，劲舞团之类的娱乐休闲和棋牌类游戏等。<br />
<br />
为啥说现在的网络游戏是过家家呢，因为他的最根本的流程，扮演角色，升级。这个和小朋友的过家家是一回事，扮演爸爸妈妈医生之类的。过家家算是游戏么？严格上应该算，但是那是相对于小屁孩来说才算游戏。真正的游戏应该更加刺激的，更有对抗性的活动，比如体育就是广义上的游戏，因为他是具备对抗性，能激发人挑战自我的。<br />
<br />
因此网络游戏不是游戏，而是一种娱乐消遣。娱乐不等于游戏，他的范畴更大。比如斗鸡，斗蟋蟀之类的，不是游戏，你可以将他们看成是一种不同形式的过家家，因此他们也像过家家那样，消遣你的时间和意志。网络游戏就是在娱乐消遣与游戏之中，偏向了虚荣的，散漫的，无边际的消遣。<br />
<br />
真正的游戏是具备方向性的，有目标的，却没有终结的一种挑战旧我的进取心，而不是一团混沌，无所事事的找乐子。可以说，游戏是严肃的娱乐，是区别于狭隘的散漫的娱乐的另一个方面。<br />
<br />
基于以上的思考，我们来分析一下网络游戏具备的游戏性有哪些：<br />
<br />
如果说网络游戏完全不是游戏，那样也不够严谨，你可以将网络游戏比喻成生活，生活整体上不是游戏，但是局部却有可能是游戏——这就是网络游戏的特征，从整体上来说，是无聊的过家家，但是某个局部活动，却有可能形成一个游戏单元。<br />
<br />
让我们来看看那些场景是游戏，比如挑战怪物，具备游戏的要素，但是网络游戏提倡你杀完全没有能力攻击你的怪物，或者用某种方式达到这个效果，比如喝无敌药水之类的。也就是网络游戏不提倡与怪物的对抗性，或者说诱惑你不断做没有挑战性的工作。第二个，玩家与玩家的pk，这个极富游戏性，但是网络游戏不提倡你pk，一方面是狭隘的道德观，一方面是pk的代价过高。如果体育竞技，输了要砍头，那么估计奥林匹克业不可能风靡全球，游戏很大程度上，在于&#8220;不用负责&#8221;这点上区别现实，要负责那就不是游戏，而是生活了。<br />
<br />
进而我们可以看到，网络游戏是游戏中的败类，挂羊头卖狗友的伪劣产品。展望未来，希望单机游戏能够全面网络化，加强人与人的对抗性。事实上，跑跑卡丁车之类的，棋牌之类的恰恰就是游戏网络化的作品，这些才是真正体现游戏精神的。<br />
<br />
<br />
<br />
<br />
<br />
<br />

          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169606#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 13 Feb 2008 16:22:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169606</link>
        <guid>http://htqx.javaeye.com/blog/169606</guid>
      </item>
      <item>
        <title>很黄很暴力的高考满分作文评语</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169607" style="color:red;">http://htqx.javaeye.com/blog/169607</a>&nbsp;
          发表时间: 2008年02月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h1>　　<br />行走在消逝中 <br /></h1><br />&mdash;&mdash;loli有三好，身娇腰柔易推倒&mdash;&mdash; <br /><br />谨以此文献给那些依然坚定地为着伟大的&lsquo;宅&rsquo;事业而奋斗的有名的和无名的宅人<br />们。 <br /><br />&ldquo;小小失败不过没关系；不管怎样反正都会有办法的。无论什么要求我都愿侍奉主<br />人。「主人想做什么就做什么吧」&hellip;&hellip;&rdquo; <br /><br />不知怎的，我的脑海中忽然想起这首耳熟能详的旋律。虽然也知道现在可不是悠闲<br />的时候，但是不自觉地，我停下笔，暂时止住了试卷上的龙飞凤舞。 <br /><br /><br /><br />&lsquo;已经&hellip;&hellip;夏天了呢。&rsquo;阳光毫不吝啬地传递着夏日的气息，我心中生出这样的莫<br />名感叹。 <br /><br />是阿，已经夏天了呢。已经到了Loli们用她们可爱的粉唇吸吮着混杂白色汁液，或<br />许会被打上重重马赛克的棍状物的时候了呢。元气型的Loli <br /><br />们不会被烛焰般的炙热推倒，她们永远充满了那样的朝气。无论是穿着深色连身泳装，<br />还是随时会露出底下那可疑的小熊图案的清凉短裙，她们身上那股被称为&lsquo;萌 <br /><br />&rsquo;的光芒总是比太阳更耀眼，更吸引人们的眼睛。 <br /><br />这，是&lsquo;moe&rsquo;的季节呢。 <br /><br />可是&hellip;&hellip;可是阿，为什么在这样的时刻，我却止不住来自心底的那一阵阵失落呢？<br /><br /><br />春华秋实，在怎样美丽的花朵，都有结出果实的那一天&mdash;&mdash;更何况，那一朵朵欲开<br />害羞的娇嫩花苞。相比之下，她们的存在时间，更是短得令人落泪。 <br /><br /><br /><br />一部以万年正太为主角的经典名著中写道：&ldquo;每当一个loli说&lsquo;我不相信小妖精&rsquo;<br />的时候，就有一个小妖精死去。&rdquo; <br /><br />作者没有写下去。每当loli们用她们已经不再柔软的语音认真地说出&lsquo;不再相信妖<br />精&rsquo;的时候，她们作为loli的一生也已经宣告结束。而脱去了稚气的loli，便如退去了<br />颜色的花朵，将以肉眼看得见的速度枯萎，凋谢。想到不久的将来，loli们或许会成为<br />口中高呼&lsquo;天下为攻，世界大同&rsquo;的腐女；抑或成为形容枯槁的欧巴桑，为青菜一毛还<br />是两毛的问题争论半天，任何人都不忍去看，有着多么美丽的笑容的那一只只萌力四射<br />的活泼小loli呵~ <br /><br /><br /><br />花开花落。每一年，都有一批loli蜕化成为乙女，向着御姐和人妻迈出无可挽回的<br />一步。她们走了，如樱花的落瓣一样，在灿烂中消逝。那样美丽，又那样令人心碎。 <br /><br /><br /><br />除了心碎，我又能如何呢？ <br /><br />就如同改变不了熵总是在增大这一事实一样，时间总是不知不觉地从我们身边走过<br />&mdash;&mdash;在走过的同时，无声而无情地一点点取走，那所谓&lsquo;萌&rsquo;的光环&hellip;&hellip; <br /><br /><br /><br />但是，但是&hellip;&hellip; <br /><br />如果没有去年的花落，哪会有第二年的花开？没有loli的凋零，哪有御姐和熟女的<br />妩媚微笑？ <br /><br />时间固然带走了萌萌的loli，但在同时，他又带给了这些（前）loli们更多种萌的<br />可能性。 <br /><br />loli是萌的，但只有loli的世界是不萌的。仅看到loli的成长，而忽略了三无、抚<br />子等唯御姐以上级别方能具备的萌要素，更不符合代表最广大宅人群中利益的全控系宅<br />人的一贯方针。 <br /><br /><br /><br />朝拜御姐，暮推萝丽。春引熟女，冬诱人妻。 <br /><br />在未能身体力行这一系列萌之境界之前，气馁是被我等所谓宅之接班人所不齿的。<br /><br /><br />心中燃起了不输于蜡滴的滚烫欲火，继续走下去的愿望在此刻无比强烈。 <br /><br />或许，明天你已不再。但我仍将微笑。 <br /><br /><br /><br />微笑着，欣赏loli的消逝，微笑着，展开怀抱，迎接更加和谐的一天。<br /><br /><span style="color: #ff0000; font-family: Verdana">辅导书上的点评：<br />陌生的故事，更增加了文章的可读性。<br />本文的最为成功的地方就是取材独特，以网络游戏中的故事来阐释对&ldquo;行走在消逝中&rdquo;的<br />感悟和理解，主人公在蜕变中或者时间的消逝中走向生命的另一种形式，这个主旨具有深?<br />的现实意义。作者显然是一位网络游戏爱好者，或者是一位喜欢看仙侠小说的同学，能够?<br />自己所长巧妙地嫁接到高考作文中，这是值得肯定的。<br /></span><br /><img src="../../../images/cnblogs_com/htqx/1202396086410.jpg" border="0" height="600" alt="" width="800" /><br /><img src="../../../images/cnblogs_com/htqx/1202396163222.jpg" border="0" height="600" alt="" width="800" /><br /><img src="../../../images/cnblogs_com/htqx/lancerfree1985_2386_.jpg" border="0" height="600" alt="" width="450" /><img src="../../../images/cnblogs_com/htqx/lancerfree1985_87b74aa8.jpg" border="0" height="600" alt="" width="450" />
          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169607#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 10 Feb 2008 20:55:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169607</link>
        <guid>http://htqx.javaeye.com/blog/169607</guid>
      </item>
      <item>
        <title>新年展望</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169608" style="color:red;">http://htqx.javaeye.com/blog/169608</a>&nbsp;
          发表时间: 2008年02月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />
新年新气象。对中国人来说，还是农历新年比较有气氛。<br />
软件开发确实是一件非常复杂的事情，主要在于需要漫长的学习工程，同时却要保持最初的热情；一方面需要了解最底层的细节，同时又要有宏观思维。这是不简单的事情。<br />
从实用派的观点，着眼局部，学习领域模型无疑是最有效率的，但是人们似乎永远都无法安于一室，做个游击战士，游走各个陌生的领域才是现实的状况。<br />
今天在csdn看到&#8220;蔡学镛专栏：我心目中的理想软件开发语言&#8221;，颇有意思。<br />
作为程序员，大概都想过自己理想的程序开发语言是怎样子。我本人认为一个理想的程序开发语言应该如下：<br />
1。易于调试。比如包含日志输出，console输出，debug语句等。<br />
2。易于测试。现在工程方面已经越来越重视测试的环节，测试不应该是写完正规代码之后的一个补充检查，而应该和正规代码紧密结合的，统一进程。<br />
3。排版出色。源代码是否易于查看，是非常重要的。<br />
4。结合文档。注释即文档，代码即文档，将源代码和文档的生成关联起来。<br />
5。轻量。轻量是一种哲学，轻装上阵无疑是愉快的开始。<br />
6。结合设计。UML设计能与很多语言很好的结合，但是没有一种语言是一开始就考虑了设计环节。<br />
7。unicode与国际化。国际化有两层意思，一个是国际通用性，一个是本地化能力。一个国际化的程序，应该具备容易转化为某一国本土风格的能力。<br />
8。丰富的类库与简洁的接口。语言只是立足于一切的开始，而现实的程序开发，却多数从中途上车，类库就是这样一个中途站，能缩短开发者的旅程。接口是类库的引申，只要用方法是用别人的东西，还管他是c语言，还是d语言的产物莫？<br />
<br />

          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169608#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 09 Feb 2008 12:37:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169608</link>
        <guid>http://htqx.javaeye.com/blog/169608</guid>
      </item>
      <item>
        <title>教育孩子</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169609" style="color:red;">http://htqx.javaeye.com/blog/169609</a>&nbsp;
          发表时间: 2008年01月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />
俗话说，严父慈母。<br />
但是其实这个&#8220;经典组合&#8221;未必能教育出&#8220;虎子&#8221;。<br />
<br />
也有一说，慈母多败儿。究竟是什么回事，单从严和慈其实并不能看出&#8220;教育水平&#8221;来。人们常所谓的慈，实质却是骄纵，什么都顺从，这不是教育，而是相处之道，女人很擅长于人相处，展现所谓&#8220;母性&#8221;。而严父实质纯粹是在发泄情绪，这也不是什么&#8220;教育&#8221;。<br />
<br />
因此，严父慈母和教育完全谈不上关系，只是一种现象，而不是一种哲学。<br />
<br />
所谓的教育是建立在理性分析的基础上的，绝不是不经大脑的&#8220;严一下，慈一下&#8221;完事。所谓的教育，也不是单纯的方法论，掌握了就能做个好老师，而是与教育者的水平息息相关的。所谓名师出高徒，首先教育者要有水平，要有涵养，要懂人情世故，要分清黑白正邪，这样才有资格谈什么教育。<br />
<br />
当然，要教育小孩并不需要什么名师，而在于认清教育的规律，在生活细节中能够应用教育的观点，而不要一味的&#8220;相处&#8221;和胡乱的发脾气。孩子是天生的小人（有点怀疑小人这个词源就是这样来的），很懂得什么叫察言观色，父母不用说话，有时一个态度就能影响孩子的进一步行动。首先做事情不分大小，首先应该要分清&#8220;正邪&#8221;，所谓正，就是这样做是正确的，无害的，有礼貌的，文明的；所谓邪，也并不需要真的很邪，杀人放火之类的，而是做得事情是否导致坏习惯。所谓千里之堤，溃于蚁穴，小的问题让他变成大问题，那就是要影响人的一生的事情，麻烦大了。<br />
<br />
教育小孩经常出现问题，是有社会基础的，少夫少妻，男的事业未成，女的不经事故，对教育孩子漫不经心，也是可以想象。但是现在是一夫一妻一儿时代，太过不放心上，那是没有后悔药可吃的。尤其是社会也并不那么太平，少年没得到很好的教育，能指望社会学校给个什么样的培养？<br />
<br />
<br />
<br />
<br />

          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169609#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 31 Jan 2008 17:59:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169609</link>
        <guid>http://htqx.javaeye.com/blog/169609</guid>
      </item>
      <item>
        <title>我设计的开源协议</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169610" style="color:red;">http://htqx.javaeye.com/blog/169610</a>&nbsp;
          发表时间: 2008年01月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />
开源，就是开放源代码，既然开放了，还要啥协议？这就说明了开放是有条件的，是一定程度上的开放，而不是绝对的开放。<br />
不是说有条件就是不完美，毕竟开发一个软件也是要精力，作者能够有条件的对某些人开放，也已经值得我们赞扬了。<br />
而开源的条件，某种层度上又反映了开源作者的&#8220;政治主张&#8221;。<br />
<br />
比如GPL开源，强迫你基于他的一切产品也需要开源，这样相当于同类交换，&#8220;你站在我的阵营，那么你就可以获得我的支持&#8221;。LGPL开源，可以在不修改的前提上不受限制的使用，这个就允许一些更加基础的产品，比如类库，工具之类广泛传播。然后看看ms的开源，你不能修改，只能查看，但是一般只要你付费，你可以无条件的使用这些产品。<br />
<br />
看完了这些开源协议，我觉得其实还可以有一种有条件的开放：同类开放协议。<br />
这里面的同类是关键，如何定义同类呢，一般来说，同类指的是功能上一致的产品，比如看图软件，word软件，解码器，他们有各自的服务领域，当开源作者开放了一个&#8220;看图软件&#8221;，只需要别人基于制作&#8220;看图软件&#8221;这个同类品上，才需要遵循共同开放原则。而当用来做&#8220;编译器&#8221;是无条件使用的。<br />
<br />
这个协议的开放性比GPL，LGPL都要高，GPL就不用说了，LGPL只能将免责应用在一些很传统的基础产品上，对于那些非传统意义上基础的产品就没有办法。这对于那些集成软件来说很不利，比如你想要在你的闭源产品上结合一些优秀的GPL软件那就不可行，虽然你只想让他作为你的产品的一小部分，但也不得不开放你的所有内容（这也是ms所说的病毒特性），从而不能起到一种规模效应。<br />
<br />
同类开放协议，很好的做到不同类的免责，可以更有效率的共享一个软件的全部，或者一部分，但又不至于完全失去&#8220;独立性&#8221;，在同类品上它是与其他&#8220;品牌&#8221;的产品互斥的。<br />
<br />
要注意的是，复杂的软件共享问题，必将导致错综的协议纠纷；灵活性也是带来麻烦的一种说辞。<br />
<br />
<br />
<br />
<br />

          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169610#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 28 Jan 2008 12:28:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169610</link>
        <guid>http://htqx.javaeye.com/blog/169610</guid>
      </item>
      <item>
        <title>思想懒惰的危害与防治</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169611" style="color:red;">http://htqx.javaeye.com/blog/169611</a>&nbsp;
          发表时间: 2008年01月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />
我也许有点懒惰，不是身体的懒，而是精神上的惰性，不想花时间专研，喜欢投机取巧。<br />
<br />
其实劳动可以洗涤人心，有些东西唠唠叨叨，不管是别人还是自己对自己，其实没有多大效果。但是如果去做一些实际的工作，那么就会改善很多。所谓&#8220;劳改&#8221;其实还真是有点科学在里面。<br />
<br />
有些话，很有道理但是不当回事，比如：千里之行，始于足下；聚沙成塔之类的。还有避重就轻，抓住主要矛盾之类的。思想上的惰性比身体上的惰性更要可怕，身体懒惰，可以养精蓄锐，雍容举止等，思想上的惰性却只能糟蹋人。不去思考，不去面对问题，而是无意识的蛮干，身体累了，其实却没学到东西。<br />
<br />
思想惰性可怕的地方，在于往往是不求目的的。因为不求解决问题，也就对&#8220;效率&#8221;麻木，思想的勤奋，并不在于想得多还是做得多，而在于有目的将效率提高。&#8220;想&#8221;也是一种劳力，空想也是一种思想上的懒惰。<br />
<br />
思想懒惰还在于熟视无睹。比如做一样东西，往往都会有一个参照，快快乐乐的拷贝一次又一次，然后满足。这样也许可以解决当前的问题，但是不能获得思想上的愉悦。只有对事情保持足够的兴趣，才能从中学到东西，只有正视他，审视他，提问他，才能获得新的知识。<br />
<br />
认真做事情，总是要面对更多挑战。如果你不逃避，总会遇到更多的难题。在感到思想乏力之际，应该先审视之前的疏忽，问题总是累计起来，在某个时刻一起找你麻烦。在春风得意时，往往忽略了严谨。要先理顺思路，退回去某个可以站得住脚的地方，比站在谬误之地妄想回天更明智。<br />
<br />
思考的成果，并不是为了减少思考，而是为了将更多的时间投入思考当中，将一次次重复劳动所浪费的时间回收，用智慧将劳动升华。<br />
<br />
<br />
<br />
<br />
<br />

          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169611#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 27 Jan 2008 02:37:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169611</link>
        <guid>http://htqx.javaeye.com/blog/169611</guid>
      </item>
      <item>
        <title>自制内存回收系统（预览）</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169612" style="color:red;">http://htqx.javaeye.com/blog/169612</a>&nbsp;
          发表时间: 2008年01月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          -------------------------------------版本1<br />
自动释放内存所用时间: 7.766<br />
人工释放内存所用时间: 2.812<br />
效率比：0.362091<br />
<br />
<span style="color: #ff0000">这是测试用例运行10w次debug的结果。</span><br />
<br />
自动释放内存所用时间: 2.578<br />
人工释放内存所用时间: 2.219<br />
效率比：0.860745<br />
<br />
<span style="color: #ff0000">这是release的结果。<br />
</span><span style="color: #ff0000"><br />
-------------------------------------版本2<br />
</span>debug：<br />
自动释放内存所用时间: 76.703<br />
人工释放内存所用时间: 2.688<br />
效率比：3.50443%<br />
<br />
release：<br />
自动释放内存所用时间: 13.672<br />
人工释放内存所用时间: 2.25<br />
效率比：16.457%<br />
<br />
<span style="color: #ff0000"><br />
</span>征求测试用例，尤其是循环引用等特殊情况。<br />
<br />
<br />

          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169612#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 27 Jan 2008 01:16:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169612</link>
        <guid>http://htqx.javaeye.com/blog/169612</guid>
      </item>
      <item>
        <title>数学与算法</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169613" style="color:red;">http://htqx.javaeye.com/blog/169613</a>&nbsp;
          发表时间: 2008年01月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br /><br />(不知道什么原因,用google输入法,标点符号总是出现两个~奇怪了.)<br /><br />虽然讨论这两个似乎都是很屌的计算机&ldquo;权威&rdquo;，但是有时也要面不改色的人说点闲话。<br /><br />计算机算法我的感觉是很大程度基于一个迭代原则，也就是从分析问题，找出相同的子问题，，然后不断的循环解决子问题，，从何解决整体的问题。。因为计算机是一个计算速度非常快的工具，，并不在乎迭代多少次。。这应该算是计算机算法的一大特点吧。。<br /><br /><br /><br />
          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169613#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 22 Jan 2008 20:25:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169613</link>
        <guid>http://htqx.javaeye.com/blog/169613</guid>
      </item>
      <item>
        <title>面向对象论</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169614" style="color:red;">http://htqx.javaeye.com/blog/169614</a>&nbsp;
          发表时间: 2008年01月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br /><span style="font-family: Verdana"><p><br />面向对象按我的理解，最关键在于多态这点。<br />而多态最关键最本质的实现，就是接口。</p><p>而接口的作用就是隐藏细节，这样可以不修改接口的情况下进行一些变动。<br />因此，面向对象的作用和做要目的是便于修改，某种层度上和c++的宏是差不多的东西。当然宏的局限性很大，远没有面向对象的机制成熟。</p><p>在说面向对象的时候，习惯于什么封装，继承，多态这些实现方法，而不去考虑他的目的是什么，这样写代码就会很累，明明是一个函数能搞定的事情，非要做成一个类，这里面代码量就提升了。</p><p>某种层度上，面向对象也是不断发展中的，对象不是凭空出现，硬生生的一个函数转到一个类，而是需要屏蔽某些细节，预见到修改的可能，才用类来实现，这个并不是为了编写无畏的代码，恰恰在没有这种编写方式的情况下，会出现更多冗余的，难以修改的代码。</p><p>这是一点。 但是仅凭这点是无法解释什么时候用面向对象方式，什么时候只是通过函数作用的方式。因为用函数可以做到用面向对象方式能做到的任何工作，这其中主要在于考虑项目的规模，和结构的复杂性等因素，什么方法能更加简便，代价更小，这种方法就值得支持，面向对象思想和过程性思想有些区别，过程性将所有东西看作一个整体内的各个局部；面向对象是各个等价的个体；所以过程性注重整体的协作性；面向对象注重个体的独立性，最好就是这个东西以后可以放到其他地方重复使用。</p><p>因此，当你这个项目有很严密的交互性，和一套标准的实现方法，流程，那么用局部观点来写程序也未尝不可，最多就是在某些局部运用一些面向对象零件。比如游戏，编译器等，操作系统等这些方面，就经常使用面向过程的方法。面向对象也不是一个绝对的概念，而是一个相对的，面向对象并不是用类包装就是，而是&ldquo;用多少个类，怎样包装&rdquo;。比如将面向过程整个放进一个类，这就是面向对象了么？然后将每个函数都放进一个类，总共有9999个类，这就是面向对象了么？到底9999个类更面向对象，还是一个类更面向对象呢？因此关键是怎样划分对象的方法，才是面向对象。因此也可以得出，面向过程是面向对象一个特例的结论，也就是一个类的情况。这种情况真的很多么？如果是用面向对象的语言的角度来说，确实很少，但是也要考虑到面向对象语言本身具备一定的封装和局部化能力，不需要借助类也可以保持部分和整体的清晰度，比如一个面向对象的语言，一个类都要放在一个文件里面，但是面向过程的语言就可以将函数划分，放到另外的一些文件。就c语言来说，每个源文件对应了一个目标文件，这种划分是有特别意义的，等同于类的划分作用。<br /><br />因为面向对象语言本身没有面向过程语言对局部构建的所有能力，因此面向过程实际上相当于n个类的情况。也就是说，要用面向对象语言，只有通过划分几个类，才有能力去做到完全的面向过程。从这里也可以看出，面向对象还是面向过程，并不是完全的对立，面向过程并不是&ldquo;最失败的面向对象&rdquo;的情况，最失败的面向对象可能比面向过程更不&rdquo;面向对象&ldquo;。<br /><br />局部化设计思想，也需要考虑划分局部这个问题，等同于类的抽象，要抽象多少个类是面向对象，要划分多少个局部是面向过程，这其中并没有太多的差别。真正的差异在于面向对象的抽象是基于独立个体这个考虑的，但是其实也并不是很多对象能够做到重用。<br /><br />就好象数据结构的目的，是为了方便描述问题，面向对象的类的实现，也应该具备方便描述这点。所谓方便，主要是对客户端来说的，方便使用。当然最方便的就是一句&quot;服务器.给我做好()&quot;，但是这样你这个客户端没有意义了。因此客户端应该处于服务端更高层次，却又不至于完全没有业务。<br /><br /><br /><br /><br /></p><p>&nbsp;&nbsp;</p></span>
          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169614#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 22 Jan 2008 18:20:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169614</link>
        <guid>http://htqx.javaeye.com/blog/169614</guid>
      </item>
      <item>
        <title>Tomcat jsp编码问题过滤器</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169615" style="color:red;">http://htqx.javaeye.com/blog/169615</a>&nbsp;
          发表时间: 2008年01月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><br />
Tomcat是一个免费的java jsp,servlet容器，同时也是个web服务器，非常小，6.x才几兆。<br />
不过初学者可能在开发过程中会碰到极为讨厌的字符编码问题。<br />
<br />
编码出现问题的原因在于jsp自作聪明的认为提交的字符是基于ISO8859-1,也就是外国人用的字符编码，咱们中国人不吃这套。中文常用的编码是GBK等，但是GBK或者ISO8859-1都是一个地区所采用的编码，不太国际化，现在最通用的国际编码是unicode，而utf-8就是unicode的一个编码方案，这个编码可以同时显示中文，英文，韩文，日文，繁体中文等各种文字，因此建议大家采用。<br />
<br />
要做的事情其实不多，首先String.getBytes("ISO8859-1&#8221;）将字符串回复为原始数据，第二步：new String(bytes, "UTF-8")将原始数据转换为String.<br />
<br />
jsp 提交字符串在form表单有两种方式，一种是get,将字符串编码在url上面，一种是post，直接提交。两种方式其实有点差别。jsp意识到自己的错误，增加了一个request.setCharacterEncoding(&nbsp;编码 ）指定提交的字符编码，但是不知为什么，这个函数只对post方式提交的感兴趣，对get方式提交没有效果。所以get方式还是要自己手工转换。<br />
<br />
然后是response也有个setCharacterEncoding(&nbsp;编码 ），这个就是指定输出的编码格式的。但是要注意，IE其实对于html他会需要html里面指定相关的编码方式，他才会正确显示，否则默认用GBK这些本地编码来显示页面，这个时候也是乱码了。html 指定编码的方式只要输出的时候加入一些标签就行了。<br />
<br />
如果你想输入和输出的数据不相同，那么你在相关的页面用response.setCharacterEncoding或者response<font face="Verdana">.setContentType("text/html;charset=UTF-8");之类的。需要注意的是，编码需要在操作数据之前设定。</font><br />
<br />
下面是我的一个过滤器实现。<br />
在web.xml 添加如下代码便可：<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">encode</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">cn.gameidea.web.util.TomcatFormEncodeFilter</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-class</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">encode</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">你的编码</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">param-value</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">init-param</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">encode</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-name</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">/*</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">url-pattern</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">filter-mapping</span><span style="color: #0000ff">&gt;</span></div>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Codehighlighter1_0_11_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_0_11_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_0_11_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_0_11_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedBlock.gif" id="Codehighlighter1_0_11_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_0_11_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_0_11_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_0_11_Open_Text').style.display='inline';" align="top" alt="" style="display: none" /><span id="Codehighlighter1_0_11_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_0_11_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;*&nbsp;<br />
<img src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;cn.gameidea.web.util;<br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.UnsupportedEncodingException;<br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.Filter;<br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.FilterChain;<br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.FilterConfig;<br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletException;<br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletRequest;<br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletResponse;<br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.HttpServletRequest;<br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Enumeration;<br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.HttpServletResponse;<br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /><br />
<img src="/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Codehighlighter1_453_525_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_453_525_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_453_525_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_453_525_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedBlock.gif" id="Codehighlighter1_453_525_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_453_525_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_453_525_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_453_525_Open_Text').style.display='inline';" align="top" alt="" style="display: none" /></span><span id="Codehighlighter1_453_525_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_453_525_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;*&nbsp;处理Tomcat&nbsp;服务器表单编码问题。<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;*&nbsp;</span><span style="color: #808080">@author</span><span style="color: #008000">&nbsp;htqx<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;*&nbsp;</span><span style="color: #808080">@version</span><span style="color: #008000">&nbsp;1.0&nbsp;2008-1-20<br />
<img src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Codehighlighter1_580_1926_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_580_1926_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_580_1926_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_580_1926_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedBlock.gif" id="Codehighlighter1_580_1926_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_580_1926_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_580_1926_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_580_1926_Open_Text').style.display='inline';" align="top" alt="" style="display: none" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;TomcatFormEncodeFilter&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;Filter&nbsp;</span><span id="Codehighlighter1_580_1926_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_580_1926_Open_Text"><span style="color: #000000">{<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_584_620_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_584_620_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_584_620_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_584_620_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_584_620_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_584_620_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_584_620_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_584_620_Open_Text').style.display='inline';" align="top" alt="" style="display: none" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_584_620_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_584_620_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;客户端的编码类型。<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;默认为&nbsp;UTF-8<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;encode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_649_752_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_649_752_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_649_752_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_649_752_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_649_752_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_649_752_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_649_752_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_649_752_Open_Text').style.display='inline';" align="top" alt="" style="display: none" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_649_752_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_649_752_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;将被Tomcat错误用ISO8859-1编码的字符串解码为原始数据，然后指定正确的方式编码。<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080">@param</span><span style="color: #008000">&nbsp;request&nbsp;需要修正编码的ServletRequest对象。<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;encoding(HttpServletRequest&nbsp;request)<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_797_1197_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_797_1197_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_797_1197_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_797_1197_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_797_1197_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_797_1197_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_797_1197_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_797_1197_Open_Text').style.display='inline';" align="top" alt="" style="display: none" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_797_1197_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_797_1197_Open_Text"><span style="color: #000000">{<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enumeration</span><span style="color: #000000">&lt;?&gt;</span><span style="color: #000000">&nbsp;names&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getParameterNames();<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(names.hasMoreElements())<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_889_1194_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_889_1194_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_889_1194_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_889_1194_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_889_1194_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_889_1194_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_889_1194_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_889_1194_Open_Text').style.display='inline';" align="top" alt="" style="display: none" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_889_1194_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_889_1194_Open_Text"><span style="color: #000000">{<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;values&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;request.getParameterValues(names.nextElement().toString());<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;values.length;&nbsp;</span><span style="color: #000000">++</span><span style="color: #000000">i)<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1018_1190_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1018_1190_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1018_1190_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1018_1190_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1018_1190_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1018_1190_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1018_1190_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1018_1190_Open_Text').style.display='inline';" align="top" alt="" style="display: none" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1018_1190_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1018_1190_Open_Text"><span style="color: #000000">{<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1028_1106_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1028_1106_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1028_1106_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1028_1106_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1028_1106_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1028_1106_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1028_1106_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1028_1106_Open_Text').style.display='inline';" align="top" alt="" style="display: none" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;</span><span id="Codehighlighter1_1028_1106_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1028_1106_Open_Text"><span style="color: #000000">{<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;values[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;String(values[i].getBytes(</span><span style="color: #000000">"</span><span style="color: #000000">ISO8859-1</span><span style="color: #000000">"</span><span style="color: #000000">),&nbsp;encode&nbsp;);<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1146_1185_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1146_1185_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1146_1185_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1146_1185_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1146_1185_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1146_1185_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1146_1185_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1146_1185_Open_Text').style.display='inline';" align="top" alt="" style="display: none" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(UnsupportedEncodingException&nbsp;e)&nbsp;</span><span id="Codehighlighter1_1146_1185_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1146_1185_Open_Text"><span style="color: #000000">{<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1233_1241_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1233_1241_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1233_1241_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1233_1241_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1233_1241_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1233_1241_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1233_1241_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1233_1241_Open_Text').style.display='inline';" align="top" alt="" style="display: none" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;destroy()&nbsp;</span><span id="Codehighlighter1_1233_1241_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1233_1241_Open_Text"><span style="color: #000000">{<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;doFilter(ServletRequest&nbsp;request,&nbsp;ServletResponse&nbsp;response,<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1385_1713_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1385_1713_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1385_1713_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1385_1713_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1385_1713_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1385_1713_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1385_1713_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1385_1713_Open_Text').style.display='inline';" align="top" alt="" style="display: none" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FilterChain&nbsp;chain)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;IOException,&nbsp;ServletException&nbsp;</span><span id="Codehighlighter1_1385_1713_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1385_1713_Open_Text"><span style="color: #000000">{<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(request&nbsp;</span><span style="color: #0000ff">instanceof</span><span style="color: #000000">&nbsp;HttpServletRequest)<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1435_1670_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1435_1670_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1435_1670_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1435_1670_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1435_1670_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1435_1670_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1435_1670_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1435_1670_Open_Text').style.display='inline';" align="top" alt="" style="display: none" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1435_1670_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1435_1670_Open_Text"><span style="color: #000000">{<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HttpServletRequest&nbsp;r&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(HttpServletRequest)request;<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r.setCharacterEncoding(&nbsp;encode&nbsp;);<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((HttpServletResponse)response).setCharacterEncoding(encode);<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(r.getMethod().equalsIgnoreCase(</span><span style="color: #000000">"</span><span style="color: #000000">get</span><span style="color: #000000">"</span><span style="color: #000000">))<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1643_1666_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1643_1666_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1643_1666_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1643_1666_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1643_1666_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1643_1666_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1643_1666_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1643_1666_Open_Text').style.display='inline';" align="top" alt="" style="display: none" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1643_1666_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1643_1666_Open_Text"><span style="color: #000000">{<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;encoding(r);<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chain.doFilter(request,&nbsp;response);<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1716_1741_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1716_1741_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1716_1741_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1716_1741_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1716_1741_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1716_1741_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1716_1741_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1716_1741_Open_Text').style.display='inline';" align="top" alt="" style="display: none" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1716_1741_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**&nbsp;*/</span><span id="Codehighlighter1_1716_1741_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;从配置文件读取编码格式。<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1822_1923_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1822_1923_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1822_1923_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1822_1923_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1822_1923_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1822_1923_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1822_1923_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1822_1923_Open_Text').style.display='inline';" align="top" alt="" style="display: none" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;init(FilterConfig&nbsp;filterConfig)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException&nbsp;</span><span id="Codehighlighter1_1822_1923_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1822_1923_Open_Text"><span style="color: #000000">{<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;c&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;filterConfig.getInitParameter(</span><span style="color: #000000">"</span><span style="color: #000000">encode</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(c&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_1897_1917_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1897_1917_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1897_1917_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1897_1917_Closed_Text').style.display='inline';" align="top" alt="" /><img src="/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_1897_1917_Closed_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1897_1917_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1897_1917_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1897_1917_Open_Text').style.display='inline';" align="top" alt="" style="display: none" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1897_1917_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_1897_1917_Open_Text"><span style="color: #000000">{<br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;encode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;c;<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br />
<img src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span><span style="color: #000000"><br />
<img src="/Images/OutliningIndicators/None.gif" align="top" alt="" /></span></div>

          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169615#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 22 Jan 2008 16:28:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169615</link>
        <guid>http://htqx.javaeye.com/blog/169615</guid>
      </item>
      <item>
        <title>标准化和集成思想</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169616" style="color:red;">http://htqx.javaeye.com/blog/169616</a>&nbsp;
          发表时间: 2008年01月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />中国有很多技术不错的开发人员，但是却很少有优秀的作品。原因何在？<br />下面我来分析一下。<br /><br />缺少标准化，统一的基础平台；很少人愿意去做无法直接产生效益，而又要耗费庞大的基础建设，因此，上层建筑一个是采取简化掉的，拙劣的基础代码；或者干脆降低上层建筑的设计规模。基础和上层建筑的关系，举个例子，就好象dos平台下开发程序，同样的付出，出来的产品却粗糙得多。当我们还是兢兢业业的在dos基础（打个比喻）下建设我们的产品时，别人却已经搭上了windows的高速列车，即使再有才能，再勤奋，加班再多也无法缩短这个差距。科技是残酷的，就好象人工计算圆周率，花其一生也不如计算机几秒钟，这个领域要的不是蛮干，要的是精明，善于处于有利位置。<br /><br />第二个缺少标准化的主观原因，也就是缺少集成化的思想。什么东西都从新开始，不借助一点外力，哪怕已经有一个相当完善的基础在哪里，也不愿意花时间去集成，而相信&ldquo;自己做得更好&rdquo;。首先，这个自信是好的，但是自信却并不是为了&ldquo;改善基础措施&rdquo;而是建立自己产品的&ldquo;附加物&rdquo;，因此这个改进只是相对你这个产品而言的，狭隘的，短命的实现；假设有100个这种的做法，就有100遍&ldquo;自己做的更好&rdquo;的实现。我们应该察觉到这种隐秘的导致生产力下降的原因。<br /><br />客观来说，这种内部消耗的蛮荒现象是发展初期的必然。网络化的发展，我们可以获知国外同行的生产模式，也同时产生了标准化平台的愿望。因此现在也有了一些比较有意义的标准出台，比如办公软件的UOF（不是UFO）。事实上，有很多免费的基础平台值得我们基于上面来开发的，比如w3c，和手机行业的openKODE等。我们首先应该从现有的优秀作品中找到共同点，尽量用标准的，可替换的集成思想来整合现有的产品，即使没有成品，也应该遵循某个标准下开发自己的组件，这让才能在将来，出现更优秀，或者自己精力转移的时候，能够替换掉这个过时的部件。标准在发展中，在可以预见的将来，新的标准会不断出现，给我们以新的指导。不存在非谁不可的残缺机制能够良性发展的可能；整个行业只有在规范化，可以整合的条件下，才可能实现昌盛。<br /><br /><br /><br /><br /><br />
          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169616#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 09 Jan 2008 13:54:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169616</link>
        <guid>http://htqx.javaeye.com/blog/169616</guid>
      </item>
      <item>
        <title>国产操作系统有没有出路</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169617" style="color:red;">http://htqx.javaeye.com/blog/169617</a>&nbsp;
          发表时间: 2008年01月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />
原来想给四川未来阿尔法操作系统写的建议，但是因为不走运，丢失了。<br />
现在干脆写大一点吧。<br />
<br />
作为一个程序员，对操作系统有自己的不成熟的看法。首先我认为操作系统有两个方向，一是网络化，二是虚拟化。<br />
网络化很容易理解，大家基本都知道这个趋势。但是网络化对国产操作系统有什么重要的契机呢。<br />
网络化的本质在于扩展操作系统获取内容的渠道，比如电影，音乐，网站等，可以通过网络来分享资源；要推广系统，最难的不是易用性，而在于资源的局限，没有内容就没有用户，当内容与系统的耦合不是那么高的时候，人们可以通过新生的操作系统获得同样的资源，那么他就会自由选择自己喜欢的平台。举个例子，如果你做的即时通讯软件可以共享QQ的用户群，那么人们就很有可能同等对待你的新平台。<br />
<br />
第二个虚拟化。某种层度上，虚拟化和网络化是息息相关的，因为网络化，所以需要不同平台之间需要交换信息，因此需要共同的平台，而这个平台建立在传统操作系统上的虚拟层。其中虚拟机技术最为引人注目，微软的.NET虚拟机，SUN公司的java虚拟机都是类似的技术。虽然我们一般很少见这种软件，主要有两个原因，一个是虚拟机没有默认安装在操作系统上，妨碍了软件部署。另一个是平时我们使用的软件都是由相对较大的公司开发的，他们有着丰富的开发资源，因此这个虚拟化对其影响较小。但是对于中小型的开发商来说，虚拟机技术对其比较有诱惑力，因为投入更少的资源却能获得更大的市场，这无疑很划算，尤其对预算紧张的商人们。另外一个，虚拟机技术对新生平台，起到援用传统平台开发资源的作用。比如手机系统，性能不高，却实现了java虚拟机，其目的何在，正是说明了开发资源是新平台生死存亡的决定因素。<br />
<br />
我们必须检讨的是，开发操作系统常常被视为赶美超英的大工程，这是不科学的。微软耗费几百亿制作的操作系统，要全盘超越是不可能的；同样的，因为微软或者linux的强势，而认为通用操作系统没有前景，这不过懒惰的思维。如果我们愿意思考一下，其实相对小规模的研发还是有发展前景的。从需求出发，我们现有的操作系统实在太过复杂。比如我个人来说，操作系统不外乎做以下事情：<br />
看片<br />
听歌<br />
看书<br />
看图<br />
上网<br />
下载<br />
玩游戏<br />
聊QQ<br />
还有自己的工作（这个因人而异）<br />
<br />
难道这些东西要花几百亿么？对于大多数消费者来说，电脑就是一个娱乐工具，和mp3，mp4其实没有太大的分别。如果完全将精力放在这点，而不去搞什么架构，技术创新，赶超微软之类的东西，完全能做出自己的特色，赢得消费者。<br />
<br />
因此对于国产操作系统的建议，就是要抓住网络化和虚拟化这两个方向，为人民娱乐事业服务这个中心，相信会有一番作为。<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />

          <br/><br/>
          <span style="color:red;">
            <a href="http://htqx.javaeye.com/blog/169617#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 05 Jan 2008 21:26:00 +0800</pubDate>
        <link>http://htqx.javaeye.com/blog/169617</link>
        <guid>http://htqx.javaeye.com/blog/169617</guid>
      </item>
      <item>
        <title>保龄球积分——我的实现</title>
        <author>htqx</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://htqx.javaeye.com">htqx</a>&nbsp;
          链接：<a href="http://htqx.javaeye.com/blog/169618" style="color:red;">http://htqx.javaeye.com/blog/169618</a>&nbsp;
          发表时间: 2008年01月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <br />在《敏捷软件开发》中有一个保龄球的例子。作者的实现方法不是一味强调模式对象之类的东西。从中我们可以学习到大师开发软件的灵活性和务实态度。为了表达我对大师的有如滔滔江水，连绵不绝的敬意，自己也按照自己的想法写了一个。<br /><br /><div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; border: #cccccc 1px solid"><img src="../../../Images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;demo;<br /><img src="../../../Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Vector;<br /><img src="../../../Images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Iterator;<br /><img src="../../../Images/OutliningIndicators/None.gif" align="top" alt="" /><br /><img src="../../../Images/OutliningIndicators/ExpandedBlockStart.gif" id="Codehighlighter1_85_348_Open_Image" align="top" alt="" /><img src="../../../Images/OutliningIndicators/ContractedBlock.gif" id="Codehighlighter1_85_348_Closed_Image" align="top" alt="" style="display: none" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Main&nbsp;</span><span style="display: none; background-color: #fff