<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>playfish</title>
    <description>专注于前端工程.DIV+CSS,JavaScript,Java开发.喜欢jQuery,喜欢优化</description>
    <link>http://playfish.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>最牛诗句，除了感动，才气也值得佩服！</title>
        <author>playfish</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://playfish.javaeye.com">playfish</a>&nbsp;
          链接：<a href="http://playfish.javaeye.com/blog/200022" style="color:red;">http://playfish.javaeye.com/blog/200022</a>&nbsp;
          发表时间: 2008年06月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一场地震，生死两难；只道三四险，不知五月难；纵有六双眼，泪也流不完；七颗心儿悬，零八奥运艰；高呼九洲十地华人现，纵使百舸千帆风浪间，也让咱行得万年船！泱泱中华几千年，只是百般无奈斗不过你苍天；十分惨淡，也不知你九重天中住着何神仙，在零八年八月八日还有八十八天时送灾难；但愿七彩祥云现，六月中国保平安，五星红旗永鲜艳;四海升平，三地两岸心连心成一条线！我只想，跪地抬手问苍天，敢应否：下辈子，你做人来我做天！
          <br/>
          <span style="color:red;">
            <a href="http://playfish.javaeye.com/blog/200022#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/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><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 04 Jun 2008 11:02:31 +0800</pubDate>
        <link>http://playfish.javaeye.com/blog/200022</link>
        <guid>http://playfish.javaeye.com/blog/200022</guid>
      </item>
      <item>
        <title>失败的技术交流*2</title>
        <author>playfish</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://playfish.javaeye.com">playfish</a>&nbsp;
          链接：<a href="http://playfish.javaeye.com/blog/187438" style="color:red;">http://playfish.javaeye.com/blog/187438</a>&nbsp;
          发表时间: 2008年04月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          失败的技术交流*2，一个是我主讲的介绍会议，一个是有N多MM参加的软件测试沙龙上的演讲。<br /><br />这几天参加的这些技术交流会议，在演讲的技巧上面有了不少体会，这里提出来跟大家分享一下，欢迎拍砖交流。。<br /><strong><br />上周五日记</strong><br /><br />今天真是失败啊。。。<br /><br />前段时间项目发布了beta版本，总算是松了口气。趁任务少点了，将主题开发整理成了文档。我还是比较喜欢将自己做过的东西做个正式的文档记录的。因为经常有很多东西现在做过了以后还会用到，而文档可以很好的作为自己的积淀保留下来。比如前段时间做的树，如果自己没个文档积累，现在要想重新整理这颗树估计还要重新花很多时间再研究。不过我不喜欢整理别人的文档，整理不是自己的东西是件累活。而且没什么收获。<br /><br />整理完，陈总说，找个时间大家交流一下吧。好。开始做ppt。<br /><br />第一份ppt，有些要点不清楚，陈总建议写清楚一些，而且ppt样子比较丑，参考其它ppt做一下。经过整改，终于完成了一份自认为无论从美工跟内容上都完美无缺的ppt，堪称内在美与外在美的完美结合，再加上我当班长多年来的那滔滔不绝的口才，临危不惧的性格，风趣幽默的讲解，一定会让听众强烈期盼再次举行类似交流会。嗯，当时我就是这么的傻。<br /><br />现场会议交流时候我才发现，我错了。。。我倒是没想到会来这么多人，整个部门都来了，人多点没关系。。也没有我们班人多。。但是我马上就想到，我的ppt中充满了领域内的知识，都是在讲整个项目前端的html，css，js的架构，首先其它项目组的人不关心这些领域知识，他们只是被领导抓过来的，对我们门户组的工作提出一些意见的，我在ppt讲这些领域知识，他们一定在想。。妈的。。这个干我屁事。。。就不能说点看得懂的有用的吗。。汗。。。<br /><br />第二，整个演讲也犯了大忌，正如之前去参加规则引擎跟工作流的培训讲座，那2个研究生就在那里一直念ppt，整个ppt上都是大段的文字，听得好吐血。虽然我为了避免这个情况，已经加了很多图片以跟内容结合起来讲，但是文字内容还是太多，不够精炼。而我想更好的做法应该是标题概要罗列一下，图片罗列一下，然后其它详细内容靠发挥才对。<br /><br />这里或许就体现出我的经验不足之处了，可能是写文档带来的惯性，也或许是想将这个ppt作为一个文档一样保存起来，ppt上文字内容太多，事无巨细，生怕别人不知道，但是这样带来的问题就是内容都已经在ppt上。而我讲的时候就没什么好发挥的了。。就一直念。。。不过带来的唯一的好处就是，这个ppt是可以作为一个详细的开发文档的。。。<br /><br />此外，整个演讲的准备还是显得经验不足，不懂得调动听众情绪，我自己都清楚，肯定很多人听得很无趣。我想更好的改进的方法应该是调整下ppt内内容的顺序，先从主题部署开始，先让听众感觉一下，我们在讲的东西最后效果是什么，这样才有兴趣继续下去。然后再慢慢的涉及各个部分如何整合，最好是可以边讲边演示如何做。从hello world开始。我想，从我听过的很多类似的讲座的一个通病就是，首先都是长篇大论的介绍背景知识，直到所有人都实在听不下去了，开始讲怎么做。导致那些对领域知识不熟悉的人不停的看表算时间，心里默念，往下翻啊往下翻啊。。。<br /><br />总结：效果差，ppt罗列了太细节的东西，顺序上不懂调动听众情绪，没有做到通俗易懂。发挥还好，场面不大可以轻松应付，不会紧张什么的。<br /><br /><strong>上周日日记</strong><br /><br />上周收到一份邮件，软件园有举行一个软件自动化测试的沙龙，看了上面的主题，似乎还不错。就报名参加去了。<br /><br />周日，2点30准时到场，其它人也在陆续入场。发现MM好多啊，男女比例大概1：1的，而且不乏美女，谨记珏的教训，不敢乱瞟。看来很多公司都是让女生干测试的活啊。。。难得有个讨论技术的活动能看到这么多MM的。。<br /><br />现场投影坏了，一片花屏。换了投影，直到3点才搞好。郁闷，干坐半个小时。<br /><br />换的那个投影效果也很差，都几乎没色彩了，跟看黑白电影似的，右边还都歪掉了。。。好吧，今天我们是来听测试的，不是来看投影的。听听测试牛人们的演讲吧。<br /><br />原本有3个演讲嘉宾，结果只来了1个，另外2个都在外地出差，其中一个人让人替，另一个没来了。。也就2个人讲。算了，我比较关注星网的那个web自动化测试，这个听听也好。<br /><br />听了30分钟。。。我实在是受不了。。他讲了30分钟都没讲一点实质的内容。。长篇大论介绍了一堆背景，技术都是专利保密，只讲一些思路，专门忽悠人。真是郁闷死我了。。我忽然明白了为什么我们部门就我这个实习生报名去了。。估计他们都有类似的经历了，其它公司怎么会把自己的技术无偿共享呢，又不是开源。。哎，我觉得我也很傻很天真呢。。还这么满怀憧憬的去了。。被忽悠了一大圈又回来了。。
          <br/>
          <span style="color:red;">
            <a href="http://playfish.javaeye.com/blog/187438#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 28 Apr 2008 10:08:05 +0800</pubDate>
        <link>http://playfish.javaeye.com/blog/187438</link>
        <guid>http://playfish.javaeye.com/blog/187438</guid>
      </item>
      <item>
        <title>java;jsp;tomcat;mysql;hibernate;j2ee 编码中文乱码全面解决方案</title>
        <author>playfish</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://playfish.javaeye.com">playfish</a>&nbsp;
          链接：<a href="http://playfish.javaeye.com/blog/186293" style="color:red;">http://playfish.javaeye.com/blog/186293</a>&nbsp;
          发表时间: 2008年04月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          *************************************java、jsp中设置编码******************************************/<br />首先说在java里那些地方能够设置编码<br />开发工具会有好多地方设置编码这个不解少了，这里不介绍了。<br /><br />下面两种设置编码格式方法适用于jsp页面(*.jsp)<br />&lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><br />&lt;%@ page contentType="text/html; charset=UTF-8" %><br /><br />下面方式适合于jsp、servlet、action中(*.java)<br />request.setCharacterEncoding("UTF-8");<br />response.setCharacterEncoding("UTF-8");<br /><br />下面适合html页面(*.htm;*.html)<br />&lt;meta http-equiv="content-type" content="text/html; charset=UTF-8"><br /><br />Tomcate设置编码(server.xml)<br />&lt;Connector 其他省略 port="80" URIEncoding="UTF-8"><br /><br />mysql设置编码命令<br /><br />SET character_set_client = utf8;<br />SET character_set_connection = utf8;<br />SET character_set_database = utf8;<br />SET character_set_results = utf8;/*这里要注意很有用*/<br />SET character_set_server = utf8;<br /><br />SET collation_connection = utf8_bin;<br />SET collation_database = utf8_bin;<br />SET collation_server = utf8_bin;<br /><br />my.ini中配置默认编码<br />default-character-set=utf8<br /><br />连接数据库设置编码<br />jdbc:mysql://192.168.0.5:3306/test?characterEncoding=utf8<br /><br />/*****************************************java与mysq编码对应****************************************/<br />java中的常用编码UTF-8;GBK;GB2312;ISO-8859-1;<br />对应mysql数据库中的编码utf8;gbk;gb2312;latin1<br /><br />/********************************************过滤器使用*********************************************/<br />//过滤器设置编码过滤(SetCharacterEncodingFilter.java)<br />package com.sorc;<br /><br />import java.io.*;<br />import javax.servlet.*;<br />import javax.servlet.http.*;<br /><br />public class SetCharacterEncodingFilter extends HttpServlet implements Filter{<br />   private FilterConfig filterConfig;<br />   private String encoding=null;<br />   //Handle the passed-in FilterConfig<br />   public void init(FilterConfig filterConfig){<br />      this.filterConfig=filterConfig;<br />      encoding=filterConfig.getInitParameter("encoding");<br />   }<br />   //Process the request/response pair<br />   public void doFilter(ServletRequest request,ServletResponse response,FilterChain filterChain){<br />      try{<br />         request.setCharacterEncoding(encoding);<br />         filterChain.doFilter(request,response);<br />      } catch(ServletException sx){<br />         filterConfig.getServletContext().log(sx.getMessage());<br />      } catch(IOException iox){<br />         filterConfig.getServletContext().log(iox.getMessage());<br />      }<br />   }<br />   //Clean up resources<br />   public void destroy(){<br />   }<br />}<br />//web.xml配置过滤器方法(web.xmd)<br />&lt;filter><br />    &lt;filter-name>setcharacterencodingfilter&lt;/filter-name><br />    &lt;filter-class>com.sorc.SetCharacterEncodingFilter&lt;/filter-class><br />    &lt;init-param><br />      &lt;param-name>encoding&lt;/param-name><br />      &lt;param-value>utf8&lt;/param-value><br />    &lt;/init-param><br />&lt;/filter><br />&lt;filter-mapping><br />    &lt;filter-name>setcharacterencodingfilter&lt;/filter-name><br />    &lt;url-pattern>/*&lt;/url-pattern><br />&lt;/filter-mapping><br /><br />/************************有了上面的基础下面试完满解决方案*****************************************/<br />1.使用GBK编码的解决方案<br />这个最简单 遇到设置编码的地方就是用GBK数据库gbk 然后在使用个过滤器过滤编码为gbk一切搞定。<br />效果为添加数据无乱码 读出无乱码 数据库管理工具无乱码 到处sql结构和数据无乱码<br /><br />2.使用UTF-8编码解决方案<br />所有编码都设置为UTF-8<br />数据库编码utf8<br />设置过滤器编码utf8<br />数据库连接?characterEncoding=utf8<br />然后在数据库管理工具或mysql命令行 运行 SET character_set_results = gbk;<br />效果为添加数据无乱码 读出无乱码 数据库管理工具无乱码 到处sql结构和数据时存在乱码<br /><br />3.页面使用UTF8 数据库使用latin1的解决方案<br />jap java tomcat 设置为UTF-8<br />过滤器 utf8<br />数据库连接?characterEncoding=latin1<br />数据库其他latin1<br />然后在数据库管理工具或mysql命令行 运行 SET character_set_results = gbk;<br />效果为添加数据无乱码 读出无乱码 数据库管理工具无乱码 到处sql结构和数据时存在乱码<br /><br />以上都不需要页面或java代码中手动转码
          <br/>
          <span style="color:red;">
            <a href="http://playfish.javaeye.com/blog/186293#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 24 Apr 2008 11:13:09 +0800</pubDate>
        <link>http://playfish.javaeye.com/blog/186293</link>
        <guid>http://playfish.javaeye.com/blog/186293</guid>
      </item>
      <item>
        <title>Practical Web 2.0 Applications With PHP读书笔记（1）</title>
        <author>playfish</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://playfish.javaeye.com">playfish</a>&nbsp;
          链接：<a href="http://playfish.javaeye.com/blog/181779" style="color:red;">http://playfish.javaeye.com/blog/181779</a>&nbsp;
          发表时间: 2008年04月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近想要重新梳理一遍PHP的学习，重点面向WEB2.0应用的学习，找了一本Practical Web 2.0 Applications With PHP 2008来读。我想，对于使用其他语言开发WEB2.0应用也是会很有帮助的。一起学起吧。全英文的电子书籍看起来会稍微吃力些<br /><br /><strong>1.搜索引擎优化。基于WEB标准进行开发。</strong><br /><br /><strong>2.PHPDoc风格的的注释。必须重视的良好的编程风格：</strong><br /><pre name="code" class="php">&lt;?php
/**
* mySimpleFunction
*
* A simple function to return a friendly message
* to the user based on their name and age
*
* @param string $name The name of the user
* @param int $age The age of the user
* @return string The generated welcome message
*/
function mySimpleFunction($name, $age)
{
  $str = sprintf('Hello %s, your age is %d', $name, $age);
  return $str;
}
?></pre><br /><strong>3.注意网络安全防范，防止各类攻击</strong><br /><br /><strong>4.应用程序日志，出于安全与表现的考虑，程序运行过程中生成日志是非常重要的。</strong><br /><br /><strong>5.可配置性与可扩展性。</strong><br /><br />待续
          <br/>
          <span style="color:red;">
            <a href="http://playfish.javaeye.com/blog/181779#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 11 Apr 2008 14:47:41 +0800</pubDate>
        <link>http://playfish.javaeye.com/blog/181779</link>
        <guid>http://playfish.javaeye.com/blog/181779</guid>
      </item>
      <item>
        <title>HashMap和Hashtable及HashSet的区别</title>
        <author>playfish</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://playfish.javaeye.com">playfish</a>&nbsp;
          链接：<a href="http://playfish.javaeye.com/blog/179642" style="color:red;">http://playfish.javaeye.com/blog/179642</a>&nbsp;
          发表时间: 2008年04月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Hashtable类  <br />  　　Hashtable继承Map接口，实现一个key-value映射的哈希表。任何非空（non-null）的对象都可作为key或者value。  <br />  　　添加数据使用put(key,   value)，取出数据使用get(key)，这两个基本操作的时间开销为常数。  <br />  Hashtable通过initial   capacity和load   factor两个参数调整性能。通常缺省的load   factor   0.75较好地实现了时间和空间的均衡。增大load   factor可以节省空间但相应的查找时间将增大，这会影响像get和put这样的操作。  <br />  使用Hashtable的简单示例如下，将1，2，3放到Hashtable中，他们的key分别是”one”，”two”，”three”：  <br />  　　　　Hashtable   numbers   =   new   Hashtable();  <br />  　　　　numbers.put(“one”,   new   Integer(1));  <br />  　　　　numbers.put(“two”,   new   Integer(2));  <br />  　　　　numbers.put(“three”,   new   Integer(3));  <br />  　　要取出一个数，比如2，用相应的key：  <br />  　　　　Integer   n   =   (Integer)numbers.get(“two”);  <br />  　　　　System.out.println(“two   =   ”   +   n);  <br />  　　由于作为key的对象将通过计算其散列函数来确定与之对应的value的位置，因此任何作为key的对象都必须实现hashCode和equals方法。hashCode和equals方法继承自根类Object，如果你用自定义的类当作key的话，要相当小心，按照散列函数的定义，如果两个对象相同，即obj1.equals(obj2)=true，则它们的hashCode必须相同，但如果两个对象不同，则它们的hashCode不一定不同，如果两个不同对象的hashCode相同，这种现象称为冲突，冲突会导致操作哈希表的时间开销增大，所以尽量定义好的hashCode()方法，能加快哈希表的操作。  <br />  　　如果相同的对象有不同的hashCode，对哈希表的操作会出现意想不到的结果（期待的get方法返回null），要避免这种问题，只需要牢记一条：要同时复写equals方法和hashCode方法，而不要只写其中一个。  <br />  　　Hashtable是同步的。  <br />   <br />  HashMap类  <br />  　　HashMap和Hashtable类似，不同之处在于HashMap是非同步的，并且允许null，即null   value和null   key。，但是将HashMap视为Collection时（values()方法可返回Collection），其迭代子操作时间开销和HashMap 的容量成比例。因此，如果迭代操作的性能相当重要的话，不要将HashMap的初始化容量设得过高，或者load   factor过低。  <br />   <br />  WeakHashMap类  <br />  　　WeakHashMap是一种改进的HashMap，它对key实行“弱引用”，如果一个key不再被外部所引用，那么该key可以被GC回收。<br /><br /><br /><br />HashSet请参考对Set的描述  <br />   <br />          Set是一种不包含重复的元素的Collection，即任意的两个元素e1和e2都有e1.equals(e2)=false，Set最多有一个null元素。  <br />  　　Set的构造函数有一个约束条件，传入的Collection参数不能包含重复的元素。　　请注意：必须小心操作可变对象（Mutable   Object）。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。<br />两个通用 Set实现是HashSet   和TreeSet。要决定用哪一个，那是非常简单明了的。   HashSet   要快得多   (对大多数操作是常数时间之于对数时间（constant   time   vs.   log   time）),   但不提供排序保证。如果你需要使用   SortedSet   中的操作，或者按顺序迭代对你来说是重要的，那么请使用   TreeSet。   否则，使用   HashSet。   在大多数时间都不使用   HashSet   ，对你来说是个公平的赌博。    <br />   <br />  　　关于   HashSet，有一件事应该牢记，即就条目数和容量之和来讲，迭代是线性的。因此，如果迭代性能很重要，那就应该慎重选择一个适当的初始容量。容量选得太大，既浪费空间，也浪费时间。   默认的初试容量是101,   一般来讲，它比你所需要的要多。可以使用   int   构造函数来指定初始容量。要分配   HashSet   的初始容量为17:    <br />   <br />  Set   s=   new   HashSet(17);    <br />   <br />  　　HashSets   另有一个称作   装载因数（load   factor）   的"调整参数（tuning   parameter）"   。如果你非常在乎你的   HashSet   的空间的使用，请阅读   HashSet   文本以获取详细信息。否则，就使用默认值吧。如果你接受默认装载因数，但你确实又想指定初始容量，那么，选一个大约是你期望你的   Set   将增长到的容量的两倍的数。如果你的猜测不着边，它也可以增长，或只是浪费一点空间。但都没有大问题。如果你知道有关正确尺寸的一个最佳值，用它吧；如果不知道，那就使用一个旧的值，或使用一个偶数值。它真的不是非常重要。这些事情只能使   HashSet   稍稍变好一点点。    <br />   <br />  　　TreeSet   没有调整参数。除   clone   之外，HashSet   和   TreeSet   都仅有那些由它们各自的接口所要求的操作   (Set   和   TreeSet)，而没有任何别的操作。     <br />  Java 集合类图<br /><img src="http://www.blogjava.net/images/blogjava_net/fisher/18768/o_umlList.jpg" />
          <br/>
          <span style="color:red;">
            <a href="http://playfish.javaeye.com/blog/179642#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/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><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 05 Apr 2008 12:27:44 +0800</pubDate>
        <link>http://playfish.javaeye.com/blog/179642</link>
        <guid>http://playfish.javaeye.com/blog/179642</guid>
      </item>
      <item>
        <title>用HttpClient来模拟浏览器GET POST </title>
        <author>playfish</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://playfish.javaeye.com">playfish</a>&nbsp;
          链接：<a href="http://playfish.javaeye.com/blog/171221" style="color:red;">http://playfish.javaeye.com/blog/171221</a>&nbsp;
          发表时间: 2008年03月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          作者:jaddy0302 日期:2006-12-21<br />      一般的情况下我们都是使用IE或者Navigator浏览器来访问一个WEB服务器，用来浏览页面查看信息或者提交一些数据等等。所访问的这些页面有的仅仅是一些普通的页面，有的需要用户登录后方可使用，或者需要认证以及是一些通过加密方式传输，例如HTTPS。目前我们使用的浏览器处理这些情况都不会构成问题。不过你可能在某些时候需要通过程序来访问这样的一些页面，比如从别人的网页中“偷”一些数据；利用某些站点提供的页面来完成某种功能，例如说我们想知道某个手机号码的归属地而我们自己又没有这样的数据，因此只好借助其他公司已有的网站来完成这个功能，这个时候我们需要向网页提交手机号码并从返回的页面中解析出我们想要的数据来。如果对方仅仅是一个很简单的页面，那我们的程序会很简单，本文也就没有必要大张旗鼓的在这里浪费口舌。但是考虑到一些服务授权的问题，很多公司提供的页面往往并不是可以通过一个简单的URL就可以访问的，而必须经过注册然后登录后方可使用提供服务的页面，这个时候就涉及到 COOKIE问题的处理。我们知道目前流行的***页技术例如ASP、JSP无不是通过COOKIE来处理会话信息的。为了使我们的程序能使用别人所提供的服务页面，就要求程序首先登录后再访问服务页面，这过程就需要自行处理cookie，想想当你用java.net.HttpURLConnection 来完成这些功能时是多么恐怖的事情啊！况且这仅仅是我们所说的顽固的WEB服务器中的一个很常见的“顽固”！再有如通过HTTP来上传文件呢？不需要头疼，这些问题有了“它”就很容易解决了！ <br /><br />我们不可能列举所有可能的顽固，我们会针对几种最常见的问题进行处理。当然了，正如前面说到的，如果我们自己使用 java.net.HttpURLConnection来搞定这些问题是很恐怖的事情，因此在开始之前我们先要介绍一下一个开放源码的项目，这个项目就是 Apache开源组织中的httpclient，它隶属于Jakarta的commons项目，目前的版本是2.0RC2。commons下本来已经有一个net的子项目，但是又把httpclient单独提出来，可见http服务器的访问绝非易事。 <br /><br />Commons-httpclient项目就是专门设计来简化HTTP客户端与服务器进行各种通讯编程。通过它可以让原来很头疼的事情现在轻松的解决，例如你不再管是HTTP或者HTTPS的通讯方式，告诉它你想使用HTTPS方式，剩下的事情交给 httpclient替你完成。本文会针对我们在编写HTTP客户端程序时经常碰到的几个问题进行分别介绍如何使用httpclient来解决它们，为了让读者更快的熟悉这个项目我们最开始先给出一个简单的例子来读取一个网页的内容，然后循序渐进解决掉前进中的所形侍狻?/font> <br /><br />1． 读取网页(HTTP/HTTPS)内容 <br /><br />下面是我们给出的一个简单的例子用来访问某个页面 <br /><br />/* <br /><br /> * Created on 2003-12-14 by Liudong <br /><br /> */ <br /><br />package http.demo; <br /><br />import java.io.IOException; <br /><br />import org.apache.commons.httpclient.*; <br /><br />import org.apache.commons.httpclient.methods.*; <br /><br />/** <br /><br /> * 最简单的HTTP客户端,用来演示通过GET或者POST方式访问某个页面 <br /><br /> * @author Liudong <br /><br /> */ <br /><br />public class SimpleClient { <br /><br />    public static void main(String[] args) throws IOException <br /><br />    { <br /><br />        HttpClient client = new HttpClient();    <br /><br />        //设置代理服务器地址和端口     <br /><br />        //client.getHostConfiguration().setProxy("proxy_host_addr",proxy_port); <br /><br />        //使用GET方法，如果服务器需要通过HTTPS连接，那只需要将下面URL中的http换成https <br /><br />        HttpMethod method = new GetMethod("http://java.sun.com"); <br /><br />        //使用POST方法 <br /><br />        //HttpMethod method = new PostMethod("http://java.sun.com"); <br /><br />        client.executeMethod(method); <br /><br />        //打印服务器返回的状态 <br /><br />        System.out.println(method.getStatusLine()); <br /><br />        //打印返回的信息 <br /><br />        System.out.println(method.getResponseBodyAsString()); <br /><br />        //释放连接 <br /><br />        method.releaseConnection(); <br /><br />    }<br />} <br /><br />在这个例子中首先创建一个HTTP客户端(HttpClient)的实例，然后选择提交的方法是GET或者 POST，最后在HttpClient实例上执行提交的方法，最后从所选择的提交方法中读取服务器反馈回来的结果。这就是使用HttpClient的基本流程。其实用一行代码也就可以搞定整个请求的过程，非常的简单！ <br /><br />2． 以GET或者POST方式向网页提交参数 <br /><br />其实前面一个最简单的示例中我们已经介绍了如何使用GET或者POST方式来请求一个页面，本小节与之不同的是多了提交时设定页面所需的参数，我们知道如果是GET的请求方式，那么所有参数都直接放到页面的URL后面用问号与页面地址隔开，每个参数用&隔开，例如：http://java.sun.com?name=liudong&mobile=123456，但是当使用POST方法时就会稍微有一点点麻烦。本小节的例子演示向如何查询手机号码所在的城市，代码如下： <br /><br />/* <br /><br /> * Created on 2003-12-7 by Liudong <br /><br /> */ <br /><br />package http.demo; <br /><br />import java.io.IOException; <br /><br />import org.apache.commons.httpclient.*; <br /><br />import org.apache.commons.httpclient.methods.*; <br /><br />/** <br /><br /> * 提交参数演示 <br /><br /> * 该程序连接到一个用于查询手机号码所属地的页面 <br /><br /> * 以便查询号码段1330227所在的省份以及城市 <br /><br /> * @author Liudong <br /><br /> */ <br /><br />public class SimpleHttpClient { <br /><br />    public static void main(String[] args) throws IOException <br /><br />    { <br /><br />        HttpClient client = new HttpClient(); <br /><br />        client.getHostConfiguration().setHost("www.imobile.com.cn", 80, "http"); <br /><br />        HttpMethod method = getPostMethod();//使用POST方式提交数据 <br /><br />        client.executeMethod(method); <br /><br />       //打印服务器返回的状态 <br /><br />        System.out.println(method.getStatusLine()); <br /><br />        //打印结果页面 <br /><br />        String response =  new String(method.getResponseBodyAsString().getBytes("8859_1")); <br /><br />       //打印返回的信息 <br /><br />        System.out.println(response); <br /><br />        method.releaseConnection(); <br /><br />    } <br /><br />    /** <br /><br />     * 使用GET方式提交数据 <br /><br />     * @return <br /><br />     */ <br /><br />    private static HttpMethod getGetMethod(){ <br /><br />        return new GetMethod("/simcard.php?simcard=1330227"); <br /><br />    } <br /><br />    /** <br /><br />     * 使用POST方式提交数据 <br /><br />     * @return <br /><br />     */ <br /><br />    private static HttpMethod getPostMethod(){ <br /><br />        PostMethod post = new PostMethod("/simcard.php"); <br /><br />        NameValuePair simcard = new NameValuePair("simcard","1330227"); <br /><br />        post.setRequestBody(new NameValuePair[] { simcard}); <br /><br />        return post; <br /><br />    } <br /><br />} <br /><br />在上面的例子中页面http://www.imobile.com.cn/simcard.php需要一个参数是simcard，这个参数值为手机号码段，即手机号码的前七位，服务器会返回提交的手机号码对应的省份、城市以及其他详细信息。GET的提交方法只需要在URL后加入参数信息，而POST则需要通过NameValuePair类来设置参数名称和它所对应的值 <br /><br />3． 处理页面重定向 <br /><br />在JSP/Servlet编程中response.sendRedirect方法就是使用HTTP协议中的重定向机制。它与JSP中的&lt;jsp:forward …>的区别在于后者是在服务器中实现页面的跳转，也就是说应用容器加载了所要跳转的页面的内容并返回给客户端；而前者是返回一个状态码，这些状态码的可能值见下表，然后客户端读取需要跳转到的页面的URL并重新加载新的页面。就是这样一个过程，所以我们编程的时候就要通过 HttpMethod.getStatusCode()方法判断返回值是否为下表中的某个值来判断是否需要跳转。如果已经确认需要进行页面跳转了，那么可以通过读取HTTP头中的location属性来获取新的地址。 <br /><br />状态码<br /> 对应HttpServletResponse的常量<br /> 详细描述<br />301　 SC_MOVED_PERMANENTLY<br /> 页面已经永久移到另外一个新地址<br />302　 SC_MOVED_TEMPORARILY<br /> 页面暂时移动到另外一个新的地址<br />303　 SC_SEE_OTHER<br /> 客户端请求的地址必须通过另外的URL来访问<br />307　 SC_TEMPORARY_REDIRECT　 同SC_MOVED_TEMPORARILY <br /><br />下面的代码片段演示如何处理页面的重定向 <br /><br />client.executeMethod(post); <br /><br />        System.out.println(post.getStatusLine().toString()); <br /><br />        post.releaseConnection(); <br /><br />        //检查是否重定向 <br /><br />        int statuscode = post.getStatusCode(); <br /><br />        if ((statuscode == HttpStatus.SC_MOVED_TEMPORARILY) || <br /><br />            (statuscode == HttpStatus.SC_MOVED_PERMANENTLY) || <br /><br />            (statuscode == HttpStatus.SC_SEE_OTHER) || <br /><br />(statuscode == HttpStatus.SC_TEMPORARY_REDIRECT)) { <br /><br />//读取新的URL地址 <br /><br />            Header header = post.getResponseHeader("location"); <br /><br />            if (header != null) { <br /><br />                String newuri = header.getValue(); <br /><br />                if ((newuri == null) || (newuri.equals(""))) <br /><br />                    newuri = "/"; <br /><br />                GetMethod redirect = new GetMethod(newuri); <br /><br />                client.executeMethod(redirect); <br /><br />                System.out.println("Redirect:"+ redirect.getStatusLine().toString()); <br /><br />                redirect.releaseConnection(); <br /><br />            } else <br /><br />                System.out.println("Invalid redirect"); <br /><br />        } <br /><br />我们可以自行编写两个JSP页面，其中一个页面用response.sendRedirect方法重定向到另外一个页面用来测试上面的例子。 <br /><br />4． 模拟输入用户名和口令进行登录 <br /><br />本小节应该说是HTTP客户端编程中最常碰见的问题，很多网站的内容都只是对注册用户可见的，这种情况下就必须要求使用正确的用户名和口令登录成功后，方可浏览到想要的页面。因为HTTP协议是无状态的，也就是连接的有效期只限于当前请求，请求内容结束后连接就关闭了。在这种情况下为了保存用户的登录信息必须使用到Cookie机制。以JSP/Servlet为例，当浏览器请求一个JSP或者是Servlet的页面时，应用服务器会返回一个参数，名为jsessionid（因不同应用服务器而异），值是一个较长的唯一字符串的Cookie，这个字符串值也就是当前访问该站点的会话标识。浏览器在每访问该站点的其他页面时候都要带上jsessionid这样的Cookie信息，应用服务器根据读取这个会话标识来获取对应的会话信息。 <br /><br />对于需要用户登录的网站，一般在用户登录成功后会将用户资料保存在服务器的会话中，这样当访问到其他的页面时候，应用服务器根据浏览器送上的Cookie中读取当前请求对应的会话标识以获得对应的会话信息，然后就可以判断用户资料是否存在于会话信息中，如果存在则允许访问页面，否则跳转到登录页面中要求用户输入帐号和口令进行登录。这就是一般使用JSP开发网站在处理用户登录的比较通用的方法。 <br /><br />这样一来，对于HTTP的客户端来讲，如果要访问一个受保护的页面时就必须模拟浏览器所做的工作，首先就是请求登录页面，然后读取Cookie值；再次请求登录页面并加入登录页所需的每个参数；最后就是请求最终所需的页面。当然在除第一次请求外其他的请求都需要附带上 Cookie信息以便服务器能判断当前请求是否已经通过验证。说了这么多，可是如果你使用httpclient的话，你甚至连一行代码都无需增加，你只需要先传递登录信息执行登录过程，然后直接访问想要的页面，跟访问一个普通的页面没有任何区别，因为类HttpClient已经帮你做了所有该做的事情了，太棒了！下面的例子实现了这样一个访问的过程。 <br /><br />/* <br /><br /> * Created on 2003-12-7 by Liudong <br /><br /> */ <br /><br />package http.demo; <br /><br />import org.apache.commons.httpclient.*; <br /><br />import org.apache.commons.httpclient.cookie.*; <br /><br />import org.apache.commons.httpclient.methods.*; <br /><br />/** <br /><br /> * 用来演示登录表单的示例 <br /><br /> * @author Liudong <br /><br /> */ <br /><br />public class FormLoginDemo { <br /><br />    static final String LOGON_SITE = "localhost"; <br /><br />    static final int    LOGON_PORT = 8080; <br /><br />    public static void main(String[] args) throws Exception{ <br /><br />        HttpClient client = new HttpClient(); <br /><br />        client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT); <br /><br />       //模拟登录页面login.jsp->main.jsp <br /><br />        PostMethod post = new PostMethod("/main.jsp"); <br /><br />        NameValuePair name = new NameValuePair("name", "ld");     <br /><br />        NameValuePair pass = new NameValuePair("password", "ld");     <br /><br />        post.setRequestBody(new NameValuePair[]{name,pass}); <br /><br />       int status = client.executeMethod(post); <br /><br />        System.out.println(post.getResponseBodyAsString()); <br /><br />        post.releaseConnection();  <br /><br />       //查看cookie信息 <br /><br />        CookieSpec cookiespec = CookiePolicy.getDefaultSpec(); <br /><br />        Cookie[] cookies = cookiespec.match(LOGON_SITE, LOGON_PORT, "/", false, client.getState().getCookies()); <br /><br />       if (cookies.length == 0) { <br /><br />           System.out.println("None");    <br /><br />       } else { <br /><br />           for (int i = 0; i &lt; cookies.length; i++) { <br /><br />               System.out.println(cookies[i].toString());    <br /><br />           } <br /><br />       } <br /><br />       //访问所需的页面main2.jsp <br /><br />        GetMethod get = new GetMethod("/main2.jsp"); <br /><br />        client.executeMethod(get); <br /><br />        System.out.println(get.getResponseBodyAsString()); <br /><br />        get.releaseConnection(); <br /><br />    } <br /><br />} <br /><br />5． 提交XML格式参数 <br /><br />提交XML格式的参数很简单，仅仅是一个提交时候的ContentType问题，下面的例子演示从文件文件中读取XML信息并提交给服务器的过程，该过程可以用来测试Web服务。 <br /><br />import java.io.File; <br /><br />import java.io.FileInputStream; <br /><br />import org.apache.commons.httpclient.HttpClient; <br /><br />import org.apache.commons.httpclient.methods.EntityEnclosingMethod; <br /><br />import org.apache.commons.httpclient.methods.PostMethod; <br /><br />/** <br /><br /> * 用来演示提交XML格式数据的例子 <br /><br /> */ <br /><br />public class PostXMLClient { <br /><br />    public static void main(String[] args) throws Exception { <br /><br />        File input = new File(“test.xml”); <br /><br />        PostMethod post = new PostMethod(“http://localhost:8080/httpclient/xml.jsp”); <br /><br />        // 设置请求的内容直接从文件中读取 <br /><br />        post.setRequestBody(new FileInputStream(input)); <br /><br />        if (input.length() &lt; Integer.MAX_VALUE) <br /><br />            post.setRequestContentLength(input.length()); <br /><br />        else            <br /><br />post.setRequestContentLength(EntityEnclosingMethod.CONTENT_LENGTH_CHUNKED);<br /><br />        // 指定请求内容的类型 <br /><br />        post.setRequestHeader("Content-type", "text/xml; charset=GBK"); <br /><br />        HttpClient httpclient = new HttpClient(); <br /><br />        int result = httpclient.executeMethod(post); <br /><br />        System.out.println("Response status code: " + result); <br /><br />        System.out.println("Response body: "); <br /><br />        System.out.println(post.getResponseBodyAsString()); <br /><br />        post.releaseConnection(); <br /><br />    } <br /><br />} <br /><br />6． 通过HTTP上传文件 <br /><br />httpclient使用了单独的一个HttpMethod子类来处理文件的上传，这个类就是MultipartPostMethod，该类已经封装了文件上传的细节，我们要做的仅仅是告诉它我们要上传文件的全路径即可，下面的代码片段演示如何使用这个类。 <br /><br />MultipartPostMethod filePost = new MultipartPostMethod(targetURL); <br /><br />filePost.addParameter("fileName", targetFilePath); <br /><br />HttpClient client = new HttpClient(); <br /><br />//由于要上传的文件可能比较大,因此在此设置最大的连接超时时间 <br /><br />client.getHttpConnectionManager().getParams().setConnectionTimeout(5000); <br /><br />int status = client.executeMethod(filePost); <br /><br />上面代码中，targetFilePath即为要上传的文件所在的路径。 <br /><br />7． 访问启用认证的页面 <br /><br />我们经常会碰到这样的页面，当访问它的时候会弹出一个浏览器的对话框要求输入用户名和密码后方可，这种用户认证的方式不同于我们在前面介绍的基于表单的用户身份验证。这是HTTP的认证策略，httpclient支持三种认证方式包括：基本、摘要以及NTLM认证。其中基本认证最简单、通用但也最不安全；摘要认证是在HTTP 1.1中加入的认证方式，而NTLM则是微软公司定义的而不是通用的规范，最新版本的NTLM是比摘要认证还要安全的一种方式。 <br /><br />下面例子是从httpclient的CVS服务器中下载的，它简单演示如何访问一个认证保护的页面： <br /><br />import org.apache.commons.httpclient.HttpClient; <br /><br />import org.apache.commons.httpclient.UsernamePasswordCredentials; <br /><br />import org.apache.commons.httpclient.methods.GetMethod; <br /><br />public class BasicAuthenticationExample { <br /><br />    public BasicAuthenticationExample() { <br /><br />    } <br /><br />    public static void main(String[] args) throws Exception { <br /><br />        HttpClient client = new HttpClient(); <br /><br />        client.getState().setCredentials( <br /><br />            "www.verisign.com", <br /><br />            "realm", <br /><br />            new UsernamePasswordCredentials("username", "password") <br /><br />        ); <br /><br />        GetMethod get = new GetMethod("https://www.verisign.com/products/index.html"); <br /><br />        get.setDoAuthentication( true ); <br /><br />        int status = client.executeMethod( get ); <br /><br />        System.out.println(status+""+ get.getResponseBodyAsString()); <br /><br />        get.releaseConnection(); <br /><br />    } <br /><br />} <br /><br />8． 多线程模式下使用httpclient <br /><br />多线程同时访问httpclient，例如同时从一个站点上下载多个文件。对于同一个HttpConnection 同一个时间只能有一个线程访问，为了保证多线程工作环境下不产生冲突，httpclient使用了一个多线程连接管理器的类： MultiThreadedHttpConnectionManager，要使用这个类很简单，只需要在构造HttpClient实例的时候传入即可，代码如下： <br /><br />MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();<br />HttpClient client = new HttpClient(connectionManager);
          <br/>
          <span style="color:red;">
            <a href="http://playfish.javaeye.com/blog/171221#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 14 Mar 2008 09:06:54 +0800</pubDate>
        <link>http://playfish.javaeye.com/blog/171221</link>
        <guid>http://playfish.javaeye.com/blog/171221</guid>
      </item>
      <item>
        <title>出售/代做计算机系毕业设计。。。欲定从速。。。</title>
        <author>playfish</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://playfish.javaeye.com">playfish</a>&nbsp;
          链接：<a href="http://playfish.javaeye.com/blog/164969" style="color:red;">http://playfish.javaeye.com/blog/164969</a>&nbsp;
          发表时间: 2008年02月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          出售/代作计算机系毕业设计，采用技术包括java,php,javascript,css,mysql。<br /><br />本人计算机系大四学生，在校期内做过多个项目。<span style="color: red">大三下时候已经做过多个毕业设计</span>。目前在一家软件公司实习。现在代作各类java，j2ee的毕业设计以及javascript，div+css的网站设计。<br /><br />本人完全自己开发，绝对不是网络上那种1，2百的很随便的破烂一样的东西。由于是自己开发，所以时间精力有限，不会接太多的单子，所以欲定从速。<br />价格方面，一般看命题大小与规格要求。程序500RMB起，论文200RMB起。少于这个价格勿扰，谢谢。<br />可提供的参考命题：<br /><br />新农村信息化系统<br />网页爬虫<br />CRM客户关系管理系统<br />网页抓取,信息采集<br />java midi播放器<br />java 加密<br />博客系统<br /><br />教室选排课系统,<br />基于角色的权限控制系统RBAC<br />java mail系统<br />网上考试系统,<br />同学录系统,<br />考勤管理,<br /><br />仓库管理系统,<br />网上招聘管理系统,<br />办公自动化系统,<br />宿舍管理系统,<br />教材管理,       <br />图书管理系统<br /><br />联系方式：<br />QQ：31697555<br />Email:playfish@163.com<br />MSN:playfish@163.com<br />手机:13799362408.（只收短信，未知来电不接）<br /><br />＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝<br />目前已经有几个成品，可以直接购买。注意.net的不会。VC，C,C++的不会。。如果确实是急需的，也可以联系我，我可以帮你联系我的其他同学。
          <br/>
          <span style="color:red;">
            <a href="http://playfish.javaeye.com/blog/164969#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 26 Feb 2008 09:22:42 +0800</pubDate>
        <link>http://playfish.javaeye.com/blog/164969</link>
        <guid>http://playfish.javaeye.com/blog/164969</guid>
      </item>
      <item>
        <title>IE下ZOOM属性导致的渲染问题</title>
        <author>playfish</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://playfish.javaeye.com">playfish</a>&nbsp;
          链接：<a href="http://playfish.javaeye.com/blog/164080" style="color:red;">http://playfish.javaeye.com/blog/164080</a>&nbsp;
          发表时间: 2008年02月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          昨天做页面的时候，修改liferay的jedi主题，发现了jedi主题一个很严重的问题，<br />在IE下，portlet的标题栏很多都消失了，看来又是哪个地方渲染有问题了。<br />采用注释法，将custom.css里面一段一段注释掉。最终找到了问题的关键所在。哈哈，就是<br />.ie .portlet{zoom:1}这个属性导致了IE渲染的问题。具体原因不清楚，但是去除这个属性后回复正常，不知道去掉这个属性会带来什么问题。
          <br/>
          <span style="color:red;">
            <a href="http://playfish.javaeye.com/blog/164080#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/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><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 22 Feb 2008 09:12:39 +0800</pubDate>
        <link>http://playfish.javaeye.com/blog/164080</link>
        <guid>http://playfish.javaeye.com/blog/164080</guid>
      </item>
      <item>
        <title>Web2.0网站性能调优实践</title>
        <author>playfish</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://playfish.javaeye.com">playfish</a>&nbsp;
          链接：<a href="http://playfish.javaeye.com/blog/161365" style="color:red;">http://playfish.javaeye.com/blog/161365</a>&nbsp;
          发表时间: 2008年02月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          当前web2.0革命风起云涌，web2.0强调服务，而服务最基本的要求是速度快和稳定，离开这两个谈功能强大和易用性都没有任何意义。本文介绍一些关于笔者运营一个web2.0网站的优化心得和经验，希望能够和大家共同探讨。<br /><br />Web2.0网站不同于以往以静态信息为主的网站架构，以往的结构大体分为2层，一个是客户端浏览器，一个就是web服务器；而web2.0以动态和交互为主，一般是3层或者4层，在静态信息网站的结构上的web服务器后端会增加应用服务器和数据库。一般会把浏览器和web服务器归为最上一层即为 web层，应用服务器为中间一层，数据库为最底层。从优化角度来讲，越上层优化获得益处越大，优化也是从上自下而来。<br /><br />Web层优化<br /><br />DNS的解析时间<br /><br />这个时间就是在用户第一次访问网站的时候产生，解析时间会影响用户的访问感受，因此想要网站响应速度快，第一就是不要在DNS解析上产生问题。另外DNS 的TTL时间也要考量，IE的DNS过期时间是30分钟，TTL设置的比这个长一点就可以。另外在web服务器上使用keep-live也会减少DNS查询次数。<br /><br />降低浏览器发起请求的数量<br /><br />尽量降低浏览器发起请求的数量，就是说尽量能够让浏览器缓存任何可以缓存的东西。这样当用户访问过一次后，第二次访问可能会使得发起的请求数趋近1或者等于1，如果是静态的页面则可能是0。方法包括：<br /><br />把所有的样式表文件并为1个<br /><br />把所有的js文件并成1个<br /><br />图片尽量能够合成1张，这个跟以前不一样，现在大多数是adsl上网，反而是大量的零碎图片能够影响速度<br /><br />页面布局与样式<br /><br />页面采用xhtml，采用div+css布局，而把样式表和xhtml文件分开，一则能够降低xhtml文件大小，二则能够对样式表文件进行其他缓存处理。这里还有个ui设计的原则，ui跟系统结构一样，越简洁越好，这样整体页面代码会比较少，速度也会比较不错。<br /><br />JavaScript文件<br /><br />JavaScript文件也最好放到html文件外，原因同上。<br /><br />静态文件的优化方法<br /><br />a)目前大多数的浏览器都支持gzip压缩文件，因此为文本、静态页面、样式表、JavaScript文件等可以压缩处理的文件进行压缩处理能够减少内容获取时间，一般压缩完的大小为原大小的10-30%。这个在apache等web服务器上进行设置，笔者使用lighttpd的设置为：<br /><br />server.modules = (<br /><br />     ….<br /><br />     "mod_compress",<br /><br />     …<br /><br />)<br /><br />compress.cache-dir="/usr/local/lighttpd/cache"<br /><br />compress.filetype = ("text/plain", "text/html", "text/css", "text/javascript")<br /><br />b)还可以在静态文件服务器前面增加缓存服务器比如squid，进一步增强客户端的访问性能。如果有好的财力，还可以使用一些商业的CDN加速服务。<br /><br />应用Cookie的注意事项<br /><br />Cookie的应用要注意，要限制cookie的应用域和应用的目录以及过期时间。不然如果用户是第一次访问的话，可能连一个小小的静态图片都要发送 cookie到服务器，这样增加了通信负载。另外要限制cookie的大小，一个3k的cookie能够增加延迟达到80ms。<br /><br />提高页面速度<br /><br />页面由2-4个不同域名的服务器提供服务能够提高速度，这个国外也有研究证明。比如主html文件由app.domain.com提供，样式表由 style.domain.com提供，图片等由img.domain.com提供，这样浏览器可以同时从多个服务器下载文件，速度就能够上去。但是最好不要超过4个。<br /><br />样式表文件位置<br /><br />把样式表文件放在页面的&lt;head>，这样能够先读取。因为在ie中有个样式表的问题，样式表如果没有加载完会影响后面的html内容的页面显示，因此虽然html文件都已经在浏览器了，但是页面还是显示不出来。<br /><br />把JavaScript移到html文件末尾<br /><br />把JavaScript移到html文件末尾。为什么这么做呢，因为JavaScript处理的过程中会阻塞后面的页面显示，并且也会使得http请求也被阻止。笔者的网站就有过这样的例子，网站上放了一个合作方的JavaScript，结果每次访问时候感觉页面都停滞，用户体验特别差，后来让同事处理了一下，放到末尾等页面加载完了再显示在原有位置，一下子就好了。<br /><br />尽量避免跳转<br /><br />尽量避免跳转比如301和302。如果必须的话，对301和302的页面添加过期头。笔者原来的单点登录就需要进行跳转，后来改进了不需要跳转，整体的速度效果就出来了。<br /><br />移除重复的脚本<br /><br />要移除重复的脚本，ie会对重复的脚本发起重复的http请求，大多数网站在运营一段时间都有可能出现这个情况，笔者的网站中就经常有市场人员添加的重复的广告脚本。<br /><br />AJAX内容<br /><br />AJAX内容也是可以进行缓存的，同样可以压缩和缓存异步调用的xml、json等数据。<br /><br />对爬虫进行限制<br /><br />对爬虫进行限制，国内的一些爬虫非常厉害，并且不遵守robots规矩，经常有反应某某厉害爬虫把网站搞瘫的事件。怎么对爬虫进行限制呢，只能在web服务器上下功夫了，apache等服务器都能够进行限制，笔者的lighttpd限制10个并发的配置如下：<br /><br />evasive.max-conns-per-ip = 10<br /><br />web层的优化目的就是极大的利用了浏览器的缓存特性，从而达到几乎是本地访问的速度，下图是笔者访问douban.com首页的效果图对比：<br /><br />前一列数据是空的缓存所需要下载的文件大小和http请求数量，后面是真实访问的带cache的情况，效果特别明显。http请求减少了95%，内容cache了82%。<br /><br />应用程序层优化<br /><br />应用服务器的优化<br /><br />Php的可以采用一些优化手段比如Zend Optimizer、eAccelerator、MMCache、Zend Performance Suite等<br /><br />Java的可以采用一些性能强的jdk、应用服务器，对jdk参数进行优化等等<br /><br />使用ETag<br /><br />ETag就像版本控制服务器中的版本号一样，每次更新后的ETag是不一样的，而浏览器处理就类似版本服务器的客户端一样，先把版本号发到服务器请求。ETag的处理过程，先是Web服务器在响应的http头中发送ETag，比如这样：<br /><br />ETag: "1111-2222-3333"<br /><br />Last-Modified: Thu, 07 Oct 2007 15:20:18 GMT<br /><br />而浏览器如果再次请求该页面就会发送类似如下的头：<br /><br />If-None-Match: "1111-2222-3333"<br /><br />If-Modified-Since: Thu, 07 Oct 2007 15:20:18 GMT<br /><br />此时，如果该页面没有任何变更，则web服务器会响应一个304的头，并且不需要附带页面内容给浏览器（即不需要再动态生成页面内容），这样就大大减少了服务器的处理和网路通信负载。<br /><br />同步变异步<br /><br />同步变异步，在web2.0网站中经常有很复杂的处理，比如一个用户的注册还需要发邮件等操作，有时候可能还有其他的处理，这样用户的等待时间比较长，并且容易出现错误。此种情况下，把其他处理变成异步的，从而直接把页面尽快响应给用户。笔者的一个数据上传的程序也是如此处理，一大堆数据，上传时间可能就 1-2秒，而处理时间可能长的需要接近10秒（需要在数据库中进行上千次的插入操作），而在应用服务器容器内处理耗时则更长，笔者后来改成异步处理以后，用户满意度则大幅上升。<br /><br />使用缓存<br /><br />还是缓存，可能的情况下尽量使用缓存，毕竟现在内存非常便宜，用空间换取时间效率应该是非常划算的。尤其是对耗时比较长的、需要建立网络链接的，方法：采用memcached进行数据库或者常用数据的缓存；应用数据库缓冲池减少建立数据库连接的时间<br /><br />采用gzip压缩动态页面<br /><br />可能情况下，也可以采用gzip压缩动态页面。如果服务器较多，cpu负载不高，则可以考虑对动态页面增加gzip压缩功能<br /><br />集群处理<br /><br />访问压力大的时候，对应用服务器采用集群处理。<br /><br />应用服务器的优化主要是减少程序处理的时间，提高运行效率。<br /><br />数据库优化<br /><br />这个议题跟具体数据库关系比较大，议题也比较广泛，笔者就只简要列举一下：<br /><br />设置专门的DBA，专门负责数据库的安装、优化；对sql进行优化采用数据库集群和复制功能分担数据库压力。<br /><br />其他优化措施<br /><br />网站的优化涉及的方面比较多，其他方面涉及的还包括网站架构、操作系统、服务器硬件、网络设备、isp机房网络等等的调优。<br /><br />工具<br /><br />笔者用到的工具，都是firefox插件，所以firefox是必备的了：<br /><br />1、LiveHTTPHeaders (http://livehttpheaders.mozdev.org/)<br /><br />2、Firebug (http://getfirebug.com)<br /><br />3、YSlow (http://developer.yahoo.com/yslow/)，要先装Firebug<br /><br />4、Web Developer (http://chrispederick.com/work/web-developer/)<br /><br />除了这些免费的工具外，还可以采用一些商业的网站性能监测服务。一般网站性能监测服务商都会在不同的isp设置数据采集点，然后会定期模拟浏览器的访问对网站进行访问获取各种数据，比如dsn查询时间、第一个包获取时间、整个页面加载时间等等，然后汇总到数据中心。数据中心则可以产生性能报表、不同时间的可访问率、哪个isp容易出问题、发出警报等等。如果预算足够的话，可以采用这个服务。国外的有keynote、ip-label等，功能比较齐全，但是服务费用比较贵而且国内的点比较少。国内近些年也开始涌现出一些厂商，比如基调网络。笔者使用的监测系统的图例：<br /><br />笔者网站3年不同阶段的优化过程<br /><br />优化的原则是尽量不去优化，在未发生性能问题的时候，没有必要去专门考虑细节的性能问题，当然大的结构应该是能够适应网站不断发展变化的。笔者的网站近3年的优化过程如下：<br /><br />1、开发完成，刚上线的时候，不做优化，用户量少，用了3台服务器。<br /><br />2、10万用户的时候，主要对sql进行了优化，还是3台服务器。<br /><br />3、10万用户到100万的过程中，采用了AJAX等，因此开始关注JavaScript的优化手段，访问量也快速上去，因此对静态文件进行分离并优化。服务器也进行了扩展，扩展到5台服务器。<br /><br />4、100万-200万用户，业务系统增加了很多，因此数据库采用了复制，程序方面应用了各种缓存处理，在数据库和程序之间增加了memcached进行数据缓存。<br /><br />5、在200万用户以上，主要在程序架构上做文章，对某些服务使用了集群。另外为了监测国内不同城市、isp的网络状况，使用了商业化的网站性能监测服务。<br /><br />影响SEO的页面制作细节<br /><br />2007年03月01日星期四下午 02:41<br /><br />1、将css与javascript全部用下边的方法分离到外部文件中去。<br /><br />&lt;link rel="stylesheet" type="text/css" href="css/style.css" media="all"/><br /><br />&lt;script type="text/javascript" src="include/common.js">&lt;/script><br /><br />让html代码最大可能的只是用来显示实际内容。<br /><br />2、采用xhtml代码编写页面，抛弃传统Table布局模式，去掉页面中的例如font/bgcolor等格式化控制标签。用符合web标准的代码来制作页面。这样能够让xhtml代码结构化、语义化。提高页面代码的可读性。<br /><br />3、采用了上边的方法你会发现你的html代码会变得非常小，当然如果可以的话。让它变得更小。太大的页面会影响搜索引擎的处理速度。一般通过xhtml+css设计的网页，html代码应该可以控制在50K以内。大家可以去看一下用web标准重构得比较好的网站。<br /><br />4、用好图片的alt标签，合理的使用页面关键字去描述图片，这样能增加页面的关键字密度。<br /><br />5、尽可能少地使用javascript来做与内容相关的事情，例如用document.write去显示正文。这样会影响搜索引擎对页面内容的搜索。<br /><br />6、千万不要去javascript来实现你网站的导航。那样会让搜索引擎迷失方向。<br /><br />7、每个页面的关键字尽可能出现在页面的标题，也就是头部的Title标签中。当然，要合理应用，太要太长，更别用大量与页面内容无关的网络热门关键字。因为那就不是优化而是在作弊。<br /><br />8、尽量在每个页面代码中合理使用&lt;h1>&lt;h2>等标签并让你的关键字出现在&lt;h1>标签中，让页面的文档结构更清晰。<br /><br />我是做网页制作的，所以SEO的诸多专业技术及算法我都不是非常了解。如果您想了解更多关于这方法的知识，建议您访问一些国内知名的SEO优化类的网站，比如点石互动等。在那里你能查阅到很多关于“反向链接”、“页面PR值”等专业知识。这里只是将我在页面制作的过程中涉及到的一些细节问题拿出来和大家探讨一下。由此也可以说明为什么基于web标准设计的网站会更有利于SEO了。<br /><br />如果您不打算花钱去请专业的SEOer来为您的网站做优化，那么可以让页面制作人员在制作上注意一些细节。相信这样免费的一些细节也能达到一个比较好的效果。
          <br/>
          <span style="color:red;">
            <a href="http://playfish.javaeye.com/blog/161365#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 04 Feb 2008 10:15:26 +0800</pubDate>
        <link>http://playfish.javaeye.com/blog/161365</link>
        <guid>http://playfish.javaeye.com/blog/161365</guid>
      </item>
      <item>
        <title>三大搜索引擎搜索代码所有参数详解</title>
        <author>playfish</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://playfish.javaeye.com">playfish</a>&nbsp;
          链接：<a href="http://playfish.javaeye.com/blog/158855" style="color:red;">http://playfish.javaeye.com/blog/158855</a>&nbsp;
          发表时间: 2008年01月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          先说谷歌的，<br />q--查询的关键词(Query)，百度对应的参数为wd<br />hl--Google搜索的界面语言(Interface Language)<br />hl=zh-CN简体中文语言界面，我们用的Google中文就是这个参数。<br />hl=zh-TW繁体中文语言界面，港台地区常使用<br />hl=en 英文语言界面<br /><br />start--显示结果的页数,百度对应的参数为pn<br /><br />lr--搜索内容的语言限定(Language Restrict),限定只搜索某种语言的网页。如果lr参数为空，则为搜索所有网页。<br />常用的有：<br />lr=lang_zh-CN只搜索简体中文网页<br />lr=lang_zh-TW只搜索繁体中文网页<br />lr=lang_zh-CN|lang_zh-TW搜索所有中文网页<br />lr=lang_en只搜索英文网页<br />ie--查询输入文字的编码(Input Encoding),Google缺省设置ie=utf-8,即请求Google搜索时参数q的值是一段utf-8编码的文字，如果要直接使用中文，可以设置ie=gb2312,即为简体中文编码<br />oe--搜索返回页面的编码(Output Encoding),Google缺省设置oe=utf-8<br /><br />num--搜索结果显示条数(Number),取值范围在10--100条之间，缺省设置num=10,百度对应的参数为rn<br />newwindow--是否开启新窗口以显示查询结果。 缺省设置newwindow=1，在新窗口打开网页<br />safe--安全搜索选项(SafeSearch),设置该参数可以过滤成人内容， 缺省设置safe为空，即不过滤成人内容，设置为safe=vss，即过滤成人内容。这个参数真是让一些人欢喜，让一些人忧。<br />再说百度的<br />wd--查询的关键词(Keyword)<br />pn--显示结果的页数(Page Number)<br />cl--搜索类型(Class)，cl=3为网页搜索<br /><br />rn--搜索结果显示条数(Record Number),取值范围在10--100条之间，缺省设置rn=10<br />ie--查询输入文字的编码(Input Encoding),缺省设置ie=gb2312,即为简体中文<br />tn--提交搜索请求的来源站点<br />几个有用的tn<br />tn=baidulocal 表示百度站内搜索，返回的结果很干净，无广告干扰。比如，在百度站内搜索“快乐”，看看返回结果是不是很清爽。<br />tn=baiducnnic 想把百度放在框架中吗？试试这个参数就可以了，是百度为Cnnic定制的<br /><br />vs--在限定的域名中搜索,比如想在本站内搜索可使用参数si=www.flymoonblog.cn,要使这个参数有效必须结合ct参数一起使用<br />ct--此参数的值一般是一串数字，估计应该是搜索请求的验证码<br />bs--上一次搜索的关键词(Before Search)，估计与相关搜索有关<br />yahoo的代码相对要少得多<br />ei--查询输入文字的编码(Input Encoding),缺省设置ie=gb2312,即为简体中文<br />vs--在限定的域名中搜索,比如想在本站内搜索可使用参数si=www.flymoonblog.cn,在yahoo里面这个可以单独使用！<br />看懂了这些东西之后，你可以设计出更适合你网站的搜索代码，删掉无用代码，更加符合w3c的标准。让你的网站在各个浏览器下都能无BUG运行！
          <br/>
          <span style="color:red;">
            <a href="http://playfish.javaeye.com/blog/158855#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 23 Jan 2008 22:24:52 +0800</pubDate>
        <link>http://playfish.javaeye.com/blog/158855</link>
        <guid>http://playfish.javaeye.com/blog/158855</guid>
      </item>
      <item>
        <title>猫扑07最强回帖,,笑死人不偿命....</title>
        <author>playfish</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://playfish.javaeye.com">playfish</a>&nbsp;
          链接：<a href="http://playfish.javaeye.com/blog/151957" style="color:red;">http://playfish.javaeye.com/blog/151957</a>&nbsp;
          发表时间: 2007年12月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          07最强回帖,,笑死人不偿命....<br />1、楼主：都说正月剪头发死舅舅,,,,<br />MOP里有多少不怕舅舅挂的,,进来留个名!<br /><br />回复：<br />没必要剪<br />二月春风似剪刀~<br /><br />2、楼主：GF叫高兰，哪位高手用“我爱高兰”做个藏头诗，谢谢~~~<br /><br />回复：<br />我是个垃圾<br />爱去红灯区<br />搞了十几回<br />烂了小JJ<br />（藏头诗）<br /><br />3、楼主问：跟我的女朋友随着时间的推移，感情逐渐加深，在夏天的一个夜晚，我们终于忍受不住开始了更加深入的肌肤接触，可是还没等我进去，她就一直喊痛，看着她痛苦的样子，我实在是不忍心进行下去，在以后的时间里，我们又尝试了几次，她还是不行，这是怎么回事？我怎么的不明白，难道上天在冥冥之中告诉我什么吗？<br /><br />回复：食指戳开幸福路,口水滋润快乐花<br /><br />4、楼主发布世界最短的小说：<br />　　夜<br />男：“疼么？”<br />女：“嗯！”<br />男：“算了？”<br />女：“别！”<br /><br />回复:<br />一、《下面》一女人对一男人说：来我家吧，我下面给你吃。<br />二、《请客》男人对女人说：我请你吃饭吧？女人答：不了，改日吧。<br /><br />5、楼主问：几个月没和老婆ML了，今天做了他说没感觉，怎么办啊？<br /><br />回复：<br />很明显<br />这2个月里<br />她爱上了黄瓜<br /><br />6、楼主问：我朋友包皮过长 有害羞 怎么办<br /><br />回复：我认为楼主的根本原因不是包皮长 而是小JJ太短<br /><br />7、楼主诉述：有个同学在洗西红杮，我瞥了一眼逗mm说：“看，西红柿都比你的XX大。”mm当时就急了，非要拿一个西红柿过来比比看。<br />mm走到那哥们身边，媚眼如丝，“同学，请问你一个问题。”男生很诧异，很木然的点点头。mm说，“如果一个陌生人向你要西红柿吃，你会答应吗？”那男生怔了好一会儿，就忙把一个西红柿递过去，“哦，你吃吧，你吃吧。”mm就兴高采烈地回到宿舍，拉上窗帘比了一下，发现竟然是西红柿大一点点。我开心地不得了，mm委屈地说：“都怪那个色狼，为了讨好我竟然挑了一个最大的西红柿<br /><br />回复：楼主~如果下次进来一mm洗黄瓜。。。你不惨了？<br /><br />8、楼主：我和老婆最近吵架，一吵就闹了2个多月的冷战，中间一说几句话就不开心，也没见过面。但是我知道她肯定没和其他男人联系过~<br />今天我们约在外面见面~~然后不知道怎么回事，聊着聊着我们就回到以前谈恋爱时候的感觉了。老天也帮忙，突然下雨，我们就一起撑伞，亲近了许多，后来我送他回家~~<br />到了他家我就不放过机会~~把她搞上床~~<br />可是ML了没一会，他突然不肯做了，说没什么感觉~~不想做了~~我那是那个郁闷啊！！！<br />各位达人帮忙出出主意啊~<br /><br />回复：楼主大大离开的这段时间<br />楼主大大的老婆不甘寂寞<br />结识了许多能力超强的风流才子,譬如:<br />赵黄瓜,刘菠萝,孙西瓜,<br />欧阳茄子,夏侯梨,<br />司马椰子,令狐香蕉<br />当然会对你肖牙签冷漠啦<br /><br />9、楼主问：想问问各位姐妹，对于BF和前女友一起买的留下的东西，比如对戒，项链，手环一类的，是留着还是扔掉？<br />扔了实在是。。。。。。。。。。。。。挺贵的东西。。。。。。。。。。。。<br />不仍看着就闹心！<br /><br />回复：他的前男友你不也在用吗？<br /><br />10、楼主问：黑色保险套的真正用途是什么？<br /><br />回复：黑色TT确实是跟黑女人ML时用的，不过是先关了灯做<br />做完后开灯吓唬黑女人“呀，你掉颜色了！”<br /><br />11、楼主：多少人收藏了女朋友的第一次的落红？进来签名<br /><br /><br /><br />回复：<br />我没有收藏<br />我只记得一切都发生在那个原本我都觉得不起眼花坛里。。。<br />俗话说：落红不是无情物 化做春泥更护花。。。<br /><br />12、楼主泛酸：从高二模糊懂得一点爱情，一直到现在工作，也经历了不少乱七八糟的爱了吧.遇到一个一个女孩，当时总以为可以天长地久，可最后总是分手.究竟是什么，可以维持一段不变的感情？身边路过这许多人，谁最终是谁的谁呢？<br /><br />回复：大牌聊天总是那么晦涩,来点清爽的:它是她的他!<br /><br />13、楼主：求嵌"陈娇（男） 林燕(女)"四字的婚联.不胜感激!!!<br /><br /><br /><br />回复：<br />上联：陈年娇妻已出墙<br />下联：林中尽是分飞燕<br />横批：今世无缘<br /><br />14、楼主：为什么我每次尿尿都想用烟头烫龟头？各位老猫有过这样的冲动吗。。。<br />欢迎实践过的老猫 来交流下。<br />也欢迎心理医生。。。<br /><br />回复：楼主因被一肥丑女纠缠甚久，精神体力同时几近崩溃，唯有在公共男厕所中时稍得片刻安宁。<br />此时一手扶在墙上，狠狠啜了两口香烟，另一手解下裤子，对准便池准备尿，想到几月来的经历，突然一阵酸楚，顿时涕泪横流，小弟弟在下面流着尿泪，垂头丧气道：“大哥，不能这样下去了！请下手吧……”<br />事毕楼主信步出厕，菜花立刻挖着鼻屎迎上前来，楼主见状连忙火速褪下裤子，露出JJ头，只见上面烫了六点烟疤，楼主道：“贫僧已四大皆空，湿太请回吧。”<br /><br />15、楼主：生气的时候你们都怎么发泄的？<br /><br />回复：淫的一手好湿<br /><br />16、楼主：老婆做了小姐，我该怎么办<br /><br />回复：和谐社会,要想生活过的去,头上就得有点绿<br /><br /><br /><br />17、楼主：请问虎皮尖椒里的原料虎皮在哪能买到？<br /><br />回复：为了吃宫保鸡丁，不得不把左宫保抓过来割掉小鸡鸡，唉！口腹之欲真是罪过。<br />还有，为了吃东坡肉，不得不象6楼一样开时空隧道，虽然不是很麻烦的事情，但是为此损失了一代词人，还是让我觉得有点可惜。<br /><br />18、楼主：我某个朋友太不可理喻了，她告诉我说第一次用的时候以为不是粘在裤子上。。。。。所以自然她贴了个反的。<br />当时我很同情的问了句：撕下来时疼么？<br /><br />回复：从生理角度上来讲,<br />我个人认为撕下来时应该有若干根MM粘在WSJ上,<br />如果没有粘上MM,证明你的这个MM朋友是白虎.<br /><br />19、楼主：十二宫黄金圣斗士VS快乐男声十三强<br /><br />回复：还能这样，那杨二车不就成了雅典娜了<br /><br />20、楼主：我的老版空间进不去,到现在都没解决,而现在新版空间也是这样子,版面内容乱七八糟,怎么回事啊,都没人来解决的<br /><br />回复：可以进啊 你不要紧张 尽量放松<br /><br />21、楼主：谁知道仙人和仙人掌到底有什么关系啊?<br /><br />回复：<br />人 黄瓜<br />仙人 仙人掌<br /><br />22、楼主：一女同事多次暗示我，曾因我没反应不理我。我是一个传统观念很强的人，不想出墙，不愿背叛我妻子，又不想让女同事太伤心。<br />各位达人出出主意，我该怎么办？<br /><br />回复：约出来.开个双人房..然后你们一起手殖器官都包在身体内，它们的长相又一模一样，你怎么分辨龟公与龟母？<br />PS：将乌龟宰了之类的方法请不要好意思说出口……<br /><br />回复：把两个乌龟关在一间屋内1小时，龟壳朝下的是母的。<br /><br />35、楼主：为什么动物发情都在春天呢？<br /><br />回复：春天 = 三人日二人<br /><br />36、楼主：我公司的2个女同事其中一个穿粉色皮衣,她们两作班车时挨着,结果穿粉色皮衣的衣服被染色了,怎么办啊?是皮衣!<br /><br />回复：理论上来说 粉红色慢慢变黑的过程是不可逆的<br /><br />37、楼主：有些女人喜欢穿暴露的衣服的原因是什么？<br /><br />回复：理论上来说 是为了接受更多的日光照射<br />（注：隐晦）<br /><br />38、楼主：我儿子初三，正在中考。<br />夏天公司要求我们员工穿丝袜。<br />回到家，儿子喜欢坐我身边摸我穿丝袜的腿，难道他有性意识了吗？<br />我推了好多次都不管用。怎么办啊？他才14岁啊，我是不是太溺爱他了。<br /><br />回复：把你带有浓郁脚汗味的臭脚塞到你儿子嘴里.如果还不行,只有让你儿子塞你了.<br /><br />39、我的狗喜欢上猫怎么办？<br /><br />回复：从此抓耗子不再是多管闲事！<br /><br />40、楼主发照片：新人,你们看我帅么?<br /><br />回复：楼主好人,我终于有活下去的理由了<br /><br />41、楼主：我的择偶要求只能当二奶才能实现吗？<br /><br />回复：子日：没钱你不干，有钱不干你，滚蛋~<br /><br />42、楼主：知不知道人类为什么不能生活在水里？我想的话..<br />1:打屁会被看到(有泡泡)<br />2:大便会浮啊浮啊....说不定走在路上有个东东飘过去....<br />3:在陆地...流鼻血不会危害到他人...但..水里的话.说不定引来鲨鱼勒...<br />4:相机和灯泡都要设计成防水的..成本太高...<br /><br />回复：在正常生活中，ML时只需要克服的是身体向前做活塞运动的阻力，而在水中，因为水的密度大，身体做活塞运动时，需要克服的不光是水的阻力，而且还要克服水流带来的不平衡冲力。<br />重要的是，当时的情趣没有了，大家都不希望在水里ML时，听不见女人的叫床声，取而待之的是从女人嘴里出来一串串气泡，或者女人和海豚一样翁嗡声。<br />而且精精在水中不仅存活时间长，而且可以自由游动，让它到处乱游可不是什么好事<br /><br />43、楼主：老人遛狗时倒地猝死 小狗护主不许民警靠近<br /><br />回复：人的悲哀不在于不如狗，而是认为自己比狗强很多！<br /><br />44、楼主：所谓的“红杏教”暗流涌动。基本教义就是，拿古诗或词来和“一枝红杏出墙来”搭配。最初只是某i自习时的无心之失，“两岸猿声啼不住，一枝红杏出墙来”，然后最近几天被疯狂的推广。摘录几个比较强的：<br />　　至今思项羽，红杏出墙来;桃花潭水深千尺，一枝红杏出墙来;大江东去浪淘尽，一枝红杏，出墙来。<br /><br />回复：问世间情为何物，直教人红杏出墙<br /><br />45、楼主：周杰伦评什么和肖邦比，本来对周结论没什么意见的，他写歌就写吧，为什么偏偏给专辑取个《十一月的肖邦》这个名字。于是开始BS他。<br />肖邦是谁？波兰最伟大的作曲家、钢琴家，名满世界。喜欢听钢琴曲的谁不知道他，广为音乐爱好者熟知。<br />希望周结论再不要侮辱我们心中伟大的音乐家了。<br /><br />回复：特大消息：<br />周杰伦原定于十一月发行的新专辑《十一月的肖邦》特改名为：<br />《十一月的楼主》<br /><br />46、楼主：小猫一直不解.２个著名球星　到底是迈克尔厉害还是乔丹厉害？<br /><br />回复1：我觉的迈克尔厉害，因为人们在说他俩的时候都说迈克尔.乔丹，迈克尔排前面，所以迈克尔厉害！<br />回复2：应该是迈克儿厉害，因为迈克儿是三个字，而乔丹只有两个字<br />回复3：我觉得是乔丹，你看他又打篮球，又拍3X片，还有一支F1车队...<br /><br />47、楼主：我被蜘蛛咬了，会不会变成蜘蛛侠啊<br /><br />回复1：被黑人咬了一口 会不会变成黑侠啊?<br />回复2：我被雷霹过，现在是闪电侠~~~<br />回复3：弱弱的问一句。。。我也被电劈过。。。为虾米变成沈殿霞<br /><br />48、楼主：我见到鬼后说的一句话....鬼都无语了<br />某天深夜，偶起来上厕所，见一透明状东西左忽右闪~<br />吾问：你是鬼？<br />鬼曰：恩那<br />吾：QQ号多少？<br />鬼：.....<br /><br />回复：某天深夜，偶起来上厕所，见一透明状东西左忽右闪~<br />吾问：你是鬼？<br />鬼曰：恩那<br />吾：变个大便让我看看<br />鬼：.....<br /><br />49、楼主：想开一家精神病院，急召八个字的广告词<br />选中后我会表示真诚感谢的。如果将来赚钱了，算你股份啊！<br /><br />回复1：全国统招，宽进严出。<br />回复2：凡来者送月球土地<br /><br />50、楼主：大家放A片的文件夹叫什么名字？<br /><br />回复1：英语听力<br />回复2：动物世界-原始的本能<br />回复3：过把瘾剧场，这是我在我男朋友电脑里不小心看到的,哈哈<br />回复4：记得有一个哥们是叫“摇杆驱动程序”，那一个才叫强！<br /><br />51、楼主：气愤！你们这些无知的非处女，都给我去死吧！<br />女孩子们，你们知道爱人心中什么是世界上最脏的东西吗？<br />这个东西就是你的前男友在你身体里留下的精液了..<br />BS不爱带TT的<br /><br />52、楼主：看现代女孩择偶观：宁可坐在奔驰里哭，也不坐在自行车上笑。<br /><br />回复：奔驰的车子？我以为不过如此，有爱情，千万富翁也嫁，没有的话，乞丐也可以不要。<br /><br />53、楼主：据说世界杯分组抽签出来了,中国队分在哪个组啊? 希望达人告诉我一声.<br />哥斯达黎加和特立尼达和多巴哥那么强,千万不要和他们分在一组啊,如果那样,那可是死亡之组啊,出线就有点困难了!<br /><br />回复1：应该在C组吧，因为中国的英文好像是C开头的。<br />回复2：Z组，同组的有：火星队，亚利那亚星球队和北极星队<br />回复3：你们懂不懂足球？中国那么强还分组？他们32强踢出个冠军，才能和中国挑战！争夺谁打的鸟多奖<br /><br />54、楼主：女朋友长的丑，带出去有压力，苦恼！<br /><br />回复：LZ,你女友也是这样想你的<br /><br />55、楼主：我已经一年滴食未进了，还是活的好好的！MOP的网友，你们落后了，难道你们不觉得每天还要吃三餐很麻烦吗，我现在每天只需晒这么10几分钟太阳就几天都精力旺盛了。哎，你们真是一群凡夫俗子。<br /><br />回复：植物都会打字.汗!!!<br /><br />56、楼主：当你晚上一觉醒来,发现身边躺着的是一丝不挂的贝克汉姆,你会怎么办?<br /><br />回复：怎么可能?那昨晚我上的是谁呢?分明是个女滴~~~~~汗~~~~~<br /><br />57、楼主：我是非处女，但我并不比你卑贱<br /><br />回复：那句话怎么说来着?<br />我可以接受你在流氓的身体下面拼死反抗,也不愿承受你在别的男人身下飘飘欲仙.<br />我想说的是,男人在乎的,不是那层膜，你们女人,永远不懂.<br /><br />58、楼主：说我帅的悬赏100mp大家快顶！<br /><br />回复：我不会为了100MP出卖我的灵魂的~<br /><br />59、楼主：作为女人，我不欣赏好男人。总是看到mop上很多人说我们女人恋爱的时候找坏男人，被甩了才会后悔莫及的去找好男人。其实我们女人不会后悔的，享受了精彩绚烂的生活之后回归平淡这是很自然的，如果一开始就和平庸的男人在一起才会给自己的生活留下遗憾，那样才叫后悔莫及。<br /><br />回复1：楼主啊，我很怀疑你有没有见过真正的好男人，和坏到家的坏男人<br />回复2：楼主只是想在能找到饭票的前提下，尽可能的去挥发内心的Y D。<br /><br />60、楼主：今天买了个沙爹牛肉方便面,里面真的有牛肉啊!!! 怎么办!<br /><br />回复1：今天买了一盒芙蓉王，里面真的有芙蓉姐姐啊！怎么会这样，真的好恶心啊。<br />回复2：今天买了一包方便面，打开一看，里面真的有面啊，怎么办。。我好高兴啊<br /><br />61、楼主：过年想换一台DVD,最好是又能放DVD，又可以放VCD的，请各位一下哈！<br /><br />回复1：过年想换一台手机,最好是又能打电话的，又可以发短信的，请各位一下哈！<br />回复2：过年想换一个工作,最好是又能上班，又可以下班，请各位一下哈<br /><br />62、楼主：震惊月薪只有区区几百美圆的工作，竟然真的有人愿意去做！<br /><br />回复：昨日有暴雨，精神病院院墙因年久失修，被雨水冲塌，事后发现逃走一人，望各方人士帮助寻找！PS：此人习惯性将美金当作日元<br /><br />63、楼主：有达人能做一份关于微波炉烤鞋垫的可行型报告吗？<br />鞋垫湿了，能用微波炉烤吗？<br /><br />回复1：下回你在热馒头的时候　馒头还会有咸鱼味呢<br />回复2：洗衣机可以洗碗，微波炉就可以烤鞋垫<br />回复3：火候很重要的:<br />喜欢海苔味调至4档<br />喜欢烤饼味调至3档<br />喜欢豆豉味调至2档<br />喜欢臭豆腐味调至1档.<br />喜欢原味的其实不用烤`沾点醋就可以了.<br /><br />64、楼主：本人素女小猫~昨天第一次看A片,有感~先开始还好拉，看到个女人搔首弄姿的，再看下去，小猫就差点崩溃了~窥XX处、自摸、还有群P....小猫忍着恶心把片片看完，然后直接冲进洗手间干呕了N次，吓坏了偶妈眯~接着赶紧把PP卸了，文件全部删除....<br /><br />回复：生平不识武藤兰，纵称英雄也枉然～～～～～～～～<br /><br />65、楼主：求购 2手波音747飞机 有货者请回贴！<br /><br />回复：只卖A380真不好意思啊，可惜了 大客户<br /><br />66、楼主：昨天的PP被骂做的吓人,今天发视频截图可以了8.!!!<br /><br /><br /><br />回复：LZ求你了,昨天看见了你,今天又看见了你,让哥好好吃口饭行不,饿了两天了.<br /><br />67、楼主：猫扑里没我漂亮的女人都给我滚回去喝奶！<br /><br />回复：LZ好毒，以后猫扑里的MM都不能喝奶了。算你狠！<br /><br />68、楼主：有哪位兄弟用过新近上市的杜蕾丝耐力装，效果咋样丫？用过的来说道说道吧。看到要93元RMB/12个，平均要7.75元RMB/个，好贵啊！如果真能延长个三十来分钟我就拼了。<br /><br />回复：国产的我带五个，保证不会破，也耐久<br /><br />69、楼主：小时候问妈妈我是从哪里来得？妈妈这样回答“有一天我和你爸爸去爬山，<br />在山上拣了一直小猪（我属猪）<br />于是就抱回家放在被窝里暖～<br />暖着暖着就把你孵出来了。”<br />结果我小时候一直以为我是猪变地......<br />大家小时候问过这样地问题么？妈妈是怎么回答地呢？<br /><br />回复：当年黄蓉跟郭靖说，黄药师说她是从石头缝里蹦出来的，其实，每个人都是一样，是从肉缝里蹦出来的<br /><br />70、楼主：我太残忍了，居然吃了~~~~~~呜呜。。。<br />前几天在武汉出差，见到了传说中的醉虾！！！<br />兴奋至极，但不敢下口，经同事几经演示加诱惑，最终吃了下去，感觉~！~~~！~~~确实味道鲜美至极！！！<br />便拍照为念！！！<br /><br />回复：搞什么啊。这种事情也放上来说．还以为你吃大便了。坚持不匿名<br /><br /><br /><br />71、楼主：我是女滴，我要发我刚照的照片，艺术照，不喜无入！<br /><br />回复：如果你足够自信，我想贬低你一下－－女孩子天生才丽质，打扮水平不高的话要及时补课<br />如果你并不自信，我想鼓励你一下－－天生一个仙人洞，肯定有人探头来。<br /><br />72、照片帖：我和老婆，嘿嘿.........<br />他们都说我笑的很Y D，肯定是嫉妒我<br /><br />回复1：肯定是LZ的妹妹，楼主在这YY呢。中国人口已达13.0756亿，男女比是106：100，而LZ是那6个当中的<br />回复2：谁能证明这是你lp阿，除非有你们做夫妻间做的事的证据！！<br /><br />73、女友要在MIMI上刻字！我该怎么办？<br />我女友说刻字有个性，还让我提议刻什么字好。我巨寒！大家给点意见！<br /><br />回复1：左边：高脂，右边：无糖<br />回复2：奇尺大乳<br />回复3：＂团团＂和＂圆圆＂<br /><br />74、楼主：“无力回天”的上句是什么？<br /><br />回复：脸先着地，无力回天。---不幸的小仙女<br /><br />75、楼主：如果用你十年的寿命换取一个愿望，你会选择什么？<br /><br />回复：还我10年寿命<br /><br />76、楼主：漂亮姐姐教你切长长薄薄的黄瓜片（附送黄瓜素汤）<br /><br />回复1：黄瓜还是整根好用<br />回复2：原来女生还能这样用黄瓜<br />回复3：黄瓜二次利用~<br />回复4：期待LZ继续示范片切香蕉、茄瓜...<br /><br />77、楼主：新发现：微波炉竟然能给公交卡充值！！！<br />前几天我朋友来我家，进门顺手吧公交卡放微波炉旁边了，我一时心血来潮把卡放微波炉里微波了10秒钟，当时也没在意，下午一起坐车时朋友惊呼卡上多了将近10块钱，我一想可能是微波炉的作用，告诉他后我们又试了一次，多了6块多。。。。<br /><br />回复1：我试过了,真的可以啊.不过只能充普通储值卡,不能充月票卡<br />回复2：真的，但是我不小心放在冰箱后，又少了10元左右，何解？热胀冷缩？<br />回复3：上次用胶水的时候不小心滴ic卡上去了..还以为报废了呢..谁知道以后每次都不扣钱了..<br /><br />78、楼主：MOP上像我这样的学历不多了吧？<br />我今年毕业了 扬大的学士学位<br />有照为证<br />虽然比不上什么清华，北大<br />但估计和你们比比绰绰有余了吧~~~~<br /><br />回复：唉 一个学士证就NB了等我拿出我的泡妞证、准生证还不吓死你！<br /><br />79、楼主：怎样才可以瞬间击倒3个人？我体质有限，只能做十个腹卧撑。<br /><br />回复：带个可乐瓶子里面装满自来水，带个打火机，他们上来就说站住别动“我是法*轮*工”再过来我就自*焚。我想他们应该怕的<br /><br />80、楼主：芙蓉姐姐是0分，李嘉欣是10分，那我几分？？<br /><br /><br /><br />回复1：芙蓉姐姐是－2分好不好?<br />回复2：楼主是瓜子脸哎，可惜尖头朝上了<br />回复3：我也想弱弱的问一句：如果楼主是-10分，芙蓉姐姐是0分，李嘉欣是10分，那我几分<br />回复4：你的脸被大象坐过吧，真可怜<br />回复5：就走夜路方面看,楼主10分<br /><br />81、楼主：签名抵制看黄色录像，塑造健康人格万人大行动！【召集】<br />请你们记住：你们是中国的生力军，家庭和祖国的希望，不要用武藤兰、小泽圆这些倡优的名字和Y D的身体来玷污我们的精神世界，软化我们的意志！<br /><br />回复1：LZ系少林方丈,鉴定完毕!<br />回复2：我会用毕生精力与楼主做抗争<br />回复3：武藤兰、小泽圆他们很有名吗?哪可以下载他们的片子<br /><br />82、楼主：累死偶了，今天把偶得赛扬狂遍了一顿，他终于承认自己是奔4!<br /><br />回复1：累死偶了，今天把lz狂遍了一顿，他终于承认自己是猪了！<br />回复2：偶累死了,今天把李玉春狂遍了一顿,他终于承认自己是男人了<br />回复3：累死偶了，今天把偶得奥拓狂遍了一顿，他终于承认自己是奥迪了!<br /><br />83、楼主：今天微软给我打电话，请我作他们公司的CEO,我嫌他们公司没电脑，我没去<br /><br />回复1：今天武藤兰给我打电话，请我作av男主角,我嫌她不会做也不会爱，我没去<br />回复2：今天拉登叫我去一起劫机撞东京铁塔，我嫌他们没技术含量，没去<br />回复3：今天周杰伦请我当他经纪人，我嫌他不够红,没答应!<br /><br />84、楼主：大家谈谈自己打篮球时的绝招是什么？<br /><br />回复1：偶最喜欢老汉推车<br />回复2：我的绝招是大风车...冰天雪地赤身裸体360度后空翻转体720度接跨下换手然后倒跪玻璃渣<br />回复3：眼神.........................<br /><br /><br /><br />85、楼主：我是一个已婚三年的女人，老公长期在外地工作，我们的感情挺好，可是两地分居让我很寂寞。前一段时间在朋友的介绍下认识了一位比我年轻的男人，很帅，我们一拍即合，他很爱我的风韵，我也很喜欢他的浪漫，我们渡过了美好的时光。可是最近我发现自己怀了他的孩子，我不知道该怎么办？我还没有告诉他，我想把孩子生下来，但是不想离开现在的老公，我想如果我不说老公也不会知道这孩子的身世，猫友们你们说我可以这么做吗？<br /><br />回复1：楼主不只是在玩地雷，而是在玩核武器。<br />回复2：那咱俩也怀一个 让你老公有两次惊喜<br /><br />86、楼主：孙悟空其实是个女的，有很多证据的：<br />1、孙悟空虽有定身法,居然从来不调戏美女<br />2、孙悟空从来都对帅哥没办法,比如二郎神和唐僧。对于小帅哥哪吒还调戏了几下。<br />...................<br /><br />回复1：怪不得她下龙宫借兵器时候其他的都不要,一眼就看上了伸缩自如的如意金箍棒.我一直都很费解.看了楼猪的分析,我不竟恍然大悟~<br />回复2：悟空爱穿虎皮超短裙，说明悟空不仅是女性，还是位性工作者。<br /><br />87、楼主：警惕！遇到巨蟒时的自救方法，蟒蛇吞食猎物一般是从头部开始的，等到它吞到你的膝盖以上，大腿以下时，迅速坐起来，用右手的匕首顺者它的嘴巴边缘狠狠的割下去，一直割到脚底板。不要顾忌割伤自己，想想看，你的小命和一点伤哪个重要。然后，迅速把脚抽出来，跑的远远的。从背包拿出汽水，找棵大树，坐下来边喝边等蟒蛇死。<br /><br />回复：如果没有匕首，据说男人的小JJ也很硬，估计也能用，有机会可以试试！<br /><br />88、照片帖：以前在网上看个贴子说把可乐罐斜立起来，觉得不够刺激，今天在家闲来无事，居然把鸡蛋立起来了~~<br /><br />回复1：好好的不让鸡蛋睡个觉，折磨个什么劲呀你～～～<br />回复2：禽兽..连蛋也不放过..<br />回复3：楼主你应该把他们孵出来<br />回复4：建议楼主把题目改为我把蛋蛋竖起来了，等等。会有更好效果<br />回复5：靠,给我瓶502,我能把地球立起来<br /><br />89、楼主：男人的背叛通常都是肉体上的，而女人却是精神和肉体的双重背叛<br /><br /><br /><br />回复：很久以前，mop就流传着这么一句话，永远不相信那些流一个星期血还不死的动物。<br /><br />90、楼主：既然"中央一套"被注册成避孕套商标，我想那么中央二套是不是可以注册成胸罩商标?<br /><br />回复1：中央三套可以注册成比基尼的牌子！！！<br />回复2：中央十套可以被申请为手套或者五指袜的牌子<br />回复3：早有牛人提出 内裤可注册 “裆中央”<br />回复4：壮阳药叫中央一抬<br />回复5：还不如----包二奶<br /><br />91、楼主：偷看了女友的隐私我才知道，女朋友忘不了另一个人，还在msn上和他表白，那个男的居然还说‘你一直这么主动，让我十分惭愧’，我真是。。。。我不但是个垫背的，而且还是她对别人主动，我对她主动的那种垫背，我xxx，我现在就觉得一个大大的‘贱’字写在我额头上，无地自容。<br /><br />回复：女人无所谓正派，正派是因为受到的引诱不够；男人无所谓忠诚，忠诚是因为背叛的筹码太低.<br />小伙子现实一点吧<br /><br /><br /><br />92、楼主：弟弟带回家的女友，竟然是我男友的前女友！这个女的，前两个月还拼命发信息给男友要要求复合呢，平时也动不动发一些暧昧的信息给男友。我还打电话警告过她不要做这些无聊的事，然后跟男友互换的手机号用呢！我怕说了，弟弟会伤心，他从来都没谈过恋爱，会接受不了！怎么办呢？大家给我点意见吧！<br /><br />回复：你弟弟可以日后再说！<br />（隐晦）<br /><br />93、楼主：弄那么大的乳房做什么？NND，实在是写不下去了！你们谁都别拦着我，我这就出门把悬挂在路边的那个丰乳广告牌给砸了！<br /><br />回复：作一个让男人不能一手把握的女人<br /><br />94、楼主：今天我爸和我嫂子居然打了我耳光，良心何在？喜欢李宇春有错吗？喜欢一个人有错吗？保护她不受伤害有错吗？你们的良心呢？你们还有良心吗？！<br /><br />回复：今天我儿子在夸奖李宇春我上去就一个耳光：只准你喜欢芙蓉姐姐<br /><br />95、楼主：在北京!大家挤过地铁吗~~<br /><br />回复：上海的朋友抱怨:上星期我老婆坐地铁被挤流产了.<br />北京的朋友说:这算什么,上星期我老婆坐地铁被挤的怀孕了<br /><br />96、楼主：我们刚刚交往就发生了关系,他对我承诺!他的承诺可信吗?<br /><br /><br /><br />回复：女人一定要经得起谎言，受得起敷衍，忍得住欺骗，忘得了诺言，放得下一切，最后用笑来伪装掉下的眼泪——宁愿相信世界上有鬼也不要相信男人那张破嘴。<br /><br />97、楼主：新闻播完后主持人一边摘耳机，嘴里在说什么？<br /><br />回复1：<br />——晚上我一个人<br />——我也是....<br />回复2：<br />：嘴皮快点动否则就不自然了不自然了12341234<br />：我是在动啊在动啊字幕上完了没阿12342234<br /><br />98、楼主：北京居然有人给超女立＂超女纪念碑＂，真的不可思议！后来，了解得知，这是宋庄文化艺术节上的画家作品！<br /><br />回复：画家的本意是让她们成为秦桧,让后世千人唾,万人骂~!<br /><br />99、楼主我的男友一晚上要做四次 正常吗？<br /><br />回复：他身体是不是很虚弱，要是我十次也不够！！<br /><br />100、楼主：太强悍了！造假居然搞到这种程度！小心啊！<br />昨天买了出差的时候瓶洗发水，用来洗头发现头皮很痒，仔细一看：<br />是瓢柔！！<br />记得小时候还吃过：大白免 奶糖！！<br /><br /><br /><br />回复1：有一次在车站买到唐师傅的方便面.........<br />回复2：终于找到知音了，有一次在山东某城市的火车站广场小店买了一瓶“脉动”饮料，上车喝了才发现味道不对，仔细看了半天，没发现包装上有什么异样，再仔细看，靠，竟然是“脉劫”！！本来脉动的字体就是那样有尖尖的棱角的，劫字多出的一竖用很短的三角形尖尖代替，太难分辨了。<br />回复3：有一次买到杰土邦的TT.........<br />回复4：我家还买到了丑粮液的呢<br />回复5：小说看过有本金庸新著，后来才知道作者叫金庸新！我同学踢足球，去买了双双星球鞋，回来一看，商标是双星球！
          <br/>
          <span style="color:red;">
            <a href="http://playfish.javaeye.com/blog/151957#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 30 Dec 2007 13:31:55 +0800</pubDate>
        <link>http://playfish.javaeye.com/blog/151957</link>
        <guid>http://playfish.javaeye.com/blog/151957</guid>
      </item>
      <item>
        <title>jQuery选择器官方文档中文</title>
        <author>playfish</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://playfish.javaeye.com">playfish</a>&nbsp;
          链接：<a href="http://playfish.javaeye.com/blog/151552" style="color:red;">http://playfish.javaeye.com/blog/151552</a>&nbsp;
          发表时间: 2007年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          jQuery的选择器是CSS 1-3，XPath的结合物。jQuery提取这二种查询语言最好的部分，融合后创造出了最终的jQuery表达式查询语言。如果你了解CSS（绝大部分WEB开发者都用到的），那么你学起来就很容易了。<br /><br />同时使用CSS和XPath<br /><br />看几个例子：<br /><br />隐藏所有包含有链接的段落：<br /><br />$("p[a]").hide();<br /><br />显示页面的第一个段落：<br /><br />$("p:eq(0)").show();<br /><br />隐藏所有当前可见的层元素：<br /><br />$("div:visible").hide();<br /><br />获取所有无序列表的列表项：<br /><br />$("ul/li")<br /><br /> /* valid too: $("ul > li") */<br /><br />取得name值为bar的输入字段的值：<br /><br />$("input[@name=bar]").val();<br /><br />所有处于选中状态的单选r按钮：<br /><br />$("input[@type=radio][@checked]")<br /><br />如果你对查询语言的工作原理还有疑问，可以订阅这里的邮件列表。<br /><br />CSS查询器<br /><br />jQuery完全支持CSS1.3。<br /><br />关于CSS的一些资料查看下面的连接：<br /><br />CSS 1 <br />CSS 2 <br />CSS 3 <br />下面列出来的是支持的CSS查询器的列表式语法：<br /><br />* 任何元素 <br />E 类型为E的元素 <br />E:root 类型为E，并且是文档的根元素 <br />E:nth-child(n) 是其父元素的第n个类型为E的子元素 <br />E:first-child 是其父元素的第1个类型为E的子元素 <br />E:last-child  是其父元素的最后一个类型为E的子元素 <br />E:only-child  且是其父元素的唯一一个类型为E的子元素 <br />E:empty 没有子元素（包括text节点）的类型为E的元素 <br />E:enabled <br />E:disabled 类型为E，允许或被禁止的用户界面元素 <br />E:checked 类型为E，处于选中状态的用户界面元素（例如单选按钮或复选框） <br />E.warning 类型为E，且class属性值为warning <br />E#myid 类型为E，ID为 "myid"。（至多匹配一个元素） <br />E:not(s) 类型为E，不匹配选择器s <br />E F 在类型E后面的类型为F的元素 <br />E > F 为E元素子元素的F元素 <br />E + F an F element immediately preceded by an E element <br />E ~ F an F element preceded by an E element <br />不同之处<br /><br />所有的属性选择器都被写成和XPath极其相似（因为所有的属性都以@符号开始）。<br /><br />E[@foo] 拥有foo属性的E元素 <br />E[@foo=bar] foo属性的值为bar的E元素 <br />E[@foo^=bar] foo属性的值以字符串"bar"开始的E元素 <br />E[@foo$=bar] foo属性的值以字符串"bar"结尾的E元素 <br />E[@foo*=bar] foo属性的值包含有字符串"bar"结尾的E元素  <br />不支持的部分<br /><br />E:link <br />E:visited an E element being the source anchor of a hyperlink of which the target is not yet visited (:link) or already visited (:visited) <br />E:active <br />E:hover <br />E:focus an E element during certain user actions <br />E:target an E element being the target of the referring URI <br />E::first-line the first formatted line of an E element <br />E::first-letter the first formatted letter of an E element <br />E::selection the portion of an E element that is currently selected/highlighted by the user <br />E::before generated content before an E element <br />E::after generated content after an E element <br />jQuery不支持下列的选择器，因为这些没什么用处。<br /><br />E:nth-last-child(n) an E element, the n-th child of its parent, counting from the last one <br />E:nth-of-type(n) an E element, the n-th sibling of its type <br />E:nth-last-of-type(n) an E element, the n-th sibling of its type, counting from the last one <br />E:first-of-type an E element, first sibling of its type <br />E:last-of-type an E element, last sibling of its type <br />E:only-of-type an E element, only sibling of its type <br />E:lang(fr) an element of type E in language "fr" <br />XPath 查询器<br /><br />XPath是jQuery内置支持的一种表达式语言。jQuery支持基本的XPath表达式。<br /><br />定位路径<br /><br />绝对路径<br />$("/html/body//p")<br />$("/*/body//p")<br />$("//p/../div") <br />相对路径<br />$("a",this) <br />$("p/a",this) <br />支持的Axis选择器Descendant Element has a descendant element <br /> $("//div//p")<br />Child Element has a child element <br /> $("//div/p")<br />Preceding Sibling Element has an element before it, on the same axes <br /> $("//div ~ form")<br />Parent Selects the parent element of the element <br /> $("//div/../p")<br />支持的谓词[@*] 拥有一个属性<br />$("//div[@*]") <br />[@foo] 拥有foo属性<br />$("//input[@checked]") <br />[@foo='test'] 属性foo值为'test'<br />$("//a[@ref='nofollow']") <br />[Nodelist] Element contains a node list, for example: <br />$("//div[p]")<br />$("//div[p/a]") <br />支持的谓词，但与XPath和CSS又不同的<br /><br />[last()] or [position()=last()]改为:last<br />$("p:last") <br />[0] or [position()=0] 改为 :eq(0) or :first<br />$("p:first")<br />$("p:eq(0)") <br />[position() &lt; 5] 改为:lt(5)<br />$("p:lt(5)") <br />[position() > 2] 改为:gt(2)<br />$("p:gt(2)") <br />定制的选择器<br /><br />jQuery包含一些在CSS和XPath都不用到的表达式，但我们觉得它们使用起来非常方便，所以包含进来了。<br /><br />下列的列表式语法基于不同的CSS选择器，但又有非常相似的名字。<br /><br />:even 从匹配的元素集中取序数为偶数的元素 <br />:odd 从匹配的元素集中取序数为奇数的元素 <br />:eq(0) and :nth(0) 从匹配的元素集中取第0个元素 <br />:gt(4) 从匹配的元素集中取序数大于N的元素 <br />:lt(4) 从匹配的元素集中取序数小于N的元素 <br />:first 相当于 :eq(0) <br />:last 最后一个匹配的元素 <br />:parent 选择包含子元素（包含text节点）的所有元素 <br />:contains('test') 选择所有含有指定文本的元素 <br />:visible 选择所有可见的元素（display值为block 或者visible 、visibility 值为visible的元素，不包括hide域） <br />:hidden 选择所有隐藏的元素(非Hide域，且display值为block 或者visible 、visibility 值为visible的元素) <br />例： <br /><br /> $("p:first").css("fontWeight","bold");<br />$("div:hidden").show();<br />$("div:contains('test')").hide();<br />表单选择器<br />这是为表单提供的一些选择器：<br /><br />:input 选择表单元素（input, select, textarea, button） <br />:text 选择所有文本域(type="text") <br />:password 选择所有密码域(type="password"). <br />:radio 选择所有单选按钮(type="radio"). <br />:checkbox 选择所有复选框(type="checkbox"). <br />:submit 选择所有提交按钮(type="submit"). <br />:image 选择所有图像域 (type="image"). <br />:reset 选择所有清除域(type="reset"). <br />:button 选择所有按钮(type="button"). <br />同样也可以使用:hidden，详细说明上面已经介绍过。<br /><br />$('#myForm :input')<br /><br />如果你需要指定表单：<br /><br />$('input:radio', myForm)<br /><br />这将选择myForm表单中所有单选按钮。选择radio通常是用[@type=radio]，但是这样用理精简些。<br /><br />更多的选择器<br /><br />jQuery选择器可以用一些第三方部件进行扩充：<br /><br />More Selectors Plugin <br />Mike Alsup on Custom Selectors <br />Patch to allow selection by CSS property (full plugin to be released simultaneously with 1.1)
          <br/>
          <span style="color:red;">
            <a href="http://playfish.javaeye.com/blog/151552#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/97' target='_blank'><span style="color:blue;font-weight:bold;">Oracle专区上线，有Oracle最新文章，重要下载及知识库等精彩内容，欢迎访问。</span></a></li><li><a href='/adverts/106' target='_blank'><span style="color:blue;font-weight:bold;">JavaEye问答大赛开始了！ 从6月23日 至 7月6日，奖品丰厚 ！</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/92' target='_blank'><span style="color:red;font-weight:bold;">快来参加7月17日在成都举行的SOA中国技术论坛</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 28 Dec 2007 16:35:35 +0800</pubDate>
        <link>http://playfish.javaeye.com/blog/151552</link>
        <guid>http://playfish.javaeye.com/blog/151552</guid>
      </item>
      <item>
        <title>Velocity模板引擎体验</title>
        <author>playfish</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://playfish.javaeye.com">playfish</a>&nbsp;
          链接：<a href="http://playfish.javaeye.com/blog/151406" style="color:red;">http://playfish.javaeye.com/blog/151406</a>&nbsp;
          发表时间: 2007年12月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          不少人看过或了解过Velocity，名称字面翻译为：速度、速率、迅速，用在Web开发里，用过的人可能不多，大都基本知道和在使用 Struts，到底Velocity和Struts是如何联系，怎么看待Velocity呢？让我们来尝试一下，了解Velocity的概念，通过在这里的介绍，强调在技术选择上的问题，让大家在选择项目开发时，可以考虑Velocity，另外也让大家了解它的思想，毕竟它提供了一个很好的思维方式，给大家换换筋骨，换一种思考的方式。<br /><br />本文基于你对Java开发有一定基础，知道MVC，Struts等开发模式。<br /><br />Velocity是一种Java模版引擎技术，该项目由Apache提出，由另外一种引擎技术Webmacro引深而来。那什么是官方的 Velocity定义呢？Apache对它的定义是：一种基于Java的模板引擎，但允许任何人使用简单而强大的模板语言来引用定义在Java代码中的对象。目前最新的版本是1.4，可以在http://jakarta.apache.org/velocity/index.html查找更多信息。<br /><br /> 其实说白了Velocity也就是MVC架构的一种实现，但它更多的是关注在Model和View之间，作为它们的桥梁。对于MVC的最流行架构 Struts来说，相信大家都不陌生，很多开发人员已经大量在使用Struts架构，包括IBM的Websphere 5以上的管理平台版本，Struts技术很好的实践了MVC，它有效的减少Java代码在View（Jsp）中的出现，但在Model和View之间还是依靠Struts的Taglib技术来实现，试想如果前台开发的网页设计师对Struts乃至Taglib不熟（相信也挺难熟的，包括后期的维护人员也一样），将会对网页设计师和前台开发工程师的相互协作开发带来很大的难度，现实开发中也还是存在这样事实，网页设计师和前台开发之间的工作或多或少还是存在一定的耦合，怎样最大限度的解决这个难题呢？还是让我们来看看Velocity或者说这个概念吧。<br /><br /> 先做一个最简单的Velocity开发例子，让大家看看Velocity是怎样工作的：<br /><br />1、 创建1个文件，文件名为：hellovelocity.vm，即velocity模版（其实和html一样），内容：<br />&lt;html><br />&lt;title>Hello Velocity&lt;/title><br />&lt;body><br />Welcome $name to Javayou.com!<br />today is $date.<br />&lt;/body><br />&lt;/html><br /><br />2、 创建1个java文件，HelloVelocity.java，内容：<br />package com.javayou.velocity;<br />import java.io.StringWriter;<br />import java.util.*;<br />import org.apache.velocity.app.VelocityEngine;<br />import org.apache.velocity.Template;<br />import org.apache.velocity.VelocityContext;<br /><br />/**<br /> * @author Liang.xf 2004-12-14 <br /> */<br />public class HelloVelocity {<br /> public static void main(String[] args) throws Exception {<br />  <br />  //初始化并取得Velocity引擎<br />  VelocityEngine ve = new VelocityEngine();<br />  ve.init(); <br />  //取得velocity的模版<br />  Template t = ve.getTemplate("hellovelocity.vm");<br />  //取得velocity的上下文context<br />  VelocityContext context = new VelocityContext();<br />  //把数据填入上下文<br />  context.put("name", "Liang");<br />  context.put("date", (new Date()).toString());<br />  <br />  //为后面的展示，提前输入List数值<br />  List temp = new ArrayList();<br />  temp.add("1");<br />  temp.add("2");<br />  context.put("list", temp);<br /><br />  //输出流<br />  StringWriter writer = new StringWriter();<br />  //转换输出<br />  t.merge(context, writer);<br />  System.out.println(writer.toString());<br /> }<br />}<br /><br />3、 在http://jakarta.apache.org/site/binindex.cgi上下载Velocity 1.4 zip，解压后获取velocity-1.4.jar，用它来编译上面的类HelloVelocity.java。<br /><br />4、 把1上的hellovelocity.vm copy到运行的当前目录下，运行HelloVelocity还需要其他类包，可以从下载后的velocity1.4.zip来，\velocity- 1.4\build\lib，把commons-collections.jar、logkit-1.0.1.jar引入后运行java -cp .\bin; -Djava.ext.dirs=.\lib2 com.javayou.velocity.HelloVelocity，假设class编译到.\bin目录，而我们所需的类包放到.\lib2目录内，运行结构如下：<br />&lt;html><br />&lt;title>Hello Velocity&lt;/title><br />&lt;body><br />Welcome Liang to Javayou.com!<br />today is Tue Dec 14 19:26:37 CST 2004.<br />&lt;/body><br />&lt;/html><br /><br />以上是最简单的运行结果，怎么样，知道个大概吧，模版hellovelocity.vm里的2个定义变量$name和$date分别被 context.put("name", "Liang")和context.put("date", (new Date()).toString())所设的值替代了。<br /><br />由此看来业务流程处理包括业务结果基本在model这层全部解决，而view这一层基本只用使用简单的VTL（Velocity Template Language）来展示。这样，Jsp岂不是不用了么？是的，这样的使用模式有点象早前的CGI方式：）由Velocity自动输出代码，并且 Velocity在这方面的能力也很强，Turbine里就采用了Velocity来产生很多代码。<br /><br />在Velocity中，变量的定义都是使用“$”开头的，$作为Velocity的标识符。字母、数字、中划和下划线都可以作为Velocity的定义变量。<br /><br />此外我们还需要注意的是Velocity特色的变量定义，如：$student.No、$student.Address，它有2层含义：第1种是如果student是hashtable，则将从hashtable中提取key为No和Address的值，另外第2种就是它有可能是调用方法，即上面 2个变量将被转换为student.getNo()和student.getAddress()。Velocity对在servlet中的java code返回的值有对象，还可以调用对象的方法，如$ student.get