<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>JavaEye博客</title>
    <description>Java博客,Ruby on Rails博客,AJAX博客,Agile博客 -- JavaEye做最棒的软件开发交流社区</description>
    <link>http://www.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>开心网，校内，雅虎关系以及新浪SNS</title>
        <author>meigen</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yoyida.javaeye.com">meigen</a>&nbsp;
                    链接：<a href="http://yoyida.javaeye.com/blog/253384" style="color:red;">http://yoyida.javaeye.com/blog/253384</a>&nbsp;
          发表时间: 2008年10月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;1、陈一舟高调宣布购买域名kaixin.com，首先证明开心网（kaixin001.com）目前为止已经很成功，让校内网不惜购买开心网的近似域名。就像是为了竞争adidas而注册adibas商标一样，做这个动作一开始就已经比对手低一个层次。这也更加凸显校内网的自身感到的强大压力和恐惧。</p>
<p>&nbsp;</p>
<p>2、10月10日推出的雅虎关系，给人耳目一新，导航栏里出现邮件、讨论、鲜果阅读、投资组合，只能说长的离SNS越来越远了。这是好事，邮件和财经新闻是雅虎历史强项，讨论可与知识堂打通，鲜果阅读作为一款优秀的RSS阅读器，将其用户订阅直接导入雅虎关系中，的确有点意外。</p>
<p>&nbsp;</p>
<p>3、8月份新浪推出新浪SNS，只能说SNS的泡沫是越来越大了。以前没有过新浪账号，加上感觉新浪空间、博客、相册等个人产品的杂乱无章，也没有兴趣去注册一个新账号了。</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://yoyida.javaeye.com/blog/253384#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 16 Oct 2008 00:07:33 +0800</pubDate>
        <link>http://yoyida.javaeye.com/blog/253384</link>
        <guid>http://yoyida.javaeye.com/blog/253384</guid>
      </item>
          <item>
        <title> 被Tokyo Cabinet雷到了 </title>
        <author>zuroc</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zsp.javaeye.com">zuroc</a>&nbsp;
                    链接：<a href="http://zsp.javaeye.com/blog/253367" style="color:red;">http://zsp.javaeye.com/blog/253367</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="font-size: large"><br /><br /><a href="http://tokyocabinet.sourceforge.net/" target="_blank">http://tokyocabinet.sourceforge.net/</a><br /><br />顶部大标题(会变的,多刷几次)<br /><br />Ikebukuro Cabinet: 世界最強絶対無敵電光石火疾風迅雷資料基盤管理器<br />还有一个版本是<br />東京収納棚: 世界最強絶対無敵電光石火疾風迅雷資料基盤管理器<br /><br />还是日文好懂啊,収納棚这个名字很有创意<br /><br />作者看来也是YY中人啊,Tokyo ...</span>
          <br/>
          <span style="color:red;">
            <a href="http://zsp.javaeye.com/blog/253367#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/138' 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/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 22:31:35 +0800</pubDate>
        <link>http://zsp.javaeye.com/blog/253367</link>
        <guid>http://zsp.javaeye.com/blog/253367</guid>
      </item>
          <item>
        <title>struts2初体验</title>
        <author>zhangcong170</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zhangcong170.javaeye.com">zhangcong170</a>&nbsp;
                    链接：<a href="http://zhangcong170.javaeye.com/blog/253358" style="color:red;">http://zhangcong170.javaeye.com/blog/253358</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 学struts2也有那么一阵子了，感觉还不错。同struts1.x相比较起来，struts2要方便得多。从配置上来看，struts2的页面明显要简洁一些。在struts1.x中，每一个jsp页面，对应于一个Form表单，转到后台去处理，就得对应于一个form和一个actionForm，form主要对应表单的每个属性，以及get和set方法，还可以使用validate进行验证，但我们更多的，是采用验证框架去处理，struts1.x的验证框架总感觉比较复杂，需要一些正则表达式方面的知识。而struts2则没有对应的form和actionForm，它把两个东西合在一块了，只有一个action，换句话说，一个页面表单提交过来的数据，对应于一个form,这样感觉更"像"mvc一点，思路也很清晰。下面给出一个struts2入门级的例子。</p>
<p>注：开发工具为myEclipse</p>
<p>&nbsp;</p>
<p>login.jsp</p>
<p>&nbsp;</p>
<p>&lt;%@ page language="java"&nbsp; pageEncoding="ISO-8859-1"%&gt;<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />&lt;html&gt;<br />&nbsp; &lt;head&gt;<br />&nbsp;&nbsp;&nbsp; &lt;title&gt;login&lt;/title&gt;<br />&nbsp; &lt;/head&gt;<br />&nbsp; &lt;body&gt;<br />&nbsp;&nbsp;&nbsp; &lt;form action="login.action" method="post"&gt;<br />&nbsp;&nbsp;&nbsp; username:&lt;input type="text" name="username"&gt; &lt;br&gt;<br />&nbsp;&nbsp;&nbsp; password:&lt;input type="password" name="password"&gt;&lt;br&gt;<br />&nbsp;&nbsp;&nbsp; &lt;input type="submit" value="submit"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;input type="reset" value="reset"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/form&gt;<br />&nbsp; &lt;/body&gt;<br />&lt;/html&gt;</p>
<p>&nbsp;</p>
<p>LoginAction.java</p>
<p>package action;</p>
<p>import com.opensymphony.xwork2.ActionSupport;</p>
<p><br />public class LoginAction extends ActionSupport{<br />&nbsp;&nbsp;&nbsp; private String username;<br />&nbsp;&nbsp;&nbsp; private String password;<br />&nbsp;&nbsp;&nbsp; <br />&nbsp;public String getUsername() {<br />&nbsp;&nbsp;return username;<br />&nbsp;}<br />&nbsp;public void setUsername(String username) {<br />&nbsp;&nbsp;this.username = username;<br />&nbsp;}<br />&nbsp;public String getPassword() {<br />&nbsp;&nbsp;return password;<br />&nbsp;}<br />&nbsp;public void setPassword(String password) {<br />&nbsp;&nbsp;this.password = password;<br />&nbsp;}<br />&nbsp;//在struts2中，execute()方法是自动执行的<br />&nbsp;public String execute() throws Exception{<br />&nbsp;&nbsp;if("zc".equals(this.getUsername().trim())&amp;&amp;"123".equals(this.getPassword().trim())){<br />&nbsp;&nbsp;&nbsp; return "success";<br />&nbsp;&nbsp;}else{<br />&nbsp;&nbsp;&nbsp;&nbsp; /*系统默认的页面是input,也就是login.jsp,可以参看后面的struts.xml配置, 如果用户名和密码输入错误，则返回原来的页面,并给出错误提示*/<br />&nbsp;&nbsp;&nbsp;this.addFieldError("username","username or password is not correct");<br />&nbsp;&nbsp;&nbsp;return "input";&nbsp; <br />&nbsp;&nbsp;}<br />&nbsp;}<br />&nbsp;<br />&nbsp;public void validate(){<br />&nbsp;&nbsp;if("".equals(this.getUsername())||null==this.getUsername().trim()){<br />&nbsp;&nbsp;&nbsp;this.addFieldError("username","username can not be null");<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;if("".equals(this.getPassword())||null==this.getPassword().trim()){<br />&nbsp;&nbsp;&nbsp;this.addFieldError("password","password can not be null");<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;<br />&nbsp;}<br />}</p>
<p>&nbsp;</p>
<p>result.jsp</p>
<p>&lt;%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%&gt;<br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt;<br />&lt;html&gt;<br />&nbsp;&lt;head&gt;<br />&nbsp;&nbsp;&lt;title&gt;result&lt;/title&gt;<br />&nbsp;&lt;/head&gt;<br />&nbsp;&lt;body&gt;<br />&nbsp;&nbsp;&lt;%=request.getParameter("username")%&gt;&lt;br&gt;<br />&nbsp;&nbsp;&lt;%=request.getParameter("password")%&gt;<br />&nbsp;&lt;/body&gt;<br />&lt;/html&gt;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>struts.xml</p>
<p>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;</p>
<p>&lt;!DOCTYPE struts PUBLIC<br />&nbsp;&nbsp;&nbsp; "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"<br />&nbsp;&nbsp;&nbsp; "<a href="http://struts.apache.org/dtds/struts-2.0.dtd">http://struts.apache.org/dtds/struts-2.0.dtd</a>"&gt;</p>
<p>&lt;struts&gt;<br />&nbsp;&lt;package name="struts2" extends="struts-default"&gt;<br />&nbsp; &nbsp;&lt;action name="login" class="action.LoginAction"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;result name="success"&gt;/result.jsp&lt;/result&gt;&lt;!--&nbsp;页面验证成功，跳转到result.jsp--&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&lt;result name="input"&gt;/login.jsp&lt;/result&gt;&lt;!--&nbsp;页面验证失败，返回到login.jsp--&gt;<br />&nbsp; &lt;/action&gt;</p>
<p>&nbsp;&lt;/package&gt;</p>
<p>&lt;/struts&gt;</p>
<p>&nbsp;</p>
<p>web.xml</p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;web-app version="2.4" xmlns="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a>"<br />&nbsp;xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"<br />&nbsp;xsi:schemaLocation="<a href="http://java.sun.com/xml/ns/j2ee">http://java.sun.com/xml/ns/j2ee</a> <br />&nbsp;<a href="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</a>"&gt;</p>
<p>&nbsp;&lt;filter&gt;<br />&nbsp;&nbsp;&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br />&nbsp;&nbsp;&lt;filter-class&gt;<br />&nbsp;&nbsp;&nbsp;org.apache.struts2.dispatcher.FilterDispatcher<br />&nbsp;&nbsp;&lt;/filter-class&gt;<br />&nbsp;&lt;/filter&gt;<br />&nbsp;&lt;filter-mapping&gt;<br />&nbsp;&nbsp;&lt;filter-name&gt;struts2&lt;/filter-name&gt;<br />&nbsp;&nbsp;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />&nbsp;&lt;/filter-mapping&gt;<br />&lt;/web-app&gt;</p>
<p>整个程序的页面逻辑非常简单，用户从login.jsp登陆，如果用户名不是zc 或密码不是123，则系统返回login.jsp并给出错误信息。呵呵，算是我的第一个struts2程序吧。</p>
<p>&nbsp;</p>
<p>PS:本人刚刚学struts2不久,可能上面的认识有误，欢迎朋友们指正！加油！</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://zhangcong170.javaeye.com/blog/253358#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 21:57:34 +0800</pubDate>
        <link>http://zhangcong170.javaeye.com/blog/253358</link>
        <guid>http://zhangcong170.javaeye.com/blog/253358</guid>
      </item>
          <item>
        <title>关于页面的跳转</title>
        <author>Xiehgjava</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiehgjava.javaeye.com">Xiehgjava</a>&nbsp;
                    链接：<a href="http://xiehgjava.javaeye.com/blog/253355" style="color:red;">http://xiehgjava.javaeye.com/blog/253355</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          myeclipse上建了一个web progect <br /><br />然后又建了一个index.html<br />一个test.jsp <br /> <br /><br />index.html的代码是：<br />&lt;html><br />&nbsp; &lt;head><br />&nbsp;&nbsp;&nbsp; &lt;title>index&lt;/title><br />&nbsp; &lt;/head><br />&nbsp; <br />&nbsp; &lt;body><br />&nbsp; 	&lt;form action = "test.jsp" method = "get" name ="form1"><br />&nbsp; 	用户名：&lt;input type = "text" name = "username"/>&lt;br><br />&nbsp; 	密&nbsp; 码：&lt;input type = "password" name = "userpass"/>&lt;br><br />&nbsp; 	&lt;input type = "submit" value = "提交"/><br />&nbsp; 	&lt;input type = "reset" value = "重置"/><br />&nbsp; 	&lt;/form><br />&nbsp; &lt;/body><br />&lt;/html> <br /> <br /><br />test.jsp的代码是：<br />&lt;%@ page language="java" import="java.util.*,java.text.*" contentType="test/html; charset=gbk"%><br />&lt;html><br />&nbsp; &lt;head><br />&nbsp; &lt;title>test&lt;/title><br />&nbsp; &lt;/head><br />&nbsp; <br />&nbsp; &lt;body><br />&nbsp; 你输入的用户名是：&lt;%=request.getParameter("username") %>&lt;br><br />&nbsp; 你输入的密码是：&lt;%=request.getParameter("userpass") %>&lt;br><br />&nbsp;&nbsp; 你好! &lt;br><br />&nbsp; 今天是<br />&nbsp; &lt;%<br />&nbsp; 	Date now =new Date();<br />&nbsp; 	SimpleDateFormat formater = new SimpleDateFormat("yyyy/MM/dd/");<br />&nbsp; 	String strCurrentTime = formater.format(now);<br />&nbsp; 	out.println(strCurrentTime);<br />&nbsp;&nbsp; %><br />&nbsp; &lt;/body><br />&lt;/html><br /> <br /> <br />我想从index.html跳转到test.jsp上 <br /> <br />可是出现两个问题：<br />1 我用http://localhost:8080/Y2JAVAEE/index.html 不能登入（tomcat我启动的了）<br />2.我直接双击index.html这个文件可以显示内容,跳转到test.jsp上，不能输出&lt;%=request.getParameter("username") %>和&lt;%=request.getParameter("userpass") %> 这两个部分，我以为是没有传递数据过来，就添加了下面的一段显示时间的代码，结果还是不能显示。<br />有没有哪个大大知道这是什么原因？
          <br/>
          <span style="color:red;">
            <a href="http://xiehgjava.javaeye.com/blog/253355#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 21:38:06 +0800</pubDate>
        <link>http://xiehgjava.javaeye.com/blog/253355</link>
        <guid>http://xiehgjava.javaeye.com/blog/253355</guid>
      </item>
          <item>
        <title>Struts2常用标签</title>
        <author>Enjoyjavaeye</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://Enjoyjavaeye.javaeye.com">Enjoyjavaeye</a>&nbsp;
                    链接：<a href="http://Enjoyjavaeye.javaeye.com/blog/253351" style="color:red;">http://Enjoyjavaeye.javaeye.com/blog/253351</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1.1．往action里传值的使用方式：&nbsp;&nbsp;&nbsp; <br /><pre name="code" class="java">&lt;input name="userName" type="text" class="input6" size="15"> </pre>&nbsp;&nbsp; <br />a. userName属性需要在访问的action中提供相应的属性，并有SET/GET方法。&nbsp;&nbsp;&nbsp; <br />b. 可以不在访问的action中提供相应的属性，用request.getParameter(“userName”);<br />-----------------------------------------------------------------------------<br />1.2．显示标签 property 用于输出指定值：&nbsp;&nbsp;&nbsp; <br /><pre name="code" class="java">&lt;s:property value=" userName "/></pre> 当action返回到指定页面是，可以通过该标签显示action中的属<br /><br />性信息。（注 userName必须在action中存在，并有GET方法）。&nbsp;&nbsp;&nbsp; <br />&nbsp; <br />-----------------------------------------------------------------------------<br />1.3．往对象中传值&lt;s:textfield> 用于从页面往action中的对象内传值：&nbsp;&nbsp;&nbsp; <br /><pre name="code" class="java">&lt;s:text[color=blue]&lt;/SPAN>field name="user. userName " id="username"/>  </pre>&nbsp; <br />该标签可以在页面中向action中的实体对象内直接传值。（注：在action中要存在user对象，并有<br /><br />SET/GET方法。）&nbsp;&nbsp;&nbsp; <br />&nbsp; <br />-----------------------------------------------------------------------------<br />1.4．判断&lt;s:if> &lt;/s:if> 用于在页面中判断指定数据&nbsp;&nbsp;&nbsp; <br /><pre name="code" class="java">&lt;s:if test="userName == admin">…. &lt;/s:if>    
&lt;s:else>…. &lt;/s:else>  </pre>&nbsp; <br />该标签用于对指定的数据进行判断，但指定的数据必须在action中存在。&nbsp;&nbsp;&nbsp; <br />&nbsp; <br />-----------------------------------------------------------------------------<br />1.5．迭代&lt;s:iterator>用于将List、Map、ArrayList等集合进行循环遍历&nbsp;&nbsp;&nbsp; <br /><pre name="code" class="java">&lt;s:iterator value="userList" id="user" status="u">    
&lt;s:property value="userName"/>&lt;/a>    
&lt;/s:iterator>  </pre>&nbsp; <br />该标签用于将userList集合中的元素进行循环，用过property进行显示集合中的指定元素值。&nbsp;&nbsp;&nbsp; <br /> <br />----------------------------------------------------------------------------- <br />1.6．URL地址标签，&lt;s:url>用于生成一个URL地址，可以通过URL标签指定的&lt;s:param>子元素向URL地<br /><br />址发送请求参数&nbsp;&nbsp;&nbsp; <br /><pre name="code" class="java">&lt;s:url action=" ">    
&lt;s:param name=" " value="">&lt;/s:param>    
&lt;/s:url>   </pre> <br />其中action为请求地址，param子元素为地址后面所带的参数。&nbsp;&nbsp;&nbsp; <br /> <br />----------------------------------------------------------------------------- <br />1.7．超链接 &lt;a href >一般和&lt;s:url>标签一起使用，用于带多个参数。&nbsp;&nbsp;&nbsp; <br /><pre name="code" class="java">&lt;a href="    
&lt;s:url action=" ">    
&lt;s:param name=" " value="">&lt;/s:param>    
&lt;s:param name=" " value="">&lt;/s:param>    
&lt;s:param name=" " value="">&lt;/s:param>    
&lt;/s:url>"> </pre>&nbsp;&nbsp; <br />超链接&lt;/a>&nbsp;&nbsp;&nbsp; <br />&nbsp; <br />-----------------------------------------------------------------------------<br />1.8．set标签，用于将某个值放入指定的范围内。例如application,session等。&nbsp;&nbsp;&nbsp; <br /><pre name="code" class="java">&lt;s:set name="user" value="userName" scope=”request”/>   </pre> <br />将user值放入request范围内。&nbsp;&nbsp;&nbsp; <br /> <br />----------------------------------------------------------------------------- <br />2． Struts2页面开发中常用标签使用规范：&nbsp;&nbsp;&nbsp; <br />1.1．通过<pre name="code" class="java">&lt;input name="userName" type="text" class=" " size="15"> </pre>&nbsp;&nbsp; <br />往action中传值，action中要有相应的属性，并提供SET/GET方法。&nbsp;&nbsp;&nbsp; <br />（在数量少时可以使用request.getParameter(“userName”);）&nbsp;&nbsp;&nbsp; <br />&nbsp; <br />1.2．在页面显示action传来的数据，使用property标签。需要显示的数据从action中获得。&nbsp;&nbsp;&nbsp; <br />&nbsp; <br />1.3．往action中的实体对象内传值，使用textfield标签。&nbsp;&nbsp;&nbsp; <br />&nbsp; <br />1.4．在页面中判断指定值使用&lt;s:if>标签。判断数据从action中获得。&nbsp;&nbsp;&nbsp; <br />&nbsp; <br />1.5．在页面中需要循环列表显示的数据使用&lt;s:iterator>标签，列表数据从action中获得。&nbsp;&nbsp;&nbsp; <br />&nbsp; <br />1.6．URL地址和超链接可以使用&lt;a href>和&lt;s:url>，在传多值时建议&lt;a href>和&lt;s:url>一起使用
          <br/>
          <span style="color:red;">
            <a href="http://Enjoyjavaeye.javaeye.com/blog/253351#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 21:28:49 +0800</pubDate>
        <link>http://Enjoyjavaeye.javaeye.com/blog/253351</link>
        <guid>http://Enjoyjavaeye.javaeye.com/blog/253351</guid>
      </item>
          <item>
        <title>精致的桌面全文搜索引擎regain安装配置简介</title>
        <author>monner</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://monner.javaeye.com">monner</a>&nbsp;
                    链接：<a href="http://monner.javaeye.com/blog/253348" style="color:red;">http://monner.javaeye.com/blog/253348</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong>一、Regain简要介绍</strong>(摘录网上)<br />regain是一款与Web搜索引擎类似的桌面搜索引擎系统，其不同之处在于regain不是对Internet内容的搜索，而是针对自己的文档或文件的搜索，使用regain可以轻松地在几秒内完成大量数据（许多个G）的搜索。<strong>Regain采用了Lucene的搜索语法，因此支持多种查询方式，支持多索引的搜索及基于文件类型的高级搜索，并且能实现URL重写及文件到HTTP的桥接，并且对中文也提供了较好的支持。</strong>&nbsp; <br /><br />Regain提供了两种版本：桌面搜索及服务器搜索。桌面搜索提供了对普通桌面计算机的文档与局域网环境下的网页的快速搜索。服务器版本主要安装在Web服务器上，为网站及局域网环境下的文件服务器进行搜索。&nbsp; <br /><br />Regain使用Java编写，因此可以实现跨平台安装，能安装于Windows、Linux、Mac OS及Solaris上。服务器版本需要 JSPs环境及标签库（tag library），因此需要安装一个Tomcat容器。而桌面版自带了一个小型的Web服务器，安装非常简单。<br /><br /><strong>二、安装配置简介</strong><br />大致知道了regain是什么以后，如果regain的功能正好是您需要的，那我们就来一起进行安装配置吧。<br />1.下载regain最新版本。主页http://regain.sourceforge.net/<br />如果只是安装使用的话，可以直接这里下载编译好的版本：http://regain.sourceforge.net/download.php提供多种平台的最新稳定版本。如果是研究学习，或者想自己做优化修改，则建议下载带源码的版本：http://sourceforge.net/project/showfiles.php?group_id=111168<br /><br />2.下载后解压到特定目录，本文范例以 e:\Devp\Java\JavaApp\regain 目录为解压目录<br /><br />3.如果仅仅是下载编译好的版本安装试用的话，几乎都不需要什么设置，直接解压后，打开命令行窗口进入安装目录，直接运行 <br /><strong><br />java -jar regain.jar </strong>命令行<br /><br />运行后会在右下角systray系统托盘处出现regain的形状为“r”的小图标，右击会弹出search\status\Perferences菜单。直接选择Search就会打开查询页面。其实如果第一次运行，系统会自动弹出欢迎页面。Perferences设置页面可以增加用户要索引的文件数据目录和web端口。<br /><br />4.更多设置在conf目录中，主要设置文件包括如下4个文件，设置都非常简单直观<br />现在把比较重要的设置稍做解释。<br /><br />（1）SearchConfiguration.xml&nbsp; 主要包括查询模块的设置。<br /> ...<br />&nbsp;&nbsp;&nbsp; &lt;!-- The search index 'main' --><br />&nbsp;&nbsp;&nbsp; &lt;index name="main" default="true" isparent="true"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!-- The directory where the index is located --><br />&nbsp;&nbsp;&nbsp; <strong>&nbsp; &lt;dir>D:\SearchEngine\Index\regainindex&lt;/dir>索引放置的目录</strong><br />&nbsp;&nbsp;&nbsp; &lt;/index><br /><br />（2）DesktopConfiguration.xml 主要包括本地桌面查询设置，可通过perferences页面设置。<br /><br /><br />&lt;configuration><br /><br />&nbsp; &lt;!-- The interval to update the search index in minutes --><br />&nbsp; &lt;interval>1440&lt;/interval><br />&nbsp; <br />&nbsp; &lt;!-- Allow/Disallow external access to the running desktop instance --><br />&nbsp; &lt;allow_external_access>true&lt;/allow_external_access><br /><br /><strong>&lt;port>60009&lt;/port> 端口</strong><br /><br />&lt;/configuration><br /><br /><br />（3）CrawlerConfiguration.xml 主要包括数据抓取和索引生成模块的设置<br /><br /><br />&lt;startlist><br />&nbsp; &lt;start index="false" parse="true"><strong>file://D:/SearchEngine/Data</strong>&lt;/start><br />&nbsp; <strong>关键参数！！！ 设置用户需要进行索引的文档资料目录！可通过perferences页面设置。</strong><br />&lt;/startlist><br /><br />&lt;searchIndex><br />&nbsp; &lt;!-- The directory where the index should be located --><br /><strong>&nbsp; &lt;dir>D:\SearchEngine\Index\regainindex&lt;/dir>索引放置的目录，同文件1的设置</strong><br /><br />&nbsp; &lt;!--<br />&nbsp;&nbsp; | Specifies the analyzer type to use.<br />&nbsp;&nbsp; |<br />&nbsp;&nbsp; | You may specify the class name of the analyzer or you use one of the<br />&nbsp;&nbsp; | following aliases: <br />&nbsp;&nbsp; |&nbsp; * english: For the english language<br />&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; (alias for org.apache.lucene.analysis.standard.StandardAnalyzer)<br />&nbsp;&nbsp; |&nbsp; * german: For the german language<br />&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; (alias for org.apache.lucene.analysis.de.GermanAnalyzer)<br />&nbsp;&nbsp; |&nbsp; * <strong>paoding: 个人增加的paoding分词模块</strong><br />&nbsp;&nbsp; |&nbsp; * <strong>chinese: 个人增加的中文模块</strong><br />&nbsp;&nbsp; +--><br /><strong>&nbsp; &lt;analyzerType>paoding&lt;/analyzerType> <br />&nbsp; 默认是german，建议修改为english,<br />当然最好就是替换成中文模块，我会在后面把整个替换步骤单独讲。</strong><br /><br />&nbsp; &lt;!--<br />&nbsp;&nbsp; | Contains all words that should not be indexed.<br />&nbsp;&nbsp; | Separate the words by a blank.<br />&nbsp;&nbsp; +--><br /><strong>&nbsp; &lt;stopwordList/><br />&nbsp; 词语分割符号，实际相当于词法分析时做分割的词语列表。<br />（默认的设置不是这样的，我修改是因为我已修改为中文分词模块，这个参数没什么必要！<br />&nbsp;&nbsp; 其实如果用户选择english，此参数也用途不大，因为默认是german分割符号）</strong><br /><br />&nbsp; &lt;!--<br />&nbsp;&nbsp; | Contains all words that should not be changed by an analyser when indexed.<br />&nbsp;&nbsp; | Separate the words by a blank.<br />&nbsp;&nbsp; +--><br /><strong>&nbsp; &lt;exclusionList/>生成索引时需要排除的词语列表(中文模块则此参数也没有什么必要)</strong><br /><br />（4）log4j.properties&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; 日志输出配置<br />&nbsp;&nbsp;&nbsp; <br />5.基本上上述设置后regain应该可以运行。<br />regain是个不可多得的本地文件全文索引和快速全文搜索工具！虽然它也支持抓取互联网或者局域网页面数据进行索引。但是作为本地桌面全文搜索工具来讲，它比较专业精致，而且完美支持中文文件和中文目录。<br /><br />谁乐意和我一起研究研究这个系统呢~~~
          <br/>
          <span style="color:red;">
            <a href="http://monner.javaeye.com/blog/253348#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 21:17:00 +0800</pubDate>
        <link>http://monner.javaeye.com/blog/253348</link>
        <guid>http://monner.javaeye.com/blog/253348</guid>
      </item>
          <item>
        <title>又一道笔试题</title>
        <author>xinglongbing</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xinglongbing.javaeye.com">xinglongbing</a>&nbsp;
                    链接：<a href="http://xinglongbing.javaeye.com/blog/253342" style="color:red;">http://xinglongbing.javaeye.com/blog/253342</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>题目：用一个char指针*p指向一个字符串常量，在不使用第三方变量的情况下统计出该字符串的长度。 <br />如：以char *p = "Hello World"; 为例。</p>
<p>&nbsp;&nbsp;&nbsp; 如果是用数组来存储该字符串的话很容易得出其长度：sizeof(arrayName)/sizeof(char).但是这里使用的是字符指针，因为题目的要求就是不使用三方变量求出字符串长度,因此如果能够想办法创造出存储空间而又不增加变量的话就能解决该问题。看到这里大家或许想到了我所用的方法就是利用指针p来使用字符串所占用的空间来存储其长度信息。 <br /><br />main() <br />{ <br />&nbsp;&nbsp;&nbsp;&nbsp;char* p="hello world"; <br />&nbsp;&nbsp;&nbsp;&nbsp;printf("%d",p); <br />&nbsp;&nbsp;&nbsp;&nbsp;*p=1;&nbsp; //第一个位置放置1<br />&nbsp;&nbsp;&nbsp;&nbsp;p++;&nbsp;&nbsp; //指向下一个位置<br />&nbsp;&nbsp;&nbsp;&nbsp;while(*p!='\0') //没有到字符串结束<br />&nbsp;&nbsp;&nbsp;&nbsp;{ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p++;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*(p-1)=*(p-2)+1; //将前一个空间存储的长度信息加1存储到后一个空间<br />&nbsp;&nbsp;&nbsp;&nbsp;} <br />&nbsp;&nbsp;&nbsp;&nbsp;printf("%d", *(p-1));&nbsp;<br />&nbsp;&nbsp;} <br />在WinTC下面可以编译运行得出正确的结果。在网友的提示下发现VC和g++编译环境下该程序不能正确运行，因为他们会将常量存放在.data段，数据段是只可读不可写的。</p>
<p>大家有更好的想法可以发出来大家共享。</p>
          <br/>
          <span style="color:red;">
            <a href="http://xinglongbing.javaeye.com/blog/253342#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/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 20:55:01 +0800</pubDate>
        <link>http://xinglongbing.javaeye.com/blog/253342</link>
        <guid>http://xinglongbing.javaeye.com/blog/253342</guid>
      </item>
          <item>
        <title>多线程获取有序随机数字(同步)</title>
        <author>QiaoDuanni</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://duanni.javaeye.com">QiaoDuanni</a>&nbsp;
                    链接：<a href="http://duanni.javaeye.com/blog/253341" style="color:red;">http://duanni.javaeye.com/blog/253341</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          需求:<br /><div class="quote_title">引用</div><div class="quote_div">获取有序随机数字序列,在服务器上全局共享最新的序列.有序随机数字生成规则为 前N位变长递增唯一数字 + (后缀)固定M位随机数字. 例如: 1000 + 1234 -> 10001234; 1001 + 4321 -> 10014321; 1002 + 4567 -> 10024567</div><br /><br />测试类:<br /><pre name="code" class="java">import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class DigitServiceTest implements Runnable {

	private DigitNumServiceInterface employeeService;

	@Before
	public void setUp() throws Exception {
	}

	@Test
	public void digitNumTest() {
		for (int i = 0; i &lt; 15; i++)
			new Thread(new DigitServiceTest()).start();
	}

	@After
	public void tearDown() throws Exception {
	}

	public void run() {
		employeeService = new EmployeeServiceImpl();
		System.out.println(Thread.currentThread() + " empDigit->" + employeeService.getCurrentDigitNum());
	}

	@Test
	public void normalTest() {
		employeeService = new EmployeeServiceImpl();
		System.out.println(Thread.currentThread() + " empDigit->" + employeeService.getCurrentDigitNum());
	}
}</pre><br />接口:<br /><pre name="code" class="java">public interface DigitNumServiceInterface {
	/**
	 * 如果系统中还没有数字帐号记录,以此为起始默认前缀.
	 * 数字帐号生成规则为前N位唯一数字 + DEFAULT_DIGIT_NUM_SUFFIX_LENGTH位随机数字
	 */
	Integer DEFAULT_DIGIT_NUM_START = 1000;
	/**
	 * 数字帐号后缀随机数字长度.
	 */
	Integer DEFAULT_DIGIT_NUM_SUFFIX_LENGTH = 4;
	/** 数字帐号初始长度 DEFAULT_DIGIT_NUM_SUFFIX_LENGTH + DEFAULT_DIGIT_NUM_START.length*/
	Integer DEFAULT_DIGIT_NUM_MIN_LENGTH = 8;

	/** 获取数据库中最新的数字帐号*/
	String getLastDigitNumFromDB();

	/**获取当前按规则生成好的数字帐号*/
	String getCurrentDigitNum();

	/** 根据最新的数字帐号获取下一个数字帐号的前缀*/
	String getNextDigitNumPrefix(String lastDigitNum);
}
</pre><br />Mock类:<br /><pre name="code" class="java">import com.srt.vas.lt.util.StringUtil;

public class EmployeeServiceImpl implements DigitNumServiceInterface {
	static String CURRENT_DIGIT_NUM;

	/**获取当前按规则生成好的数字帐号,生成失败返回null */
	public String getCurrentDigitNum() {
		synchronized (DigitNumServiceInterface.DEFAULT_DIGIT_NUM_SUFFIX_LENGTH) {//同步锁
			String currentDigitNum = null;
			if (CURRENT_DIGIT_NUM == null) {//查询当前系统最新数字帐号
				System.out.println("isNull");
				currentDigitNum = getLastDigitNumFromDB();
				currentDigitNum = getNextDigitNumPrefix(currentDigitNum);
			} else {
				currentDigitNum = getNextDigitNumPrefix(CURRENT_DIGIT_NUM);
			}
			if (currentDigitNum != null)
				currentDigitNum += StringUtil.randomNumeric(DEFAULT_DIGIT_NUM_SUFFIX_LENGTH);
			//				currentDigitNum += "0000";
			CURRENT_DIGIT_NUM = currentDigitNum;
			return CURRENT_DIGIT_NUM;
		}
	}

	public String getNextDigitNumPrefix(String lastDigitNum) {
		if (lastDigitNum == null)
			return "" + (DEFAULT_DIGIT_NUM_START + 1);
		if (lastDigitNum.length() &lt; DEFAULT_DIGIT_NUM_MIN_LENGTH)
			return null;
		if (lastDigitNum.length() >= DEFAULT_DIGIT_NUM_MIN_LENGTH)
			return ""
					+ (Integer.parseInt(lastDigitNum.substring(0, lastDigitNum.length()
							- DEFAULT_DIGIT_NUM_SUFFIX_LENGTH)) + 1);
		return null;
	}

	public String getLastDigitNumFromDB() {
		return "100100000";
	}
}
</pre><br /><span style="color: red">StringUtil</span>:<br /><pre name="code" class="java">
import java.util.Collection;
import java.util.Map;
import java.util.Random;

import org.apache.commons.lang.RandomStringUtils;//apache common

public class StringUtil{
	/**
	 * 判断字符是否为空,为null,是否由空白字符组成.
	 * @param str
	 * @return 为空,null,全部空白字符时返回true,否则false.
	 */
	public static boolean isEmpty(String str) {
		return str == null || str.matches("^\\s*$");
	}

	/**
	 * 为null返回true.
	 * @see StringUtil#isEmpty(String)
	 * @param l
	 * @return
	 */
	public static boolean isEmpty(Long l) {
		return l == null;
	}

	/**
	 * 为null 返回true.
	 * @param obj
	 * @return
	 */
	public static boolean isEmpty(Object obj) {
		return obj == null;
	}

	@SuppressWarnings("unchecked")
	public static boolean isEmpty(Collection c) {
		return c == null || c.isEmpty();
	}

	/**
	 * 判断是否为空
	 * @param map
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static boolean isEmpty(Map map) {
		return map == null || map.isEmpty();
	}

	/**
	 * 返回Hql in子句风格的字符串. (Object[, Object])
	 * Exp: from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )
	 * from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', 'Baz' )
	 * @param collect
	 * @return 返回Hql in子句风格的字符串.
	 */
	public static String getHqlInStyle(Collection&lt;Long> collect) {
		Long[] a = collect.toArray(new Long[0]);
		if (a.length == 0)
			return "";

		StringBuilder buf = new StringBuilder();
		buf.append('(');
		buf.append(a[0]);

		for (int i = 1; i &lt; a.length; i++) {
			buf.append(", ");
			buf.append(a[i]);
		}

		buf.append(")");
		return buf.toString();
	}

	/**
	 * 生成指定长度的随机数字.
	 * @param count
	 * @return
	 */
	public static String randomNumeric(int count) {
		return RandomStringUtils.randomNumeric(count);
	}

	/**
	 * 生成长度为1,值为1-9的随机数字.
	 * @return
	 */
	public static String randomNumericBetween1And9() {
		return RandomStringUtils.random(1, "123456789");
	}

	/**
	 * 生成指定长度的随机数字,第一位不为0.
	 * @param count
	 * @return
	 */
	public static String randomNumericStartWithoutZero(int count) {
		return StringUtil.randomNumericBetween1And9() + StringUtil.randomNumeric(count - 1);
	}

	/**
	 * 密码为6位随机数字，并且第一位大于0。
	 * @return
	 */
	public static String randomNumericPassword() {
		return StringUtil.randomNumericBetween1And9() + StringUtil.randomNumeric(5);
	}
	
}
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://duanni.javaeye.com/blog/253341#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 20:48:15 +0800</pubDate>
        <link>http://duanni.javaeye.com/blog/253341</link>
        <guid>http://duanni.javaeye.com/blog/253341</guid>
      </item>
          <item>
        <title>更新一下js验证框架</title>
        <author>tywo45</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://tywo45.javaeye.com">tywo45</a>&nbsp;
                    链接：<a href="http://tywo45.javaeye.com/blog/253317" style="color:red;">http://tywo45.javaeye.com/blog/253317</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          新版同时支持jquery和prototype(有3个朋友要求支持jquery:)),WebRoot\js\validate目录有两个.bat文件,双击即可切换到jquery或prototype环境.用法上和原来一样(内附详细文档),但是现在必须要new一个验证器出来,大家要是嫌烦,也可以事先在validate.jsp中一次new好<br /><br />个人还是觉得这个框架比较适合规范型产品使用,因为既简单又灵活,提示信息统一且国际化.
          <br/>
          <span style="color:red;">
            <a href="http://tywo45.javaeye.com/blog/253317#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 19:20:15 +0800</pubDate>
        <link>http://tywo45.javaeye.com/blog/253317</link>
        <guid>http://tywo45.javaeye.com/blog/253317</guid>
      </item>
          <item>
        <title>When Runtime.exec() won't - Runtime.exec的陷阱</title>
        <author>wintersun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://search.javaeye.com">wintersun</a>&nbsp;
                    链接：<a href="http://search.javaeye.com/blog/253257" style="color:red;">http://search.javaeye.com/blog/253257</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp; 原文比较长，在这里就不转载了，给出地址：<a href="http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=1">http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=1</a></p>
<ol>
<li>文中总结了几个要点：<br />You cannot obtain an exit status from an external process until it has exited<br />直到一个外部进程退出，你才能获取其退出状态值。<br /><strong>正确代码</strong>：
<pre name="code" class="java">int exitVal = proc.waitFor();</pre>
&nbsp;<strong>缺陷代码</strong>：
<pre name="code" class="java">int exitVal = proc.exitValue();</pre>
&nbsp;</li>
<li>You must immediately handle the input, output, and error streams from your spawned external process<br />你必须马上处理从外部进程获得的大量输入、输出以及错误流（如果存在的话）。之所以要这样来做，是因为&ldquo;Because some native platforms only provide limited buffer size for standard input and output streams, failure to promptly write the input stream or read the output stream of the subprocess may cause the subprocess to block, and even deadlock.&rdquo;。（来自Java Doc：某些本地平台只提供了有限的buffer给标准输入、输出流。一旦写入失败，子进程就有可能被阻塞甚至死锁。）<br /><strong>正确代码</strong>：
<pre name="code" class="java">import java.util.*;
import java.io.*;
public class MediocreExecJavac
{
    public static void main(String args[])
    {
        try
        {            
            Runtime rt = Runtime.getRuntime();
            Process proc = rt.exec("javac");
            InputStream stderr = proc.getErrorStream();
            InputStreamReader isr = new InputStreamReader(stderr);
            BufferedReader br = new BufferedReader(isr);
            String line = null;
            System.out.println("&lt;ERROR&gt;");
            while ( (line = br.readLine()) != null)
                System.out.println(line);
            System.out.println("&lt;/ERROR&gt;");
            int exitVal = proc.waitFor();
            System.out.println("Process exitValue: " + exitVal);
        } catch (Throwable t)
          {
            t.printStackTrace();
          }
    }
}</pre>
&nbsp;&nbsp;<br /><strong>缺陷代码</strong>：
<pre name="code" class="java">import java.util.*;
import java.io.*;
public class BadExecJavac2
{
    public static void main(String args[])
    {
        try
        {            
            Runtime rt = Runtime.getRuntime();
            Process proc = rt.exec("javac");
            int exitVal = proc.waitFor();
            System.out.println("Process exitValue: " + exitVal);
        } catch (Throwable t)
          {
            t.printStackTrace();
          }
    }
}
</pre>
&nbsp;&nbsp;</li>
<li>You must use Runtime.exec() to execute programs<br />&nbsp;你必须使用Runtime.exec()来执行程序(这句我不太理解)</li>
<li>You cannot use Runtime.exec() like a command line<br />你不能用Runtime.exec()来执行像命令行那样的程序，如重定向输出：Process proc = rt.exec("java jecho 'Hello World' &gt; test.txt");&nbsp; <br />这段程序的意图是运行一个名为jecho的Java程序，并将其输出重定向到test.txt文件中。 但这种写法得不到正确结果，因为Runtime.exec()方法并不能很好的执行这种较为复杂的命令行，必须通过自己处理程序输出并写入到相应的文件</li>
</ol>
<p>&nbsp;最后给出完整的代码：</p>
<p>Class StreamGobbler 用于处理输出流：</p>
<pre name="code" class="java">import java.util.*;
import java.io.*;
class StreamGobbler extends Thread
{
    InputStream is;
    String type;
    OutputStream os;
    
    StreamGobbler(InputStream is, String type)
    {
        this(is, type, null);
    }
    StreamGobbler(InputStream is, String type, OutputStream redirect)
    {
        this.is = is;
        this.type = type;
        this.os = redirect;
    }
    
    public void run()
    {
        try
        {
            PrintWriter pw = null;
            if (os != null)
                pw = new PrintWriter(os);
                
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String line=null;
            while ( (line = br.readLine()) != null)
            {
                if (pw != null)
                    pw.println(line);
                System.out.println(type + "&gt;" + line);    
            }
            if (pw != null)
                pw.flush();
        } catch (IOException ioe)
            {
            ioe.printStackTrace();  
            }
    }
}</pre>
<p>&nbsp;TestExec则是测试用的main class</p>
<pre name="code" class="java">import java.util.*;
import java.io.*;
public class TestExec
{
    public static void main(String args[])
    {
        if (args.length &lt; 1)
        {
            System.out.println("USAGE: java TestExec \"cmd\"");
            System.exit(1);
        }
        
        try
        {
            String cmd = args[0];
            Runtime rt = Runtime.getRuntime();
            Process proc = rt.exec(cmd);
            
            // any error message?
            StreamGobbler errorGobbler = new 
                StreamGobbler(proc.getErrorStream(), "ERR");            
            
            // any output?
            StreamGobbler outputGobbler = new 
                StreamGobbler(proc.getInputStream(), "OUT");
                
            // kick them off
            errorGobbler.start();
            outputGobbler.start();
                                    
            // any error???
            int exitVal = proc.waitFor();
            System.out.println("ExitValue: " + exitVal);
        } catch (Throwable t)
          {
            t.printStackTrace();
          }
    }
}</pre>
<p>&nbsp;</p>
<p>测试例子： java TestExec "iexplore <a href="http://www.sina.com.cn">www.sina.com.cn</a>" （因为iexplore.exe已经在windows的环境变量Path中，所以这些调用没有问题，否则就要写绝对路径）&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://search.javaeye.com/blog/253257#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 16:58:37 +0800</pubDate>
        <link>http://search.javaeye.com/blog/253257</link>
        <guid>http://search.javaeye.com/blog/253257</guid>
      </item>
          <item>
        <title>Servlet+JSP分页的一个例子</title>
        <author>jacky.jihao</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jacky-jihao.javaeye.com">jacky.jihao</a>&nbsp;
                    链接：<a href="http://jacky-jihao.javaeye.com/blog/253280" style="color:red;">http://jacky-jihao.javaeye.com/blog/253280</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>想在网上找个这样的例子，奈何这个世界太浮夸，干实事的不多，搞转帖的垃圾网站一大堆，有的还转的七零八落，有的例子下载还要登录，着实郁闷了一把<br /><br />最后还是决定自己写吧，本例子提供eclipse工程压缩包下载，直接导入就能用了，本着踏实的态度干这件事，希望能给新手帮助。<br /><br />本例着重介绍如何表现层分页的小技巧，DAO只是一个Demo，数据库查询的分页技巧不在本文讨论范围之内。</p>
<p>&nbsp;</p>
<p>先看看最终效果的一个截图：</p>
<p><br /><img src="/upload/attachment/42833/c189bd65-5b40-3df8-9731-9091ae1877dd.png" alt="" /><br />&nbsp;&nbsp;</p>
<p>单从表现层来说分页不是一个复杂的工作，稍微理一下思路，处于不同competence level的同学应该都能自己搞出来。</p>
<p>&nbsp;</p>
<p>以上面的文章列表分页为例，我觉得分页有两点重要的，</p>
<p>一是：分页我们必须首先自己搞清楚，文章总数、每页显示文章数(页大小)、页数</p>
<p>二是：如何做好页脚的分页导航条</p>
<p>&nbsp;</p>
<p>实际应用中，文章总数这个值我们从数据库可以得到；每页显示的文章数即分页的页大小可以自己定义；页数我们可以通过下面的个表达式简单得出。</p>
<p>&nbsp;</p>
<p>假设：</p>
<p>&nbsp;&nbsp;int pageSize = 10; //分页大小<br />&nbsp;&nbsp;int totalPosts = PagingDAO.entryList.size(); //总文章数<br />&nbsp;&nbsp;int totalPages = totalPosts/pageSize + ((totalPosts%pageSize)&gt;0?1:0); //计算得出的总页数</p>
<p>&nbsp;</p>
<p>每页的文章怎么取出来？</p>
<p>&nbsp; 知道分页的大小之后，我们生成了页好的选取下拉框，每次选择第几页的时候，都会向Servlet传递当前选择页号的参数，这样Servlet调用后面的DAO相应的方法，取得文章列表信息，再回传到JSP以供显示。</p>
<p>&nbsp;</p>
<p>看看我们用作显示的index.jsp</p>
<pre name="code" class="html">&lt;%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%&gt;
&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&gt;

page Size : ${pageSize}
&lt;br /&gt;
Total Posts: ${totalPosts}
&lt;br /&gt;
Total Pages: ${totalPages}
&lt;br /&gt;
Current Page: ${pageNumber}
&lt;hr /&gt;

&lt;table&gt;
	&lt;thead&gt;
		&lt;tr align="center"&gt;
			&lt;td width="10%"&gt;Article ID&lt;/td&gt;
			&lt;td width="70%"&gt;Article Title&lt;/td&gt;
			&lt;td colspan="3"&gt;Actions&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
		&lt;c:forEach items="${entryList}" var="entry"&gt;
			&lt;tr align="center"&gt;
				&lt;td&gt;${entry.entryID}&lt;/td&gt;
				&lt;td&gt;${entry.title}&lt;/td&gt;
				&lt;td&gt;&lt;a href="viewEntry?entryID=${entry.entryID}"&gt;View&lt;/a&gt;&lt;/td&gt;
				&lt;td&gt;&lt;a href="editEntry?entryID=${entry.entryID}"&gt;Edit&lt;/a&gt;&lt;/td&gt;
				&lt;td&gt;&lt;a href="deleteEntry?entryID=${entry.entryID}"&gt;Delete&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/c:forEach&gt;
	&lt;/tbody&gt;
	&lt;tfoot&gt;
		&lt;tr align="center"&gt;
			&lt;td colspan="5"&gt;
				&lt;jsp:include page="paging_footer.jsp"&gt;&lt;/jsp:include&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/tfoot&gt;
&lt;/table&gt;

&lt;hr/&gt;</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>这些流程清晰之后，我们就可以实现分页导航条了，也就是上面的paging_footer.jsp</p>
<pre name="code" class="html">&lt;%@ page language="java" contentType="text/html; charset=UTF-8"	pageEncoding="UTF-8"%&gt;
&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%&gt;

&lt;script type="text/javascript"&gt;
function gotoSelectedPage()
{
	var x = document.getElementById("navigatorForm");
	//alert("Original action: " + x.action)
	x.submit();
}
&lt;/script&gt;
&lt;form action="Posts" method="get" id="navigatorForm"&gt;
	&lt;a href="Posts?pageNumber=1"&gt;首页&lt;/a&gt; 
	&lt;c:if test="${pageNumber&gt;1}"&gt;
		&lt;a href="Posts?pageNumber=${pageNumber-1}"&gt;上一页&lt;/a&gt;
	&lt;/c:if&gt; 
	跳转到第 &lt;select name="pageNumber" onchange="gotoSelectedPage();"&gt;
	&lt;c:forEach begin="1" end="${totalPages}" step="1" var="pageIndex"&gt;
		&lt;c:choose&gt;
			&lt;c:when test="${pageIndex eq pageNumber}"&gt;
				&lt;option value="${pageIndex}" selected="selected"&gt;${pageIndex}&lt;/option&gt;
			&lt;/c:when&gt;
			&lt;c:otherwise&gt;
				&lt;option value="${pageIndex}"&gt;${pageIndex}&lt;/option&gt;
			&lt;/c:otherwise&gt;
		&lt;/c:choose&gt;
	&lt;/c:forEach&gt;
	&lt;/select&gt;页 
	&lt;c:if test="${pageNumber&lt;totalPages}"&gt;
		&lt;a href="Posts?pageNumber=${pageNumber+1}"&gt;下一页&lt;/a&gt;
	&lt;/c:if&gt; 
	&lt;a href="Posts?pageNumber=${totalPages}"&gt;末页&lt;/a&gt;
&lt;/form&gt;

</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Posts是我们的Servlet，负责取得相关参数，和DAO打交道，取得一些文章的数据，然后传递到JSP，我们来看一下这个Servlet 的 doGet 方法。</p>
<pre name="code" class="java">	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String pageNumberStr = request.getParameter("pageNumber");
		int pageNumber = 1;
		if(pageNumberStr!=null &amp;&amp; !pageNumberStr.isEmpty())
		{
			pageNumber = Integer.parseInt(pageNumberStr);
		}
		
		int pageSize = 10; //分页大小
		int totalPosts = PagingDAO.entryList.size(); //总文章数
		int totalPages = totalPosts/pageSize + ((totalPosts%pageSize)&gt;0?1:0); //计算得出的总页数
		
		request.setAttribute("pageSize", pageSize);
		request.setAttribute("totalPosts", totalPosts);
		request.setAttribute("pageNumber", pageNumber);
		request.setAttribute("totalPages", totalPages);
		
		List&lt;Entry&gt; entryList = PagingDAO.getEntryList(pageNumber, pageSize);
		System.out.println("entryList:"+ entryList.size());
		request.setAttribute("entryList", entryList);
		
		request.getRequestDispatcher("index.jsp").forward(request, response);		
	}</pre>
<p>&nbsp;</p>
<p><br />&nbsp;&nbsp;分页其实还是很简单的事情，为了方便新手上路，这里提供一下这个eclipse的工程压缩包，直接导入就能用了。</p>
<p>(注意：对于eclipse JEE版本，工程导入后，请自行拷贝jstl.jar 和 standard.jar到WEB-INF/lib目录，如果没有配置Server的话，down个tomcat在eclipse里配置一下，不然怎么run？这个基础的应该都会吧)</p>
<p>&nbsp;</p>
<p><a href="/upload/attachment/42839/a2f48fe5-2bde-3d19-acd2-6ee2bc418987.zip" target="_blank"><strong><span style="color: #ff0000;">点此下载</span></strong></a> </p>
          <br/>
          <span style="color:red;">
            <a href="http://jacky-jihao.javaeye.com/blog/253280#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' 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, 15 Oct 2008 16:52:00 +0800</pubDate>
        <link>http://jacky-jihao.javaeye.com/blog/253280</link>
        <guid>http://jacky-jihao.javaeye.com/blog/253280</guid>
      </item>
          <item>
        <title>eclipse插件版即时股价查询</title>
        <author>defrag_sly</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://defrag-sly.javaeye.com">defrag_sly</a>&nbsp;
                    链接：<a href="http://defrag-sly.javaeye.com/blog/253221" style="color:red;">http://defrag-sly.javaeye.com/blog/253221</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天做了个插件，即时股价查询，放在eclipse客户端里，可以边工作边看股价了。<br />功能简单，source就不公布了。有空再完善。
          <br/>
          <span style="color:red;">
            <a href="http://defrag-sly.javaeye.com/blog/253221#comments" style="color:red;">已有 <strong>3</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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 16:23:54 +0800</pubDate>
        <link>http://defrag-sly.javaeye.com/blog/253221</link>
        <guid>http://defrag-sly.javaeye.com/blog/253221</guid>
      </item>
          <item>
        <title>facebook open platform的libfbml库在redhat下编译问题汇总</title>
        <author>freeway2000</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://freeway2000.javaeye.com">freeway2000</a>&nbsp;
                    链接：<a href="http://freeway2000.javaeye.com/blog/253188" style="color:red;">http://freeway2000.javaeye.com/blog/253188</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>本文着重解决在编译libfbml中遇到的一些具体问题，所以具体的安装步骤一概省略。<br />
<br />
我使用的linux环境是：<br />
Red Hat Enterprise Linux AS release 4 (Nahant Update 4)<br />
Linux
version 2.6.9-42.0.10.ELsmp (brewbuilder@ls20-bc1-14.build.redhat.com)
(gcc version 3.4.6 20060404 (Red Hat 3.4.6-3)) #1 SMP Fri Feb 16
17:13:42 EST 2007<br />
x86_64 GNU/Linux<br />
<br />
<br />
之前需要安装: xorg-x11-devel、freetype、freetype-devel、fontconfig-devel、php_devel、libjpeg、zip、unzip、libjpeg<br />
<br />
<br />
==========================================================================================================<br />
<br />
状况：<br />
checking for gcc option to accept ANSI C... none needed<br />
checking for a BSD-compatible install... /usr/bin/install -c<br />
checking for special C compiler options needed for large files... no<br />
checking for _FILE_OFFSET_BITS value needed for large files... no<br />
checking for pkg-config... /usr/bin/pkg-config<br />
configure: error: *** pkg-config too old; version 0.16 or better required.<br />
Running &quot;./configure&quot; within the &quot;glib-2.14.6&quot; subdirectory failed with error code 256.&nbsp; Aborting script..<br />
.<br />
解决：<br />
./configure --prefix=/usr<br />
==========================================================================================================<br />
状况：<br />
checking for pkg-config... /usr/bin/pkg-config<br />
checking for GLIB - version &gt;= 2.5.7... <br />
*** 'pkg-config --modversion glib-2.0' returned 2.14.6, but GLIB (2.4.7)<br />
*** was found! If pkg-config was correct, then it is best<br />
*** to remove the old version of GLib. You may also be able to fix the error<br />
*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing<br />
*** /etc/ld.so.conf. Make sure you have run ldconfig if that is<br />
*** required on your system.<br />
*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH<br />
*** to point to the correct configuration files<br />
no<br />
configure: error:<br />
*** GLIB 2.5.7 or better is required. The latest version of<br />
*** GLIB is always available from ftp://ftp.gtk.org/. If GLIB is installed<br />
*** but not in the same location as pkg-config add the location of the file<br />
*** glib-2.0.pc to the environment variable PKG_CONFIG_PATH.<br />
Running &quot;./configure&quot; within the &quot;atk-1.9.1&quot; subdirectory failed with error code 256.&nbsp; Aborting script...<br />
<br />
解决：<br />
ll /usr/lib/libglib*<br />
<br />
lrwxrwxrwx&nbsp; 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 21 Feb 13&nbsp; 2007 /usr/lib/libglib-1.2.so.0 -&gt; libglib-1.2.so.0.0.10<br />
-rwxr-xr-x&nbsp; 1 root root&nbsp; 142948 Aug&nbsp; 9&nbsp; 2004 /usr/lib/libglib-1.2.so.0.0.10<br />
-rwxr-xr-x&nbsp; 1 root root&nbsp;&nbsp;&nbsp;&nbsp; 810 Oct 14 14:49 /usr/lib/libglib-2.0.la<br />
lrwxrwxrwx&nbsp; 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 23 Oct 14 14:49 /usr/lib/libglib-2.0.so -&gt; libglib-2.0.so.0.1400.6<br />
lrwxrwxrwx&nbsp; 1 root root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 23 Oct 14 14:49 /usr/lib/libglib-2.0.so.0 -&gt; libglib-2.0.so.0.1400.6<br />
-rwxr-xr-x&nbsp; 1 root root 2604816 Oct 14 14:49 /usr/lib/libglib-2.0.so.0.1400.6<br />
<br />
确认/usr/lib/libglib-2.0.so 是否指向了 libglib-2.0.so.0.1400.6<br />
否则需要<br />
cd /usr/lib/<br />
rm libglib-2.0.so<br />
ln -s libglib-2.0.so.0.1400.6 libglib-2.0.so<br />
<br />
<br />
==========================================================================================================<br />
状况：<br />
/usr/local/lib/libcairo.so: undefined reference to `FT_GlyphSlot_Embolden'<br />
collect2: ld returned 1 exit status<br />
make[2]: *** [cairosimple] Error 1<br />
make[2]: Leaving directory `/opt/huwei/fbopen/libfbml-1.2.0/dependencies/pango-1.18.4/examples'<br />
make[1]: *** [all-recursive] Error 1<br />
make[1]: Leaving directory `/opt/huwei/fbopen/libfbml-1.2.0/dependencies/pango-1.18.4'<br />
make: *** [all] Error 2<br />
Running &quot;make&quot; within the &quot;pango-1.18.4&quot; subdirectory failed with error code 512.&nbsp; Aborting script...<br />
<br />
解决：<br />
将libXft的安装顺序放在pango的前面<br />
<br />
==========================================================================================================<br />
状况：<br />
checking for jpeg_destroy_decompress in -ljpeg... no<br />
configure: WARNING: *** JPEG loader will not be built (JPEG library not found) ***<br />
configure: error:<br />
*** Checks for JPEG loader failed. You can build without it by passing<br />
*** --without-libjpeg to configure but some programs using GTK+ may<br />
*** not work properly<br />
Running &quot;./configure&quot; within the &quot;gtk+-2.10.13&quot; subdirectory failed with error code 256.&nbsp; Aborting script...<br />
<br />
解决：<br />
./configure --without-libjpeg 或者安装libjpeg<br />
==========================================================================================================<br />
状况：<br />
编译gtk时出现<br />
checking for x86 platform... no<br />
checking for X... no<br />
configure: error: X development libraries not found<br />
<br />
解决：<br />
./configure --x-includes=/usr/X11R6/includes --x-libraries=/usr/X11R6/lib64 --without-libjpeg <br />
<br />
==========================================================================================================<br />
状况：<br />
编译gtk时出现<br />
checking for X... libraries /usr/X11R6/lib, headers /usr/X11R6/includes<br />
checking for dnet_ntoa in -ldnet... no<br />
checking for dnet_ntoa in -ldnet_stub... no<br />
checking for gethostbyname... yes<br />
checking for connect... yes<br />
checking for remove... yes<br />
checking for shmat... yes<br />
checking for IceConnectionNumber in -lICE... no<br />
checking for XOpenDisplay... no<br />
configure: error: *** libX11 not found. Check 'config.log' for more details.<br />
<br />
解决：<br />
说明需要安装xorg-x11-devel，如果无法安装请先安装几个依赖的包freetype、freetype-devel、fontconfig-devel<br />
<br />
==========================================================================================================<br />
状况：<br />
编译libXft时遇到<br />
checking for XRenderFindStandardFormat... no<br />
configure: error: libXrender not found or too old.<br />
<br />
解决：<br />
再编译安装一遍xrender-0.8.3<br />
===========================================================================================================<br />
状况：<br />
../../dist/lib/libgkconcvs_s.a(nsCanvasRenderingContext2D.o)(.text+0x149d): In function <br />
<br />
`nsCanvasRenderingContext2D::SetDimensions(int, int)':<br />
: undefined reference to `XCreatePixmap'<br />
collect2: ld returned 1 exit status<br />
gmake[3]: *** [libgklayout.so] Error 1<br />
gmake[3]: Leaving directory `/usr/home/yunfeng/facebook/facebook/fb-open-platform/libfbml-<br />
<br />
1.2.0/dependencies/mozilla/layout/build'<br />
gmake[2]: *** [libs] Error 2<br />
gmake[2]: Leaving directory `/usr/home/yunfeng/facebook/facebook/fb-open-platform/libfbml-<br />
<br />
1.2.0/dependencies/mozilla/layout'<br />
gmake[1]: *** [tier_9] Error 2<br />
gmake[1]: Leaving directory `/usr/home/yunfeng/facebook/facebook/fb-open-platform/libfbml-1.2.0/dependencies/mozilla'<br />
make: *** [default] Error 2<br />
<br />
解决：<br />
修改dependencies/mozilla/layout/build/Makefile.in<br />
查找<br />
ifdef MOZ_ENABLE_GTK2<br />
EXTRA_DSO_LDOPTS += $(MOZ_GTK2_LIBS) \<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$(NULL)<br />
<br />
改成<br />
ifdef MOZ_ENABLE_GTK2<br />
EXTRA_DSO_LDOPTS += $(MOZ_GTK2_LIBS) \<br />
-L/usr/X11R6/lib -lX11 -lXrender \<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$(NULL)<br />
<br />
这个错误一般发生在firefox编译的时候，我一般都手动解压缩firefox软件，然后修改Makefile.in，然后在build-all.py中屏蔽解压缩<br />
<br />
firefox的语句就行<br />
<br />
===========================================================================================================<br />
如果是x86_64系统编译firefox时发生如下类似错误时<br />
<br />
/usr/bin/ld: skipping incompatible /usr/X11R6/lib/libX11.so when searching for -lX11<br />
/usr/bin/ld: cannot find -lX11<br />
<br />
需要加入如下参数：<br />
<br />
./configure --enable-application=browser --enable-system-cairo --x-libraries=/usr/X11R6/lib64<br />
如果还不行，执行 ldconfig -p | grep libX11 进行分析，看文件是否存在如不存在说明需要安装xorg_x11_devel包<br />
===========================================================================================================<br />
<br />
状况:<br />
编译fbml，如果是64位机器会出现<br />
make[1]: *** No rule to make target `src/lib/os_Linux_x86.o'.&nbsp; Stop.<br />
make: *** [src/lib/os_Linux_x86.o] Error 2<br />
Failed to make libfbml.... Aborting<br />
解决：<br />
修改build-all.py<br />
找到<br />
&nbsp;&nbsp;&nbsp; system(&quot;rm -f src/lib/&quot; + filename) # force the removal of previously set up soft links<br />
&nbsp;&nbsp;&nbsp; createSoftLink(dependenciesdir + sep + mozilla, filename, &quot;src&quot; + sep + &quot;lib&quot;, &quot;..&quot; + sep + &quot;..&quot;)<br />
<br />
修改成：<br />
&nbsp;&nbsp;&nbsp; system(&quot;rm -f src/lib/&quot; + filename) # force the removal of previously set up soft links<br />
&nbsp;&nbsp;&nbsp; if filename==&quot;os_Linux_x86_64.o&quot;: system(&quot;rm -f src/lib/os_Linux_x86.o&quot;)<br />
&nbsp;&nbsp;&nbsp; createSoftLink(dependenciesdir + sep + mozilla, filename, &quot;src&quot; + sep + &quot;lib&quot;, &quot;..&quot; + sep + &quot;..&quot;)<br />
<br />
找到<br />
&nbsp;&nbsp;&nbsp; command = &quot;ln -s &quot; + commonparentdir + sep + match + &quot; &quot; + destdir + sep + filename<br />
&nbsp;&nbsp;&nbsp; system(command)<br />
修改成<br />
&nbsp;&nbsp;&nbsp; command = &quot;ln -s &quot; + commonparentdir + sep + match + &quot; &quot; + destdir + sep + filename<br />
&nbsp;&nbsp;&nbsp; if filename == &quot;os_Linux_x86_64.o&quot;:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; command = &quot;ln -s &quot; + commonparentdir + sep + match + &quot; &quot; + destdir + sep + &quot;os_Linux_x86.o&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; system(command)<br />
&nbsp;&nbsp;&nbsp; system(command)<br />
===========================================================================================================<br />
状况：<br />
sh: phpize: command not found<br />
Running &quot;phpize&quot; within the &quot;ext&quot; subdirectory failed with error code 32512.&nbsp; Aborting script..<br />
解决：<br />
<br />
安装php_devel<br />
<br />
=============================<br />
<br />
其他安装帮助<br />
<a href="http://forum.developers.facebook.com/viewtopic.php?id=16511" target="_blank">http://forum.developers.facebook.com/viewtopic.php?id=16511</a><br />
<a href="http://code.google.com/p/facebook-install/wiki/HowToInstallFBMLInUbuntu8" target="_blank">http://code.google.com/p/facebook-install/wiki/HowToInstallFBMLInUbuntu8</a><br />
<a href="http://blog.5ilinux.com/cgi-bin/mt-search.cgi?IncludeBlogs=1&amp;search=%E4%B8%8B%E8%BD%BD" target="_blank">http://blog.5ilinux.com/cgi-bin/mt-search.cgi?IncludeBlogs=1&amp;search=%E4%B8%8B%E8%BD%BD</a><br />
<a href="http://fyp832008.blog.163.com/blog/static/914394162008914102158448/" target="_blank">http://fyp832008.blog.163.com/blog/static/914394162008914102158448/</a></p>
          <br/>
          <span style="color:red;">
            <a href="http://freeway2000.javaeye.com/blog/253188#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 15:38:06 +0800</pubDate>
        <link>http://freeway2000.javaeye.com/blog/253188</link>
        <guid>http://freeway2000.javaeye.com/blog/253188</guid>
      </item>
          <item>
        <title>让turboGears支持MySQL -- 解决MySQL-python-1.2.2的安装问题</title>
        <author>vb2005xu</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://vb2005xu.javaeye.com">vb2005xu</a>&nbsp;
                    链接：<a href="http://vb2005xu.javaeye.com/blog/253187" style="color:red;">http://vb2005xu.javaeye.com/blog/253187</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天在配置服务器环境时发现即使安装了MySQL-python-1.2.2.tar.gz,也用不了MySQLdb模块的问题,在网上灌水了好长时间才从一个国外的论坛找到了一些解决方案<br />但是可惜不是很全面,结合自己的实践终于解决了这个问题.现将过程记录备案.<br /><br />真诚的希望国内的程序员以及站长在发帖时能够记录些真实可靠的信息,不要人云亦云,<br />因为你的疏忽会造成我们长时间的困惑... 谢谢大家<br /><br />进入Python 后 输入以下命令<br /><pre name="code" class="java">
import MySQLdb
</pre><br />结果发现 出现如下错误:<br /><pre name="code" class="java">
libmysqlclient_r.so.10 文件不存在
</pre><br /><br />怎么会缺少这个 链接库呢 手工做了一个软连接 /usr/lib/libmysqlclient_r.so.10 发现爆出[变量未定义错误]:<br /><pre name="code" class="java">
ImportError: /usr/local/lib/python252/site-packages/_mysql.so: undefined symbol: mysql_set_character_set
</pre><br /><br />困扰了一上午,找了好多国内的网站,包括很拽的博客,都没有找到答案,国内真正的高手们,倡导开源就不要敝帚自珍啊,抱怨 o(∩_∩)o...<br /><br />解决方案:<br /><br />第一步:<br />从 MySQL-python 官网下载MySQL-python-1.2.2.tar.gz文件,解压缩后,进入其中<br />找到site.cfg文件,修改如下所示:<br /><pre name="code" class="java">
[options]
# embedded: link against the embedded server library
# threadsafe: use the threadsafe client
# static: link against a static library (probably required for embedded)

embedded = False
threadsafe = True
static = True


[compiler]
#mysql_root: /usr/local/mysql
library_dirs: /usr/local/mysql/lib #此处为你的mysql共享库目录
include_dirs: /usr/local/mysql/include #此处为你的mysql头文件目录
# libraries: mysqlclient

# The path to mysql_config.
# Only use this if mysql_config is not on your PATH, or you have some weird
# setup that requires it.
#mysql_config = /usr/local/bin/mysql_config

# The Windows registry key for MySQL.
# This has to be set for Windows builds to work.
# Only change this if you have a different version.
registry_key = SOFTWARE\MySQL AB\MySQL Server 5.0

</pre><br /><br />embedded = False 要设为False,否则编译时爆出不能找到mysqld.a错误<br /><br />使用 python setup.py build 编译<br />使用 python setup.py install 安装<br /><br />它会自动安装到Python目录下,无需手动<br /><br />第二步 解决libmysqlclient_r.so.10的问题:<br /><pre name="code" class="java">
ln -s /usr/lib/mysql/libmysqlclient_r.so.10 /lib/libmysqlclient_r.so.10
</pre><br /><br />注意将/usr/lib/mysql/libmysqlclient_r.so.10做一个软连接到/lib目录<br /><br />此时 在Python中导入成功 , 测试成功
          <br/>
          <span style="color:red;">
            <a href="http://vb2005xu.javaeye.com/blog/253187#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' 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, 15 Oct 2008 15:36:37 +0800</pubDate>
        <link>http://vb2005xu.javaeye.com/blog/253187</link>
        <guid>http://vb2005xu.javaeye.com/blog/253187</guid>
      </item>
          <item>
        <title>关于firefox3的一些个人见解（秘技）</title>
        <author>JSF狂人</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jsf35.javaeye.com">JSF狂人</a>&nbsp;
                    链接：<a href="http://jsf35.javaeye.com/blog/253162" style="color:red;">http://jsf35.javaeye.com/blog/253162</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>一直以来都在使用firefox2版本，只是因为新firefox3插件不是很全，总要等一段时间后，插件才能跟上firefox的脚步。</p>
<p>这个道理就像病毒和杀毒软件一样，先有了病毒，才有杀毒软件。事物的很后顺序问题，恶，跑题了！</p>
<p>&nbsp;</p>
<p>（一），因为我有使用多台电脑（一台笔记本，一台台式机，二个虚拟机），又不想每台电脑上都安装一遍firefox，然后再调试一遍，太废事了，所以最后的解决方案是绿色版，copy就可以用的。</p>
<p>&nbsp;</p>
<p>仔细研究了一下网上流传的firefox绿色版的制作方法，发现，并不是适合自己的，因为网上流传的的制作方法，必须需要有一个profiles.ini的配置文件。简单来说，网上流传的方法是建立多个firefox配置方案，在快捷方式启动时加载参数-p指定自己的配置，使用自己定义的方案。但是这种方案依赖于C:\Documents and Settings\用户目录名（当前系统登录的账户名）\Application Data（默认隐藏）\Mozilla\Firefox\profiles.ini，所以，本人也没有心情去再去copy这个文件。</p>
<p>&nbsp;</p>
<p>发现：当我在更改userChrome.css样式时，发现，如果firefox首次运行，会把X:\Program Files\Firefox\defaults\profile目录的配置文件和扩展复制到C:\Documents and Settings\用户目录名（当前系统登录的账户名）\Application Data（默认隐藏）\Mozilla\Firefox\Profiles\XXXXXXXX.default下，并生成相应的配置文件，因此，基于这个原理，我把自己需要的扩展先安装在firefox上，然后复制C:\Documents and Settings\用户目录名（当前系统登录的账户名）\Application Data（默认隐藏）\Mozilla\Firefox\Profiles\XXXXXXXX.default下的文件到X:\Program Files\Firefox\defaults\profile目录，最后，删除C:\Documents and Settings\用户目录名（当前系统登录的账户名）\Application Data（默认隐藏）\。</p>
<p>此时，因没有配置文件相当于系统还没有安装运行过firefox，然后运行firefox，OK，成功了，所有的配置和扩展全部都是刚刚配置好的了。然后把该X:\Program Files\Firefox\版拿到任何一台没有装过firefox的系统上运行，都能正常运行并且配置正确。这样不管是重新安装系统，还是拿到别的机子上运行，只需要copy一个文件就可以了！</p>
<p>&nbsp;</p>
<p>总经此方法：</p>
<p>1，删除原有firefox2及配置文件</p>
<p>2，安装firefox3及扩展，并配置优化firefox</p>
<p>3，复制C:\Documents and Settings\用户目录名（当前系统登录的账户名）\Application Data（默认隐藏）\Mozilla\Firefox\Profiles\XXXXXXXX.default\配置信息到X:\Program Files\Firefox\defaults\profile</p>
<p>4，删除C:\Documents and Settings\用户目录名（当前系统登录的账户名）\Application Data（默认隐藏）\Mozilla目录后可以正常运行</p>
<p>5，注意，如果系统中已经存在firefox配置信息，那么X:\Program Files\Firefox\defaults\profile不会起到作用</p>
<p>原理：firefox在运行时寻找profiles.ini，如果此文件存在，则使用profiles.ini里默认Path目录的配置，如果此文件不存在，则复制X:\Program Files\Firefox\defaults\profile的文件到配置目录，并生成profiles.ini。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>（二），迅雷插件与firefox 3 配合时的一个bug！在使用过程中，发现当安装Thunder Extension（firefox下的迅雷下载扩展）时，firefox3浏览网页时，部分右键功能无反应，不好使，无效（其中显示图片，查看图片，查片页面源代码功能）。</p>
<p>解决办法：</p>
<p>修改C:\Documents and Settings\用户目录名（当前系统登录的账户名）\Application Data（默认隐藏）\Mozilla\Firefox\Profiles\XXXXXXXX.default\extensions\{1B33E42F-EF14-4cd3-B6DC-174571C4349C}\chrome\thunder.jar，此文件为zip格式，可以用rar或zip等压缩软件解包，thunder.jar里content目录下main.xul文件里代码new nsContextMenu(this);更改为new nsContextMenu(this, window.getBrowser());就可以了。</p>
<p>原理：请阅读firefox源码文件nsContextMenu.js， 这个类是需要二个传参的，function nsContextMenu(aXulMenu, aBrowser)&hellip;&hellip;</p>
<p>&nbsp;</p>
<p>当然，不懂的人也可是去下载别人修改完的插件！在哪下载，我不告诉你！不过我想，在javaeye混的人，都应该懂吧！</p>
<p>引用我公司某经理的一句话：这年头不懂ajax还好意思说是程序员？</p>
          <br/>
          <span style="color:red;">
            <a href="http://jsf35.javaeye.com/blog/253162#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 14:51:45 +0800</pubDate>
        <link>http://jsf35.javaeye.com/blog/253162</link>
        <guid>http://jsf35.javaeye.com/blog/253162</guid>
      </item>
          <item>
        <title>Eclipse RCP 插件开发中经常调用的几个方法 </title>
        <author>gzspark</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gzspark.javaeye.com">gzspark</a>&nbsp;
                    链接：<a href="http://gzspark.javaeye.com/blog/253157" style="color:red;">http://gzspark.javaeye.com/blog/253157</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1、重启RCP应用<br /><pre name="code" class="java">PlatformUI.getWorkbench().restart();</pre><br /><br />2、在插件资源库中查找Perspective（其它extend point资源的获得类似）<br /><pre name="code" class="java">IPerspectiveDescriptor ipd = PlatformUI.getWorkbench().getPerspectiveRegistry().findPerspectiveWithId(FavoritePerspective.ID); //根据plugin.xml中的ID查找</pre><br /><br />3、获得当前RCP应用的shell<br /><pre name="code" class="java">Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();</pre><br /><br />4、显示帮助信息<br /><pre name="code" class="java">PlatformUI.getWorkbench().getHelpSystem().displayHelp();</pre>
          <br/>
          <span style="color:red;">
            <a href="http://gzspark.javaeye.com/blog/253157#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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 14:43:30 +0800</pubDate>
        <link>http://gzspark.javaeye.com/blog/253157</link>
        <guid>http://gzspark.javaeye.com/blog/253157</guid>
      </item>
          <item>
        <title>jqGrid 表格demo</title>
        <author>rikugun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://rikugun.javaeye.com">rikugun</a>&nbsp;
                    链接：<a href="http://rikugun.javaeye.com/blog/253149" style="color:red;">http://rikugun.javaeye.com/blog/253149</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          跟原來那個flexgrid的類似,改了一些後台代碼<br /><br /><br /><img src="/upload/attachment/42752/7fb953b5-fdc6-39ab-b55f-d81b68d6011b.png" /><br /><br /><img src="/upload/attachment/42754/0a50c1bd-385c-3b42-984e-64b3587a63d6.png" /><br /><br />list.html<br /><br /><pre name="code" class="html">
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
&lt;html>
  &lt;head>
    &lt;title>会员管理&lt;/title>
    &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    &lt;link rel="stylesheet" type="text/css" media="screen" href="../resources/js/jqGrid/themes/basic/grid.css" />
    &lt;link rel="stylesheet" type="text/css" media="screen" href="../resources/js/jqGrid/themes/jqModal.css" />
    &lt;script src="../resources/js/jquery.js" type="text/javascript">&lt;/script>
    &lt;script src="../resources/js/jqGrid/jquery.jqGrid.js" type="text/javascript">&lt;/script>
    &lt;script src="../resources/js/jqGrid/js/jqModal.js" type="text/javascript">&lt;/script>
    &lt;script src="../resources/js/jqGrid/js/jqDnR.js" type="text/javascript">&lt;/script>
    &lt;script type="text/javascript" src="../resources/js/manage_user.js">&lt;/script>
    &lt;style>
    &lt;/style>
  &lt;/head>
  &lt;body>
    &lt;table id="grid" class="scroll">&lt;/table>
    &lt;div id="nav" class="scroll">&lt;/div>
  &lt;/body>
&lt;/html>
</pre><br /><br />manage_user.js<br /><br /><pre name="code" class="js">
var lastsel2=0;
$(function(){
    $('#grid').jqGrid({
        height:400,
        url:'?module=user&amp;act=list&amp;isajax=1',
        datatype: 'json',
        mtype: 'POST',
        colNames:['ID','用户名','密码','真实姓名','联系电话', 'Email'],
        colModel :[
        {
            name:'id',
            index:'id',
            width:50
        },
        {
            name:'UserName',
            index:'UserName',
            editable:true,
            editrules:{
                required:true
            }
        },
        {
            name:'PassWord',
            index:'PassWord',
            editable:true,
            edittype:'password',
            hidden:true,
            editoptions:{
                size:20
            },
            editrules:{
                edithidden:true
            }
        },
        {
            name:'LinkMan',
            index:'LinkMan',
            editable:true,
            editrules:{
                required:true
            }
        },

        {
            name:'OperateTel',
            index:'OperateTel',
            align:'right',
            editable:true,
            editrules:{
                required:true
            }
        },

        {
            name:'Email',
            index:'Email',
            align:'right',
            editable:true,
            editrules:{
                required:true
            }
        } ],
        pager: 'nav',
        rowNum:10,
        rowList:[10,20,30],
        sortname: 'MemberID',
        sortorder: "desc",
        viewrecords: true,
        imgpath: '../resources/js/jqGrid/themes/basic/images',
        caption: '用户管理',
        //        multikey:'ctrlKey',
        multiselect:true,
        
        editurl:'?module=user&amp;act=Update'

    });

    //定义按键
    $('#grid').navGrid('#nav',{
        refresh: true,
        edit: true,
        add: true,
        del: true,
        search: true
    });


});

</pre><br /><br />user.php<br /><br /><pre name="code" class="html">
function  onList(){
        $in     = &amp;$this->in;
        $tpl     = &amp;$this->tpl;
        $dataset = &amp;$this->objDataSet;
        $isAjax = $in['isajax'];
        if($isAjax){
        $page = $_POST['page'];
        $rp = $_POST['rows'];
        $sortname = $_POST['sidx'];
        $sortorder = $_POST['sord'];
        $q=$in['searchField'];
        $opr=$in['searchOper'];
        $q_val=$in['searchString'];
        if (!$sortname) $sortname = 'MemberID';
        if (!$sortorder) $sortorder = 'desc';

        $sort = "ORDER BY $sortname $sortorder";

        if (!$page) $page = 1;
        if (!$rp) $rp = 10;

        $start = (($page-1) * $rp);

        $limit = "LIMIT $start, $rp ";

        $sql="select MemberID,UserName,'' as PassWord,LinkMan,OperateTel,Email from user $sort";

        $total=$dataset->runSql("select count(*) as total from user");
        $total=(int)$total['total'];

        $result=$dataset->getLista($sql,$rp,$start);
        //        $this->fp->fb($result);
        $ret="{'page':'$page','total':'".ceil($total/$rp)."','records':'$total','rows':[";
        if (!empty($result)) {


        foreach($result as $key=>$row){
            if($key>0)$ret.=",";
            $ret.="{'id':'".$row[MemberID]."',";
            $ret.="'cell':[";
            $i=0;
            foreach($row as $k=>$val){
                if($i)$ret.=",";
                $ret.="'".$val."'";
                $i++;
            }
            $ret.="]}";
        }}
        $ret.="]}";
        
            $tpl->assign('ret',$ret);
            $tpl->display('./rep.json');
        }else{
            //            $tpl->assign('entities',$result);
            $tpl->display(SKIN_FILE.'user/list.html');
        }
    }
    function onUpdate(){
        $in=&amp;$this->in;
        
        if ($in['oper']=='del') {
            $this->onDelete((int)$in['id']);
         
        }else{
           $this->onInsertOrUpdate($in['oper']);
        }
        
    }
    //会员添加
    function onInsertOrUpdate($_act='add'){
        $in      = &amp;$this->in;
        $tpl     = &amp;$this->tpl;
        $dataset = &amp;$this->objDataSet;

        $data = array(
            Email          => trim($in[Email]),
            OperateTel     => trim($in[OperateTel]),
            LinkMan        => trim($in[LinkMan])
        );
        if (!empty($in['PassWord'])) {
           $data['PassWord']=md5(trim($in['PassWord']));
        }
        if($_act=='edit'){
            $MemberID = $dataset->update($data,"MemberID=".(int)$in['id'],"user");
        }else{
            $data['UserName']=$in['UserName'];
            $data['CreateTime']=time();
            $MemberID = $dataset->insert($data,"user");
        }

        $ret=json_encode(array('succees'=>true,'msg'=>'更新成功!'));
        $tpl->assign('ret',$ret);
        $tpl->display('./rep.json');
    }

    function onDelete($_id=0){
        $in = &amp;$this->in;
        $tpl = &amp;$this->tpl;
        $dataset = &amp;$this->objDataSet;
        if ($_id==0) {
            $_id=(int)$in['MemberID'];
        }
        $dataset->delete("MemberID in(0,".$_id.")",'user');
        $ret=json_encode(array('succees'=>true,'msg'=>'删除成功!'));
        $tpl->assign('ret',$ret);
        $tpl->display('./rep.json');
    }
</pre>
          <br/>
          <span style="color:red;">
            <a href="http://rikugun.javaeye.com/blog/253149#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' 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, 15 Oct 2008 14:35:32 +0800</pubDate>
        <link>http://rikugun.javaeye.com/blog/253149</link>
        <guid>http://rikugun.javaeye.com/blog/253149</guid>
      </item>
          <item>
        <title>build firefox 3.1 in Ubuntu/Linux</title>
        <author>mineral</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://mineral.javaeye.com">mineral</a>&nbsp;
                    链接：<a href="http://mineral.javaeye.com/blog/253139" style="color:red;">http://mineral.javaeye.com/blog/253139</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;</p>
<p>准备工作：</p>
<p>&nbsp;</p>
<p>先准备好需要compile的依赖包。</p>
<p>&nbsp;</p>
<h3 class="editable">Build Tools</h3>
<ul>
<li>A recent POSIX Shell</li>
<li>A C++ compiler. <a href="http://gcc.gnu.org/" title="http://gcc.gnu.org/" class="external" rel="external nofollow" target="_blank">GCC 3.4</a>
 or higher is recommended, or your platform's native C/C++ compiler.</li>
<li><a href="http://www.perl.com/pub/language/info/software.html" title="http://www.perl.com/pub/language/info/software.html" class="external" rel="external nofollow" target="_blank">Perl</a>
 5.6 or higher. Older perl versions may work if you upgrade <a href="http://search.cpan.org/%7Ekwilliams/File-Spec/" title="http://search.cpan.org/~kwilliams/File-Spec/" class="external" rel="external nofollow" target="_blank">File::Spec</a>
 to version 0.8</li>
<li><a href="http://www.gnu.org/software/make/" title="http://www.gnu.org/software/make/" class="external" rel="external nofollow" target="_blank">GNU make</a>
 3.79.1 or higher. <em>Other varieties of &quot;make&quot; will not work.</em>
</li>
<li><a href="http://www.mozilla.org/cvs.html" title="http://www.mozilla.org/cvs.html" class="external" rel="external nofollow" target="_blank">CVS</a>
 1.11 or higher</li>
<li>the <a href="http://www.gtk.org/" title="http://www.gtk.org/" class="external" rel="external nofollow" target="_blank">GTK2</a>
 widget toolkit, version 2.10 or higher</li>
<li>libXt-devel for X11/Intrinsic.h, X11/Shell.h</li>
<li>libIDL 0.6.3 or higher Source snapshots are available from Mozilla via <a href="ftp://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/SRPMS/" title="ftp://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/SRPMS/" class="link-ftp" rel="external nofollow" target="_blank">ftp</a>
. If using the RPMs, you'll need both the regular rpm and the -devel rpm. If you already have <a href="http://www.labs.redhat.com/orbit/" title="http://www.labs.redhat.com/orbit/" class="external" rel="external nofollow" target="_blank">ORBit</a>
installed, then you do not need to install libIDL as ORBit bundles
libIDL. You may need to install the ORBit-devel package if you use
packages.</li>
<li><a href="http://www.info-zip.org/" title="http://www.info-zip.org/" class="external" rel="external nofollow" target="_blank">zip</a>
 2.3 (or higher)</li>
<li><a href="http://freetype.org/" title="http://freetype.org/" class="external" rel="external nofollow" target="_blank">freetype</a>
 2.1.0 (or higher)</li>
<li><a href="http://fontconfig.org/" title="http://fontconfig.org/" class="external" rel="external nofollow" target="_blank">fontconfig</a>
</li>
<li><a href="http://pkgconfig.freedesktop.org/wiki/" title="http://pkgconfig.freedesktop.org/wiki/" class="external" rel="external nofollow" target="_blank">pkg-config</a>
 0.9.0 (or higher)</li>
<li>dbus-1-glib-devel (Developer package for D-Bus/GLib bindings)</li>
<li>libasound2-dev (needed for Ogg support)</li>
</ul>
<p>If you're running a Debian- or Ubuntu-derived system, you may be able to use <code>apt-get build-dep firefox</code>
 OR <code>apt-get build-dep iceweasel</code>
 and <code> sudo apt-get install libdbus-glib-1-dev curl </code>
 to pull in most of the prerequisites. The <code>libcurl-dev</code>
 package is also needed if you're building the crashreporter (on Ubuntu it's provided by either <code>libcurl4-openssl-dev</code>
 or <code>libcurl4-gnutls-dev</code>
). Alternatively you can disable the crashreporter (option &quot;--disable-crashreporter&quot;).</p>
<p>&nbsp;</p>
<p>这里写的好多，有的可能已经装了，有的可能没有装，按情况sudo apt-get install , 最好是上面提到的包，如果下面make的时候提示Error, 把-dev的包都装上。</p>
<p>&nbsp;</p>
<p>sudo apt-get install build-essential</p>
<p>sudo apt-get install pkg-config fontconfig autoconf2.13 </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>先下载firefox源代码</p>
<p><a href="http://hg.mozilla.org/mozilla-central" target="_blank">http://hg.mozilla.org/mozilla-central</a></p>
<p>选定一个你想下载的版本，下载到本地。 </p>
<p>&nbsp;</p>
<p>tar -xjvf&nbsp; xxxx.tar.bz2&nbsp; #xxxx为你下载的firefox src包文件名</p>
<p>cd xxxx</p>
<p>&nbsp;</p>
<p>配置一下自己的编译参数</p>
<p>&nbsp;</p>
<p>vi .mozconfig</p>
<p>&nbsp;</p>
<pre name="code" class="python">. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt
mk_add_options AUTOCONF=autoconf2.13

ac_add_options --disable-tests
ac_add_options --disable-debug
ac_add_options --disable-installer
ac_add_options --disable-xprint
ac_add_options --disable-crashreporter
ac_add_options --disable-mochitest
ac_add_options --disable-mailnews
ac_add_options --disable-javaxpcom

ac_add_options --enable-xft
ac_add_options --enable-default-toolkit=cairo-gtk2
ac_add_options --enable-optimize=&quot;-O2 -g -pipe -march=i686&quot;</pre>
<p>&nbsp;</p>
<p>看情况，作加减，不熟悉的不要加。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<pre name="code" class="python">ac_add_options --enable-optimize=&quot;-O2 -g -pipe -march=i686&quot;</pre>
<p>&nbsp;</p>
<p>&nbsp;这行,特别根据系统和cpu做优化。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>开始编译：</p>
<p>&nbsp;</p>
<pre name="code" class="python">$ make -f client.mk build
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>漫长的等待，我的机器大概等了40分钟左右。E2180的cpu.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>编译完了，打发布包：</p>
<pre name="code" class="python">$cd ff-opt
$make package</pre>
&nbsp;
<p>这会在ff-opt目录的dist下生成一个firefox-3.1b2pre.en-US.linux-i686.tar.bz2，这是个免install的包。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>运行：</p>
<p>&nbsp;</p>
<p>解决上面那个包到哪个目录，如&nbsp;</p>
<pre name="code" class="python">$tar -xjvf  firefox-3.1b2pre.en-US.linux-i686.tar.bz2  -C /usr/local/firefox/nightly
$/usr/local/firefox/nightly/firefox/firefox </pre>
&nbsp;
<p>就可以运行了。</p>
<p>&nbsp;</p>
<p>为了不和原来的firefox3.0.3冲突，请先准备好两个Profile, 名字如nightly 然后使用 </p>
<p>&nbsp;</p>
<pre name="code" class="python">$/usr/local/firefox/nightly/firefox/firefox  -P  nightly</pre>
<p>&nbsp;</p>
<p>firefox --help </p>
<p>firefox -ProfileManager 创建profile</p>
<p>&nbsp;</p>
<p>如果想用原来的的plugins和配置，创建完profile后，直接cp ，下面是我的，cp那行使用你们本机的名字。那是个随机的。</p>
<p>&nbsp;</p>
<pre name="code" class="python">$cd ~/.mozilla/firefox

$cp -av  pztu7ehb.default  v224c2kl.nightly

</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>看<a href="http://developer.mozilla.org/en/Build_Documentation">http://developer.mozilla.org/en/Build_Documentation</a>
，这里有英文的详细步骤。</p>
<p><a href="http://developer.mozilla.org/en/mozilla-central">http://developer.mozilla.org/en/mozilla-central</a>
</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://mineral.javaeye.com/blog/253139#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 14:21:30 +0800</pubDate>
        <link>http://mineral.javaeye.com/blog/253139</link>
        <guid>http://mineral.javaeye.com/blog/253139</guid>
      </item>
          <item>
        <title>德鲁克日志读后感之六十三</title>
        <author>wainwen</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wainwen.javaeye.com">wainwen</a>&nbsp;
                    链接：<a href="http://wainwen.javaeye.com/blog/253134" style="color:red;">http://wainwen.javaeye.com/blog/253134</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <div class="quote_title">引用</div><div class="quote_div"><br /><strong>三月六日 创新与风险承担<br /><br />成功的创新者是保守主义者。<br /></strong><br />我曾参加过一所大学的企业家精神研讨会，会上许多心理学家发表了自己的见解。尽管他们在论文中所陈述的观点各不相同，但他们都谈到了“企业家个性”，亦即“冒险家”个性。与会者中有一位知名的企业家，他是一名创新者，进行了一项程序的创新，并利用它建立了一家全球航天企业，该企业现已有25年的历史了。当请他发表意见时，他说道：“我对各位的大作深感困惑。我了解许多成功的创新者和企业家，包括我自己。我从来没有听过什么‘企业家个性’。我所知道的所有成功者都有一个共同点，而且只有这样一个共同点：他们都不是‘冒险家’。他们都试图找出面临的风险，然后尽量将它们减少到最低。如果不这么做，就没有人能取得成功”。<br /><br />他的话与我所体验到的不谋而合。我也知道许多成功的创新者和企业家，他们中没有一个有“冒险倾向”。大多数的成功创新者在现实生活中都不是有“浪漫气质”的人物，他们把大部分时间花在流动资金的估算上，而非武断地作出冒险尝试。他们并非“专注于风险”，而是“专注于机遇”。<br /><strong><br />行动指南：</strong><br /><br />明确你的哪些想法风险最低且成功的机会最大，好好挖掘这些想法的价值。<br /><strong><br />摘自：</strong><br /><br />彼得.德鲁克《创新与企业家精神》（Innovation and Entrepreneurship）<br /></div><br /><strong>评注：</strong><br /><br />本篇日志源自《创新与企业家精神》第11章“创新原则”第4节“保守的创新者”。德鲁克并不否定历史上的某些创新，是缘于天才人物的“灵光一闪”，只是这类创新无法重复、传授和学习。就像有一些晚期病人会因为奇迹突然康复，但是大多数还是不能幸免一样。<br /><br />德鲁克给出了创新应该注意的六个要点和三点禁忌，还给出了创新要满足的三个条件：需要知识，需要足智多谋；发挥自己的长处；接近市场，以市场为中心，以市场为导向等等。<br /><br />和媒体渲染的相反，创新者常常是保守的。那种义无反顾、拼死一搏的浪漫气质，属于人气偶像，却很少属于真正的企业家。在将创意转换成创新的时候，企业家想得更多的是责任和风险。战战兢兢、如履薄冰；锱铢必较，形似财迷。<br /><br />原文中那位知名企业家还说了一句，“如果我想成为一个冒险家，我早就投身房地产或商品交易了”，可见在哪里都会有冒险家的乐园。冒险也是无法重复、传授和学习的，成功需要机缘，享受成功还需要福缘。<br /><br />机遇和冒险,并不能截然分开。1933年，当丰田喜一郎在纺织机械制作所创建汽车部的时候，很多元老都认为这是年轻人的任性胡闹。企业家很多时候确实需要有冒险精神，冒险不是盲目冲动。就像赌场老手，因为经历过太多的风雨，在亮出自己底牌之前，其实一直进行着枯燥的分析和计算。<br /><br />绝大部分企业的成功，靠的是执着和汗水，而不是捷径和幸运。也许正是必不可少的谨慎和勤恳，才使得成功的企业家，都更像是保守主义者。
          <br/>
          <span style="color:red;">
            <a href="http://wainwen.javaeye.com/blog/253134#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;">Windows7在微软WinHEC 2008上揭开神秘面纱</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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 14:17:51 +0800</pubDate>
        <link>http://wainwen.javaeye.com/blog/253134</link>
        <guid>http://wainwen.javaeye.com/blog/253134</guid>
      </item>
          <item>
        <title>MYSQL完全手册学习笔记（第四章）</title>
        <author>qmug</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://qmug.javaeye.com">qmug</a>&nbsp;
                    链接：<a href="http://qmug.javaeye.com/blog/253114" style="color:red;">http://qmug.javaeye.com/blog/253114</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          MYSQL完全手册学习笔记<br /><br /><br />SQL基础<br /><br />User 库名——使用某个库<br /><br />Show 表名——显示表的各个字段<br /><br />Select count (*) from callslog&nbsp; ——显示一共有多少条记录<br /><br /><br />mysql> create database toys;——建立个数据库<br />Query OK, 1 row affected (0.02 sec)<br /><br />mysql> use toys;<br />Database changed<br />mysql> show tables;<br />Empty set (0.01 sec)<br /><br />mysql> create table user(id int(11) not null auto_increment,primary key(id));<br />建立个表<br /><br />mysql> create table status(id int(11) not null,video_id tinyint(11) not null);<br />Query OK, 0 rows affected (0.08 sec)<br /><br />mysql> alter table status add (hyht varchar(255));<br />Query OK, 0 rows affected (0.28 sec)<br />Records: 0&nbsp; Duplicates: 0&nbsp; Warnings: 0<br /><br />增加字段<br /><br />mysql> alter table status rename haha;<br />Query OK, 0 rows affected (0.03 sec)<br /><br /><br />Alter的用法<br />mysql> CREATE TABLE t1 (a INTEGER,b CHAR(10));<br />重命名表，从t1到t2:<br />mysql> ALTER TABLE t1 RENAME t2;<br />为了改变列a，从INTEGER改为TINYINT NOT NULL(名字一样)，并且改变列b，从CHAR(10)改为CHAR(20)，同时重命名它，从b改为c：<br />mysql> ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);<br />增加一个新TIMESTAMP列，名为d：<br />mysql> ALTER TABLE t2 ADD d TIMESTAMP;<br />在列d上增加一个索引，并且使列a为主键：<br />mysql> ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);<br />删除列c：<br />mysql> ALTER TABLE t2 DROP COLUMN c;<br />增加一个新的AUTO_INCREMENT整数列，命名为c：<br />mysql> ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ADD INDEX (c);<br />注意，我们索引了c，因为AUTO_INCREMENT柱必须被索引，并且另外我们声明c为NOT NULL，因为索引了的列不能是NULL。 当你增加一个AUTO_INCREMENT列时，自动地用顺序数字填入列值。<br /><br /><br />mysql> insert into t2 (a,c)values(1,'hghg');<br />Query OK, 1 row affected (0.03 sec)<br />添加记录<br /><br />mysql> alter table t2 drop column c;<br />Query OK, 0 rows affected (0.25 sec)<br />Records: 0&nbsp; Duplicates: 0&nbsp; Warnings: 0<br /><br />删除列<br /><br /><br />mysql> alter table t2 add (c varchar(255));<br />Query OK, 0 rows affected (0.25 sec)<br />Records: 0&nbsp; Duplicates: 0&nbsp; Warnings: 0<br />增加列<br /><br />注意：一个表中必须有主键才能在mysql插件中直接编辑，否则edit那项为灰色<br /><br /><br />mysql> delete from haha where video_id=2;<br />Query OK, 1 row affected (0.03 sec)<br />有条件的删除数据<br /><br /><br />mysql> update haha set hyht='tt'where hyht='1';<br />Query OK, 2 rows affected (0.02 sec)<br />Rows matched: 2&nbsp; Changed: 2&nbsp; Warnings: 0<br />更新数据<br /><br /><br />mysql> select * from haha;<br />+----+----------+------+<br />| id | video_id | hyht |<br />+----+----------+------+<br />|&nbsp; 1 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 | tt&nbsp;&nbsp; |<br />|&nbsp; 2 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 | erer |<br />|&nbsp; 3 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 | tt&nbsp;&nbsp; |<br />|&nbsp; 4 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 | tt&nbsp;&nbsp; |<br />|&nbsp; 5 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 | tt&nbsp;&nbsp; |<br />+----+----------+------+<br />5 rows in set (0.01 sec)<br /><br />mysql> select hyht from haha<br />+------+<br />| hyht |<br />+------+<br />| tt&nbsp;&nbsp; |<br />| erer |<br />| tt&nbsp;&nbsp; |<br />| tt&nbsp;&nbsp; |<br />| tt&nbsp;&nbsp; |<br />+------+<br />5 rows in set (0.00 sec)<br /><br />mysql> select distinct hyht<br />+------+<br />| hyht |<br />+------+<br />| tt&nbsp;&nbsp; |<br />| erer |<br />+------+<br />2 rows in set (0.01 sec)<br /><br />三个select 查询语句<br /><br /><br /><br />mysql> select * from haha where video_id>2;<br />+----+----------+------+<br />| id | video_id | hyht |<br />+----+----------+------+<br />|&nbsp; 1 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 | tt&nbsp;&nbsp; |<br />|&nbsp; 2 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 | erer |<br />|&nbsp; 3 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 | tt&nbsp;&nbsp; |<br />+----+----------+------+<br />3 rows in set (0.00 sec)<br /><br /><br />mysql> select * from chengji;<br />+----+-------+------+---------+------------+<br />| id | name&nbsp; | math | physics | literature |<br />+----+-------+------+---------+------------+<br />|&nbsp; 1 | john&nbsp; |&nbsp;&nbsp; 60 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 37 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 45 |<br />|&nbsp; 2 | jim&nbsp;&nbsp; |&nbsp;&nbsp; 96 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 89 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 92 |<br />|&nbsp; 3 | bill&nbsp; |&nbsp;&nbsp; 65 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 57 |<br />|&nbsp; 4 | harry |&nbsp;&nbsp; 69 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 85 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12 |<br />+----+-------+------+---------+------------+<br />4 rows in set (0.00 sec)<br />查询chengji表<br /><br /><br />mysql> select * from chengji where math>90;<br />+----+------+------+---------+------------+<br />| id | name | math | physics | literature |<br />+----+------+------+---------+------------+<br />|&nbsp; 2 | jim&nbsp; |&nbsp;&nbsp; 96 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 89 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 92 |<br />+----+------+------+---------+------------+<br />1 row in set (0.00 sec)<br />查询math〉90 分的人<br /><br /><br />mysql> select name from chengji where math>85 and physics>85 and literature >85;<br /><br />+------+<br />| name |<br />+------+<br />| jim&nbsp; |<br />+------+<br />1 row in set (0.00 sec)<br />查询出来的优秀学生<br /><br />mysql> select * from chengji where math&lt;25 or physics &lt;25 or literature &lt;25;<br />+----+-------+------+---------+------------+<br />| id | name&nbsp; | math | physics | literature |<br />+----+-------+------+---------+------------+<br />|&nbsp; 3 | bill&nbsp; |&nbsp;&nbsp; 65 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 57 |<br />|&nbsp; 4 | harry |&nbsp;&nbsp; 69 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 85 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12 |<br />+----+-------+------+---------+------------+<br />2 rows in set (0.00 sec)<br /><br />其中有一门没有过25分的学生<br /><br /><br />mysql> select name,math+physics+literature from chengji;<br />+-------+-------------------------+<br />| name&nbsp; | math+physics+literature |<br />+-------+-------------------------+<br />| john&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 142 |<br />| jim&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 277 |<br />| bill&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 134 |<br />| harry |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 166 |<br />+-------+-------------------------+<br /><br /><br />得出三门成绩的总分数<br /><br />mysql> select name,math+physics+literature as zf from chengji order by zf;<br />+-------+-----+<br />| name&nbsp; | zf&nbsp; |<br />+-------+-----+<br />| bill&nbsp; | 134 |<br />| john&nbsp; | 142 |<br />| harry | 166 |<br />| jim&nbsp;&nbsp; | 277 |<br />+-------+-----+<br />4 rows in set (0.00 sec)<br /><br />按照从低到高排列<br /><br />mysql> select name,math+physics+literature as zf from chengji order by zf desc<br /><br />+-------+-----+<br />| name&nbsp; | zf&nbsp; |<br />+-------+-----+<br />| jim&nbsp;&nbsp; | 277 |<br />| harry | 166 |<br />| john&nbsp; | 142 |<br />| bill&nbsp; | 134 |<br />+-------+-----+<br />4 rows in set (0.00 sec)<br /><br /><br />按照从高到低的顺序排列<br /><br /><br />内建函数<br />Sum、avg、min、max、<br /><br />mysql> select avg(math), avg(physics) from chengji;<br />+-----------+--------------+<br />| avg(math) | avg(physics) |<br />+-----------+--------------+<br />|&nbsp;&nbsp; 72.5000 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 55.7500 |<br />+-----------+--------------+<br />1 row in set (0.00 sec)<br /><br /><br />mysql> select min(math) from chengji;<br />+-----------+<br />| min(math) |<br />+-----------+<br />|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 60 |<br />+-----------+<br />1 row in set (0.00 sec)<br /><br />mysql> select max(math) from chegnji;<br />ERROR 1146 (42S02): Table 'toys.chegnji' doesn't exist<br />mysql> select max(math) from chengji;<br />+-----------+<br />| max(math) |<br />+-----------+<br />|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 96 |<br />+-----------+<br />1 row in set (0.00 sec)<br /><br /><br /><br /><br />Limit后面跟的2个参数是从开始行的位置和要显示行的个数<br />mysql> select * from chengji order by math desc limit 0,4;<br />+----+-------+------+---------+------------+<br />| id | name&nbsp; | math | physics | literature |<br />+----+-------+------+---------+------------+<br />|&nbsp; 2 | jim&nbsp;&nbsp; |&nbsp;&nbsp; 96 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 89 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 92 |<br />|&nbsp; 4 | harry |&nbsp;&nbsp; 69 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 85 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12 |<br />|&nbsp; 3 | bill&nbsp; |&nbsp;&nbsp; 65 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 57 |<br />|&nbsp; 1 | john&nbsp; |&nbsp;&nbsp; 60 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 37 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 45 |<br />+----+-------+------+---------+------------+<br />4 rows in set (0.00 sec)<br /><br />mysql> select * from chengji order by math desc limit 2,4;<br />+----+------+------+---------+------------+<br />| id | name | math | physics | literature |<br />+----+------+------+---------+------------+<br />|&nbsp; 3 | bill |&nbsp;&nbsp; 65 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 57 |<br />|&nbsp; 1 | john |&nbsp;&nbsp; 60 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 37 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 45 |<br />+----+------+------+---------+------------+<br />2 rows in set (0.00 sec)<br /><br /><br />通配符模糊查询<br />mysql> select *&nbsp; from chengji where name like '%j%';<br />+----+------+------+---------+------------+<br />| id | name | math | physics | literature |<br />+----+------+------+---------+------------+<br />|&nbsp; 1 | john |&nbsp;&nbsp; 60 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 37 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 45 |<br />|&nbsp; 2 | jim&nbsp; |&nbsp;&nbsp; 96 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 89 |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 92 |<br />+----+------+------+---------+------------+<br />2 rows in set (0.00 sec)<br /><br />mysql> select math&nbsp; from chengji where name like '%j%';<br />+------+<br />| math |<br />+------+<br />|&nbsp;&nbsp; 60 |<br />|&nbsp;&nbsp; 96 |<br />+------+<br />2 rows in set (0.02 sec)<br /><br /><br /><br />mysql> select name,math from chengji where math like '%9%';<br />+-------+------+<br />| name&nbsp; | math |<br />+-------+------+<br />| jim&nbsp;&nbsp; |&nbsp;&nbsp; 96 |<br />| harry |&nbsp;&nbsp; 69 |<br />+-------+------+<br />2 rows in set (0.00 sec)<br /><br /><br />mysql> select * from haha,chengji;<br />查询多个表里面所有字段，也可以查询出来需要的字段<br /><br />mysql> select m.hyht,v.math from haha m,chengji v;<br /><br />别名
          <br/>
          <span style="color:red;">
            <a href="http://qmug.javaeye.com/blog/253114#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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 15 Oct 2008 13:45:08 +0800</pubDate>
        <link>http://qmug.javaeye.com/blog/253114</link>
        <guid>http://qmug.javaeye.com/blog/253114</guid>
      </item>
          <item>
        <title>教教你如何利用网络广告赚￥和$</title>
        <author>Jummy</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jummy.javaeye.com">Jummy</a>&nbsp;
                    链接：<a href="http://jummy.javaeye.com/blog/253094" style="color:red;">http://jummy.javaeye.com/blog/253094</a>&nbsp;
          发表时间: 2008年10月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;<span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff6600;">最近一直在研究如何投放广告，当然不是空穴来分。和朋友一直在研究，探讨。实质性也是已收到Money为准。</span>
</span>
</p>
<p><span style="color: #ff6600; font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不过，这几天一直在忙project。不敢怠慢。等广告技术已经弄好，收到money之后会把详细资料公布给各位网友。</span>
</p>
<p><span style="color: #ff6600; font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天，你可能来失望了，因为实在太忙。给的任务还没有完成，所以暂时先写到这。当然<br />
，我说到做到！谢谢你的光临，抱歉。</span>
</p>
<p><span style="font-size: small;"><span style="color: #ff6600;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 先给个链接把</span>
 </span>
<span style="color: #ff0000; font-size: medium;"><a href="http://9gao.com/cf.aspx?48&amp;jummy" title="网络广告赚钱" target="_self">网络广告赚钱多多，包括￥$哦</a>
</span>
</p>
          <br/>
          <span style="color:red;">
            <a href="http://jummy.javaeye.com/blog/253094#comments" style="color:red;">已有 <strong>2</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span 