<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Zwm</title>
    <description>有容乃大，责任打天下。
　　　　　　　　　　　　　　　　</description>
    <link>http://zwm.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>Ruby</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/204794" style="color:red;">http://zwm.javaeye.com/blog/204794</a>&nbsp;
          发表时间: 2008年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="ruby">#filename:hellworld.rb
#this is my first ruby programme

class Helloworld
  def sayGoodnight(name)
    return "hello,"+name
  end
  #问候方法
  def sayBye(name)
    return "Byebye,#{name}"
  end
  #去除return 关键字的方法
  def sayBye2(msg)
    "I want to say:#{msg}"
  end
 #puts Helloworld.new.sayGoodnight("zhaowm")+"!"
  #puts "hello,world!"
  a=1;
  b=2;
  #puts  "a+b=",a+b
  #三次输出Hello,zhaowm
  #3.times { puts "Hello,zhaowm!" }
  #puts "Good afternoon,\n Wenwen!"
  # and so on
  #song1 = Song.new("Ruby Tuesday")
  #song2 = Song.new("Enveloped in Python")


  #puts "gin joint".length  
  #puts "Rick".index("c")    
  #puts -1942.abs  
#puts sam.play(song1)  
  bb="1"
  cc="2"
  #puts bb+cc+"10"
  #puts Helloword.new.sayGoodnight "zhaowmbbbb"
  #puts Helloword.new.sayBye("wb")
  #puts Helloword.new.sayBye2("放手去爱");
  #puts 1%2
  def addMethod(a,b)
    return a+b
  end 
  #字符串连接符号=&gt;
  #puts "12+13="=&gt;Helloword.new.addMethod(12,13)
  a =[1, 'cat', 3.14 ]
  #puts "打印出数组中的某一个元素:"+a[1]
  ArrayOne=Array.new
  ArrayOne[0]="张三丰"
# puts ArrayOne
  
  instSection = {
  'cello'     =&gt; 'string\r',
  'clarinet'  =&gt; 'woodwind\r',
  'drum'      =&gt; 'percussion\r',
  'oboe'      =&gt; 'woodwind\r',
  'trumpet'   =&gt; 'brass\r',
  'violin'    =&gt; 'string\r'
}
#puts instSection
def verifyNumber(count)  
  if count &gt; 10
    puts "Try again"
  elsif tries == 3
    puts "You lose"
  else
    puts "Enter a number"
  end
end
#puts Helloworld.new.verifyNumber(12)

def whileMethod(square)
  while square &lt; 521
    square = square*square
  end
  return square
end
#invoke above method:whileMethod with one para:square
#puts Helloworld.new.whileMethod(7)

#得到多份指定参数的复制品
def callBlock
  yield
  yield
  yield
end

#Helloworld.new.callBlock { puts "I Clove you." }
a = %w( ant bee cat dog elk )    # create an array
#puts a
 


[ 'cat', 'dog', 'horse' ].each do |animal|
  if(animal=='horse')
    break
  end
  print "&lt;name&gt;"+animal+"&lt;/name&gt;\r"  
end


def whileMeth(gets)   
    if gets=='Ruby'         
      print gets+"\r"
    end
end 
Helloworld.new.whileMeth('Ruby')
end 








</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/204794#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 17 Jun 2008 19:34:07 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/204794</link>
        <guid>http://zwm.javaeye.com/blog/204794</guid>
      </item>
      <item>
        <title>[转载]Groovy的春天从Java7诞生那日开始</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/204418" style="color:red;">http://zwm.javaeye.com/blog/204418</a>&nbsp;
          发表时间: 2008年06月16日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>想必关注Java的朋友不会没有听说过Groovy吧？的确，由于Groovy的语法与Java极其相近，所以对于我们这群Java狂热分子特别友好。Groovy对于有Java基础的朋友来说，几乎可以说是唾手可得！要花点时间的是Groovy所提供的独有特性，当然不学这些特性照样可以用Groovy进行编程，但缺了Groovy的那个味。就比如我们学英语，的确能说能写，但有些用法都很不地道，这是同样的道理。<br /><br />现在Groovy已经发布了1.0正式版，网上还有《Groovy in Action》电子书下载，学习Groovy变的越来越方便了，不用因为缺乏资料，编译器报错不准而导致学习进度缓慢。而现在Groovy的项目之所以还比较少，其最主要的原因是Groovy的运行效率比较低，Groovy在2007年1月初才发布1.0正式版。<br /><br />至于Groovy的运行效率低，目前还没有什么好的解决方法，这主要跟bytecode有关。但令人兴奋的是，这些用Java实现动态语言的限制将在Java7诞生那天被解除，因为Sun已经在研究一种新的专门用于动态语言被命名为invokedynamic的bytecode，这将大大提高动态语言比如Groovy在JVM上的运行效率，直逼Java。相关信息可参见Dynamic Language Support on the JVM ( http://www.artima.com/lejava/articles/dynamic_languages.html )<br /><br />最后给一个较常碰到的编程问题：请打印所给文本文件(EachLine.groovy)，并在行首标出行号。<br /><br />EachLine.groovy源码:<br />def num = 0<br />new File("EachLine.groovy").eachLine { line -&gt;<br />num++<br />println "$num: $line"<br />}<br /><br />运行结果：<br />E:\Temp&gt;groovy EachLine.groovy<br />1: def num = 0<br />2: new File("EachLine.groovy").eachLine { line -&gt;<br />3: num++<br />4: println "$num: $line"<br />5: }<br /><br />附：<br />Groovy官方网址: <a href="http://groovy.codehaus.org">http://groovy.codehaus.org</a></p>
<p>转自<a href="http://java.csdn.net/page/4994e1d6-1cb9-456d-ac9a-dd828e851780">http://java.csdn.net/page/4994e1d6-1cb9-456d-ac9a-dd828e851780</a></p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/204418#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 16 Jun 2008 22:01:05 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/204418</link>
        <guid>http://zwm.javaeye.com/blog/204418</guid>
      </item>
      <item>
        <title>Ruby入门小练习</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/203262" style="color:red;">http://zwm.javaeye.com/blog/203262</a>&nbsp;
          发表时间: 2008年06月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>下载安装ruby186-26.exe</p>
<p>URL <a href="http://rubyforge.org/frs/download.php/29263/ruby186-26.exe">http://rubyforge.org/frs/download.php/29263/ruby186-26.exe</a><br />安装完成后即可在程序菜单中找到一项SciTE</p>
<p>&nbsp;</p>
<pre name="code" class="ruby">#filename:Hellworld.rb
#this is my first ruby programme

class Helloworld
  def sayGoodnight(name)
    return "hello,"+name
  end
  #问候方法
  def sayBye(name)
    return "Byebye,#{name}"
  end
  #去除return 关键字的方法
  def sayBye2(msg)
    "I want to say:#{msg}"
  end
 #puts Helloworld.new.sayGoodnight("zhaowm")+"!"
  #puts "hello,world!"
  a=1;
  b=2;
  #puts  "a+b=",a+b
  #三次输出Hello,zhaowm
  #3.times { puts "Hello,zhaowm!" }
  #puts "Good afternoon,\n Wenwen!"
  # and so on
  #song1 = Song.new("Ruby Tuesday")
  #song2 = Song.new("Enveloped in Python")


  #puts "gin joint".length  
  #puts "Rick".index("c")    
  #puts -1942.abs  
#puts sam.play(song1)  
  bb="1"
  cc="2"
  #puts bb+cc+"10"
  #puts Helloword.new.sayGoodnight "zhaowmbbbb"
  #puts Helloword.new.sayBye("wb")
  #puts Helloword.new.sayBye2("放手去爱");
  #puts 1%2
  def addMethod(a,b)
    return a+b
  end 
  #字符串连接符号=&gt;
  #puts "12+13="=&gt;Helloword.new.addMethod(12,13)
  a =[1, 'cat', 3.14 ]
  #puts "打印出数组中的某一个元素:"+a[1]
  ArrayOne=Array.new
  ArrayOne[0]="张三丰"
# puts ArrayOne
  
  instSection = {
  'cello'     =&gt; 'string\r',
  'clarinet'  =&gt; 'woodwind\r',
  'drum'      =&gt; 'percussion\r',
  'oboe'      =&gt; 'woodwind\r',
  'trumpet'   =&gt; 'brass\r',
  'violin'    =&gt; 'string\r'
}
#puts instSection
def verifyNumber(count)  
  if count &gt; 10
    puts "Try again"
  elsif tries == 3
    puts "You lose"
  else
    puts "Enter a number"
  end
end
#puts Helloworld.new.verifyNumber(12)

def whileMethod(square)
  while square &lt; 521
    square = square*square
  end
  return square
end
#invoke above method:whileMethod with one para:square
#puts Helloworld.new.whileMethod(7)

#得到多份指定参数的复制品
def callBlock
  yield
  yield
  yield
end

#Helloworld.new.callBlock { puts "I Clove you." }
a = %w( ant bee cat dog elk )    # create an array
#puts a
 


[ 'cat', 'dog', 'horse' ].each do |animal|
  if(animal=='horse')
    break
  end
  print "&lt;name&gt;"+animal+"&lt;/name&gt;\r"  
end


def whileMeth(gets)   
    if gets=='Ruby'         
      print gets+"\r"
    end
end 
Helloworld.new.whileMeth('Ruby')



end 





</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/203262#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 14 Jun 2008 16:56:48 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/203262</link>
        <guid>http://zwm.javaeye.com/blog/203262</guid>
      </item>
      <item>
        <title>db2命令</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/203116" style="color:red;">http://zwm.javaeye.com/blog/203116</a>&nbsp;
          发表时间: 2008年06月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>1.得到当前日期是一年的第多少天?</p>
<p>select dayofyear(current timestamp)<br />from sysibm.sysdummy1</p>
<p>2.查询两个日期之间的天数?</p>
<p>select days('2008-06-13') - days('2006-03-09')<br />from sysibm.sysdummy1</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/203116#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 13 Jun 2008 21:56:04 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/203116</link>
        <guid>http://zwm.javaeye.com/blog/203116</guid>
      </item>
      <item>
        <title>JS去除前后空格,去除文本中的所有空格</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/196704" style="color:red;">http://zwm.javaeye.com/blog/196704</a>&nbsp;
          发表时间: 2008年05月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>一:去除前后空格(vv为原文件值)</p>
<p>var aa=vv.replace(/(^\s*)|(\s*$)/g, "");</p>
<p>alert(aa);</p>
<p>二:去除所有空格</p>
<p>var aa=vv.replace(/\s/g,"")</p>
<p>alert(bb);</p>
<p>附例子</p>
<pre name="code" class="js"> var vv=document.getElementById("v").value;
	 alert(vv);
	 alert("["+ vv.replace(/(^\s*)|(\s*$)/g, "")+"]");
	 var cc=vv.replace(/\s/g,"");
	 alert("["+cc+"]");	</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/196704#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 25 May 2008 14:13:05 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/196704</link>
        <guid>http://zwm.javaeye.com/blog/196704</guid>
      </item>
      <item>
        <title>工厂方法模式</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/196673" style="color:red;">http://zwm.javaeye.com/blog/196673</a>&nbsp;
          发表时间: 2008年05月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">package com.spsoft.factorymethod;

interface Car {
	public void start();

	public void stop();
}

class Ford implements Car {

	public void start() {
		// TODO Auto-generated method stub
		System.out.println("Ford start...");
	}

	public void stop() {
		// TODO Auto-generated method stub
		System.out.println("Ford stop...");

	}

}

class Toyota implements Car {

	public void start() {
		// TODO Auto-generated method stub
		System.out.println("Toyota start...");
	}

	public void stop() {
		// TODO Auto-generated method stub
		System.out.println("Toyota stop...");
	}

}

class YuTongBus implements Car {

	public void start() {
		// TODO Auto-generated method stub
		System.out.println("YuTong start...");
	}

	public void stop() {
		// TODO Auto-generated method stub
		System.out.println("YuTong stop...");

	}

}

class KinglongBus implements Car {

	public void start() {
		// TODO Auto-generated method stub
		System.out.println("Kinglong start...");
	}

	public void stop() {
		// TODO Auto-generated method stub
		System.out.println("Kinglong stop...");

	}

}

interface AbstractFactory {

}

class CarFactory implements AbstractFactory {
	private CarFactory() {

	}

	private static CarFactory carFactory = new CarFactory();

	public static CarFactory getCarFactoryInstance() {
		return carFactory;
	}

	public Car getCar(String type) {
		Car car = null;
		try {
			car = (Car) Class.forName("com.spsoft.factorymethod." + type)
					.newInstance();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return car;
	}
}

class BusFactory implements AbstractFactory {
	private BusFactory() {

	}

	private static BusFactory busFactory = new BusFactory();

	public static BusFactory getBusFactoryInstance() {
		return busFactory;
	}

	public Car getBus(String type) {
		Car car = null;
		try {
			car = (Car) Class.forName("com.spsoft.factorymethod." + type)
					.newInstance();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return car;
	}
}

public class FactorymethodDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		// need a Ford
		CarFactory factory = CarFactory.getCarFactoryInstance();
		Car ford = factory.getCar("Ford");
		ford.start();
		ford.stop();
		BusFactory busFactory = BusFactory.getBusFactoryInstance();
		Car bigBus = busFactory.getBus("YuTongBus");
		bigBus.start();
		bigBus.stop();
	}

}
</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/196673#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 25 May 2008 11:33:23 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/196673</link>
        <guid>http://zwm.javaeye.com/blog/196673</guid>
      </item>
      <item>
        <title>简单工厂模式</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/196656" style="color:red;">http://zwm.javaeye.com/blog/196656</a>&nbsp;
          发表时间: 2008年05月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">package com.spsoft.factory;

public class FactoryDemo {
	public static void main(String[] args) {
		Car car = Factory.getCarInstance("Toyota");
		if (car != null) {
			car.start();
			car.stop();
		}
	}
}

class Factory {

	public static Car getCarInstance(String type) {
		Car car = null;
		try {
			car = (Car) Class.forName("com.spsoft.factory." + type)
					.newInstance();
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return car;
	}
}

interface Car {
	public void start();

	public void stop();
}

class Benz implements Car {

	public void start() {
		System.out.println("Benz start...");
	}

	public void stop() {
		System.out.println("Benz stop...");

	}

}

class Ford implements Car {
	public void start() {
		System.out.println("Ford start...");
	}

	public void stop() {
		System.out.println("Ford stop...");
	}
}

class Toyota implements Car {
	public void start() {
		System.out.println("Toyota start...");
	}

	public void stop() {
		System.out.println("Toyota stop...");
	}
}
</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/196656#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 25 May 2008 10:17:26 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/196656</link>
        <guid>http://zwm.javaeye.com/blog/196656</guid>
      </item>
      <item>
        <title>单例模式</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/196653" style="color:red;">http://zwm.javaeye.com/blog/196653</a>&nbsp;
          发表时间: 2008年05月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">package com.spsoft.singleton;

class Single {
	public void say() {
		System.out.println("I want to say,love you...");
	}
	/*private constructor method*/
	private Single() {
	}

	private static Single single = null;
	
	public static Single getSingleInstance() {
		if (single == null) {
			single = new Single();
		}
		return single;
	}
}

public class SingletenDemo {
	public static void main(String[] args) {
		Single s = Single.getSingleInstance();
		s.say();
	}
}
</pre>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/196653#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 25 May 2008 10:15:55 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/196653</link>
        <guid>http://zwm.javaeye.com/blog/196653</guid>
      </item>
      <item>
        <title>讨论旧系统如何改造成面向OO的?</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/196270" style="color:red;">http://zwm.javaeye.com/blog/196270</a>&nbsp;
          发表时间: 2008年05月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span class="tpc_content">[<a href="http://www.jdon.com/article/33762.html" title="banq">摘自banq</a>]数据库和对象有着天然阻抗mismatch，是两个不同方向，一个是向南，一个是向北，不可能将完全相左的两个东西整合在一起，或者说水和火难以相容，想让一个以火为主的系统，转向一个以水为主的系统，除非掌握乾坤大挪移，否则没有办法。<br /><br />我在另外一个帖子：什么是<a href="http://www.jdon.com/jivejdon/query/searchThreadAction.shtml?query=%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1&amp;view=on" title="??" target="_blank"><strong>OO</strong></a>思想回帖写道：<br />OO思想简言之，我们谈的 想的 编的 做的 都是围绕一个个对象 言简意赅，但是做起来很难，实际中我们谈的 想的 编的 做的 都是围绕一个个&ldquo;数据表&rdquo;。 这实际就是以什么为中心的问题中心位置的改变带动整个软件业的革命，就象过去国家以阶级斗争为中心转变到以经济建设为中心一样，不可小觑。<br /><br />所以，要设计一个<a href="http://www.jdon.com/jivejdon/query/searchThreadAction.shtml?query=%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1&amp;view=on" title="??" target="_blank"><strong>OO</strong></a>系统，从开始就要<a href="http://www.jdon.com/jivejdon/query/searchThreadAction.shtml?query=%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1&amp;view=on" title="??" target="_blank"><strong>OO</strong></a>很重要，是方向问题，方向走错了，就是南辕北辙。所以，我一直反对那些数据库为主导的教育 培训和理论；而实际上这是目前国内软件主导思想。<br /><br />一旦数据库系统成型，个人认为是没有办法的，只能走组件化设计方向；可参考javascript/AJAX做法，也就是搞一些粒度大一点的模块板块重用，但是这条路实在很难很难。<br /></span></p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/196270#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 23 May 2008 22:44:14 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/196270</link>
        <guid>http://zwm.javaeye.com/blog/196270</guid>
      </item>
      <item>
        <title>送上几个比较经典的面试题</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/191953" style="color:red;">http://zwm.javaeye.com/blog/191953</a>&nbsp;
          发表时间: 2008年05月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>1.请你谈一谈软件测试?</p>
<p>答:</p>
<p>我们项目中没有规定必须用使用junit!其实我现在也不怎么常用。</p>
<p>生男生女咱算不准，可是咱自己写的方法,自己肯定是最清楚的，哪里可能有问题，哪里执行效率低，哪里可能会报错，一般都知道的！不过，逻辑复杂的业务方法排除其外。</p>
<p>2.你有过几次通宵玩游戏的经历？ </p>
<p>答:............</p>
<p>3.你有女朋友吗?</p>
<p>答:................</p>
<p>4.你一般是在家里上洗手间还是到公司来上?</p>
<p>答:.....................</p>
<p>5.你才毕业3年，最近怎么又想找工作了？ <br />答:...................</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/191953#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 11 May 2008 16:54:50 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/191953</link>
        <guid>http://zwm.javaeye.com/blog/191953</guid>
      </item>
      <item>
        <title>java为什么输掉了web</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/191950" style="color:red;">http://zwm.javaeye.com/blog/191950</a>&nbsp;
          发表时间: 2008年05月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>java为什么输掉了web，就是这些五花八门的什么框架 <br /><br />穷折腾的 </p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/191950#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 11 May 2008 16:44:47 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/191950</link>
        <guid>http://zwm.javaeye.com/blog/191950</guid>
      </item>
      <item>
        <title>DB2百万数据的测试</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/191760" style="color:red;">http://zwm.javaeye.com/blog/191760</a>&nbsp;
          发表时间: 2008年05月10日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">--</span></span><span style="font-family: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;;">创建数据表的脚本</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">CREATE TABLE JEWEN_MILLION_DATA</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">(ID INTEGER NOT NULL PRIMARY KEY, --</span></span><span style="font-family: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;;">主键</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;"><span style="mso-spacerun: yes;">&nbsp;</span>NAME VARCHAR(30),--</span></span><span style="font-family: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;;">名称</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;"><span style="mso-spacerun: yes;">&nbsp;</span>TIME TIMESTAMP,--</span></span><span style="font-family: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;;">时间</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;"><span style="mso-spacerun: yes;">&nbsp;</span>RANDOMNO INTEGER,--</span></span><span style="font-family: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;;">随机数</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;"><span style="mso-spacerun: yes;">&nbsp;</span>MEMO VARCHAR(200));--</span></span><span style="font-family: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;;">备注</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="mso-spacerun: yes;"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span lang="EN-US"><span style="font-family: Times New Roman;">--</span></span><span style="font-family: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;;">测试数据</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">INSERT INTO JEWEN_MILLION_DATA VALUES(0,'ZHAOWENMING','1970-01-01 00:00:00',19841214,'GOOD LUCK')</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">windows run</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">db2cmd</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">db2 "list database directory on d:"</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">db2</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;;"><span style="font-size: small;">取得数据库的配置信息</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">db2=&gt;get db cfg for sample</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana;">update db cfg for dbname using logarchmeth1 off logprimary 3 logsecond 10 logfilsiz 1000</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana;">强制停止</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana;"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana;">db2stop force</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana;">&nbsp;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana;">db2start</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style="font-size: 10pt; color: black; font-family: Verdana;">&nbsp;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;;"><span style="font-size: small;">删除成功！</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><span style="font-size: small; font-family: Times New Roman;">&nbsp;</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;;">插入</span><span lang="EN-US"><span style="font-family: Times New Roman;">10</span></span><span style="font-family: 宋体; mso-ascii-font-family: &quot;Times New Roman&quot;; mso-hansi-font-family: &quot;Times New Roman&quot;;">万条数据用时</span></span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: black; font-family: 宋体; mso-ascii-font-family: &quot;Courier New&quot;; mso-hansi-font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt; mso-bidi-font-family: &quot;Courier New&quot;;">开始</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">...Sat May 10 16:56:34 CST 2008</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"></span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: black; font-family: 宋体; mso-ascii-font-family: &quot;Courier New&quot;; mso-hansi-font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt; mso-bidi-font-family: &quot;Courier New&quot;;">结束</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">...Sat May 10 16:59:39 CST 2008</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体; mso-ascii-font-family: &quot;Courier New&quot;; mso-hansi-font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt; mso-bidi-font-family: &quot;Courier New&quot;;">操作用时</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">:184</span><span style="font-size: 10pt; color: black; font-family: 宋体; mso-ascii-font-family: &quot;Courier New&quot;; mso-hansi-font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt; mso-bidi-font-family: &quot;Courier New&quot;;">秒</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体; mso-ascii-font-family: &quot;Courier New&quot;; mso-hansi-font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt; mso-bidi-font-family: &quot;Courier New&quot;;">插入</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">100</span><span style="font-size: 10pt; color: black; font-family: 宋体; mso-ascii-font-family: &quot;Courier New&quot;; mso-hansi-font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt; mso-bidi-font-family: &quot;Courier New&quot;;">万条数据用时</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"></span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: black; font-family: 宋体; mso-ascii-font-family: &quot;Courier New&quot;; mso-hansi-font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt; mso-bidi-font-family: &quot;Courier New&quot;;">开始</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">...Sat May 10 17:03:27 CST 2008</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"></span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: black; font-family: 宋体; mso-ascii-font-family: &quot;Courier New&quot;; mso-hansi-font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt; mso-bidi-font-family: &quot;Courier New&quot;;">结束</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">...Sat May 10 17:30:59 CST 2008</span><span lang="EN-US" style="font-size: 10pt; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: black; font-family: 宋体; mso-ascii-font-family: &quot;Courier New&quot;; mso-hansi-font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt; mso-bidi-font-family: &quot;Courier New&quot;;">操作用时</span><span lang="EN-US" style="font-size: 10pt; color: black; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">:1651</span><span style="font-size: 10pt; color: black; font-family: 宋体; mso-ascii-font-family: &quot;Courier New&quot;; mso-hansi-font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt; mso-bidi-font-family: &quot;Courier New&quot;;">秒</span></p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/191760#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 10 May 2008 17:44:23 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/191760</link>
        <guid>http://zwm.javaeye.com/blog/191760</guid>
      </item>
      <item>
        <title>使用Tuscany,建立web services</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/190702" style="color:red;">http://zwm.javaeye.com/blog/190702</a>&nbsp;
          发表时间: 2008年05月07日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Tuscany-ws项目<br />	摘要》<br />	使用Tuscany创建Web services服务<br />一：安装Tuscany的Eclipse plugin<br />	启动Eclipse后，菜单Help->Software Updates->Find and Install<br />选择Searh for new features to install ，然后执行New Remote Site <br />名字：Tusany <br />URL：http://people.apache.org/~jsdelfino/tuscany/tools/updatesite/*<br />Remote site ,完成即可<br />…<br />安装完成后，重启eclipse<br />二：建立Java Project<br />Tuscany-ws<br />由于插件已经加入开发工具，因此可以自行建立一个User Library资源，供以引用；<br /><br />>>一：源代码文件HelloWorld.java<br /><br />package com.spsoft.tuscany.ws.helloworld;<br />import org.osoa.sca.annotations.Remotable;<br />@Remotable<br />public interface HelloWorld{<br />	String sayHello(String name);<br />}<br /><br />>>二：源代码文件HelloWorldImpl.java<br />package com.spsoft.tuscany.ws.helloworld;<br />public class HelloWorldImpl implements HelloWorld{<br />	Public String sayHello(String name){<br />		Return “Hello:”+name;<br />	}<br /><br />}<br /><br />>>三：helloworld.composite建立在src下<br />&lt;?xml version="1.0" encoding="UTF-8"?><br />&lt;composite xmlns="http://www.osoa.org/xmlns/sca/1.0"<br />xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"<br />xmlns:c="http://helloworld.ws.tuscany.spsoft.com.cn"<br />name="helloworld"><br />&lt;component name="HelloWorldComponent"><br />&lt;implementation.java class=" com.spsoft.tuscany.ws.helloworld.HelloWorldImpl"/><br />&lt;service name="HelloWorld"><br />&lt;binding.ws uri="http://localhost:9080/HelloWorld"/><br />&lt;/service><br />&lt;/component><br />&lt;/composite><br />>>四：建立启动web services的服务类<br />package com.spsoft.tuscany.ws.helloworld;<br /><br />import java.io.IOException;<br /><br />import org.apache.tuscany.sca.host.embedded.SCADomain;<br /><br />public class HelloWorldServer {<br />	public static void main(String[] args) {<br />		SCADomain scaDomain = SCADomain.newInstance("helloworld.composite");<br />		try {<br />			System.out<br />					.println("HelloWorld server started (press enter to shutdown)");<br />			System.in.read();<br />		} catch (IOException e) {<br />			e.printStackTrace();<br />		}<br />		scaDomain.close();<br />		System.out.println("HelloWorld server stopped");<br />	}<br /><br />}<br /><br />运行该类时，控制台将会看到以下信息：<br />2008-5-7 19:35:01 org.apache.tuscany.sca.http.jetty.JettyServer addServletMapping<br />信息: Added Servlet mapping: http://spsoft-35c9654c:9080/HelloWorld<br />HelloWorld server started (press enter to shutdown)<br />此时您可以通过访问<br />http://spsoft-35c9654c:9080/HelloWorld?wsdl<br />观看你的服务是否已经成功创建！
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/190702#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 07 May 2008 19:46:15 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/190702</link>
        <guid>http://zwm.javaeye.com/blog/190702</guid>
      </item>
      <item>
        <title>DB2去除所谓重复的记录</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/189896" style="color:red;">http://zwm.javaeye.com/blog/189896</a>&nbsp;
          发表时间: 2008年05月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          --说明数据表TABLE1,共有三列，分别是A，B，C,下面的目的是保证B，C完全相同的记录只保留一条<br />select a,b,c --可以在这里查询seq的值，即select a,b,c,seq<br />from(select tab.*,row_number()over(partition by tab.b,tab.c) seq <br />from TABLE1 tab     <br />)aa<br />where aa.seq=1 --去掉重复记录
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/189896#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 05 May 2008 19:59:13 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/189896</link>
        <guid>http://zwm.javaeye.com/blog/189896</guid>
      </item>
      <item>
        <title>sca的web app,</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/189530" style="color:red;">http://zwm.javaeye.com/blog/189530</a>&nbsp;
          发表时间: 2008年05月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天遇到一个特别XX的问题?<br />先把配置文件列出<br />一:InformationService.composite文件<br />&lt;?xml version="1.0" encoding="UTF-8"?><br />&lt;composite xmlns="http://www.osoa.org/xmlns/sca/1.0"<br />           targetNamespace="http://sca.spsoft.com.cn"<br />           xmlns:sample="http://sca.spsoft.com.cn"<br />           name="informationService"><br />	&lt;component name="informationServiceComponent"><br />		&lt;implementation.java class="cn.com.spsoft.sca.business.impl.InformationServiceImpl"/><br />		&lt;reference name="bpService" target="bpServiceComponent">&lt;/reference><br />		&lt;reference name="riService" target="riServiceComponent">&lt;/reference><br />		&lt;reference name="jobService" target="jobServiceComponent">&lt;/reference><br />	&lt;/component><br />	&lt;component name="bpServiceComponent"><br />		&lt;implementation.java class="cn.com.spsoft.sca.business.impl.BasicPayServiceImpl"/><br />	&lt;/component><br />	&lt;component name="riServiceComponent"><br />		&lt;implementation.java class="cn.com.spsoft.sca.business.impl.RegisterInfoServiceImpl"/><br />	&lt;/component><br />	&lt;component name="jobServiceComponent"><br />		&lt;implementation.java class="cn.com.spsoft.sca.business.impl.JobFinishServiceImpl"/><br />	&lt;/component> 	<br />&lt;/composite><br />二:下面是测试主方法<br />public static void main(String args[]) {<br />		SCADomain scaDomain = SCADomain<br />				.newInstance("InformationService.composite");<br />		System.out.println("ComponentNames:"+ scaDomain.getComponentManager().getComponentNames());	<br />		InformationService informationService = scaDomain.getService(<br />				InformationService.class, "informationServiceComponent");<br />	<br />	}<br />三:说明<br />运行该主方法后,出现如下面的异常<br />ComponentNames:[bpServiceComponent, riServiceComponent, jobServiceComponent, informationServiceComponent]<br />Exception in thread "main" java.lang.NoSuchMethodError: org.osoa.sca.ServiceReference.getService()Ljava/lang/Object;<br />	at org.apache.tuscany.sca.host.embedded.impl.DefaultSCADomain.getService(DefaultSCADomain.java:365)<br />	at cn.com.spsoft.sca.business.ClientTest.main(ClientTest.java:11)<br /><br />从上面加载配置文件一步应该是正确的,而且取得了配置的几个构件<br />但总提示找不到getService方法????<br /><br />四:主要接口与实现<br />public interface InformationService {<br /><br />	// 每个人基础工资查询（BasicPayService）<br />	public double findByuid(String uid);<br /><br />	// 查询个人注册信息(RegisterInfoService)<br />	public String findInfoByuid(String uid);<br /><br />	// 查询工作完成情况(JobFinishService)<br />	public double findJob(String uid);<br /><br />}<br />在该接口的实现中进行了注入<br />public class InformationServiceImpl implements InformationService {<br />	private BasicPayService bpService;<br /><br />	private RegisterInfoService riService;<br /><br />	private JobFinishService jobService;<br /><br />	@Reference<br />	public void setBpService(BasicPayService bpService) {<br />		this.bpService = bpService;<br />	}<br /><br />	@Reference<br />	public void setRiService(RegisterInfoService riService) {<br />		this.riService = riService;<br />	}<br /><br />	@Reference<br />	public void setJobService(JobFinishService jobService) {<br />		this.jobService = jobService;<br />	}<br /><br />	public double findByuid(String uid) {<br />		// TODO Auto-generated method stub<br />		return bpService.findByuid(uid);<br />	}<br /><br />	public String findInfoByuid(String uid) {<br />		// TODO Auto-generated method stub<br />		return riService.findInfoByuid(uid);<br />	}<br /><br />	public double findJob(String uid) {<br />		// TODO Auto-generated method stub<br />		return jobService.findJob(uid);<br />	}<br />}<br /><br />找不到原因,急中...<br />五:在jsp访问方式中是正确的<br />如index.jsp<br />&lt;%@ page language="java" import="java.util.*" pageEncoding="GBK"%><br />&lt;!-- 导入内容 --><br />&lt;%@ page import="org.osoa.sca.CompositeContext"%><br />&lt;%@ page import="org.osoa.sca.CurrentCompositeContext"%><br />&lt;%@ page import="cn.com.spsoft.sca.business.MSG"%><br />&lt;%@ page import="cn.com.spsoft.sca.business.InformationService" %><br />&lt;!-- 代码段 --><br />&lt;% <br />	//取得构件上下文环境<br />	CompositeContext context = CurrentCompositeContext.getContext();<br />	//加载接口MSG对应的服务,参数为接口，组件名称<br />	MSG msg = context.locateService(MSG.class, "msgComponent");<br />	InformationService informationService = context.locateService(<br />					InformationService.class, "informationServiceComponent");<br />			<br />			<br />%><br />&lt;%<br />	String path = request.getContextPath();<br />	String basePath = request.getScheme() + "://"<br />			+ request.getServerName() + ":" + request.getServerPort()<br />			+ path + "/";<br />%><br /><br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><br />&lt;html><br />	&lt;head><br />		&lt;base href="&lt;%=basePath%>"><br /><br />		&lt;title>Index Page...&lt;/title><br /><br />		&lt;meta http-equiv="pragma" content="no-cache"><br />		&lt;meta http-equiv="cache-control" content="no-cache"><br />		&lt;meta http-equiv="expires" content="0"><br />		&lt;meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><br />		&lt;meta http-equiv="description" content="This is my page"><br />		&lt;!--<br />	&lt;link rel="stylesheet" type="text/css" href="styles.css"><br />	--><br /><br />	&lt;/head><br /><br />	&lt;body><br />	&lt;center><br />		This is a SCA Application!&lt;br><br />		&lt;%=msg.getMsg("南京","江苏省-省会城市") %><br />		<br />		&lt;br><br />		&lt;%=informationService.findByuid("1") %>&lt;br><br />		&lt;%=informationService.findInfoByuid("1")%>&lt;br><br />		&lt;%=informationService.findJob("1")%>&lt;br><br />	&lt;/center><br />	&lt;/body><br />&lt;/html><br /><br />下附其WEB-INF\default.scdl<br />&lt;?xml version="1.0" encoding="UTF-8"?><br /><br />&lt;composite xmlns="http://www.osoa.org/xmlns/sca/1.0"<br />           targetNamespace="http://sca.spsoft.com.cn"<br />           xmlns:sample="http://sca.spsoft.com.cn"<br />    name="informationService">				<br />	&lt;component name="informationServiceComponent"><br />		&lt;implementation.java class="cn.com.spsoft.sca.business.impl.InformationServiceImpl"/><br />		&lt;reference name="bpService">bpServiceComponent&lt;/reference><br />		&lt;reference name="riService">riServiceComponent&lt;/reference><br />		&lt;reference name="jobService">jobServiceComponent&lt;/reference><br />	&lt;/component>	<br />	&lt;component name="bpServiceComponent"><br />		&lt;implementation.java class="cn.com.spsoft.sca.business.impl.BasicPayServiceImpl"/><br />	&lt;/component><br />	&lt;component name="riServiceComponent"><br />		&lt;implementation.java class="cn.com.spsoft.sca.business.impl.RegisterInfoServiceImpl"/><br />	&lt;/component><br />	&lt;component name="jobServiceComponent"><br />		&lt;implementation.java class="cn.com.spsoft.sca.business.impl.JobFinishServiceImpl"/><br />	&lt;/component>	<br />	&lt;service name="msg"><br />		&lt;interface.java interface="cn.com.spsoft.sca.business.MSG"/>		<br />		&lt;reference>msgComponent&lt;/reference><br />	&lt;/service>	<br />	&lt;component name="msgComponent"><br />		&lt;implementation.java class="cn.com.spsoft.sca.business.impl.MSGImpl"/><br />	&lt;/component>	<br />&lt;/composite>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/189530#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 04 May 2008 21:37:42 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/189530</link>
        <guid>http://zwm.javaeye.com/blog/189530</guid>
      </item>
      <item>
        <title>Java Double类型格式化四舍五入</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/187130" style="color:red;">http://zwm.javaeye.com/blog/187130</a>&nbsp;
          发表时间: 2008年04月26日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          DecimalFormat df=new DecimalFormat("#.00000000");<br />		System.out.println("Format:"+df.format(234.123456785));<br />这里好象五是不入的
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/187130#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 26 Apr 2008 19:37:12 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/187130</link>
        <guid>http://zwm.javaeye.com/blog/187130</guid>
      </item>
      <item>
        <title>Yahoo天气预报调用</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/179796" style="color:red;">http://zwm.javaeye.com/blog/179796</a>&nbsp;
          发表时间: 2008年04月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          现已南京为例<br /><br /><br />import java.io.InputStream;<br />import java.net.URL;<br />import java.text.SimpleDateFormat;<br />import java.util.Date;<br />import java.util.Locale;<br /><br />import javax.xml.parsers.SAXParser;<br />import javax.xml.parsers.SAXParserFactory;<br /><br />import org.xml.sax.Attributes;<br />import org.xml.sax.SAXException;<br />import org.xml.sax.helpers.DefaultHandler;<br /><br />public class YahooHandler extends DefaultHandler {<br />	public void startElement(String uri, String localName, String qName,<br />			Attributes attributes)throws SAXException {		<br />		if ("yweather:condition".equals(qName)) {<br />			String s_date = attributes.getValue(3);<br />			System.out.println("s_date:"+s_date);<br />			try {<br />				Date publish = new SimpleDateFormat(<br />						"EEE, dd MMM yyyy hh:mm a z",<br /><br />						Locale.US).parse(s_date);				<br />				System.out.println("发布时间: " + publish.toString());<br />			} catch (Exception e) {<br />				e.printStackTrace();<br />				throw new SAXException("Cannot parse date: " + s_date);<br />			}<br />		} else if ("yweather:forecast".equals(qName)) {<br />			String s_date = attributes.getValue(1);<br />			Date date = null;<br />			try {<br />				date = new SimpleDateFormat("dd MMM yyyy", Locale.US)<br />						.parse(s_date);<br />			} catch (Exception e) {<br />				e.printStackTrace();<br />				throw new SAXException("Cannot parse date: " + s_date);<br />			}<br />			int low = Integer.parseInt(attributes.getValue(2));<br />			int high = Integer.parseInt(attributes.getValue(3));<br />			String text = attributes.getValue(4);<br />			int code = Integer.parseInt(attributes.getValue(5));<br />			System.out.println(text + ", 最低温度=" + low + "度, 最高温度="<br />					+ high+"度;");<br />		}<br />		super.startElement(uri, localName, qName, attributes);<br />	}<br /><br />	public static void main(String args[]) throws Exception {<br />		System.out.println("南京地区天气预报:");<br />		String p=null;<br />		p="CHXX0099";<br />		URL url = new URL(<br />				"http://xml.weather.yahoo.com/forecastrss?u=c&p="+p);<br />		InputStream input = url.openStream();<br />		SAXParserFactory factory = SAXParserFactory.newInstance();<br />		factory.setNamespaceAware(false);<br />		SAXParser parser = factory.newSAXParser();<br />		parser.parse(input, new YahooHandler());<br />	}<br />}
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/179796#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 06 Apr 2008 10:42:56 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/179796</link>
        <guid>http://zwm.javaeye.com/blog/179796</guid>
      </item>
      <item>
        <title>jBPM近期学习</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/115909" style="color:red;">http://zwm.javaeye.com/blog/115909</a>&nbsp;
          发表时间: 2007年08月23日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          需要注意的地方：<br />1:ant tools<br />2:jpdl<br />3:database<br />4:user and usergroup<br />5:deploy
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/115909#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 23 Aug 2007 21:00:09 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/115909</link>
        <guid>http://zwm.javaeye.com/blog/115909</guid>
      </item>
      <item>
        <title>成长之路</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/93158" style="color:red;">http://zwm.javaeye.com/blog/93158</a>&nbsp;
          发表时间: 2007年06月22日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          似乎，现在看来，人好象比以前又多长了一些见识。
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/93158#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 22 Jun 2007 14:12:10 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/93158</link>
        <guid>http://zwm.javaeye.com/blog/93158</guid>
      </item>
      <item>
        <title>年轻的心啊</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/83186" style="color:red;">http://zwm.javaeye.com/blog/83186</a>&nbsp;
          发表时间: 2007年05月25日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          某日，有网友进门，带来自己7岁宝贝女儿。乃按约定予之拍了组个性照片。我觉得如今的女孩子比过去活泼多了。能熟练摆泡丝，很自然。唇红齿白眼睛顾盼有神。感觉简直像明星预备队。<br />    蓦想起网络博文《一年级女孩说：爱，做爱的爱》，就笑问她：<br />    小朋友，你在学校谈恋爱吗？<br />    谈呀，我们都谈。我有7个男朋友。<br />    哈哈！老天！为啥有7个男朋友？<br />    他们都是我的兵。我本来是8个，张南狗日敢尿床，我不要他。<br />    那他们听你话吗？<br />    听，敢不听。不听我拉他耳朵，揍他。<br />    那你们写情书吗？<br />    写嘛，情书谁不会？我们都会写。<br />    都写些啥？<br />    不就是爱嘛。我爱你，你爱我。亲爱的。反正都是那样。<br />    能不能给伯伯看看你写得情书?<br />    现在没有，我都折飞机了。<br />    啥叫爱情你知道吗？<br />    爱情？爱情谁不知道？就是男生女生天天在一起过家家，买东西，吃东西！有个同学还拍婚纱。<br />    你们平时唱歌吗？<br />    爱情歌？谁不会？笨蛋！亲爱的，你慢慢飞，小心墙角缩头的乌龟。老师都会。还有呢：<br />      一年级哭，二年级笑，<br /><br /><br /> 无标.jpg (37.66 KB)<br />2007-5-24 19:01<br />      三年级美女不能要，<br />      四年级帅哥不好找，<br />      五年纪情书呱呱叫，<br />      六年级爱情找不到。<br /><br />    现在的孩子早熟或盼望成熟，由于影视传媒的潜移默化，爱情的词汇让孩子心萌几缕亲切几多渴望。这都是发生在小学校园里的故事。
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/83186#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 25 May 2007 22:56:36 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/83186</link>
        <guid>http://zwm.javaeye.com/blog/83186</guid>
      </item>
      <item>
        <title>Proguard整理一些资料</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/69345" style="color:red;">http://zwm.javaeye.com/blog/69345</a>&nbsp;
          发表时间: 2007年04月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我们做java开发的一般都会遇到如何保护我们开发的代码问题。java语言由于是基于jvm上面，所以反编译class文件很很容易。假如我们做了一个web程序，并把这个web程序发布给客户。实际上，客户是很容易反编译出我们的源代码出来，包括所有的src文件和jsp文件等等。<br /><br />   那么，如何保护我们的源代码，实际上，应该有几种方法可以使用：1、使用代码混淆器  2、重载应用服务器的classloader<br /><br />   对于第一种方法来说，现在外面有很多开源工具可以使用，个人认为最好用的当属proguard莫属。proguard主要是易用易学。而且提供的功能也挺多。下面是个人一点使用心得<br /><br />   （1）、从网上download proguard工具，proguard工具主要包含是几个jar文件和一些example，下载地址http://proguard.sourceforge.net/<br /><br />   （2）、将里面的几个jar文件添加到类路径下面。当然，也可以不添加，但是下面在做混淆的时候，必须指定classpath，使在做混淆的过程中，能否访问该类<br /><br />   （3）、编写一个配置文件，主要是混淆器的一些参数。比如，下面是一个例子<br />-injars       platform.jar<br />-outjars      platform_out.jar<br />-libraryjars  &lt;java.home>/lib/rt.jar<br />-libraryjars ibatis-common-2.jar<br />-libraryjars ibatis-dao-2.jar<br />-libraryjars ibatis-sqlmap-2.jar<br />-libraryjars junit-3.8.1.jar<br />-libraryjars d:/j2ee.jar<br />-libraryjars struts.jar<br />-libraryjars commons-lang.jar<br />-libraryjars D:/0working/coreproject/byislib/jasperreports-0.6.1.jar<br />-libraryjars  commons-beanutils.jar<br /><br />-printmapping proguard.map<br />-overloadaggressively<br />-defaultpackage ''<br />-allowaccessmodification<br />-dontoptimize <br />-keep public class *<br />{<br /> public protected *;<br />} <br />-keep public class org.** <br />-keep public class it.**<br /><br />各个参数的含义参考proguard文档，该文档非常详细，上手很容易<br /><br />OK，到此就完成了代码混淆，打开产生的jar包可以看到，多了好多a、b、c之类的类文件。说明混淆结果已经成功。将原jar删除、运行产生的混淆jar包，一切正常！<br /><br />常见问题：使用过程中个人遇到了几个问题，开始也是找了很久才解决<br />   a. 内存溢出异常： 主要是proguard在做混淆的时候，吃了很多内存，因此，在运行混淆器的时候，可以增加内存，比如 java -mx512m .....<br />  b.栈溢出异常： 主要是proguard在做混淆的时候，会对一些代码进行优化，若遇到一些相对复杂的方法时，可能会抛出此异常。对付的办法是增加配置参数-dontoptimize，如上面的配置例子所示<br /><br />对于第二种方法，重载服务器的classloader的原理是这样。 首先我们通过一定算法把class文件加密； 然后写我们自己的classloader，替换服务器的classloader。 这样，我们可以读取class文件，通过我们自己的算法反加密成正确的class，然后再次进行load。这个方式还没应用起来，这几天个人正在研究，有什么新成果会在此做一些总结。<br /><br /><br /> ProGuard是一个开源的项目，主页：http://proguard.sourceforge.net/，目前最新的版本是3.3.2.。加载混淆器是非常简单的，只需要解压缩proguard3.3.2.zip，然后在 J2ME->Packing->Obfuscation 标签中选择 Proguard 的安装目录。如下图所示，在这里可以对需要在混淆过程中保留的类名进行配置，MIDlet 类的名称必须保留，以便设备的 Java 运行时环境（JRE）能够找到执行的入口点。<br />http://images.csdn.net/20050726/image027.jpg，It’s about the above pic.<br /><br /><br /><br />另一篇文档<br />ProGuard是一款免费的Java类文件压缩器、优化器和混淆器。它能发现并删除无用类、字段（field）、方法和属性值（attribute）。它也能优化字节码并删除无用的指令。最后，它使用简单无意义的名字来重命名你的类名、字段名和方法名。经过以上操作的jar文件会变得更小，并很难进行逆向工程。这里提到了ProGuard的主要功能是压缩、优化和混淆，下面我就先介绍一下这些概念，然后再介绍ProGuard的基本使用方法。<br /><br />l         什么是压缩：<br /><br />Java源代码（.java文件）通常被编译为字节码（.class文件）。而完整的程序或程序库通常被压缩和发布成Java文档（.jar文件）。字节码比Java源文件更简洁，但是它仍然包含大量的无用代码，尤其它是一个程序库的时候。ProGuard的压缩程序操作能分析字节码，并删除无用的类、字段和方法。程序只保留功能上的等价，包括异常堆栈描述所需要的信息。<br /><br />l         什么是混淆：<br /><br />通常情况下，编译后的字节码仍然包含了大量的调试信息：源文件名，行号，字段名，方法名，参数名，变量名等等。这些信息使得它很容易被反编译和通过逆向工程获得完整的程序。有时，这是令人厌恶的。例如像ProGuard这样的混淆器就能删除这些调试信息，并用无意义的字符序列来替换所有名字，使得它很难进行逆向工程，它进一步免费的精简代码。除了异常堆栈信息所需要的类名，方法名和行号外，程序只会保留功能上的等价。通过以上的了解，你应该明白为什么需要混淆了。<br /><br />l         ProGuard支持那些种类的优化：<br /><br />除了在压缩操作删除的无用类，字段和方法外，ProGuard也能在字节码级提供性能优化，内部方法有：<br /><br />²        常量表达式求值<br /><br />²        删除不必要的字段存取<br /><br />²        删除不必要的方法调用<br /><br />²        删除不必要的分支<br /><br />²        删除不必要的比较和instanceof验证<br /><br />²        删除未使用的代码<br /><br />²        删除只写字段<br /><br />²        删除未使用的方法参数<br /><br />²        像push/pop简化一样的各种各样的peephole优化<br /><br />²        在可能的情况下为类添加static和final修饰符<br /><br />²        在可能的情况下为方法添加private, static和final修饰符<br /><br />²        在可能的情况下使get/set方法成为内联的<br /><br />²        当接口只有一个实现类的时候，就取代它<br /><br />²        选择性的删除日志代码<br /><br />实际的优化效果是依赖于你的代码和执行代码的虚拟机的。简单的虚拟机比有复杂JIT编译器的高级虚拟机更有效。无论如何，你的字节码会变得更小。<br /><br />仍有一些明显需要优化的技术不被支持：<br /><br />²        使非final的常量字段成为内联<br /><br />²        像get/set方法一样使其他方法成为内联<br /><br />²        将常量表达式移到循环之外<br /><br />²        Optimizations that require escape analysis<br /><br /> <br /><br />    ProGuard是一个命令行工具，并提供了图形化用户界面，它也可以结合Ant或J2ME Wireless Toolkit使用。通过ProGuard得到的更精简的jar文件意味着只需要更小的存储空间；网络传输更省时；装载速度更快和占用更小的内存空间。另外，ProGuard非常快速和高效，它仅仅只花费几秒钟和几兆的内存在处理程序。它处理的顺序是先压缩，然后优化，最后才进行混淆。The results section presents actual figures for a number of applications.与其他Java混淆器相比，ProGuard的主要优势可能是它的基于模版文件的简单配置。一些直观的命令行选项或一个简单的配置文件已经足够了。例如，下面的配置选项保护了jar文件里的所有applets：<br /><br />-keep public class * extends java.applet.Applet<br /><br />用户指南里说明了所有可用的选项，并以大量的例子为你演示这些功能强大的配置选项。<br /><br /> <br /><br />       上面谈到了ProGuard的很多好处，现在我们就来看看如何在程序中使用ProGuard吧，之前也提到了ProGuard可以用命令行、图形界面、Ant等来执行和处理程序，同时也提到了配置文件，下面我们一起来看如何使用：<br /><br />用命令行执行ProGuard的命令如下：<br /><br />java –jar proguard.jar options……<br /><br />具体的选项可以参考ProGuard的用户指南，你也可以把这些属性写在配置文件里；运行时，我们只需要指定这个配置文件就行了，例如：<br /><br />java –jar proguard.jar @config.pro<br /><br />而配置文件的格式也是要按照ProGuard提供的格式来写的，这个可以参考ProGuard例子里的配置文件来配置适合你的应用系统的ProGuard配置文件。ProGuard提供了图形界面的配置和运行程序，你可以在界面上配置你想要的参数，然后运行即可。前面提到的要手动写的配置文件也可以用图形界面来配置和生成。<br /><br />如果你要在Ant里运行ProGuard，只需要添加一一个如下的target即可：<br /><br />&lt;target name="proguard" depends="init"><br /><br />       &lt;taskdef resource="proguard/ant/task.properties" classpath="${lib.dir}/proguard/proguard.jar" /><br /><br />       &lt;proguard configuration="${src.dir}/config.pro" /><br /><br />&lt;/target><br /><br />你只需要制定lib.dir和src.dir属性就行了，同样的，这里也用了proguard配置文件，跟上面提到的是一样的。建议大家把ProGuardGUI当成一个生成配置文件的向导来使用，这样我们只需要修改配置文件而不用重新写一个配置文件。<br /><br />如果你觉得ProGuard还不错，那就快把它加入你的项目里吧。<br /><br /><br /><br /><br /><br />第三文档<br />这是一个不应该在开源社区出现的东西，但它的的确确是一个开源的项目，正像它的名字一样，Proguard，即Program Guard（程序卫士），它代表了开源的相对面－－代码保护。<br />　　作为JAVA这样的高级语言，编译的产物只是相对源代码的一个概念而已，字节码虽然不像源代码那样易懂，但绝不是不可能进行反编译的，针对JAVA的反编译产品很多，如CAVAJ,JAD等等。面对反编译产品的不断出现，将代码视为财富的那些开发者，又何去何从。<br />　　混淆器正是在这种背景下应运而生，既然不可能完全地将拒绝反编译，那就让他们去反编译吧，只要反编译的结果别人不能直接使用不就行了吗？只要将代码搞混，让别人拿到了反编译的结果也看不懂，甚至不能编译。<br />　　混淆的方法有很多，主要是以下几方面。 <br />更名，将私有类，私有的成员，方法体内部的变量名改名，改成a,b,c等等，甚至1,2,3(代码中不允许不等于成果物中不允许） <br />改变逻辑的流向，如将if条件取反，if/else对换 <br />等价代码，如将循环改成GOTO <br />无效代码，插入不可及的无用代码 <br />　　Proguard是一个非常优秀的开源的JAVA混淆器,可以在http://proguard.sourceforge.net/下载到，现在就让我一起来看一下Proguard.<br />　　以3.2版为例，释放压缩包，我们看到，作为开源项目就有docs，lib,src,sample文件夹，在此就不一一介绍了。<br />　　进入lib目录，内有proguard.jar，如果要自己有混淆器的外壳，或作ANT插件的话，会用到它，详细情况可以参考Proguard的文档。<br />　　我们要看的是proguardgui.jar，这是Proguard的图形界面，我们使用JDK打开，注意是JDK，不是JRE。<br /><br />点选Input/Output标签，选择要混淆的JAR包（注意是JAR包），输出JAR包，以及用到的所有类库。 <br />点选Obfuscation标签，选中不需要混淆的类（要被反射的类绝对不能被混淆） <br />点选Process标签，Process按钮，等着看结果吧。 <br />Proguard中还包括了代码优化和代码整理的功能，不是本文讨论范围，有兴趣的就自己研究吧）<br />只混淆方面的选项<br /> <br /><br /><br />使用此种方式，如果a-z使用过，会转向aa.class,如下图配置界面<br />1,4,6,9,10,11,12<br /> <br />源代码<br />package org.zwm.pub;<br /><br />public class Bru {<br /><br />	/**<br />	 * @param args<br />	 */<br /><br />	public static void main(String[] args) {<br />		// TODO Auto-generated method stub<br />		System.out.println(showMsg());<br />	}<br />	public static String showMsg() {<br />		return "You are my sun";<br />	}<br />}<br />反编译后的代码<br />// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.<br />// Jad home page: http://www.kpdus.com/jad.html<br />// Decompiler options: packimports(3) <br /><br />package org.zwm.pub;<br /><br />import java.io.PrintStream;<br /><br />public class Bru<br />{<br /><br />    public Bru()<br />    {<br />    }<br /><br />    public static void main(String args[])<br />    {<br />        System.out.println(PK0304140008000800fZ());<br />    }<br /><br />    public static String PK0304140008000800fZ()<br />    {<br />        return "You are my sun";<br />    }<br />}<br /><br /><br /><br /><br />类名不变化，方法名混淆。
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/69345#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 09 Apr 2007 20:49:43 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/69345</link>
        <guid>http://zwm.javaeye.com/blog/69345</guid>
      </item>
      <item>
        <title>Spring Pdf视图</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/68404" style="color:red;">http://zwm.javaeye.com/blog/68404</a>&nbsp;
          发表时间: 2007年04月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          package org.zwm.pub;<br /><br />import java.io.FileOutputStream;<br />import java.util.Map;<br /><br />import javax.servlet.http.HttpServletRequest;<br />import javax.servlet.http.HttpServletResponse;<br /><br />import org.apache.log4j.Logger;<br />import org.springframework.context.ApplicationContext;<br />import org.springframework.context.support.FileSystemXmlApplicationContext;<br />import org.springframework.web.servlet.view.document.AbstractPdfView;<br /><br />import com.lowagie.text.Document;<br />import com.lowagie.text.Paragraph;<br />import com.lowagie.text.pdf.PdfWriter;<br /><br />public class CreatePDF extends AbstractPdfView {<br />	public static void main(String args[]) {<br />		CreatePDF cpdf = new CreatePDF();<br />		Map map = null;<br />		Document doc = null;<br />		PdfWriter pdfwriter = null;<br />		HttpServletRequest request = null;<br />		HttpServletResponse response = null;<br />		try {<br />			cpdf.buildPdfDocument(map, doc, pdfwriter, request, response);<br />		} catch (Exception e) {<br />			// TODO Auto-generated catch block<br />			e.printStackTrace();<br />		}<br />	}<br /><br />	@Override<br />	protected void buildPdfDocument(Map arg0, Document arg1, PdfWriter arg2,<br />			HttpServletRequest arg3, HttpServletResponse arg4) throws Exception {<br />		// TODO Auto-generated method stub<br />		ApplicationContext context = new FileSystemXmlApplicationContext(<br />				"src/applicationContext.xml");<br />		Person person = (Person) context.getBean("person");<br />		Document document = new Document();<br />	<br />		PdfWriter.getInstance(document, new FileOutputStream(<br />				"src/org/zwm/pub/我的春天.pdf"));		<br />		document.open();<br />		Paragraph header = new Paragraph("You are my sun");		<br />		header.font().setSize(20);<br />		header.font().setColor(255, 1, 2);<br />		document.add(header);		<br /><br />		System.out.println(person.getUsername() + "/" + person.getPassword());<br /><br />		Paragraph content = new Paragraph(person.getUsername() + "/"<br />				+ person.getPassword());<br />		content.font().setFamily("黑体");<br />		content.font().setColor(30, 10, 2);<br />		document.add(content);<br />		<br />		Paragraph footer = new Paragraph("Msn:zhaowenming21@hotmail.com"<br />+"Others: 51server@sina.com   "                          <br />+"Qq: 312837814/13096940414"<br />+"IT.Software Developer Group,China Asia"<br />+"Aphorism:Every dog has it is own time.");<br />		footer.font().setColor(10, 60, 50);<br />		footer.setAlignment(Paragraph.ALIGN_BOTTOM);<br />		document.add(footer);<br />		document.close();<br /><br />	}<br /><br />}
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/68404#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 05 Apr 2007 22:03:08 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/68404</link>
        <guid>http://zwm.javaeye.com/blog/68404</guid>
      </item>
      <item>
        <title>单元测试利器 JUnit 4</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/67431" style="color:red;">http://zwm.javaeye.com/blog/67431</a>&nbsp;
          发表时间: 2007年04月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://www.ibm.com/developerworks/cn/java/j-lo-junit4/index.html?S_TACT=105AGX52&S_CMP=techcsdn" target="_blank">http://www.ibm.com/developerworks/cn/java/j-lo-junit4/index.html?S_TACT=105AGX52&S_CMP=techcsdn</a>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/67431#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 02 Apr 2007 21:22:43 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/67431</link>
        <guid>http://zwm.javaeye.com/blog/67431</guid>
      </item>
      <item>
        <title>eclipse使用内存问题</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/66746" style="color:red;">http://zwm.javaeye.com/blog/66746</a>&nbsp;
          发表时间: 2007年03月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          eclipse工具JVM内存使用配置在安装根目录下的eclipse.ini进行配置即可。<br />反转控制和面向切面<br />松散耦合<br />轻量级<br />非入侵式<br />容器<br />IOC/DI<br />AOP<br />持久层<br />WEB框架整合<br />表与表之间的关系不是在表中完成，而是在配置文件中配置<br />因此xml配置文件在J2EE中的配置文件作用显然易见--松散耦合<br /><br />电影《父子》没事的时候，可以再看一篇，视觉和音频效果不错。<br /><br />戴上耳机听&lt;最近比较烦>，要比使用外音（音设备不好呗）好听。
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/66746#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 30 Mar 2007 23:05:16 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/66746</link>
        <guid>http://zwm.javaeye.com/blog/66746</guid>
      </item>
      <item>
        <title>XML 和 Java 技术: XML 究竟有哪些优势？</title>
        <author>zwm</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://zwm.javaeye.com">zwm</a>&nbsp;
          链接：<a href="http://zwm.javaeye.com/blog/65876" style="color:red;">http://zwm.javaeye.com/blog/65876</a>&nbsp;
          发表时间: 2007年03月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <a href="http://www.ibm.com/developerworks/cn/xml/x-xjavaforum1.html?S_TACT=105AGX52&S_CMP=techcsdn" target="_blank">http://www.ibm.com/developerworks/cn/xml/x-xjavaforum1.html?S_TACT=105AGX52&S_CMP=techcsdn</a>
          <br/>
          <span style="color:red;">
            <a href="http://zwm.javaeye.com/blog/65876#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 27 Mar 2007 20:12:50 +0800</pubDate>
        <link>http://zwm.javaeye.com/blog/65876</link>
        <guid>http://zwm.javaeye.com/blog/65876</guid>
      </item>
  </channel>
</rss>