<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>lovelace</title>
    <description></description>
    <link>http://lovelace.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>缅怀下大学的真3生涯</title>
        <author>lovelace</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lovelace.javaeye.com">lovelace</a>&nbsp;
          链接：<a href="http://lovelace.javaeye.com/blog/235065" style="color:red;">http://lovelace.javaeye.com/blog/235065</a>&nbsp;
          发表时间: 2008年08月31日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从大三开始玩真3的。当时学院刮起来真3热，鼎盛时期可谓全民真3。刚开始基本上是在浩方上玩。那时候，
</p>
<p>开黑还被虐，菜得要死。记得当时网吧真3的人暴多，学校机房周末也是N多人玩。我们还闹个小笑话，一战友玩麻袋，出了风行小有成就感。于是乎大叫：我风行去偷塔！引来众人无限鄙视<img src="http://www.javaeye.com/images/smiles/icon_biggrin.gif" alt="" />
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 后来学校局域网搞好了，基本上在局域网内搞。这时流行起班P。一没课的时候，就找隔壁班的挑。隔壁班的玩真3比较早，水平比我们高出许多。打个比方：我们的一线组合还打不过他们的二线组合。据传：他们一线组合曾经跟上海骷髅、二区战队玩过，而且各有输赢。这就给了我们莫大的动力。在他们不断的蹂躏下，我们的水平突飞猛进！每晚熄灯时，站在走廊上便可听到 &ldquo;啊，啊&rdquo;极具淫荡挑逗的声音，这便是我们学院宿舍的一大风景线<img src="http://www.javaeye.com/images/smiles/icon_biggrin.gif" alt="" />
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 怀恋一下当时的战友：摇滚坦克：魏－司马、蜀－关羽&nbsp; 司马大得N准、意识＋技术流；关羽13j出推磨(当时流行打法)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 老大：魏国－寻、蜀－飞&nbsp; 晕棒部署极具艺术，蛇棒空插让对手胆寒；飞飞T准确，但不够勇猛</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wd(无敌)：魏－电位、蜀－诸葛&nbsp; 意识＋技术流，中F高手，电位太过勇猛</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; 小卡： 魏－曹仁、蜀－PT&nbsp; 每战必死的郁闷的角色</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sg：当年风行偷塔的麻袋，后转战魔兽世界，真三玩得比较少，云是相当犀利</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我：魏－国家、蜀－魏延&nbsp;&nbsp; 国家经常大到2人以上，我魏延他们放心<img src="http://www.javaeye.com/images/smiles/icon_biggrin.gif" alt="" />
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大四上，wd准备考研、摇滚坦克荣升班长，我们找工作。大家都比较忙，团P的次数也越来越少了。隔壁班的隔壁班的八神同学建了个校真3群，学校的局域网开始活跃起来，但是大二大三的学弟们居多，当时还搞国学校真3比赛。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大四下，考研的考上了，找工作的也找到了。但老大投身魔兽世界，小卡去厦门实习，一起玩真3的次数也不多。此时的我仍活跃在校局域网，并开始全面发展起来，团P的英雄一个一个玩过去。让大家大为吃惊的是诸葛玩得相当不错，P倒了坦克和隔壁班的司马<img src="http://www.javaeye.com/images/smiles/icon_biggrin.gif" alt="" />
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在毕业将近2个月，工作了大家都比较忙。但周末还时不时拉几个人到VS上爽几盘。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 555，昨天号被封了(用了优化)，估计以后将很少玩，也没时间就是了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 谨以此篇缅怀下我的大学真3生涯！</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://lovelace.javaeye.com/blog/235065#comments" style="color:red;">已有 <strong>1</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 31 Aug 2008 17:14:22 +0800</pubDate>
        <link>http://lovelace.javaeye.com/blog/235065</link>
        <guid>http://lovelace.javaeye.com/blog/235065</guid>
      </item>
      <item>
        <title>firefox 无法登入</title>
        <author>lovelace</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lovelace.javaeye.com">lovelace</a>&nbsp;
          链接：<a href="http://lovelace.javaeye.com/blog/232053" style="color:red;">http://lovelace.javaeye.com/blog/232053</a>&nbsp;
          发表时间: 2008年08月24日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp; 今天在用firefox调试一个web项目时出现一个奇怪的问题：在登入窗口输入用户名、密码、验证码老是的登入不了！而用ie就可以。用firebug查看post数据，发现都是空的。我就怀疑是不是我firefox有问题。于是重装firefox，还是无法登入。用别的机子上firefox确可以正常登入。难道是我RP问题？我严重怀疑。</p>
<p>&nbsp;&nbsp;&nbsp; 我用我机子上的firefox访问到163.com，并登入我的邮箱，发现过不了验证，虽然在firebug中看到的post数据是正确的用户名、密码。这时我就大胆断定是firefox本身的原因。</p>
<p>&nbsp;&nbsp;&nbsp; 于是乎，我google下firefox can not login 。哇嘎嘎，出来了一大堆条目－－我的猜测果然没错。无法登入问题重firefox 1.X开始就存在，可谓是历史遗留问题。至于为什么有的人使用正常，而有的就有问题。原因出在firefox处理隐私数据上的bug！我的猜测是：升级firefox时低版本的隐私数据没有被清理干净，导致高版本firefox导入出现错误，即使输入的是正确的数据。</p>
<p>&nbsp;&nbsp;&nbsp; 罗里罗嗦了这么多，解决方法还没说^_^</p>
<p>&nbsp;&nbsp;&nbsp; 方法很简单：下个清理工具(推荐用windows优化大师)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 清理掉所以的cookie、ie缓存等等</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 重装firefox</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ok～～</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://lovelace.javaeye.com/blog/232053#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</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, 24 Aug 2008 10:28:17 +0800</pubDate>
        <link>http://lovelace.javaeye.com/blog/232053</link>
        <guid>http://lovelace.javaeye.com/blog/232053</guid>
      </item>
      <item>
        <title>Could not load Tomcat server configuration</title>
        <author>lovelace</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lovelace.javaeye.com">lovelace</a>&nbsp;
          链接：<a href="http://lovelace.javaeye.com/blog/230262" style="color:red;">http://lovelace.javaeye.com/blog/230262</a>&nbsp;
          发表时间: 2008年08月19日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; google了一下问题，没有有用的解决方法。最终自己解决了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实主要是路径问题。因为之前我装了tomcat6版本默认的主目录名是apache-tomcat-6.0.16，并在eclipse中作为项目的server。后来把他卸掉，再装个新版本的tomcat6。这个版本的默认目录是Tomcat 6.0。在eclipse中要把项目发布到tomcat server中时,eclipse需要读取conf\catalina.policy文件。主目录名改变了，catalina.policy文件当然就找不到。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 解决方法就是将原来的server删掉，在添加一个server，设置server runtime ，tomcat安装目录设对就ok了~~</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://lovelace.javaeye.com/blog/230262#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 19 Aug 2008 21:56:24 +0800</pubDate>
        <link>http://lovelace.javaeye.com/blog/230262</link>
        <guid>http://lovelace.javaeye.com/blog/230262</guid>
      </item>
      <item>
        <title>第一次领工资前后杂记</title>
        <author>lovelace</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lovelace.javaeye.com">lovelace</a>&nbsp;
          链接：<a href="http://lovelace.javaeye.com/blog/226771" style="color:red;">http://lovelace.javaeye.com/blog/226771</a>&nbsp;
          发表时间: 2008年08月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 领了工作后第一个月的工资，心情是比较复杂的。兴奋的成分不多。主要是因为前几天碰到了个事：上上周末（非工作时间）我工作电脑的cpu被偷了。而公司的&ldquo;强盗逻辑&rdquo;是：我没有保管好公司财物，要我承担全部责任。我无语，也很愤慨：TMD的垃圾公司！后来虽然部门经理想了个折中的方法，由部门经费出钱买cpu。但我心理仍然很不是滋味。 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上周五领了工资，早早的下班回来看奥运了，几个同事边喝酒边看，感觉还不错！ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 之前跟同学约定领第一个工资要请导师还没兑现，这周不能再拖了！ <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 看到班级主页上有人建议领第一月工资拿出来晒晒之类的。在网银上看到最近交易：2639RMB <br />这就是我第一个月25天的工资，mark！</p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://lovelace.javaeye.com/blog/226771#comments" style="color:red;">已有 <strong>3</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 11 Aug 2008 22:12:43 +0800</pubDate>
        <link>http://lovelace.javaeye.com/blog/226771</link>
        <guid>http://lovelace.javaeye.com/blog/226771</guid>
      </item>
      <item>
        <title>java clone方法使用详解</title>
        <author>lovelace</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lovelace.javaeye.com">lovelace</a>&nbsp;
          链接：<a href="http://lovelace.javaeye.com/blog/182772" style="color:red;">http://lovelace.javaeye.com/blog/182772</a>&nbsp;
          发表时间: 2008年04月15日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          Java语言的一个优点就是取消了指针的概念，但也导致了许多程序员在编程中常常忽略了对象与引用的区别，特别是先学c、c++后学java的程序员。并且由于Java不能通过简单的赋值来解决对象复制的问题，在开发过程中，也常常要要应用clone（）方法来复制对象。比如函数参数类型是自定义的类时，此时便是引用传递而不是值传递。以下是一个小例子：<br /><br /><pre name="code" class="java">public class A {
	public String name;
}</pre><br /><pre name="code" class="java">public class testClone {
	
	public void changeA(A a){
		a.name="b";
	}
	public void changInt(int i){
		i=i*2+100;
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		testClone test=new testClone();
		A a=new A();
		a.name="a";
		System.out.println("before change : a.name="+a.name);
		test.changeA(a);
		System.out.println("after  change : a.name="+a.name);
		int i=1;
		System.out.println("before change : i="+i);
		test.changInt(i);
		System.out.println("after  change : i="+i);
	}

}</pre><br /><br />此时输出的结果是：<br /><br /><pre name="code" class="java">before change : a.name=a
after  change : a.name=b
before change : i=1
after  change : i=1
</pre><br /><br />从这个例子知道Java对对象和基本的数据类型的处理是不一样的。在Java中用对象的作为入口参数的传递则缺省为"引用传递"，也就是说仅仅传递了对象的一个"引用"，这个"引用"的概念同C语言中的指针引用是一样的。当函数体内部对输入变量改变时，实质上就是在对这个对象的直接操作。 <br />除了在函数传值的时候是"引用传递"，在任何用"＝"向对象变量赋值的时候都是"引用传递"，如：<br /><br /><pre name="code" class="java">		A a1=new A();
		A a2=new A();
		a1.name="a1";
		a2=a1;
		a2.name="a2";
		System.out.println("a1.name="+a1.name);
		System.out.println("a2.name="+a2.name);</pre><br /><br />此时输出的结果是：<br /><br /><pre name="code" class="java">a1.name=a2
a2.name=a2</pre><br /><br />如果我们要用a2保存a1对象的数据，但又不希望a2对象数据被改变时不影响到a1。实现clone（）方法是其一种最简单，也是最高效的手段。 <br />下面我们来实现A的clone方法<br /><pre name="code" class="java">public class A implements Cloneable {
	public String name;

	public Object clone() {
		A o = null;
		try {
			o = (A) super.clone();
		} catch (CloneNotSupportedException e) {
			e.printStackTrace();
		}
		return o;
	}

}</pre><br />首先要实现Cloneable接口，然后在重载clone方法，最后在clone()方法中调用了super.clone()，这也意味着无论clone类的继承结构是什么样的，super.clone()直接或间接调用了java.lang.Object类的clone()方法。<br /><pre name="code" class="java">		A a1=new A();
		A a2=new A();
		a1.name="a1";
		a2=a1;
		a2.name="a2";
		System.out.println("a1.name="+a1.name);
		System.out.println("a2.name="+a2.name);</pre><br /><br />此时输出的结果是：<br /><br /><pre name="code" class="java">a1.name=a1
a2.name=a2</pre><br /><br />当Class A成员变量类型是java的基本类型时（外加String类型）,只要实现如上简单的clone（称影子clone）就可以。但是如果Class A成员变量是数组或复杂类型时，就必须实现深度clone。<pre name="code" class="java">public class A implements Cloneable {
	public String name[];
	
	public A(){
		name=new String[2];
	}

	public Object clone() {
		A o = null;
		try {
			o = (A) super.clone();
		} catch (CloneNotSupportedException e) {
			e.printStackTrace();
		}
		return o;
	}
}</pre><br />测试代码<pre name="code" class="java">A a1=new A();
A a2=new A();
a1.name[0]="a";
a1.name[1]="1";
a2=(A)a1.clone();
a2.name[0]="b";
a2.name[1]="1";
System.out.println("a1.name="+a1.name);
System.out.println("a1.name="+a1.name[0]+a1.name[1]);
System.out.println("a2.name="+a2.name);
System.out.println("a2.name="+a2.name[0]+a2.name[1]);</pre><br />输出结果：<pre name="code" class="java">a1.name=[Ljava.lang.String;@757aef
a1.name=b1
a2.name=[Ljava.lang.String;@757aef
a2.name=b1</pre><br />看到了吧，a1.name,a2.name的hash值都是@757aef,也就是说影子clone对name数组只是clone他们的地址！解决该办法是进行深度clone。<br /><pre name="code" class="java">public Object clone() {
		A o = null;
		try {
			o = (A) super.clone();
		} catch (CloneNotSupportedException e) {
			e.printStackTrace();
		}
		o.name=new String[2];//其实也很简单^_^
		return o;
	}</pre><br />此时输出结果是：<pre name="code" class="java">a1.name=[Ljava.lang.String;@757aef
a1.name=a1
a2.name=[Ljava.lang.String;@d9f9c3
a2.name=b1</pre><br />需要注意的是Class A存在更为复杂的成员变量时，如Vector等存储对象地址的容器时，就必须clone彻底。<pre name="code" class="java">public class A implements Cloneable {
	public String name[];
	public Vector&lt;B> claB;
	
	public A(){
		name=new String[2];
		claB=new Vector&lt;B>();
	}

	public Object clone() {
		A o = null;
		try {
			o = (A) super.clone();
		} catch (CloneNotSupportedException e) {
			e.printStackTrace();
		}
		o.name=new String[2];//深度clone
		o.claB=new Vector&lt;B>();//将clone进行到底
		for(int i=0;i&lt;claB.size();i++){
			B temp=(B)claB.get(i).clone();//当然Class B也要实现相应clone方法
			o.claB.add(temp);
		}
		return o;
	}
}</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://lovelace.javaeye.com/blog/182772#comments" style="color:red;">已有 <strong>2</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 15 Apr 2008 09:09:26 +0800</pubDate>
        <link>http://lovelace.javaeye.com/blog/182772</link>
        <guid>http://lovelace.javaeye.com/blog/182772</guid>
      </item>
      <item>
        <title>split()函数出错</title>
        <author>lovelace</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lovelace.javaeye.com">lovelace</a>&nbsp;
          链接：<a href="http://lovelace.javaeye.com/blog/179061" style="color:red;">http://lovelace.javaeye.com/blog/179061</a>&nbsp;
          发表时间: 2008年04月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近一段时间没碰java,昨天犯了个低级错误。split(String regx)函数regx是正则表达式，如果遇到关键字应做相应转换。<br /><pre name="code" class="java">String str="a | b";
String [] result=str.split("|");
System.out.println(result.length);</pre><br />上面代码片段原意是想用 | 把字符串分割。上面代码结果是6，与预期不符。正确的代码如下：<pre name="code" class="java">String str="a | b";
String [] result=str.split("\\|");
System.out.println(result.length);</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://lovelace.javaeye.com/blog/179061#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Apr 2008 09:17:55 +0800</pubDate>
        <link>http://lovelace.javaeye.com/blog/179061</link>
        <guid>http://lovelace.javaeye.com/blog/179061</guid>
      </item>
      <item>
        <title>Ubuntu:系统管理员不允许界面登入</title>
        <author>lovelace</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lovelace.javaeye.com">lovelace</a>&nbsp;
          链接：<a href="http://lovelace.javaeye.com/blog/151162" style="color:red;">http://lovelace.javaeye.com/blog/151162</a>&nbsp;
          发表时间: 2007年12月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          普通用户登入后在终端输入：<br /><pre name="code" class="java">gksu gdmsetup</pre><br />输入该用户密码后，Login Windows Preferences->security->allow local system administrator login 选项勾上就OK了.
          <br/><br/>
          <span style="color:red;">
            <a href="http://lovelace.javaeye.com/blog/151162#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 27 Dec 2007 11:29:05 +0800</pubDate>
        <link>http://lovelace.javaeye.com/blog/151162</link>
        <guid>http://lovelace.javaeye.com/blog/151162</guid>
      </item>
      <item>
        <title>分别用DOM和JDOM实现XML读写</title>
        <author>lovelace</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lovelace.javaeye.com">lovelace</a>&nbsp;
          链接：<a href="http://lovelace.javaeye.com/blog/148465" style="color:red;">http://lovelace.javaeye.com/blog/148465</a>&nbsp;
          发表时间: 2007年12月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          jdom用来实现xml读写比用传统的dom方便专业多了。以下是dom实现的：<br /><pre name="code" class="java">import javax.xml.parsers.*;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.*;
import org.xml.sax.SAXException;

import java.io.*;

public class XmlOperate{
	//Document doc;

	
	
	public XmlOperate() {
		System.out.println("XmlOperate init!");
	}

	/**
	 * @param args
	 * @throws ParserConfigurationException
	 * @throws IOException
	 * @throws SAXException
	 */

	public synchronized LocalCrl readinObj_ID(String id)//根据ID对XML文件查询，返回一个LocalCrl对象
			throws ParserConfigurationException, SAXException, IOException {// 根据ID查询
		LocalCrl obj = null;//将obj初始化为null
//		得到DOM解析器的工厂实例
		DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
//      从DOM工厂获得DOM解析器
		DocumentBuilder builder = dbfactory.newDocumentBuilder();
		Document doc = builder.parse(new File("local.xml"));
		Element root = doc.getDocumentElement();//获得XML文档的根节点
		//System.out.println("根节点标记名：" + root.getTagName());
		NodeList list = root.getElementsByTagName("crl");//获得crl节点列表
		for (int i = 0; i &lt; list.getLength(); i++) {//遍历整个列表
			Element element = (Element) list.item(i);
			// System.out.println(element.getAttribute("dbid"));
			if (id.equals(element.getAttribute("dbid"))) {//找到指定ID的节点，最后跳出循环
				obj=new LocalCrl();//实例化
				obj.setDbid(id);
				for (Node node = element.getFirstChild(); node != null; node = node
						.getNextSibling()) {//获得子节点属性值
					if (node.getNodeName().equals("name")) {
						String name=node.getFirstChild().getNodeValue();
						obj.setName(name);
					}
					if (node.getNodeName().equals("version")) {
						String version=node.getFirstChild().getNodeValue();
						obj.setVersion(version);
					}
					if (node.getNodeName().equals("md5")) {
						String md5=node.getFirstChild().getNodeValue();
						obj.setMd5(md5);
					}					
				}				
				break;
			}
		}
		return obj;
	}
	
	public synchronized void addnewObj(LocalCrl newObj){
		try {
			Thread.sleep(100);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {//判断XML是否已经存在该节点
			LocalCrl isexist=readinObj_ID(newObj.getDbid());
			if(isexist!=null){
				System.out.println("要添加的节点已经存在"+System.currentTimeMillis());
				return;
			}
		} catch (ParserConfigurationException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (SAXException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
//		得到DOM解析器的工厂实例
		DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
//      从DOM工厂获得DOM解析器
		DocumentBuilder builder;
		Document doc=null;
		try {
			builder = dbfactory.newDocumentBuilder();
		    try {
				doc = builder.parse(new File("local.xml"));
			} catch (SAXException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			} catch (IOException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
		} catch (ParserConfigurationException e1) {
			// TODO 自动生成 catch 块
			e1.printStackTrace();
		}
		
		Element root =doc.getDocumentElement();	//获得根节点	
		Element crl=doc.createElement("crl");//创建新的crl元素
		crl.setAttribute("dbid", newObj.getDbid());
		Element name=doc.createElement("name");
		name.appendChild(doc.createTextNode(newObj.getName()));
		Element version=doc.createElement("version");
		version.appendChild(doc.createTextNode(newObj.getVersion()));
		Element md5=doc.createElement("md5");
		md5.appendChild(doc.createTextNode(newObj.getMd5()));
		crl.appendChild(name);
		crl.appendChild(version);
		crl.appendChild(md5);
		root.appendChild(crl);
		
//		创建转换工厂，将结果写回到xml中去
		TransformerFactory tf = TransformerFactory.newInstance();
        Transformer trans;
		try {
			trans = tf.newTransformer();
			try {
				trans.transform(new DOMSource(doc),new StreamResult(new File("local.xml")));
			} catch (TransformerException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (TransformerConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("添加新节点成功"+System.currentTimeMillis());
	}
	
	public synchronized void deleteObj_ID(String id){
		try {//判断XML是否已经存在该节点
			LocalCrl isexist=readinObj_ID(id);
			if(isexist==null){
				System.out.println("要删除的节点不存在！"+System.currentTimeMillis());
				return;
			}
		} catch (ParserConfigurationException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (SAXException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
//		得到DOM解析器的工厂实例
		DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
//      从DOM工厂获得DOM解析器
		DocumentBuilder builder;
		Document doc=null;
		try {
			builder = dbfactory.newDocumentBuilder();
			try {
				doc = builder.parse(new File("local.xml"));
			} catch (SAXException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			} catch (IOException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
		} catch (ParserConfigurationException e1) {
			// TODO 自动生成 catch 块
			e1.printStackTrace();
		}
		
		
		Element root=doc.getDocumentElement();
		NodeList nodelist=root.getElementsByTagName("crl");
		for(int i=0;i&lt;nodelist.getLength();i++){
			Element element=(Element)nodelist.item(i);
			if(id.equals(element.getAttribute("dbid"))){
				Node node=nodelist.item(i);
				root.removeChild(node);
//				创建转换工厂，将结果写回到xml中去
				TransformerFactory tf = TransformerFactory.newInstance();
		        Transformer trans;
				try {
					trans = tf.newTransformer();
					try {
						trans.transform(new DOMSource(doc),new StreamResult(new File("local.xml")));
					} catch (TransformerException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				} catch (TransformerConfigurationException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}
		}
		System.out.println("删除节点成功"+System.currentTimeMillis());
	}
	
	public void deleteObj(LocalCrl old){
		deleteObj_ID(old.getDbid());
	}	
	

}
</pre><br />JDom实现：<br /><pre name="code" class="java">
import java.io.*;
import java.util.ArrayList;
import java.util.List;

import org.jdom.*;
import org.jdom.input.SAXBuilder;

import org.jdom.output.XMLOutputter;



public class XmlOperate {
	Document doc;//

	File Xmlfile;//操作的xml文件

	class dbidNullException extends Exception {//查询的dbid为空时抛出的异常

		private static final long serialVersionUID = 1L;

		public dbidNullException() {

		}

	}

	public XmlOperate(File xmlfile) {
		
		Xmlfile = xmlfile;
		if(!Xmlfile.exists()){//文件不存在时抛出异常
			try {
				throw new FileNotFoundException();
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		SAXBuilder sb = new SAXBuilder();
		try {
			doc = sb.build(Xmlfile);
		} catch (JDOMException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
	

	public synchronized LocalCrl readinObj_ID(String dbid)// 根据ID对XML文件查询，返回一个LocalCrl对象
	{// 根据ID查询
		/*
		 *
		 */
		if (dbid == null) {//dbid为空时抛出异常
			try {
				throw new dbidNullException();
			} catch (dbidNullException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		LocalCrl obj = null;// 将obj初始化为null
		Element root = doc.getRootElement();//获得根节点
		List list = root.getChildren("crl");//获得所有crl元素
		for (int i = 0; i &lt; list.size(); i++) {
			Element element = (Element) list.get(i);
			if (dbid.equals(element.getAttributeValue("dbid"))) {//匹配时获得crl所有属性，并实例化LocalCrl
				obj = new LocalCrl();
				obj.setDbid(dbid);
				Element name = element.getChild("name");
				obj.setName(name.getText());
				Element version = element.getChild("version");
				obj.setVersion(version.getText());
				Element md5 = element.getChild("md5");
				obj.setMd5(md5.getText());
				break;				
			}			
		}
		
		return obj;
	}

	public synchronized void addnewObj(LocalCrl newObj) {//向XML文件添加一个LocalCrl对象
		/*
		 * 
		 */
		// 判断XML是否已经存在该节点

		LocalCrl isexist = readinObj_ID(newObj.getDbid());
		if (isexist != null) {
			System.out.println("要添加的节点已经存在" + System.currentTimeMillis());
			return;
		}
		Element root = doc.getRootElement();//获得根节点
		Element crl = new Element("crl");
		crl.setAttribute(new Attribute("dbid", newObj.getDbid()));
		Element name=new Element("name");
		name.addContent(newObj.getName());
		Element version=new Element("version");
		version.addContent(newObj.getVersion());
		Element md5=new Element("md5");
		md5.addContent(newObj.getMd5());
		crl.addContent(name);//添加子元素
		crl.addContent(version);
		crl.addContent(md5);
		root.addContent(crl);
		XMLOutputter outputter = new XMLOutputter("    ", true);//定义XML格式

		try {
			outputter.output(doc, new FileOutputStream(Xmlfile));

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public synchronized void deleteObj_ID(String dbid) {//根据dbid删除XML中相应元素
		
		Element root = doc.getRootElement();//获得根节点
		List list = root.getChildren("crl");//获得所有crl元素
		for (int i = 0; i &lt; list.size(); i++) {
			Element element = (Element) list.get(i);
			if (dbid.equals(element.getAttributeValue("dbid"))) {//dbid匹配时删除相应元素				
				root.removeContent(element);

				XMLOutputter outputter = new XMLOutputter("    ", true);//定义XML格式
				try {
					outputter.output(doc, new FileOutputStream(Xmlfile));

				} catch (FileNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				break;
				// obj.setName(name.getTextTrim());
			}
		}
	}

	public void deleteObj(LocalCrl old) {//根据LocalCrl删除XML中相应元素
		deleteObj_ID(old.getDbid());
	}

	public ArrayList&lt;LocalCrl> getAllElement() {//获得XML中所有元素
		ArrayList&lt;LocalCrl> arraylist = new ArrayList&lt;LocalCrl>();
		Element root = doc.getRootElement();
		List list = root.getChildren("crl");
		for (int i = 0; i &lt; list.size(); i++) {
			Element element = (Element) list.get(i);
			LocalCrl obj = new LocalCrl();
			obj.setDbid(element.getAttributeValue("dbid"));
			obj.setName(element.getChild("name").getText());
			obj.setVersion(element.getChild("version").getText());
			obj.setMd5(element.getChild("md5").getText());
			arraylist.add(obj);			
		}

		return arraylist;
	}
	
	

}</pre><br /><br />对应的xml文件：<br /><pre name="code" class="java">
&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?>&lt;local>
	&lt;crl dbid="15">
		&lt;name>kernel&lt;/name>
		&lt;version>1.0.0.0&lt;/version>
		&lt;md5>516b0591270cedacefad0d8a25a31d46&lt;/md5>	
	&lt;/crl>
	&lt;crl dbid="17">
		&lt;name>base&lt;/name>
		&lt;version>3.0.0.0&lt;/version>
		&lt;md5>0ba0c289664c983dde7a4fa3e907737d&lt;/md5>
	&lt;/crl>
	&lt;crl dbid="22">
		&lt;name>fonts&lt;/name>
		&lt;version>1.0.0.0&lt;/version>
		&lt;md5>744ab94e13c43d1a2777a4418b690d1e&lt;/md5>	
	&lt;/crl>
&lt;/local></pre><br />里面LocalCrl类:<pre name="code" class="java">
public class LocalCrl {//LocalCrl类
	
	String dbid;
	String name;
	String version;
	String md5;
	public String getDbid() {
		return dbid;
	}
	public void setDbid(String dbid) {
		this.dbid = dbid;
	}
	public String getMd5() {
		return md5;
	}
	public void setMd5(String md5) {
		this.md5 = md5;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getVersion() {
		return version;
	}
	public void setVersion(String version) {
		this.version = version;
	}

}</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://lovelace.javaeye.com/blog/148465#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 14 Dec 2007 23:36:57 +0800</pubDate>
        <link>http://lovelace.javaeye.com/blog/148465</link>
        <guid>http://lovelace.javaeye.com/blog/148465</guid>
      </item>
      <item>
        <title>Ubuntu 6.10下调试DPKG</title>
        <author>lovelace</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lovelace.javaeye.com">lovelace</a>&nbsp;
          链接：<a href="http://lovelace.javaeye.com/blog/147132" style="color:red;">http://lovelace.javaeye.com/blog/147132</a>&nbsp;
          发表时间: 2007年12月09日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          这几天因为公司需要：研究debian中DPKG的实现。看了几天源代码头晕晕的，就想debug一下dpkg.因为我也是刚接触linux，绕了好多弯子才debug成功。<br />     1.首先下载dpk.g_1.13.25.tar.gz。刚开始为了追求最新的版本下了1.14的，结果一直报：XXselinux未定义这个错误，搞了半天才知道这个貌似现在只有fedora8才有，一个加强安全的机制，而且1.14是个unstable版本。<br />     2.tar -xvf dpk.g_1.13.25.tar.gz<br />      cd dpkg-1.13.25<br />      ./configure --prefix=/root/Desktop/test<br />      make<br />      make install<br />      由于我ubuntu的ISO不是DVD版的而且安装时貌似没有选择开发的，所以在make过程中有报错：c compiler cannot create executables<br />      用 apt-get install libc6-dev g++ gcc 解决<br />       还报错：po4a not found 用apt-get install po4a 解决<br />       还有个错：找不到curses.h <br />      用 apt-get install ncurses-base libruby1.8 libncurses5-dev解决<br />      如果嫌命令行麻烦也可以自己在synaptic下search输入那些包名 mark for installation->apply  直接帮你安装好<br />      在这过程中我范了两个白痴错误。我原先是把dpk.g_1.13.25.tar.gz 和test文件夹放在/tmp里面，结果重启下就没了<img src="/images/smiles/icon_cry.gif"/><br />      还有就是我linux是装在vmware里面的，不小心点了Snapshot进入系统，结果系统都恢复到刚装时了（我刚装完系统时take snapshot了下）<img src="/images/smiles/icon_cry.gif"/><br />     3.cd src<br />       ./dpkg -l<br />       这时会报错：不到/dpkg/status这个文件<br />        没事，到系统自带的DPKG /var/lib/dpkg/下将status、available这个两个文件拷到root/Desktop/test/var/dpkg 就ok了<br />        gdb dpkg...<br />       这样就可以在ubuntu下调试dpkg了<img src="/images/smiles/icon_biggrin.gif"/><br />       我也有试过在fedora下安装DPKG，configure make make isntall都过了，但是在运行dpkg时一直报错：在PATH中找不到update-rc.d 我试着把ubuntu下的update-rc.d拷到相应的PATH下，还是提示找不到，郁闷了很久，最后放弃装在fedora。
          <br/><br/>
          <span style="color:red;">
            <a href="http://lovelace.javaeye.com/blog/147132#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 09 Dec 2007 23:25:07 +0800</pubDate>
        <link>http://lovelace.javaeye.com/blog/147132</link>
        <guid>http://lovelace.javaeye.com/blog/147132</guid>
      </item>
      <item>
        <title>C++: error LNK2001</title>
        <author>lovelace</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lovelace.javaeye.com">lovelace</a>&nbsp;
          链接：<a href="http://lovelace.javaeye.com/blog/145442" style="color:red;">http://lovelace.javaeye.com/blog/145442</a>&nbsp;
          发表时间: 2007年12月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天同学碰到一个奇怪的问题，弄了半天知道问题出在哪，但不知道为什么。
<p>　　产生这个问题一般是以下原因：<br />
1，&nbsp;你用vc建了一个控制台程序，它的入口函数应该是main,&nbsp;而你使用了WinMain.<br />
<br />
2.&nbsp;&nbsp;你用vc打开了一个.c/.cpp&nbsp;文件，然后直接编译这个文件，这个文件中使用了WinMian而不是main作为入口函数。vc这时的默认设置是针对控制台程序的。<br />
<br />
&nbsp;&nbsp; &nbsp;解决方法<br />
1.进入project-&gt;setting-&gt;c/c++,&nbsp;在category中选择preprocessor,在processor&nbsp;definitions中删除_WINDOWS,&nbsp;添加_CONSOLE<br />
<br />
2.进入project-&gt;setting-&gt;Link,&nbsp;在Project&nbsp;options中将/subsystem:windows.改为/subsystem:console<br />
<br />
3.保存设置，Rebuild&nbsp;All.&nbsp;</p>
<p>但是我同学这些配置都正确。一个Windows console工程。3个文件:pqueue.h,pqueue.cpp,main.cpp。pqueue.cpp中#include</p>
<p>&quot;pqueue.h&quot;，main.cpp中#include &quot;pqueue.h&quot;&nbsp;。出现error LNK2001错误。原因是pqueue中用到模板，模板的声明跟定义都放在pqueue.h中，编译就过了。</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://lovelace.javaeye.com/blog/145442#comments" style="color:red;">已有 <strong>0</strong> 人发表留言，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 02 Dec 2007 15:48:41 +0800</pubDate>
        <link>http://lovelace.javaeye.com/blog/145442</link>
        <guid>http://lovelace.javaeye.com/blog/145442</guid>
      </item>
      <item>
        <title>vmware下ubuntu鼠标滚轮失效解决方法</title>
        <author>lovelace</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://lovelace.javaeye.com">lovelace</a>&nbsp;
          链接：<a href="http://lovelace.javaeye.com/blog/145439" style="color:red;">http://lovelace.javaeye.com/blog/145439</a>&nbsp;
          发表时间: 2007年12月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span class="postbody">sudo gedit /etc/X11/xorg.conf <br />
<br />
把 <br />
Option &quot;Protocol&quot; &quot;<span style="COLOR: red">ps/2</span>&quot; <br />
改成 <br />
Option &quot;Protocol&quot; &quot;<span style="COLOR: red">IMPS/2</span>&quot; <br />
重启。</span>
          <br/><br/>
          <span style="color:red;">
            <a href="http://lovelace.javaeye.com/blog/145439#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;">北京: 千橡集团暨校内网诚聘软件研发工程师</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, 02 Dec 2007 15:23:15 +0800</pubDate>
        <link>http://lovelace.javaeye.com/blog/145439</link>
        <guid>http://lovelace.javaeye.com/blog/145439</guid>
      </item>
  </channel>
</rss>