<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>专注技术 享受生活</title>
    <description>爱好IT，毅然放弃金融从事IT</description>
    <link>http://allenwei.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>关于如何重写hashCode的方法</title>
        <author>allenwei</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenwei.javaeye.com">allenwei</a>&nbsp;
          链接：<a href="http://allenwei.javaeye.com/blog/228867" style="color:red;">http://allenwei.javaeye.com/blog/228867</a>&nbsp;
          发表时间: 2008年08月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>为什么要重写hashCode方法?</p>
<p>&nbsp;</p>
<p>我们应该先了解java判断两个对象是否相等的规则。</p>
<p>&nbsp;</p>
<p>在java的集合中，判断两个对象是否相等的规则是：
</p>
<p><br />
首先，判断两个对象的hashCode是否相等</p>
<p>如果不相等，认为两个对象也不相等<br />
   如果相等，则判断两个对象用equals运算是否相等
<br />
   如果不相等，认为两个对象也不相等
<br />
   如果相等，认为两个对象相等</p>
<p>&nbsp;</p>
<p>我们在equals方法中需要向下转型，效率很低，所以先判断hashCode方法可以提高效率</p>
<p>&nbsp;</p>
<p>如何重写hashCode方法呢？</p>
<p>&nbsp;</p>
<p>你可以写</p>
<pre name="code" class="java">public int hashCode(){
  return 42;
}</pre>
<p>&nbsp;这是一种符合规则的写法，保证了两个equal 的object 拥有相同的hashCode</p>
<p>&nbsp;&nbsp;&nbsp; 但这种方法显然是不可取的</p>
<p>&nbsp;</p>
<p>比较通用的做法是</p>
<p>返回一个result </p>
<p>&nbsp;</p>
<pre name="code" class="java">public int hashCode() {
  int result = 17;  //任意素数
 result = 31*result +c1; //c1,c2是什么看下文解释
  result = 31*result +c2;
  return result;
}</pre>
<p>&nbsp;其中c1，c2是我们生成的你要计算在内的字段的代码，生成规则如下：</p>
<p>如果字段是boolean 计算为(f?1:0);</p>
<p>如果字段是byte,char,short,int则计算为 (int)f;</p>
<p>如果字段是long 计算为 (int)(f^(f&gt;&gt;32));</p>
<p>如果字段是float 计算为 Float.floatToLongBits(f);</p>
<p>如果字段是一个引用对象，那么直接调用对象的hashCode方法，如果需要判空，可以加上如果为空就返回0;<br />
如果字段是一个数组则需要遍历所有元素，按上面几种方法计算；</p>
<p>&nbsp;</p>
<p>当你写完后hashCode方法后问问自己</p>
<p>1、是否两个equal的实例，拥有相同的jhashCode</p>
<p>2、两个不同的实例，是否拥有相同的hashCode</p>
<p>写一个JUnit Test 测试一下</p>
          <br/>
          <span style="color:red;">
            <a href="http://allenwei.javaeye.com/blog/228867#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, 17 Aug 2008 10:47:32 +0800</pubDate>
        <link>http://allenwei.javaeye.com/blog/228867</link>
        <guid>http://allenwei.javaeye.com/blog/228867</guid>
      </item>
      <item>
        <title>在Junit中实现类似OpenSessionInViewFilter保持session的功能</title>
        <author>allenwei</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenwei.javaeye.com">allenwei</a>&nbsp;
          链接：<a href="http://allenwei.javaeye.com/blog/227920" style="color:red;">http://allenwei.javaeye.com/blog/227920</a>&nbsp;
          发表时间: 2008年08月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <pre name="code" class="java">private SessionFactory sessionFactory;

      //重写setUp方法
	protected void setUp() throws Exception {
		super.setUp();
		sessionFactory = (SessionFactory) SpringContext.getInstance().getBean(
				&quot;sessionFactory&quot;);//SpringContext是自己创建spring工具类

		Session s = sessionFactory.openSession();
		TransactionSynchronizationManager.bindResource(sessionFactory,
				new SessionHolder(s));

	}

	protected void tearDown() throws Exception {
		super.tearDown();
		SessionHolder holder = (SessionHolder) TransactionSynchronizationManager
				.getResource(sessionFactory);
		Session s = holder.getSession();
		try {
			s.flush();
		} catch (Throwable e) {
			e.printStackTrace();
		}

		TransactionSynchronizationManager.unbindResource(sessionFactory);
		SessionFactoryUtils.closeSession(s);
	}</pre>
<p>&nbsp; SpringContext.class</p>
<pre name="code" class="java">public class SpringContext {

	private static SpringContext m_instance;

	private static String[] contextFiles = new String[] { &quot;applicationContext.xml&quot; };

	private ApplicationContext ctx;

	public SpringContext() {
		ctx = new ClassPathXmlApplicationContext(contextFiles);
	}

	public SpringContext(String[] setting) {
		ctx = new ClassPathXmlApplicationContext(setting);
	}

	public synchronized static SpringContext getInstance() {
		if (m_instance == null) {
			m_instance = new SpringContext(contextFiles);
		}
		return m_instance;
	}

	public Object getBean(String beanId) {
		Object o = ctx.getBean(beanId);
		if (o instanceof TransactionProxyFactoryBean) {
			TransactionProxyFactoryBean factoryBean = (TransactionProxyFactoryBean) o;
			o = factoryBean.getObject();
		}
		return o;
	}

}</pre>
&nbsp;
          <br/>
          <span style="color:red;">
            <a href="http://allenwei.javaeye.com/blog/227920#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>Thu, 14 Aug 2008 10:22:18 +0800</pubDate>
        <link>http://allenwei.javaeye.com/blog/227920</link>
        <guid>http://allenwei.javaeye.com/blog/227920</guid>
      </item>
      <item>
        <title>用TestSuite 在一个TestCase中的每一个方法执行前调用另一个TestCase的所有方法</title>
        <author>allenwei</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenwei.javaeye.com">allenwei</a>&nbsp;
          链接：<a href="http://allenwei.javaeye.com/blog/227912" style="color:red;">http://allenwei.javaeye.com/blog/227912</a>&nbsp;
          发表时间: 2008年08月14日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>为什么会有这样的需求呢？</p>
<p>在测试hibernate的级联配置是否正确的时候，需要两个TestCase</p>
<p>一个测试类TestAdd,测试所有add方法（含级联保存），另一个测试类TestDelete测试delete方法</p>
<p>&nbsp;</p>
<p>在TestDelete的每一个delete方法前都需要现把所有数据添加进去，就需要调用TestAdd所有add方法</p>
<p>&nbsp;</p>
<p>以前的做法是把add的过程全部copy到TestAdd的setUp方法中，但是这样做很繁琐，而且丑陋</p>
<p>&nbsp;</p>
<p>说了那么多废话，贴出代码</p>
<p>&nbsp;</p>
<p>在TestDelete中重写其setUp方法，加入以下代码</p>
<pre name="code" class="java">@Override
	protected void setUp() throws Exception {
		TestSuite testSuite = new TestSuite();
		testSuite.addTestSuite(TestAdd.class);//加入需要执行的TestCase
		testSuite.run(createResult());//createResult()为Junit TestCase类自有方法
		super.setUp();
	}
</pre>
&nbsp;
          <br/>
          <span style="color:red;">
            <a href="http://allenwei.javaeye.com/blog/227912#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, 14 Aug 2008 10:15:12 +0800</pubDate>
        <link>http://allenwei.javaeye.com/blog/227912</link>
        <guid>http://allenwei.javaeye.com/blog/227912</guid>
      </item>
      <item>
        <title>Hibernate annotation Lazy的默认值的不同</title>
        <author>allenwei</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenwei.javaeye.com">allenwei</a>&nbsp;
          链接：<a href="http://allenwei.javaeye.com/blog/227853" style="color:red;">http://allenwei.javaeye.com/blog/227853</a>&nbsp;
          发表时间: 2008年08月13日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>经过测试发现Hibernate annotation中@ManyToOne,@OneToMany,@OneToOne中lazy的默认值是不同的</p>
<p>&nbsp;</p>
<p><span style="color: #993300;">@OneToMany 默认Lazy为<span style="color: #ff0000;">true</span>
</span>
</p>
<p><span style="color: #993300;"><br />
</span>
</p>
<p><span style="color: #993300;">@ManyToOne,@OneToOne 默认lazy为<span style="color: #ff0000;">false</span>
</span>
</p>
<p>&nbsp;</p>
<p>在设置@ManyToOne的时候我们一般都会设置Lazy=true</p>
<p>&nbsp;</p>
<p>一般不会在@ManyToOne,@OneToOne考虑这个问题</p>
<p>&nbsp;</p>
<p>但实际hibernate进行load是时候是把一端也load出来的</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>希望大家以后写得时候注意</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://allenwei.javaeye.com/blog/227853#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, 13 Aug 2008 23:42:40 +0800</pubDate>
        <link>http://allenwei.javaeye.com/blog/227853</link>
        <guid>http://allenwei.javaeye.com/blog/227853</guid>
      </item>
      <item>
        <title>使用hibernate annotation 为非空列加上默认值</title>
        <author>allenwei</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenwei.javaeye.com">allenwei</a>&nbsp;
          链接：<a href="http://allenwei.javaeye.com/blog/220832" style="color:red;">http://allenwei.javaeye.com/blog/220832</a>&nbsp;
          发表时间: 2008年07月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>在网上查了很多资料都没找到如何为非空列加上默认值</p>
<p>以前的做法是给字段一个初始值，加上dynamic-insert属性</p>
<p>换了annotation了以后没有找到如何设置dynamic-insert属性</p>
<p>&nbsp;</p>
<p>但是，最后经过测试发现hibernate annotation 根本不用设置dynamic-insert就可以实现给列赋予默认值</p>
<p>给字段赋初值和在构造方法中定义都可以的</p>
<p>&nbsp;</p>
<p>没看过hibernate源码，不知道其中缘由，请高手指点</p>
          <br/>
          <span style="color:red;">
            <a href="http://allenwei.javaeye.com/blog/220832#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, 28 Jul 2008 23:24:03 +0800</pubDate>
        <link>http://allenwei.javaeye.com/blog/220832</link>
        <guid>http://allenwei.javaeye.com/blog/220832</guid>
      </item>
      <item>
        <title>Spring集成FreeMarker中文出现乱码的解决办法（非contentType）</title>
        <author>allenwei</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenwei.javaeye.com">allenwei</a>&nbsp;
          链接：<a href="http://allenwei.javaeye.com/blog/220089" style="color:red;">http://allenwei.javaeye.com/blog/220089</a>&nbsp;
          发表时间: 2008年07月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>项目中用到freemarker和spring集成后中文出现乱码</p>
<p>上网搜大部分是说在viewResolver中加入&lt;property name=&quot;contentType&quot; value=&quot;text/html;charset=gb2312&quot;&gt;&lt;/property&gt;</p>
<p>&nbsp;</p>
<p>但我发现对于我的项目不起做用</p>
<p>&nbsp;</p>
<p>又goole一下 剔除掉上面的搜索结果，发现还有一种解决方案</p>
<p>&lt;bean id=&quot;freemarkerConfigurer&quot;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; class=&quot;org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer&quot;&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;property name=&quot;templateLoaderPath&quot;&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;value&gt;/WEB-INF/freemarker/&lt;/value&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;property name=&quot;freemarkerSettings&quot;&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;props&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;prop key=&quot;template_update_delay&quot;&gt;1&lt;/prop&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <span style="color: #ff0000;">&lt;prop key=&quot;defaultEncoding&quot;&gt;UTF-8&lt;/prop&gt;</span>
&lt;!-- 乱码 重点在这里 也可以改成gb2312--&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/props&gt;<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/property&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/bean&gt;</p>
<p>&nbsp;</p>
<p>这下乱码问题解决了</p>
<p>&nbsp;</p>
<p>ps：现在信息都是copy&amp;paste，造成信息泛滥，搜到的信息大部分都一模一样，可悲啊！！</p>
          <br/>
          <span style="color:red;">
            <a href="http://allenwei.javaeye.com/blog/220089#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, 27 Jul 2008 13:32:24 +0800</pubDate>
        <link>http://allenwei.javaeye.com/blog/220089</link>
        <guid>http://allenwei.javaeye.com/blog/220089</guid>
      </item>
      <item>
        <title>某张表hibernate没有自动创建的原因</title>
        <author>allenwei</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenwei.javaeye.com">allenwei</a>&nbsp;
          链接：<a href="http://allenwei.javaeye.com/blog/220088" style="color:red;">http://allenwei.javaeye.com/blog/220088</a>&nbsp;
          发表时间: 2008年07月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>今天写模型让hibernate自动创建表的时候发现其中有一张表没有创建</p>
<p>百思不得其解，最后在网上查到了原因</p>
<p>&nbsp;</p>
<p>-----绝对不要用sql 的关键字作为模型中字段的名字</p>
<p>&nbsp;</p>
<p>比如我就把oder作为成员变量的名写进去了，导致这张表没有创建成功，还没有报异常</p>
          <br/>
          <span style="color:red;">
            <a href="http://allenwei.javaeye.com/blog/220088#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, 27 Jul 2008 13:24:06 +0800</pubDate>
        <link>http://allenwei.javaeye.com/blog/220088</link>
        <guid>http://allenwei.javaeye.com/blog/220088</guid>
      </item>
      <item>
        <title>ubuntu 8.04 学习笔记 (五)－java环境配置</title>
        <author>allenwei</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenwei.javaeye.com">allenwei</a>&nbsp;
          链接：<a href="http://allenwei.javaeye.com/blog/190298" style="color:red;">http://allenwei.javaeye.com/blog/190298</a>&nbsp;
          发表时间: 2008年05月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>今天开始把工作迁移到ubuntu<br />
<br />
需要做的有安装jdk，tomcat,mysql，安装eclipse和netbeans(6.1其实还挺好用的)<br />
<br />
1、首先安装jdk<br />
<br />
&nbsp;&nbsp;&nbsp;
       java6  在命令行输入  apt-get install sun-java6-jre sun-java6-jdk 可以自行选择是否安装jre<br />
<br />
&nbsp;&nbsp;&nbsp;
      java5  在命令行输入  apt-get install sun-java5-jre sun-java5-jdk<br />
<br />
&nbsp;&nbsp;&nbsp;
      多个jdk可以同时安装，而且可以随时更改当前的默认jdk<br />
<br />
&nbsp;&nbsp;&nbsp;
      在命令行输入 sudo update-alternatives --config javac 来更改当前默认jdk<br />
<br />
&nbsp;&nbsp;
       sun-java5-doc和sun-java6-doc是jdk的文档的安装程序，但是不包括jdk文档。<br />
<br />
&nbsp;&nbsp;
        在安装jdk文档前，必须到sun的网站下载jdk文档。你下载的文档可以是任意语言，包括中文例如你安装jdk5的文        档，应该在安装前把下载的文档存放到/tmp/jdk-1_5_0-doc.zip；再例如你安装jdk6的文档，应该在安装前将下载的文档存放到/tmp/jdk-6-doc.zip。当然你也可以不在安装前做这件事情，因为安装的过程会提示你这么做，请注意看终端窗口的提示。</p>
<p><br />
&nbsp;&nbsp;&nbsp;
         写入环境变量 gedit /etc/environment<br />
&nbsp;&nbsp;&nbsp;
        在编辑器中加入 JAVA_HOME=/usr/lib/jvm/java-6-sun</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; <span class="postbody">classpath不必配置，错误的classpath会导致许多问题。jvm会知道自带的classpath。对于自定义的classpath，可以在运行、编译时加上-classpath参数来指定。至于环境变量，当你写的程序需要时再指定也不迟</span>
</p>
<p>&nbsp; &nbsp;&nbsp; <strong><span style="color: #ff0000; font-size: small;">要使配置生效必须在命令行输入 <span class="postbody">. /etc/environment</span>
</span>
</strong>
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 如果需要<span class="postbody">还要修改系统虚拟机的优先级顺序调整：
sudo gedit /etc/jvm
</span>
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; jdk安装完毕，在终端输入 java －version 查看是否安装成功（或直接输入java）</p>
<p>2、安装</p>
<p>&nbsp;&nbsp;&nbsp; 从tomcat官方网站下载绿色的即可，解压后运行bin目录下的startup.sh </p>
<p>&nbsp;&nbsp;&nbsp; 在浏览器输入http://localhost:8080 查看tomcat是否启动</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 要关闭tomcat只要运行bin目录下shutdown.sh即可</p>
<p>&nbsp;&nbsp;&nbsp; 如果需要tomcat开机启动可以参照一下方法：</p>
<p>&nbsp;&nbsp;&nbsp; 修改<span class="postbody">/etc/rc.local</span>
<span class="postbody"> 文件 gedit /etc/rc.local 加入</span>
</p>
<p>&nbsp;&nbsp;&nbsp; <span class="postbody">JAVA_HOME=/usr/lib/jvm/java-6-sun
<br />
&nbsp;&nbsp;&nbsp;
CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib
<br />
&nbsp;&nbsp;&nbsp;
JRE_HOME=/usr/lib/jvm/java-6-sun/jre
<br />
&nbsp;&nbsp;&nbsp;
export JRE_HOME
<br />
&nbsp;&nbsp;&nbsp;
export CLASSPATH
<br />
&nbsp;&nbsp;&nbsp;
export JAVA_HOME 
<br />
&nbsp;&nbsp;&nbsp;
/home/allenwei/Tomcat/apache-tomcat-6.0.14/bin/startup.sh //你放tomcat的目录</span>
</p>
<p>&nbsp;&nbsp; 修改/etc/profile 输入 <span class="postbody">gedit /etc/profile，增加以下行： 
<br />
&nbsp;&nbsp;
JAVA_HOME=/usr/lib/jvm/java-6-sun
<br />
&nbsp;&nbsp;
CATALINA_HOME=/home/test/Tomcat/apache-tomcat-6.0.14
<br />
&nbsp;&nbsp;
export JAVA_HOME CATALINA_HOME 
</span>
</p>
<p>&nbsp;&nbsp; 重启系统后tomcat就可以随开机启动了</p>
<p>3、安装mysql</p>
<p>&nbsp; 首先 sudo apt-get install mysql-server mysql-client</p>
<p>&nbsp;&nbsp; 安装完成后输入 sudo /etc/init.d/mysql start 启动mysql</p>
<p>&nbsp;&nbsp; 此时需要修改root的密码</p>
<p>&nbsp;&nbsp; 查看默认密码输入 sudo gedit /etc/mysql/debian.cnf 在［client］段可以看到用户名密码</p>
<p>&nbsp;&nbsp; 输入&nbsp; mysql -uroot -p 登录，提示输入密码，输入在debian.cnf文件中的密码</p>
<p>&nbsp;&nbsp; 修改密码 输入 GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY &quot;你要修改的密码&quot;</p>
<p>&nbsp;&nbsp; 此时mysql 的安装完成</p>
<p>&nbsp;&nbsp; 您也可以安装mysql 的图形化管理工具&nbsp; sudo apt-get mysql-admin mysql-query-browser</p>
<p>4、eclipse 和 netbeans 的安装就很简单了，从官方网站上下载 deb包，安装即可</p>
          <br/>
          <span style="color:red;">
            <a href="http://allenwei.javaeye.com/blog/190298#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, 06 May 2008 16:56:28 +0800</pubDate>
        <link>http://allenwei.javaeye.com/blog/190298</link>
        <guid>http://allenwei.javaeye.com/blog/190298</guid>
      </item>
      <item>
        <title>ubuntu 8.04 学习笔记 (四)－wine 在linux下安装windows程序</title>
        <author>allenwei</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenwei.javaeye.com">allenwei</a>&nbsp;
          链接：<a href="http://allenwei.javaeye.com/blog/189647" style="color:red;">http://allenwei.javaeye.com/blog/189647</a>&nbsp;
          发表时间: 2008年05月05日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>今天有人给我留言说我水平低，这个我承认，我是一个非计算机专业还在校学习的学生，只凭着对计算机的热情一直在学习，我很谢谢他直言不讳，同时我有我的坚持，而就凭着这种坚持，我已经在上地找到了java web开发的工作，我会努力工作，现在我是菜鸟，今后绝对不是！！</p>
<p>我还是会继续写我的学习笔记，将我学到的和大家分享，大家有什么问题可以一起讨论一起进步，同时谢谢大家的支持</p>
<p>今天要讲的是在ubuntu下安装wine，用wine来安装使用windows程序</p>
<p>曾经看过一篇文章，意思是不能将linux和windows互相比较，各有各的特长，但是在实际使用中确实感觉到了linux软件的支持不够</p>
<p>比如我最近要做论文要用cajviewer，ubuntu在并没有替代的软件</p>
<p>比如，迅雷，虽然对于他盗链接的问题，骂声不断，但我还确实没发现下emule资源比迅雷快的软件，谁让人家客户资源大呢？</p>
<p>言归正传，现在说说wine的安装和配置</p>
<p>源里的wine之前是 0.9.59版现在已经更新到0.9.61了</p>
<p>1、在命令行输入&nbsp; sudo apt-get install wine 您也可以从wine<a href="http://www.winehq.com">官方网站</a>
下载源码自己编译，这样会减少因为依赖产生的问题</p>
<p>2、安装后需要wine需要配置 命令行输入 winecfg </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 配置的时候可能产生错误，原因是缺少某些包</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 试试在命令行输入 sudo apt-get install build-essential&nbsp; 和</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sudo apt-get install gcc libc6-dev fakeroot libglib1.2-dev
libglib2.0-dev libltdl3-dev libmad0-dev libmng-dev libodbcinstq1c2
libogg-dev libpng12-dev libqt3-headers libqt3-mt-dev libvorbis-dev
libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers
libxmuu-dev libxpm-dev libxtrap-dev libxtst-dev libxv-dev
libxxf86dga-dev qt3-dev-tools render-dev unixodbc-dev x-dev
x11proto-record-dev x11proto-trap-dev x11proto-video-dev
x11proto-xf86dga-dev xlibs-dev fontforge flex bison libxext6</p>
<p>3、设置中文问题</p>
<p>&nbsp;&nbsp; 先把字体simsun.ttc（在你的windows的安装目录里的font文件夹里找，找不到可以从网上下到） 复制到 /home/你的用户名/.wine/drive_c/windows/fonts 文件夹中，<span style="color: #ff0000; font-size: small;">要显示隐藏文件夹按Ctrl+H</span>
</p>
<p>&nbsp; 修改注册表，在命令行输入 gedit&nbsp; ~/.wine/system.reg</p>
<p>&nbsp; 找到&ldquo;[System\\CurrentControlSet\\Hardware Profiles\\Current\\Software\\Fonts]&rdquo;，将其中的&ldquo;&ldquo;LogPixels&rdquo;=dword:00000060&rdquo;改成 &ldquo;&ldquo;LogPixels&rdquo;=dword:00000070&ldquo;。<br />
<br />
再找到&rdquo;[Software\\Microsoft\\Windows NT\\CurrentVersion\\FontSubstitutes] xxxx&ldquo;项，将其中的&rdquo;MS Shell Dlg&ldquo;相关的两项修改成如下内容（即更换字体为宋体）：<br />
<br />
&ldquo;MS Shell Dlg&rdquo;=&rdquo;SimSun&rdquo;<br />
&ldquo;MS Shell Dlg 2&Prime;=&rdquo;SimSun&rdquo;<br />
<br />
然后：gedit ~/.wine/drive_c/windows/win.ini</p>
<p>在其中加上（如果没有），有的话修改成如下</p>
<p> [Desktop]<br />
menufontsize=13<br />
messagefontsize=13<br />
statusfontsize=13<br />
IconTitleSize=13</p>
<p>现在中文显示应该正常了</p>
<p>4、使用方法：直接运行.exe安装文件，wine默认已将关联设好，如果没有请自行设定</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 安装好后可以在应用程序--&gt; wine菜单下找到，或者可以在/home/你的用户名/.wine/drive_c/Program Files 放入软件绿色版</p>
<p>5、安装.msi格式文件 wine start 文件名.msi</p>
<p>6、卸载已安装软件可以在命令行输入 <span class="postbody">uninstaller 进入卸载的图形界面</span>
</p>
<p>7、有些程序运行不了有的时候是因为缺少dll</p>
<p><span class="postbody">&nbsp;到真实windows下的system32文件夹（C:\WINDOWS\systenm32）里复制&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
mfc42.dll,msvcp60.dll,riched20.dll,riched32.dll这几个文</span>
<span class="postbody">件到/home/你的用户名/.wine
/drive_c/windows/system32文件里，需要覆盖时确定。其他dll文件不要随便覆盖，要做备份。
</span>
</p>
<p><span style="font-size: medium;">在wine下安装迅雷已经可以不用ies4linux ，直接安装就可以了，如果碰到问题可以在wine设置中改为模拟win98</span>
</p>
<p>不过我这的迅雷安装好后一下东西就崩溃了，现在还不知道怎么解决，但网上有成功的例子</p>
<p>&nbsp;</p>
          <br/>
          <span style="color:red;">
            <a href="http://allenwei.javaeye.com/blog/189647#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 11:42:09 +0800</pubDate>
        <link>http://allenwei.javaeye.com/blog/189647</link>
        <guid>http://allenwei.javaeye.com/blog/189647</guid>
      </item>
      <item>
        <title>ubuntu 8.04 学习笔记 (三)－分区的调整</title>
        <author>allenwei</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenwei.javaeye.com">allenwei</a>&nbsp;
          链接：<a href="http://allenwei.javaeye.com/blog/189143" style="color:red;">http://allenwei.javaeye.com/blog/189143</a>&nbsp;
          发表时间: 2008年05月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>在学习笔记一里介绍了可以先之分一个/ 根分区，装完系统后再重新分区，把/home和/usr从分区里分离出来</p>
<p>我是直接就把装windows的分区直接转换为ext3了，打算把工作全部转移到ubuntu上来</p>
<p><br />
现在介绍具体操作：</p>
<p>1、分出你需要的分区，格式为ext3</p>
<p>2、挂载你分好的分区（在学习笔记（二）中有介绍）例如：mount /dev/sda1 /media/home </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 没有.media/home 需要用命令创建 mkdir /media/home</p>
<p>3、把现在系统home文件夹下的文件拷到新挂载的分区中 例如：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span class="a14c" id="zoom">cp -R /home/* /media/home </span>
</p>
<p>4、在终端输入 ls -l /dev/disk/by-uuid 查看所有分区的uuid</p>
<p>5、修改fstab 文件sudo gedit /etc/fstab 实现自动挂载</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据需要加入的分区的uuid添加以下内容</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # /dev/sda5<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UUID=06563a7a-4d01-4c23-a858-e4edec24874e /home&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ext3&nbsp;&nbsp;&nbsp; relatime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2<br />
6、保存fstab文件后，重新起动即可</p>
<p>&nbsp;</p>
<p>同理你可以分出/usr /var /temp 等分区，方便备份，重装系统</p>
<p>以下附上fstab文件格式，文章太长<a href="http://www.5dlinux.com/article/1/2007/linux_10628.html" target="_blank">这里是文章链接</a>
</p>
<p><strong><span style="color: #ff0000; font-size: small;">注意</span>
</strong>
:有可能您在设置中会遇到错误，倒是ubuntu启动不起来，如果你使用了我在学习笔记一里介绍的硬盘安装的办法的话</p>
<p>可以启动到安全模式下，复原fstab文件</p>
<p>进入到命令行后 输入 ed /etc/fstab </p>
<p>进入到文本编辑模式，你可以输入行号，查看当前行的内容</p>
<p>要删除当前行输入 行号加 d 也可以输入连续行　例如　15,18 d　就可以删除15－18行</p>
<p>修改完成要输入 w 回车 进行保存（切记要保存后再退出）我就在这里犯了不少错误 退出文本编辑模式 输入 q 回车</p>
<p>以下是我在网上找到的 ed 命令的用法，供大家参看</p>
<p>&nbsp;</p>
<p>顾名思义，行编辑器 <code>ed</code>
 对输入文件的行执行编辑。它将整个文件读入自己的缓冲区，对该副本执行指定的操作，并可选地将缓冲区写到磁盘。您可以在编辑操作中指定任何数量的行，并且这些操作可以在一个序列中进行组合和指定。这些事实使得 <code>ed</code>
 成为在脚本中使用的理想选择。以如下格式指定操作：</p>
<table cellspacing="0" border="0" width="572" cellpadding="0">
<tbody>
<tr>
<td class="code-outline">
<pre class="displaycode">[address]command [text]
</pre>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>address 指定要处理的一行或多行（缺省为当前行），并且可以通过多种方式进行指定。单字符的 command 是要对指定行执行的操作。对于脚本中的特别单命令行程序，可以使用 <code>echo</code>
 将一组命令和文本管道传输给 <code>ed</code>
，从而以非交互式的方式使用它。</p>
<table cellspacing="0" border="0" width="572" cellpadding="0">
<tbody>
<tr>
<td class="code-outline">
<pre class="displaycode">( echo 'OPERATION'; echo 'OPERATION';
... echo 'wq' ) | ed -s FILENAME
</pre>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>如果在操作中输入文本，应该回显一个句点 (<code>.</code>
) 来指示输入结束。最后的 <code>wq</code>
 写入文件并退出。<code>-s</code>
 选项使 <code>ed</code>
 静默地操作，并禁止所有正常输出。</p>
<p>幸运的是，<code>ed</code>
 的基本寻址方法和命令是相当标准化的。<a href="http://www.ibm.com/developerworks/cn/aix/library/au-textedit.html#table2">表 2</a>
 描述了主要的寻址形式。<a href="http://www.ibm.com/developerworks/cn/aix/library/au-textedit.html#table3">表 3</a>
 给出了命令。</p>
<p>
<br />
<a name="table2"><strong>表 2. 在 ed 中对行寻址</strong>
</a>
</p>
<table class="data-table-2" cellspacing="0" border="0" summary="Addressing lines in ed" width="572" cellpadding="0">
<tbody>
<tr>
<th>选项</th>
<th>描述</th>

</tr>
<tr>
<td class="tb-row"><code>.</code>
</td>
<td>此选项对当前行寻址（缺省地址）。</td>
</tr>
<tr>
<td class="tb-row"><code><em>number</em>
</code>
</td>
<td>此选项对第 <em>number</em>
 行寻址。可以按逗号分隔的范围 (<em>first</em>
,<em>last</em>
) 对行寻址。0 代表缓冲区的开头（第一行之前）。</td>
</tr>
<tr>
<td class="tb-row"><code>-<em>number</em>
</code>
</td>
<td>此选项对当前行之前的第 <em>number</em>
 行寻址。如果没有 <em>number</em>
，则减号对紧跟在当前行之前的行寻址。</td>
</tr>
<tr>
<td class="tb-row"><code>+<em>number</em>
</code>
</td>
<td>此选项对当前行之后的第 <em>number</em>
 行寻址。如果没有 <em>number</em>
，则加号对紧跟在当前行之后的行寻址。</td>
</tr>
<tr>
<td class="tb-row"><code>$</code>
</td>
<td>此选项对最后一行寻址。</td>
</tr>
<tr>
<td class="tb-row"><code>,</code>
</td>
<td>此选项对第一至最后一行寻址，包括第一行和最后一行（与 <code>1,$</code>
 相同）。</td>
</tr>
<tr>
<td class="tb-row"><code>;</code>
</td>
<td>此选项对当前行至最后一行寻址。</td>
</tr>
<tr>
<td class="tb-row"><code>/<em>pattern</em>
/</code>
</td>
<td>此选项对下一个包含与 <em>pattern</em>
 匹配的文本的行寻址。</td>
</tr>
<tr>
<td class="tb-row"><code>?<em>pattern</em>
?</code>
</td>
<td>此选项对上一个包含与 <em>pattern</em>
 匹配的文本的行寻址。</td>
</tr>
</tbody>
</table>
<p>
<br />
<a name="table3"><strong>表 3. 主要的 ed 命令</strong>
</a>
</p>
<table class="data-table-2" cellspacing="0" border="0" summary="Major ed commands" width="572" cellpadding="0">
<tbody>
<tr>
<th>命令</th>
<th>描述</th>

</tr>
<tr>
<td class="tb-row"><code>a</code>
</td>
<td>此命令在指定的地址之后追加文本。</td>
</tr>
<tr>
<td class="tb-row"><code>c</code>
</td>
<td>此命令将指定的地址更改为给定的文本。</td>
</tr>
<tr>
<td class="tb-row"><code>d</code>
</td>
<td>此命令删除指定地址处的行。</td>
</tr>
<tr>
<td class="tb-row"><code>i</code>
</td>
<td>此命令在指定的地址之前插入文本。</td>
</tr>
<tr>
<td class="tb-row"><code>q</code>
</td>
<td>此命令在将缓冲区保存到磁盘后终止程序并退出。</td>
</tr>
<tr>
<td class="tb-row"><code>r <em>file</em>
</code>
</td>
<td>此命令读取 <em>filespec</em>
 的内容并将其插入指定的地址之后。</td>
</tr>
<tr>
<td class="tb-row"><code>s/<em>pattern</em>
/<em>replacement</em>
/</code>
</td>
<td>此命令将匹配 <em>pattern</em>
 的文本替换为指定地址中的 <em>replacement</em>
 文本。</td>
</tr>
<tr>
<td class="tb-row"><code>w <em>file</em>
</code>
</td>
<td>
<p>此命令将指定的地址写到 <em>file</em>
。如果没有 address，则此命令缺省使用整个缓冲区。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
</td>
</tr>
</tbody>
</table>
          <br/>
          <span style="color:red;">
            <a href="http://allenwei.javaeye.com/blog/189143#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 02:19:56 +0800</pubDate>
        <link>http://allenwei.javaeye.com/blog/189143</link>
        <guid>http://allenwei.javaeye.com/blog/189143</guid>
      </item>
      <item>
        <title>ubuntu 8.04 学习笔记 (二)－关于挂载</title>
        <author>allenwei</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenwei.javaeye.com">allenwei</a>&nbsp;
          链接：<a href="http://allenwei.javaeye.com/blog/189006" style="color:red;">http://allenwei.javaeye.com/blog/189006</a>&nbsp;
          发表时间: 2008年05月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>ubuntu已经默认安装了ntfs-3g 支持读写ntfs 格式分区，不过建议重要数据储存在ext3格式分区上</p>
<p>毕竟linux比windows安全，而且ntfs会产生更多磁盘碎片</p>
<p>&nbsp;</p>
<p>&nbsp;先用fdisk -l 命令查看分区 或用 添加／删除 分区编辑器（安装后在系统－系统管理下看到）查看分区</p>
<p> 挂载ntfs分区：<br />
 假设/dev/hda1是Windows分区(NTFS)的位置，而要挂载的目录是：/media/windows ：<br />
 <br />
 sudo mkdir /media/windows<br />
 sudo mount /dev/hda1 /media/windows/ -t force</p>
<p>第一行命令为了在media目录下建立一个类似快捷方式的文件</p>
<p>第二行是将硬盘分区挂载到media/windows下<br />
 <br />
 要卸载Windows分区<br />
 <br />
 sudo umount /media/windows/<br />
 <br />
 挂载优盘命令如下：<br />
 并且能够正确显示中文：<br />
 sudo mkdir /media/U<br />
 sudo mount /dev/sda1 /media/U/ -t vfat -o<br />
 <br />
 以下资料是从网上搜集的</p>
<p><br />
 mount命令详解<br />
 <br />
 功能：加载指定的文件系统。<br />
 语法：mount [-afFhnrvVw] [-L&lt;标签&gt;] [-o&lt;选项&gt;] [-t&lt;文件系统类型&gt;] [设备名] [加载点]<br />
 用法说明：mount可将指定设备中指定的文件系统加载到Linux目录下（也就是装载点）。可将经常使用的设备写入文件<br />
 /etc/fastab,以使系统在每次启动时自动加载。mount加载设备的信息记录在/etc/mtab文件中。使用umount命令卸载设备时，记录将被清除。<br />
 常用参数和选项：<br />
 -a 加载文件/etc/fstab中设置的所有设备。<br />
 -f 不实际加载设备。可与-v等参数同时使用以查看mount的执行过程。<br />
 -F 需与-a参数同时使用。所有在/etc/fstab中设置的设备会被同时加载，可加快执行速度。<br />
 -h 显示在线帮助信息。<br />
 -L&lt;标签&gt; 加载文件系统标签为&lt;标签&gt;的设备。<br />
 -n 不将加载信息记录在/etc/mtab文件中。<br />
 -o&lt;选项&gt; 指定加载文件系统时的选项。有些选项也可在/etc/fstab中使用。这些选项包括：<br />
 async 以非同步的方式执行文件系统的输入输出动作。<br />
 atime 每次存取都更新inode的存取时间，默认设置，取消选项为noatime。<br />
 auto 必须在/etc/fstab文件中指定此选项。执行-a参数时，会加载设置为auto的设备，取消选取为noauto。<br />
 defaults 使用默认的选项。默认选项为rw、suid、dev、exec、anto nouser与async。<br />
 dev 可读文件系统上的字符或块设备，取消选项为nodev。<br />
 exec 可执行二进制文件，取消选项为noexec。<br />
 noatime 每次存取时不更新inode的存取时间。<br />
 noauto 无法使用-a参数来加载。<br />
 nodev 不读文件系统上的字符或块设备。<br />
 noexec 无法执行二进制文件。<br />
 nosuid 关闭set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位。<br />
 nouser 使一位用户无法执行加载操作，默认设置。<br />
 remount 重新加载设备。通常用于改变设备的设置状态。<br />
 ro 以只读模式加载。<br />
 rw 以可读写模式加载。<br />
 suid 启动set-user-identifier(设置用户ID)与set-group-identifer(设置组ID)设置位，取消选项为nosuid。<br />
 sync 以同步方式执行文件系统的输入输出动作。<br />
 user 可以让一般用户加载设备。<br />
 <br />
 -r 以只读方式加载设备。<br />
 -t&lt;文件系统类型&gt; 指定设备的文件系统类型。常用的选项说明有：<br />
 minix Linux最早使用的文件系统。<br />
 ext2 Linux目前的常用文件系统。<br />
 msdos MS-DOS 的 FAT。<br />
 vfat Win85/98 的 VFAT。<br />
 nfs 网络文件系统。<br />
 iso9660 CD-ROM光盘的标准文件系统。<br />
 ntfs Windows NT的文件系统。<br />
 hpfs OS/2文件系统。Windows NT 3.51之前版本的文件系统。<br />
 auto 自动检测文件系统。<br />
 -v 执行时显示详细的信息。<br />
 -V 显示版本信息。<br />
 -w 以可读写模式加载设备，默认设置。<br />
 <br />
 <br />
 简单用法:<br />
 fat32的分区<br />
 mount -o codepage=936,iocharset=cp936 /dev/hda7 /mnt/cdrom (mount -t<br />
 vfat -o iocharset=cp936 /dev/hda7 /mnt/cdrom)<br />
 ntfs的分区<br />
 mount -o iocharset=cp936 /dev/hda7 /mnt/cdrom<br />
 iso文件<br />
 mount -o loop /abc.iso /mnt/cdrom<br />
 软盘<br />
 mount /dev/fd0 /mnt/floppy<br />
 USB闪存<br />
 mount /dev/sda1 /mnt/cdrom 说明: /mnt/cdrom 目录必须存在<br />
 <br />
 所有/etc/fstab内容 mount -a<br />
 <br />
 可以指定文件格式&quot;-t 格式&quot;, 格式可以为vfat, ext2, ext3等.<br />
 <br />
 镜像文件：<br />
 mount fileName mountPoint -o<br />
 loop，fileName是镜像文件名(*.iso,*.img)，其它的不用说了，跟上面一样。用例：如我有一个a.iso光盘镜像文件，mount<br />
 a.iso a -o loop，这样进入目录a你就能浏览a.iso的内容了，*.img文件的用法一样。<br />
 <br />
 显示中文方面,如果是fedora core 1 的话，用utf8更好<br />
 mount -o iocharset=uft8 /dev/hda1 /mnt/c<br />
 mount -o iocharset=uft8 /dev/sda1 /mnt/usb<br />
 mount -t smbfs //ip_addr/share/dir /mnt/smb/share -o<br />
 iocharset=uft8,username=name, password=passwd<br />
 <strong><span style="font-size: small;"><br />
 开机就mount上windows下的分区</span>
</strong>
<br />
 自动将windows的d盘挂到/mnt/d上，用gedit打开/etc/fstab</p>
<p>sudo gedit /etc/fstab</p>
<p>加入以下一行<br />
 /dev/hda5 /mnt/d vfat defaults,codepage=936,iocharset=cp936 0 0<br />
 注意，先得手工建立一个/mnt/d目录<br />
sudo mkdir /mnt/d</p>
<p>这样每次开机后就可以自动挂在分区</p>
          <br/>
          <span style="color:red;">
            <a href="http://allenwei.javaeye.com/blog/189006#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>Sat, 03 May 2008 03:03:48 +0800</pubDate>
        <link>http://allenwei.javaeye.com/blog/189006</link>
        <guid>http://allenwei.javaeye.com/blog/189006</guid>
      </item>
      <item>
        <title>ubuntu 8.04 学习笔记 (一)</title>
        <author>allenwei</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://allenwei.javaeye.com">allenwei</a>&nbsp;
          链接：<a href="http://allenwei.javaeye.com/blog/188833" style="color:red;">http://allenwei.javaeye.com/blog/188833</a>&nbsp;
          发表时间: 2008年05月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>26日ubuntu发布了8.04正式版</p>
<p>我也在第一时间试用了ubuntu</p>
<p>首先去www.ubuntu.com&nbsp;  下载镜像</p>
<p>您可以选择刻盘安装的，硬盘安装，因为家里没有空盘了，我选择硬盘安装</p>
<p>有两种方式，实体安装和wubi安装</p>
<p>一 、wubi安装直接运行镜像内wubi.exe就可以安装了</p>
<p>二 、实体安装</p>
<p><span class="postbody">1、把镜像放入C盘根目录;
<br />
2、下载GrubForDos，将grldr和grub.exe放入C盘根目录;
<br />
3、在C盘根目录新建 menu.lst文件，内容如下：
</span>
</p>
<p>title Install Ubuntu
<br />
find --set-root /ubuntu-8.04-beta-desktop-i386.iso
<br />
kernel&nbsp; /vmlinuz&nbsp; boot=casper&nbsp; find_iso=/ubuntu-8.04-beta-desktop-i386.iso<br />
initrd&nbsp; /initrd.gz
</p>
<p><span class="postbody">
3.解压镜像中 Casper 和 .disk两个目录到C盘根目录;
</span>
</p>
<p><span class="postbody">
4.复制Casper目录中的vmlinuz和initrd.gz文件到C盘根目录;
</span>
</p>
<p><span class="postbody">
5.修改C盘根目录下的boot.ini文件，在文件末尾加入下面代码:
</span>
</p>
<p>&nbsp;&nbsp;
C:\grldr=&quot;GRUB&quot;
</p>
<p><span class="postbody">
6.重启，在启动菜单处，选择Grub，然后再选择Install Ubuntu就可以开始安装了</span>
</p>
<p>&nbsp;</p>
<p>安装时请拔掉网线，cd版的需要从网上下载语言文件，如果安装dvd版的就自带语言包了</p>
<p>分区建议：</p>
<p>/ 根目录 大约需要2G</p>
<p>/usr 用来存放用户安装的文件等</p>
<p>/home 存放用户文件，类似windows的我的文档</p>
<p>交换区 大约为内存1－1.5倍</p>
<p>/root 100M 如果需要双启动动建议分</p>
<p>建立/usr和/home为了在重新装系统的时候不用重新装软件，好备份</p>
<p>也可以新建其他分区，安装好系统后挂载到系统上</p>
<p>如果开始时不建立/usr和/home也可以，装完系统时可以重新挂载</p>
<p>我就是装了系统后直接把windows的安装目录格成ext3挂到/usr和/home下的</p>
          <br/>
          <span style="color:red;">
            <a href="http://allenwei.javaeye.com/blog/188833#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, 02 May 2008 14:01:15 +0800</pubDate>
        <link>http://allenwei.javaeye.com/blog/188833</link>
        <guid>http://allenwei.javaeye.com/blog/188833</guid>
      </item>
  </channel>
</rss>