<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>asflex</title>
    <description>学习是持续的,只有不段的的充电,才能从容去面对困难.</description>
    <link>http://asflex.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>js控制服务器时间的显示</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/250395" style="color:red;">http://asflex.javaeye.com/blog/250395</a>&nbsp;
          发表时间: 2008年10月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
&lt;HTML>
&lt;HEAD>
&lt;TITLE>js控制服务器时间显示&lt;/TITLE>

&lt;script>
	var serverTime = new Date();//用于在页面显示的最终时间值
	
	function formatDate(date) {//格式化时间为"yyyy-MM-dd HH:mm:ss"
		
	return date.getYear() + "-" +
	(date.getMonth() &lt; 10 ? "0" + date.getMonth() : date.getMonth()) + "-" + (date.getDate() &lt; 10 ? "0" + date.getDate() : date.getDate()) + " " + (date.getHours() &lt; 10 ? "0" + date.getHours() : date.getHours()) + ":" + (date.getMinutes() &lt; 10 ? "0" + date.getMinutes() : date.getMinutes()) + ":" + (date.getSeconds() &lt; 10 ? "0" + date.getSeconds() : date.getSeconds());
	}
	
//获取服务器的时间，该方法只调用一次，客户端看到的时间都将基于些时间
	function serverCurTime() {
			
	  var srvTimeEl = document.getElementById("serverTime");  
	  var srvTimeVal;
	  if(window.navigator.userAgent.toLowerCase().indexOf("msie")>=1) {//判断浏览器类型
  		srvTimeVal = srvTimeEl.innerText;
	  } else {
  		srvTimeVal = srvTimeEl.textContent;   
      }
	  var splitTime = srvTimeVal.split(" ");
	  
	  var ymd = splitTime[0].split("-");
	  var year = ymd[0];
	  var month = ymd[1];
	  var date= ymd[2];
	   
	  var hms = splitTime[1].split(":");
	  var hour = parseInt(hms[0]);
	  var minute = parseInt(hms[1]);
	  var second = parseInt(hms[2]);
	  
	  serverTime.setYear(year);
	  serverTime.setMonth(month);
	  serverTime.setDate(date);
	  serverTime.setHours(hour);
	  serverTime.setMinutes(minute);
	  serverTime.setSeconds(second);
	  document.getElementById("curTime").innerText = formatDate(serverTime);
	 }

	 function plusOneSec() {//自动增加一秒
	 	serverTime.setSeconds(serverTime.getSeconds() + 1);
		document.getElementById("curTime").innerText = formatDate(serverTime);  	
	 }

setInterval(plusOneSec,1000);//每隔一分钟调用plusOneSec function
	&lt;/script>

&lt;/HEAD>

&lt;BODY onload="serverCurTime();">
&lt;!--隐藏获得的服务器时间-->
&lt;span id="serverTime" style="display:none">2008-03-23 12:00:00&lt;/span>
&lt;!--显示在页面的实际时间-->
&lt;span id="curTime">&lt;/span>
&lt;/tbody>
&lt;/table>
&lt;/BODY>
&lt;/HTML>



</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/250395#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 08 Oct 2008 16:51:57 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/250395</link>
        <guid>http://asflex.javaeye.com/blog/250395</guid>
      </item>
          <item>
        <title>mysql表之间数据转移</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/250302" style="color:red;">http://asflex.javaeye.com/blog/250302</a>&nbsp;
          发表时间: 2008年10月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">

//把User表中相关字段的记录并入到UserAdditionalInfo表中
insert tbl_user_additional_info
(user_id,country,address,postal_code,phone,edu_background)
select 
user_id,country,address,postal_code,phone,edu_background
from tbl_user where user_id not in(select user_id from tbl_user_additional_info);

//更改User表的结构
alter table tbl_user 
drop user_id,
drop country,
drop address,
drop postal_code,
drop phone,
drop edu_background;

##############################


</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/250302#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 08 Oct 2008 14:16:31 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/250302</link>
        <guid>http://asflex.javaeye.com/blog/250302</guid>
      </item>
          <item>
        <title>关于eclipse cannot connect VM错误</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/241227" style="color:red;">http://asflex.javaeye.com/blog/241227</a>&nbsp;
          发表时间: 2008年09月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天写了一个HttpClient的简单例子，遇到用eclipse 调试老报cannot connect VM　错误，一直搞不懂为什么，后来再网上查了一下，有说杀毒软件，防火墙导致的，可是关闭它们后，还是报同样的错误。但是我在调试其他项目里面的代码时并不报错，由此我把问题定位在当前项目范围内，然后一个一个jar包清除，只留下HttpClient需要的包，再次调试，问题得到解决。<br /><br />个人认为是jar包的混乱导致的，不知道谁能解释这个问题。
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/241227#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 12 Sep 2008 15:32:56 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/241227</link>
        <guid>http://asflex.javaeye.com/blog/241227</guid>
      </item>
          <item>
        <title>设计模式之———（行为模式）Template</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/241138" style="color:red;">http://asflex.javaeye.com/blog/241138</a>&nbsp;
          发表时间: 2008年09月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">
/*抽象模板的实现*/
public abstract class Templator {

    public void hookMethod() {}//钩子方法，提供默认实现，子类可以提供具体　　　　的实现
    public void concreteMethod() {//组装方法
       abstractMethod0();
      abstractMethod1();
    }

    public abstract void abstractMethod0();　//抽象方法，需要子类提供具体的实现
    public abstract void abstractMethod1();　//抽象方法，需要子类提供具体的实现

}

/*具体模板1*/
public class ConcreteTemplator1 extends Templator{

    public void hookMethod() {
        System.out.println("invoke ConcreteTemplator1.hookMethod()...");
    }

    public void abstractMethod0() {
         System.out.println("invoke ConcreteTemplator1.abstractMethod0()...");
    }

    public void abstractMethod1() {
         System.out.println("invoke ConcreteTemplator1.abstractMethod1()...");

}

/*具体模板2*/
public class ConcreteTemplator2 extends Templator {

    public void hookMethod() {
        System.out.println("invoke ConcreteTemplator2.hookMethod()...");
    }

    public void abstractMethod0() {
         System.out.println("invoke ConcreteTemplator2.abstractMethod0()...");
    }

    public void abstractMethod1() {
         System.out.println("invoke ConcreteTemplator2.abstractMethod1()...");

}

/*测试类*/
public class Client() {
　　public static void main(String[]args) {
       Templator t1 = new ConcreteTemplator1();
       t1.hookMethod();
       t1.concreteMethod();
       Templator t2 = new ConcreteTemplator2();
       t2.hookMethod();
       t2.concreteMethod();  
   }
}

//输出结果：
invoke ConcreteTemplator1.hookMethod()...
invoke ConcreteTemplator1.abstractMethod1()...
invoke ConcreteTemplator1.abstractMethod1()...
invoke ConcreteTemplator2.hookMethod()...
invoke ConcreteTemplator2.abstractMethod1()...
invoke ConcreteTemplator2.abstractMethod1()...
</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/241138#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 12 Sep 2008 12:33:25 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/241138</link>
        <guid>http://asflex.javaeye.com/blog/241138</guid>
      </item>
          <item>
        <title>tapestry4解决数据库重复读取的问题</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/241074" style="color:red;">http://asflex.javaeye.com/blog/241074</a>&nbsp;
          发表时间: 2008年09月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近发现程序的响应速度极其慢，然后调试发现，程序有的地方本应读取一次数据库的地方，读了好几次，这样势必造成性能上的响应问题。<br />造成此问题的原因，发现是由于tapestry自身的机制造成的。<br />下面给一点小小的源码进行对比：<br />重复读取数库:<pre name="code" class="java">
public List getRecordsFromDB() {
   return "返回数据库查找到的记录集";
}　
/*在该方法里设置段点时，将查找数据库四次*/
</pre><br /><br />解决方法:在Page类中定义一个变量<br /><pre name="code" class="java">
public List records = null;
public void pageBeginRender(PageEvent event) {
    if(records == null) {
       records = getRecordsFromDB();
    }
}
/*在getRecordsFromDB()中设置段点，将执行一次*/
</pre><br />鉴于以上示例，重复读取数据库的问题得到解决。　：-）<br />不知道各位还有没有什么好久解决办法，可以拿来互相探讨一下
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/241074#comments" style="color:red;">已有 <strong>4</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 12 Sep 2008 11:20:18 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/241074</link>
        <guid>http://asflex.javaeye.com/blog/241074</guid>
      </item>
          <item>
        <title>spring集成velocity</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/224159" style="color:red;">http://asflex.javaeye.com/blog/224159</a>&nbsp;
          发表时间: 2008年08月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">

&lt;bean id="velocityEngine"
		class="org.springframework.ui.velocity.VelocityEngineFactoryBean">
		&lt;property name="velocityProperties">
			&lt;props>
				&lt;prop key="resource.loader">class&lt;/prop>
				&lt;prop key="class.resource.loader.class">
					org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader
				&lt;/prop>
				&lt;prop key="velocimacro.library" />
				&lt;!-- &lt;prop key="file.resource.loader.path">WEB-INF&lt;/prop> -->
			&lt;/props>
		&lt;/property>
		&lt;!--  -->&lt;property name="resourceLoaderPath" value="/WEB-INF">&lt;/property>
	&lt;/bean>



&lt;bean id="mailSender"
		class="org.springframework.mail.javamail.JavaMailSenderImpl">
		&lt;property name="host">
			&lt;value>smtp.gmail.com&lt;/value>
		&lt;/property>
		&lt;property name="javaMailProperties">
			&lt;props>
				&lt;prop key="mail.smtp.auth">true&lt;/prop>
				&lt;prop key="mail.smtp.timeout">25000&lt;/prop>
                &lt;prop key="mail.smtp.socketFactory.port">465&lt;/prop> 
				&lt;prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory&lt;/prop> 
				&lt;prop key="mail.smtp.socketFactory.fallback">false&lt;/prop> 
				&lt;prop key="mail.smtp.starttls.enable">true&lt;/prop>
			&lt;/props>
		&lt;/property>
		&lt;property name="username">
			&lt;value>aaa@gmail.com&lt;/value>
		&lt;/property>
		&lt;property name="password">
			&lt;value>123456&lt;/value>
		&lt;/property>
	&lt;/bean>

&lt;bean id="emailNotification"
		class="com.web.util.email.EmailNotificationImpl">
		&lt;property name="javaMailSender" ref="mailSender" />
	&lt;/bean>

	&lt;bean id="emailMessageProducer"
		class="com.web.util.email.EmailMessageProducerImpl">
		&lt;property name="velocityEngine" ref="velocityEngine" />
	&lt;/bean>

</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/224159#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 05 Aug 2008 10:14:08 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/224159</link>
        <guid>http://asflex.javaeye.com/blog/224159</guid>
      </item>
          <item>
        <title>tapestry 加载dojo</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/220830" style="color:red;">http://asflex.javaeye.com/blog/220830</a>&nbsp;
          发表时间: 2008年07月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          只要在html中定义了Shell组件,Dojo默认会加载.
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/220830#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 28 Jul 2008 23:19:05 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/220830</link>
        <guid>http://asflex.javaeye.com/blog/220830</guid>
      </item>
          <item>
        <title>一级缓存和二级缓存</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/216540" style="color:red;">http://asflex.javaeye.com/blog/216540</a>&nbsp;
          发表时间: 2008年07月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          许多人认为，“缓存”是内存的一部分<br /><br />许多技术文章都是这样教授的<br /><br />但是还是有很多人不知道缓存在什么地方，缓存是做什么用的<br /><br />其实，缓存是CPU的一部分，它存在于CPU中<br /><br />CPU存取数据的速度非常的快，一秒钟能够存取、处理十亿条指令和数据（术语：CPU主频1G），而内存就慢很多，快的内存能够达到几十兆就不错了，可见两者的速度差异是多么的大<br /><br />缓存是为了解决CPU速度和内存速度的速度差异问题<br /><br />内存中被CPU访问最频繁的数据和指令被复制入CPU中的缓存，这样CPU就可以不经常到象“蜗牛”一样慢的内存中去取数据了，CPU只要到缓存中去取就行了，而缓存的速度要比内存快很多<br /><br />这里要特别指出的是： 360安全空间M;\h|%z R<br />1.因为缓存只是内存中少部分数据的复制品，所以CPU到缓存中寻找数据时，也会出现找不到的情况（因为这些数据没有从内存复制到缓存中去），这时CPU还是会到内存中去找数据，这样系统的速度就慢下来了，不过CPU会把这些数据复制到缓存中去，以便下一次不要再到内存中去取。<br /><br />2.因为随着时间的变化，被访问得最频繁的数据不是一成不变的，也就是说，刚才还不频繁的数据，此时已经需要被频繁的访问，刚才还是最频繁的数据，现在又不频繁了，所以说缓存中的数据要经常按照一定的算法来更换，这样才能保证缓存中的数据是被访问最频繁的<br /><br />3.关于一级缓存和二级缓存<br />,W5At+E*O0为了分清这两个概念，我们先了解一下RAM<br /><br />ram和ROM相对的，RAM是掉电以后，其中才信息就消失那一种，ROM在掉电以后信息也不会消失那一种<br /><br />RAM又分两种，<br /><br />一种是静态RAM，SRAM；一种是动态RAM，DRAM。前者的存储速度要比后者快得多，我们现在使用的内存一般都是动态RAM。<br /><br />有的菜鸟就说了，为了增加系统的速度，把缓存扩大不就行了吗，扩大的越大，缓存的数据越多，系统不就越快了吗<br /><br />缓存通常都是静态RAM，速度是非常的快，<br /><br />但是静态RAM集成度低（存储相同的数据，静态RAM的体积是动态RAM的6倍），<br /><br />价格高（同容量的静态RAM是动态RAM的四倍），<br /><br />由此可见，扩大静态RAM作为缓存是一个非常愚蠢的行为，<br /><br />但是为了提高系统的性能和速度，我们必须要扩大缓存，<br /><br />这样就有了一个折中的方法，不扩大原来的静态RAM缓存，而是增加一些高速动态RAM做为缓存，<br /><br />这些高速动态RAM速度要比常规动态RAM快，但比原来的静态RAM缓存慢，<br /><br />我们把原来的静态ram缓存叫一级缓存，而把后来增加的动态RAM叫二级缓存。<br /><br />一级缓存和二级缓存中的内容都是内存中访问频率高的数据的复制品（映射），它们的存在都是为了减少高速CPU对慢速内存的访问。<br />/XpadC3z0通常CPU找数据或指令的顺序是：先到一级缓存中找，找不到再到二级缓存中找，如果还找不到就只有到内存中找了360安全空间\z k#q N!g:x)n_.k<br />360安全空间](Q/Q1h4[ G C$_<br />CPU 缓存（Cache Memory）是位于CPU与内存之间的临时存储器，它的容量比内存小的多但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾，因为CPU运算速度要比内存读写速度快很多，这样会使CPU花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分，但这一小部分是短时间内CPU即将访问的，当CPU调用大量数据时，就可避开内存直接从缓存中调用，从而加快读取速度。由此可见，在CPU中加入缓存是一种高效的解决方案，这样整个内存储器（缓存+内存）就变成了既有缓存的高速度，又有内存的大容量的存储系统了。缓存对CPU的性能影响很大，主要是因为CPU的数据交换顺序和CPU与缓存间的带宽引起的。<br /><br />缓存的工作原理是当CPU要读取一个数据时，首先从缓存中查找，如果找到就立即读取并送给CPU处理；如果没有找到，就用相对慢的速度从内存中读取并送给CPU处理，同时把这个数据所在的数据块调入缓存中，可以使得以后对整块数据的读取都从缓存中进行，不必再调用内存。<br /><br />正是这样的读取机制使CPU读取缓存的命中率非常高（大多数CPU可达90%左右），也就是说CPU下一次要读取的数据90%都在缓存中，只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间，也使CPU读取数据时基本无需等待。总的来说，CPU读取数据的顺序是先缓存后内存。<br /><br />目前缓存基本上都是采用SRAM存储器，SRAM是英文Static RAM的缩写，它是一种具有静志存取功能的存储器，不需要刷新电路即能保存它内部存储的数据。不像DRAM内存那样需要刷新电路，每隔一段时间，固定要对 DRAM刷新充电一次，否则内部的数据即会消失，因此SRAM具有较高的性能，但是SRAM也有它的缺点，即它的集成度较低，相同容量的DRAM内存可以设计为较小的体积，但是SRAM却需要很大的体积，这也是目前不能将缓存容量做得太大的重要原因。它的特点归纳如下：优点是节能、速度快、不必配合内存刷新电路、可提高整体的工作效率，缺点是集成度低、相同的容量体积较大、而且价格较高，只能少量用于关键性系统以提高效率。<br /><br />按照数据读取顺序和与CPU结合的紧密程度，CPU缓存可以分为一级缓存，二级缓存，部分高端CPU还具有三级缓存，每一级缓存中所储存的全部数据都是下一级缓存的一部分，这三种缓存的技术难度和制造成本是相对递减的，所以其容量也是相对递增的。当CPU要读取一个数据时，首先从一级缓存中查找，如果没有找到再从二级缓存中查找，如果还是没有就从三级缓存或内存中查找。一般来说，每级缓存的命中率大概都在80%左右，也就是说全部数据量的80%都可以在一级缓存中找到，只剩下20%的总数据量才需要从二级缓存、三级缓存或内存中读取，由此可见一级缓存是整个CPU缓存架构中最为重要的部分。<br /><br />一级缓存（Level 1 Cache）简称L1 Cache，位于CPU内核的旁边，是与CPU结合最为紧密的CPU缓存，也是历史上最早出现的CPU缓存。由于一级缓存的技术难度和制造成本最高，提高容量所带来的技术难度增加和成本增加非常大，所带来的性能提升却不明显，性价比很低，而且现有的一级缓存的命中率已经很高，所以一级缓存是所有缓存中容量最小的，比二级缓存要小得多。<br /><br />一般来说，一级缓存可以分为一级数据缓存（Data Cache，D-Cache）和一级指令缓存（Instruction Cache，I-Cache）。二者分别用来存放数据以及对执行这些数据的指令进行即时解码，而且两者可以同时被CPU访问，减少了争用Cache所造成的冲突，提高了处理器效能。目前大多数CPU的一级数据缓存和一级指令缓存具有相同的容量，例如AMD的Athlon XP就具有64KB的一级数据缓存和64KB的一级指令缓存，其一级缓存就以64KB+64KB来表示，其余的CPU的一级缓存表示方法以此类推。<br /><br />Intel的采用NetBurst架构的CPU（最典型的就是Pentium 4）的一级缓存有点特殊，使用了新增加的一种一级追踪缓存（Execution Trace Cache，T-Cache或ETC）来替代一级指令缓存，容量为12KμOps，表示能存储12K条即12000条解码后的微指令。一级追踪缓存与一级指令缓存的运行机制是不相同的，一级指令缓存只是对指令作即时的解码而并不会储存这些指令，而一级追踪缓存同样会将一些指令作解码，这些指令称为微指令（micro-ops）,而这些微指令能储存在一级追踪缓存之内，无需每一次都作出解码的程序，因此一级追踪缓存能有效地增加在高工作频率下对指令的解码能力，而μOps就是micro-ops，也就是微型操作的意思。它以很高的速度将μops提供给处理器核心。Intel NetBurst微型架构使用执行跟踪缓存，将解码器从执行循环中分离出来。这个跟踪缓存以很高的带宽将uops提供给核心，从本质上适于充分利用软件中的指令级并行机制。Intel并没有公布一级追踪缓存的实际容量,只知道一级追踪缓存能储存12000条微指令（micro-ops）。所以，我们不能简单地用微指令的数目来比较指令缓存的大小。实际上，单核心的NetBurst架构CPU使用8Kμops的缓存已经基本上够用了，多出的4kμops可以大大提高缓存命中率。而如果要使用超线程技术的话，12KμOps就会有些不够用，这就是为什么有时候Intel处理器在使用超线程技术时会导致性能下降的重要原因。<br /><br />例如Northwood核心的一级缓存为8KB+12KμOps，就表示其一级数据缓存为8KB，一级追踪缓存为12KμOps；而Prescott核心的一级缓存为16KB+12KμOps，就表示其一级数据缓存为16KB，一级追踪缓存为12KμOps。在这里12KμOps绝对不等于12KB，单位都不同，一个是μOps，一个是Byte（字节），而且二者的运行机制完全不同。所以那些把Intel的CPU一级缓存简单相加，例如把Northwood核心薲ang墒
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/216540#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 19 Jul 2008 16:55:25 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/216540</link>
        <guid>http://asflex.javaeye.com/blog/216540</guid>
      </item>
          <item>
        <title>tomcat 中配置Oracle DataSource</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/216412" style="color:red;">http://asflex.javaeye.com/blog/216412</a>&nbsp;
          发表时间: 2008年07月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1. 在Context添加如下代码，定义DataSource<br /><pre name="code" class="java">&lt;Resource name="jdbc/myoracle" auth="Container"
              type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
              url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
              username="scott" password="tiger" maxActive="20" maxIdle="10"
              maxWait="-1"/> </pre><br /><br />2. web.xml添加如下代码<br /><pre name="code" class="java">&lt;resource-ref>
 &lt;description>Oracle Datasource example&lt;/description>
 &lt;res-ref-name>jdbc/myoracle&lt;/res-ref-name>
 &lt;res-type>javax.sql.DataSource&lt;/res-type>
 &lt;res-auth>Container&lt;/res-auth>
&lt;/resource-ref></pre><br /><br />3访问DataSource<br /><pre name="code" class="java">Context initContext = new InitialContext();
Context envContext  = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
Connection conn = ds.getConnection();
//获得数据库的连接</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/216412#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 18 Jul 2008 23:37:23 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/216412</link>
        <guid>http://asflex.javaeye.com/blog/216412</guid>
      </item>
          <item>
        <title>Tapestry4之组件ExternalLink</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/215603" style="color:red;">http://asflex.javaeye.com/blog/215603</a>&nbsp;
          发表时间: 2008年07月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近发现，ExternalLink组件原来还可以这么用，通过绑定renderer,可以在page中定义新弹出页的属性。<br /><pre name="code" class="java">&lt;component id="viewDetails" type="ExternalLink">
        &lt;binding name="page" value="'admin/AdminViewStudentInfo'"/>
        &lt;binding name="parameters" value="components.rows.tableRow.userId"/>
        &lt;binding name="renderer" value="beans.popupLinkRenderer"/>
    &lt;/component>

&lt;bean name="popupLinkRenderer"
        class="org.apache.tapestry.contrib.link.PopupLinkRenderer">
        &lt;set name="windowName" value="'StudentInfo'"/>
        &lt;set name="features"
            value="'top=10,left=10,width=830,height=700,scrollbars=yes,resizable=yes'"/>
    &lt;/bean></pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/215603#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 17 Jul 2008 00:04:30 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/215603</link>
        <guid>http://asflex.javaeye.com/blog/215603</guid>
      </item>
          <item>
        <title>Linux下软件安装方法总结</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/205569" style="color:red;">http://asflex.javaeye.com/blog/205569</a>&nbsp;
          发表时间: 2008年06月18日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一、rpm包安装方式步骤：<br />1、找到相应的软件包，比如soft.version.rpm，下载到本机某个目录；<br />2、打开一个终端，su -成root用户；<br />3、cd soft.version.rpm所在的目录；<br />4、输入rpm -ivh soft.version.rpm<br /><br />二、deb包安装方式步骤：<br />1、找到相应的软件包，比如soft.version.deb，下载到本机某个目录；<br />2、打开一个终端，su -成root用户；<br />3、cd soft.version.deb所在的目录；<br />4、输入dpkg -i soft.version.deb<br /><br />三、tar.gz源代码包安装方式：<br />1、找到相应的软件包，比如soft.tar.gz，下载到本机某个目录；<br />2、打开一个终端，su -成root用户；<br />3、cd soft.tar.gz所在的目录；<br />4、tar -xzvf soft.tar.gz //一般会生成一个soft目录<br />5、cd soft<br />6、./configure<br />7、make<br />8、make install<br /><br />四、tar.bz2源代码包安装方式：<br />1、找到相应的软件包，比如soft.tar.bz2，下载到本机某个目录；<br />2、打开一个终端，su -成root用户；<br />3、cd soft.tar.bz2所在的目录；<br />4、tar -xjvf soft.tar.bz2 //一般会生成一个soft目录<br />5、cd soft<br />6、./configure<br />7、make<br />8、make install<br /><br />五、apt方式安装：<br />1、打开一个终端，su -成root用户；<br />2、apt-cache search soft 注：soft是你要找的软件的名称或相关信息<br />3、如果2中找到了软件soft.version，则用apt-get install soft.version命令安装软件 注：只要你可以上网，只需要用apt-cache search查找软件，用apt-get install软件<br /><br />六、bin文件安装：<br />如果你下载到的软件名是soft.bin，一般情况下是个可执行文件，安装方法如下：<br />1、打开一个终端，su -成root用户；<br />2、chmod +x soft.bin<br />3、./soft.bin //运行这个命令就可以安装软件了<br /><br />七、不需要安装的软件：<br />有了些软件，比如lumaqq，是不需要安装的，自带jre解压缩后可直接运行。假设下载的是lumaqq.tar.gz，使用方法如下：<br />1、打开一个终端，su -成root用户；<br />2、tar -xzvf lumaqq.tar.gz //这一步会生成一个叫LumaQQ的目录<br />3、cd LumaQQ<br />4、chmod +x lumaqq //设置lumaqq这个程序文件为可运行<br />5、此时就可以运行lumaqq了，用命令./lumaqq即可，但每次运行要输入全路径或切换到刚才生成的LumaQQ目录里<br />6、为了保证不设置路径就可以用，你可以在/bin目录下建立一个lumaqq的链接，用命令ln -s lumaqq /bin/ 即可，以后任何时候打开一个终端输入lumaqq就可以启动QQ聊天软件了<br />7、 如果你要想lumaqq有个菜单项，使用菜单编辑工具，比如Alacarte Menu Editor，找到上面生成的LumaQQ目录里的lumaqq设置一个菜单项就可以了，当然你也可以直接到 /usr/share/applications目录，按照里面其它*.desktop文件的格式生成一个自己的desktop文件即可。
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/205569#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 18 Jun 2008 23:17:31 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/205569</link>
        <guid>http://asflex.javaeye.com/blog/205569</guid>
      </item>
          <item>
        <title>linux下cvs服务器配置</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/200726" style="color:red;">http://asflex.javaeye.com/blog/200726</a>&nbsp;
          发表时间: 2008年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <li>检查 /etc/services <br />
首先键入 <span style="font-style: italic;">vi /etc/services</span>
 <br />
然后键入 <span style="font-style: italic;">/cvspserver</span>
 <br />
如果找到的行前面并没有#，那么就不用修改了，否则去掉行首的# <br />
<br />
</li>
<li>在 /etc/xinetd.d 目录下创建一个文件，随便命名，比如 cvs <br />
<span style="font-style: italic;">vi /etc/xinetd.d/cvs</span>
 <br />
在其中添上 <br />
</li>
<li>保存以后创建一个名为 cvs 的组和一个名为 cvsroot 的用户 <br />
<span style="font-style: italic;">groupadd cvs <br />
useradd -g cvs -s /sbin/nologin cvsroot</span>
 <br />
<br />
</li>
<li>然后 <br />
<span style="font-style: italic;">vi /etc/profile</span>
 <br />
在其中添上 <br />
<span style="font-style: italic;">export CVSROOT = /home/cvsroot</span>
 <br />
<br />
</li>
<li>重启 xinetd: <br />
<span style="font-style: italic;">/etc/init.d/xinetd restart</span>
 <br />
<br />
</li>
<li>初始化CVS仓库 <br />
<span style="font-style: italic;">cvs -d /home/cvsroot init</span>
 <br />
<br />
这样CVS就可以用了 <br />
</li>
<p><br />
<br />
如果不修改以上的错误，就会在cvs login的时候出现：cvs [login aborted]: unrecognized auth response from localhost: Usage: cvs [cvs-options] command [command-options-and-arguments] 这样的错误提示。</p>
<ul>
使用提示： <br />
<li>添加仓库: 进入到你的源码目录 <br />
<span style="font-style: italic;">cd /your/sources/path</span>
 <br />
然后执行 <br />
<span style="font-style: italic;">cvs export SOURCE_DIR_NAME Author Version</span>
 <br />
其中的SOURCE_DIR_NAME 就是你的工程在 CVSROOT 目录中保存的目录名, Author 为工程作者， Version 为你的工程发行版本号，必须以字母开头 <br />
<br />
</li>
<li>添加匿名只读用户: <br />
<span style="font-style: italic;">useradd -g cvs -M -s /sbin/nologin anonymous <br />
chmod 644 /home/cvsroot/CVSROOT/passwd <br />
echo &quot;anonymous::anonymous&quot; &gt;&gt; /home/cvsroot/CVSROOT/passwd <br />
chmod 444 /home/cvsroot/CVSROOT/passwd <br />
echo &quot;anonymous&quot; &gt;&gt; /home/cvsroot/CVSROOT/readers <br />
chmod 444 /home/cvsroot/readers</span>
 <br />
<br />
</li>
<li>防止CVSROOT被下载: <br />
<span style="font-style: italic;">chmod 644 /home/cvsroot/CVSROOT/modules <br />
echo &quot;CVSROOT -a&quot; &gt;&gt; /home/cvsroot/CVSROOT/modules <br />
chmod 444 /home/cvsroot/CVSROOT/modules</span>
 <br />
<br />
</li>
<li>不使用 real system user 登陆: <br />
<span style="font-style: italic;">chmod 644 $CVSROOT/CVSROOT/config <br />
vi $CVSROOT/CVSROOT/config</span>
 <br />
将第二行的 <br />
#SystemAuth = no <br />
去掉注释，即改为 <br />
SystemAuth = no <br />
</li>
</ul>
<table cellspacing="1" border="0" align="center" width="90%" cellpadding="3">
<tbody>
<tr>
<td><span class="genmed"><strong><span style="font-size: x-small;">引用:</span>
</strong>
</span>
</td>
</tr>
<tr>
<td class="quote"><br />
service cvspserver <br />
{ <br />
socket_type = stream <br />
wait = no <br />
user = root <br />
env = HOME= <br />
server = /usr/bin/cvs <br />
# 以下配置选项是错误的，错误之处用红色标记 <br />
# <span>server-tags</span>
 = --allow-root=/home/cvsroot pserver <br />
server_args = --allow-root=/home/cvsroot pserver <br />
} </td>
</tr>
</tbody>
</table>
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/200726#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 06 Jun 2008 00:41:57 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/200726</link>
        <guid>http://asflex.javaeye.com/blog/200726</guid>
      </item>
          <item>
        <title>tapestry登陆验证问题</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/199912" style="color:red;">http://asflex.javaeye.com/blog/199912</a>&nbsp;
          发表时间: 2008年06月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>大家好，我现在有一个关于tapestry验证的问题，我的一个需求是当用户登陆时，如果验证失败，将返回登陆页，如果成功则新开一个窗口，显示登陆成功信息。</p>
<p>首先我把自己的想法给介绍一下</p>
<p>1 用户登陆失败，我让target="_self",同时停留在登陆页，并显示校验信息。</p>
<p>2 验证成功，新打开一个页，此时的target="_blank",同样返回登陆页&mdash;&mdash;&mdash;&gt;登陆页根据返回的一个标识确定是否可以 跳转，如果跳转，表单将自动提交（此时是用js去获得前台的标识的）。跳转时，重新执行了一次登陆监听方法</p>
<p>&nbsp;</p>
<p>但是好像似乎不管用，你们觉得我的思路是不是有问题，忘赐教。：）</p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/199912#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 03 Jun 2008 23:00:38 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/199912</link>
        <guid>http://asflex.javaeye.com/blog/199912</guid>
      </item>
          <item>
        <title>spring测试发现的问题</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/192295" style="color:red;">http://asflex.javaeye.com/blog/192295</a>&nbsp;
          发表时间: 2008年05月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>不知道大家在用spring做单元测试时，有没有遇上如下异常信息<strong><span style="color: #0000ff;">org.springframework.transaction.UnexpectedRollbackException: Transaction has been rolled back because it has been marked as roll</span></strong></p>
<p><span style="color: #000000;">其实我定单元测试时和往常一样，只是创建的数据顺序和删除的顺序不一致导致的，后来调整，问题就解决了</span></p>
<p><strong><span style="color: #0000ff;">代码示例：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></strong></p>
<p><strong><span style="color: #0000ff;"><span style="color: #008000;">&nbsp;&nbsp; // create operation</span>&nbsp;&nbsp; </span></strong></p>
<p><strong><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User user = new User();</span></strong></p>
<p><strong><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userService.create(user);</span></strong></p>
<p><strong><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Book book = new Book();</span></strong></p>
<p><strong><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bookService.create(book);</span></strong></p>
<p><strong><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000;">&nbsp; // delete&nbsp; operation</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong></p>
<p><strong><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #333333;"> bookService.delete(book);</span></strong></p>
<p><strong><span style="color: #333333;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userService.delete(user);</span></strong></p>
<p><strong><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #333300;">上面的黑体代码将会出现该异常</span></span></strong></p>
<p><strong><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff6600;">而调整为</span>：</span></strong></p>
<p><strong><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userService.delete(user);</span></strong></p>
<p><strong><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bookService.delete(book);</span></strong></p>
<p><strong><span style="color: #0000ff;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #ff6600;">后，执行单元测试成功：）</span></span></strong></p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/192295#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 12 May 2008 17:18:09 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/192295</link>
        <guid>http://asflex.javaeye.com/blog/192295</guid>
      </item>
          <item>
        <title>使用Table组件，收集的数据值对象中，增加一列</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/155213" style="color:red;">http://asflex.javaeye.com/blog/155213</a>&nbsp;
          发表时间: 2008年01月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          java类: <br /><pre name="code" class="java">           public class Person {
               private String firstname;
               private String lastname;
               private String sex;
               private int age;
               /**
                *属性的getter和setter方法
               */
           }
</pre><br />page中定义: <br /><div><pre name="code" class="java">&lt;component id=&quot;boys&quot; type=&quot;contrib:TableView&quot;&gt;
                 &lt;binding name=&quot;source&quot; value=&quot;persons&quot;/&gt;
                 &lt;binding name=&quot;columns&quot;  value=&quot;literal:id,name,sex,age&quot;/&gt;&lt;!--name为组合要显示在页面当中的自定义的值--&gt;
                &lt;binding name=&quot;pageSize&quot; value=&quot;5&quot;/&gt;&lt;!--控制所显示的行数--&gt;
                &lt;binding name=&quot;element&quot; value=&quot;literal:span&quot;/&gt;
&lt;/component&gt;
&lt;component id=&quot;nameColumnValue&quot; type=&quot;Block&quot;/&gt;&lt;!--此处一定要是columns中的列名加&ldquo;column&rdquo;，否则会说Person中找不到name属性--&gt;
            &lt;component id=&quot;name&quot; type=&quot;Insert&quot;&gt;
               &lt;binding name=&quot;value&quot; value=&quot;name&quot;/&gt;&lt;!--name是在page类中获取的--&gt;
            &lt;/component&gt;


</pre></div><br />获取name值 <br /><br /><div align="left"><pre name="code" class="java">           @InjectComponent(&ldquo;rows&rdquo;)&lt;!--rows是在html中定义的行集组件--&gt;
　　　　　　　public abstract TableRows getTableRows();
          　 public String getName() {
　　　　　Person person = (Person)getTableRows().getTableRow();
                return person.firstname+person.lastname;
           }

</pre></div><br /><br />接着就可以再页面上显示自己想要显示的列name了 <p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/155213#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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 12 Jan 2008 09:28:26 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/155213</link>
        <guid>http://asflex.javaeye.com/blog/155213</guid>
      </item>
          <item>
        <title>页面之间跳转的参数传递问题</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/154677" style="color:red;">http://asflex.javaeye.com/blog/154677</a>&nbsp;
          发表时间: 2008年01月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">&lt;component id="table" type="contrib:TableView">
        &lt;binding name="source" value="classInfos"/>
        &lt;binding name="columns" value="literal:moduleName,teacherName,!remainTime,startTime,!operate"/>
        &lt;binding name="pageSize" value="5"/>
        &lt;binding name="element" value="literal:span"/>
    &lt;/component>
    &lt;component id="operateColumnValue" type="Block"/>
    &lt;component id="modifyTimeLink" type="DirectLink">
        &lt;binding name="listener" value="listener:onModifyTimeLink"/>
        &lt;binding name="parameters" value="components.rows.tableRow"/>
    &lt;/component></pre><br />以上是page当中配置的代码<br /><br /><pre name="code" class="java">public IPage onModifyTimeLink(IRequestCycle cycle){
		Object[] parameters=cycle.getListenerParameters();
		ClassInfo classInfo=(ClassInfo)parameters[0];

		
		
		SelectModuleByTeacherFreeTimePage selectModuleByTeacherFreeTime=(SelectModuleByTeacherFreeTimePage)getSelectModuleByTeacherFreeTimePage();
		selectModuleByTeacherFreeTime.setClassInfo(classInfo);
		
		return selectModuleByTeacherFreeTime;
	}</pre><br /><br />为什么得到的ClassInfo值会为空呢？是不是哪里还要做处理
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/154677#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 10 Jan 2008 12:00:21 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/154677</link>
        <guid>http://asflex.javaeye.com/blog/154677</guid>
      </item>
          <item>
        <title>tapestry table响应问题</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/148265" style="color:red;">http://asflex.javaeye.com/blog/148265</a>&nbsp;
          发表时间: 2007年12月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          大家好，问个关于tableView组件显示的问题，当我从数据库中获得了相应的source后，并设置pageSize=5，在第一页上做修改操作可以显示页面的变化，到了第二页后，显示就不会相应的变化了，但是数据库中的值已经变了，然后在回到第一页的话，做出相应的操作也就不会变了，好像是被感染了<img src="/images/smiles/icon_cry.gif"/>，请问怎样才能解决这个问题呀<br /><pre name="code" class="java">&lt;binding name="tableSessionStateManager"
            value="new org.apache.tapestry.contrib.table.model.common.FullTableSessionStateManager()"/></pre>这是表的设置<br /><br />还请遇上类似问题的朋友呀
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/148265#comments" style="color:red;">已有 <strong>5</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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 14 Dec 2007 10:49:21 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/148265</link>
        <guid>http://asflex.javaeye.com/blog/148265</guid>
      </item>
          <item>
        <title>Tapestry之组件GenericLink</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/147918" style="color:red;">http://asflex.javaeye.com/blog/147918</a>&nbsp;
          发表时间: 2007年12月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          哎，测试的人员提出一个关于用户注册时，使用邮箱激活账户，但是要根据邮箱的后几位确定邮箱的网站，这个其实挺简单的。看了一下tapestry的官方文档，发现GenericLink这个组件就是我想要的。于是我就写了一个获得邮箱网站的activateUrl方法。<br /><br /><br />　<span style="color: green"><pre name="code" class="java">public String getActivateUrl(String email) {
       String url = email.subString(email.lastIndexOf("@"),
        email.length());
       return "www."+url;
   }</pre></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //html上调用<span style="color: green">&lt;span jwcid="@Gerneric" href="ognl:activateUrl"></span><br />不过显示的时候竟然包含了自己本地的地址，不知道是为什么，真让人晕。<br /><br />我譔怎么办呢。<br /><br />后来就产生一个想，用&lt;a href="ognl:activateUrl" jwcid="@Any"/>可以;<br />gip还有一种方法就是用上面那种方法，不过应该<strong><span style="color: red">return "http://www."+url</span></strong>才行<img src="/images/smiles/icon_razz.gif"/><br />希望以后遇上类似的情况的同仁能够在此得到问题解决的办法
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/147918#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 12 Dec 2007 18:53:10 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/147918</link>
        <guid>http://asflex.javaeye.com/blog/147918</guid>
      </item>
          <item>
        <title>今天工作遇上的问题20071212</title>
        <author>lean1252</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://asflex.javaeye.com">lean1252</a>&nbsp;
                    链接：<a href="http://asflex.javaeye.com/blog/147917" style="color:red;">http://asflex.javaeye.com/blog/147917</a>&nbsp;
          发表时间: 2007年12月12日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          [b]奇怪<img src="/images/smiles/icon_surprised.gif"/>，今天调试的时候，发现页面上显示的全是做单元测试的数据，但是调试的时候确确实实是看到了在取数据库中的数据呀。查下ＡrayList里的主键值全部是上千的数字，吓我一跳。<br />真不知道是为什么会取到单元测试里的数据，而数据库里的数据却没有读到呢？<img src="/images/smiles/icon_surprised.gif"/><br /><br /><pre name="code" class="java">List&lt;User> users = new ArrayList&lt;User>();
fromDB = getUserService().findUser(user_id);
for(int i=0;i&lt;fromDB.size();i++) {
  User user = new User();
  user.setLoginName(((User)fromDB.get(i)).getLoginName());
  user.setLoginPwd(((User)fromDB.get(i)).getLoginPwd());
}</pre><br />这些是我用于测试的数据。<br />问了一下我们的老大，说在做测试的时候生成的数据没有做测试操作，我晕，那是不是每一个单元测试类都要去检查呢。<br />哎，怎么在做单元测试的时候不想全点呢，现在代码可是很多的呀。<br /><br />没法，只能一个个检查了<br /><br />但是我还是想问一下，就算是这样，那页面也应该显示测试的数据和数据库中的记录才对的呀，而且做查找时也确实看到查到了数据库中的值，但是怎么不会显示呢？<br /><br />不知道有哪位同仁有遇过类似的问题，请拿出来互相交流一下
          <br/><br/>
          <span style="color:red;">
            <a href="http://asflex.javaeye.com/blog/147917#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/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></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 12 Dec 2007 18:41:10 +0800</pubDate>
        <link>http://asflex.javaeye.com/blog/147917</link>
        <guid>http://asflex.javaeye.com/blog/147917</guid>
      </item>
      </channel>
</rss>