﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-ＳｅｅＳｅａ</title><link>http://www.blogjava.net/seesea/</link><description>Ｊａｖａ初学习</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 08:57:20 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 08:57:20 GMT</pubDate><ttl>60</ttl><item><title>Struts2学习</title><link>http://www.blogjava.net/seesea/archive/2014/07/16/415883.html</link><dc:creator>SeesSea</dc:creator><author>SeesSea</author><pubDate>Wed, 16 Jul 2014 02:47:00 GMT</pubDate><guid>http://www.blogjava.net/seesea/archive/2014/07/16/415883.html</guid><wfw:comment>http://www.blogjava.net/seesea/comments/415883.html</wfw:comment><comments>http://www.blogjava.net/seesea/archive/2014/07/16/415883.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/seesea/comments/commentRss/415883.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/seesea/services/trackbacks/415883.html</trackback:ping><description><![CDATA[几年前学习了一阵子Struts2，也开发了些小项目，后来工作变动，几年没动技术，这两天又想捡起来，发现一些配置有了变化，重新学习，记录些内容，供自己查询。<br /><br />环境没敢用最新的，MyEclipse用的是8.5的版本，Tomcat最终选择了6，JDK也是用的7，Struts2的版本2.3.16.3。通常的配置没什么要记录的，主要记录下出问题的地方：<br />1、Tomcat<br />从MyEclipse启动Tomcat一直报错，后来下载了一个tcnative-1.dll文件才解决，版本要求比较严格，对于Tomcat6.0.41而言，这个动态链接库版本要求是1.1.30，1.1.3都不行，不知道有什么区别，将文件拷贝到jre/bin下即可。<br />2、web.xml文件内容<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"</span><span style="color: #0000FF; ">?&gt;</span><br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">web-app&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="WebApp_9"</span><span style="color: #FF0000; ">&nbsp;version</span><span style="color: #0000FF; ">="2.4"</span><span style="color: #FF0000; ">&nbsp;xmlns</span><span style="color: #0000FF; ">="http://java.sun.com/xml/ns/j2ee"</span><span style="color: #FF0000; ">&nbsp;xmlns:xsi</span><span style="color: #0000FF; ">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #FF0000; ">&nbsp;xsi:schemaLocation</span><span style="color: #0000FF; ">="http://java.sun.com/xml/ns/j2ee&nbsp;http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;3</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;4</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">display-name</span><span style="color: #0000FF; ">&gt;</span>Struts&nbsp;Test<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">display-name</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span>struts2<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-class</span><span style="color: #0000FF; ">&gt;</span>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-class</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">10</span>&nbsp;<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-mapping</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span>struts2<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-name</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">&gt;</span>/*<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">url-pattern</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">filter-mapping</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">15</span>&nbsp;<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">welcome-file-list</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">welcome-file</span><span style="color: #0000FF; ">&gt;</span>index.html<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">welcome-file</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">welcome-file-list</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">19</span>&nbsp;<br /><span style="color: #008080; ">20</span>&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">web-app</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">21</span>&nbsp;</div>3、struts.xml文件内容<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;<span style="color: #0000FF; ">&lt;?</span><span style="color: #FF00FF; ">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;</span><span style="color: #0000FF; ">?&gt;</span><br /><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #0000FF; ">&lt;!</span><span style="color: #FF00FF; ">DOCTYPE&nbsp;struts&nbsp;PUBLIC<br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #FF00FF; ">&nbsp;&nbsp;&nbsp;&nbsp;"-//Apache&nbsp;Software&nbsp;Foundation//DTD&nbsp;Struts&nbsp;Configuration&nbsp;2.3//EN"<br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #FF00FF; ">&nbsp;&nbsp;&nbsp;&nbsp;"http://struts.apache.org/dtds/struts-2.3.dtd"</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;5</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">struts</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">&nbsp;7</span>&nbsp;<br /><span style="color: #008080; ">&nbsp;8</span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">constant&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="struts.enable.DynamicMethodInvocation"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br /><span style="color: #008080; ">&nbsp;9</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">constant&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="struts.devMode"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="true"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br /><span style="color: #008080; ">10</span>&nbsp;<br /><span style="color: #008080; ">11</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">package&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="default"</span><span style="color: #FF0000; ">&nbsp;namespace</span><span style="color: #0000FF; ">="/"</span><span style="color: #FF0000; ">&nbsp;extends</span><span style="color: #0000FF; ">="struts-default"</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">12</span>&nbsp;<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">default-action-ref&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="index"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br /><span style="color: #008080; ">14</span>&nbsp;<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">global-results</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">result&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="error"</span><span style="color: #0000FF; ">&gt;</span>/error.jsp<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">result</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">global-results</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">18</span>&nbsp;<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">global-exception-mappings</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">exception-mapping&nbsp;</span><span style="color: #FF0000; ">exception</span><span style="color: #0000FF; ">="java.lang.Exception"</span><span style="color: #FF0000; ">&nbsp;result</span><span style="color: #0000FF; ">="error"</span><span style="color: #0000FF; ">/&gt;</span><br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">global-exception-mappings</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">action&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="action名"</span><span style="color: #FF0000; ">&nbsp;class</span><span style="color: #0000FF; ">="java包名及类名"</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">24</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">result&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="success"</span><span style="color: #0000FF; ">&gt;</span>/调用的jsp页面文件p<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">result</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">25</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">action</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">26</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">package</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">27</span>&nbsp;<br /><span style="color: #008080; ">28</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">include&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="example.xml"</span><span style="color: #0000FF; ">/&gt;</span><br /><span style="color: #008080; ">29</span>&nbsp;<br /><span style="color: #008080; ">30</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;Add&nbsp;packages&nbsp;here&nbsp;</span><span style="color: #008000; ">--&gt;</span><br /><span style="color: #008080; ">31</span>&nbsp;<br /><span style="color: #008080; ">32</span>&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">struts</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #008080; ">33</span>&nbsp;</div>4、调用时发现action名定义了大小写后，地址栏也要输入相应的大小写，否则报错。这个问题困扰了好久。。。。。<br /><br /><br />By SeeSea<br /><img src ="http://www.blogjava.net/seesea/aggbug/415883.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/seesea/" target="_blank">SeesSea</a> 2014-07-16 10:47 <a href="http://www.blogjava.net/seesea/archive/2014/07/16/415883.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在ubuntu 8.04下安装Oracle 11g方法</title><link>http://www.blogjava.net/seesea/archive/2009/03/18/260400.html</link><dc:creator>SeesSea</dc:creator><author>SeesSea</author><pubDate>Wed, 18 Mar 2009 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/seesea/archive/2009/03/18/260400.html</guid><wfw:comment>http://www.blogjava.net/seesea/comments/260400.html</wfw:comment><comments>http://www.blogjava.net/seesea/archive/2009/03/18/260400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/seesea/comments/commentRss/260400.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/seesea/services/trackbacks/260400.html</trackback:ping><description><![CDATA[<p>项目要求使用Oracle，据说安装方式比较繁复，网上搜到两篇文章，先备着，准备日后按图索骥。<br />
第一篇<br />
地址：<a href="http://forum.ubuntu.org.cn/viewtopic.php?f=44&amp;t=136860">http://forum.ubuntu.org.cn/viewtopic.php?f=44&amp;t=136860</a><br />
</p>
<div class="postbody">在ubuntu 8.04下安装Oracle 11g <br />
本文是参考了：http://hi.baidu.com/wuxicn/blog/item/0cfdc24ac5ae372609f7ef94.html"文章，是翻译下面的这篇文章的。我主要参考的是中文的，我只是在实际操作中做了一点小小的修改，在此表示感谢！紫色为我的注释。 <br />
原文是英文,地址是： <br />
<!-- m --><a class="postlink" href="http://www.pythian.com/blogs/968/installing-oracle-11g-on-ubuntu-804-lts-hardy-heron">http://www.pythian.com/blogs/968/instal ... ardy-heron</a><!-- m -->，（转载注明出处，谢谢！！ ） <br />
共9步： <br />
<br />
Step 1 <br />
下载和安装 Ubuntu 8.04 Hardy Heron (x86-32位) 版。略。 <br />
<br />
Step 2 <br />
下载Oracle 11g： Download Oracle 11g for Linux (x86, 32-bit). <br />
现不要急着解压，一会我会告诉你解压在哪的。 <br />
<br />
Step 3 <br />
修改X server 的默认设置，点菜单的System -&gt; Administration -&gt; Login Window（系统－&gt;管理－&gt;登录窗口），选择&#8220;Security（安全）&#8221;选项卡，取消&#8220;Deny TCP connections to the Xserver（拒绝TCP连接到X服务器）&#8221;的勾，重启Xserver（或者重启系统）。然后在终端输入： <br />
user@hardy:~$ xhost +127.0.0.1 <br />
127.0.0.1 being added to access control list <br />
Step 4 <br />
打开终端，转换为超级用户：（注意，这里用sudo su -而不是sudo -s是有原因的：sudo su - 将用户转换为超级用户，并新起一个会话（空的会话），而不是像sudo -s那样将当前会话传递个新的超级用户，减少环境变量可能造成的影响和危害。 <br />
user@hardy:~$ sudo su - <br />
[sudo] password for user: <br />
root@hardy:~# apt-get update <br />
... <br />
root@hardy:~# apt-get dist-upgrade <br />
... <br />
root@hardy:~# reboot <br />
Step 5 <br />
用apt安装一些必要的工具： <br />
<br />
user@hardy:~$ sudo su - <br />
[sudo] password for user: <br />
root@hardy:~# apt-get install build-essential libaio1 gawk ksh libmotif3 alien libtool lsb-rpm <br />
... <br />
root@hardy:~# <br />
Step 6 <br />
在装完那些工具以后，我们需要做的就是修改一些Ubuntu的/bin/sh的默认连接，千万不要略过这一步，否则安装的时候会出现很多错误。 <br />
root@hardy:~# cd /bin <br />
root@hardy:/bin# ls -l /bin/sh <br />
lrwxrwxrwx 1 root root 4 2008-04-28 19:59 /bin/sh -&gt; dash <br />
root@hardy:/bin# ln -sf bash /bin/sh <br />
root@hardy:/bin# ls -l /bin/sh <br />
lrwxrwxrwx 1 root root 4 2008-05-01 22:51 /bin/sh -&gt; bash <br />
如果你想知道为什么Ubuntu用dash作为默认的shell，看这个：a detailed explanation of why dash is the default system shell 。 <br />
Step 7 <br />
增加用户和组，并修改一些配置。这一步很重要！如果不是很有把握，不要随便改。(为了便于解释，增加了行号）： <br />
01 root@hardy:/bin# cd <br />
02 root@hardy:~# pwd <br />
/root <br />
04 root@hardy:~# addgroup oinstall <br />
Adding group `oinstall' (GID 1001) ... <br />
Done. <br />
07 root@hardy:~# addgroup dba <br />
Adding group `dba' (GID 1002) ... <br />
Done. <br />
10 root@hardy:~# addgroup nobody <br />
Adding group `nobody' (GID 1003) ... <br />
Done. <br />
13 root@hardy:~# usermod -g nobody nobody <br />
14 root@hardy:~# useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle <br />
15 root@hardy:~# mkdir /home/oracle <br />
16 root@hardy:~# chown -R oracle:dba /home/oracle <br />
17 root@hardy:~# ln -s /usr/bin/awk /bin/awk <br />
18 root@hardy:~# ln -s /usr/bin/rpm /bin/rpm <br />
19 root@hardy:~# ln -s /usr/bin/basename /bin/basename <br />
20 root@hardy:~# mkdir /etc/rc.d <br />
21 root@hardy:~# for i in 0 1 2 3 4 5 6 S ; do ln -s /etc/rc$i.d /etc/rc.d/rc$i.d ; done <br />
22 root@hardy:~# mkdir -p /u01/app/oracle <br />
23 root@hardy:~# chown -R oracle:dba /u01 <br />
24 root@hardy:~# <br />
Lines 04-12: 增加我们需要的用户和组 <br />
Line 13: 让nobody用户的组变为nobody，这样Oracle的安装程序不会出问题。Ubuntu默认nobody的组是nogroup。 <br />
Lines 14-18: 创建一个oracle用户。注意，oracle用户的HOME目录不要与ORACLE_HOME相同。 <br />
Lines 19-23: 创建一些Oracle安装程序需要的工具的连接。因为Oracle安装程序是为Red Hat准备的，所以有些工具的位置和Ubuntu不一样。 <br />
Finally, on lines 24-25 创建ORACLE_BASE目录。 <br />
Step 8 <br />
修改一些系统默认值。这些修改将会增加系统文件描述符的数量、增加共享内存大小和修改一些网络子系统参数。这些修改是否会对你的系统带来影响我就不得而知了。将下面这些增加到/etc/sysctl.conf文件的末尾： <br />
fs.file-max = 65535 <br />
kernel.shmall = 2097152 <br />
kernel.shmmax = 2147483648 <br />
kernel.shmmni = 4096 <br />
kernel.sem = 250 32000 100 128 <br />
net.ipv4.ip_local_port_range = 1024 65535 <br />
net.core.rmem_default = 1048576 <br />
net.core.rmem_max = 1048576 <br />
net.core.wmem_default = 262144 <br />
net.core.wmem_max = 262144 <br />
再增加下面这些到/etc/security/limits.conf文件末尾： <br />
<br />
oracle soft nproc 2047 <br />
oracle hard nproc 16383 <br />
oracle soft nofile 1023 <br />
oracle hard nofile 65535 <br />
为了强制使用刚才我们增加的东西，我们再增加下面这些到/etc/pam.d/login文件末尾： <br />
<br />
session required /lib/security/pam_limits.so <br />
session required pam_limits.so <br />
然后通过命令：sysctl -p 让刚才增加的东西生效： <br />
<br />
root@hardy:~# sysctl -p <br />
kernel.printk = 4 4 1 7 <br />
kernel.maps_protect = 1 <br />
fs.inotify.max_user_watches = 524288 <br />
vm.mmap_min_addr = 65536 <br />
net.ipv4.conf.default.rp_filter = 1 <br />
net.ipv4.conf.all.rp_filter = 1 <br />
fs.file-max = 65535 <br />
kernel.shmall = 2097152 <br />
kernel.shmmax = 2147483648 <br />
kernel.shmmni = 4096 <br />
kernel.sem = 250 32000 100 128 <br />
net.ipv4.ip_local_port_range = 1024 65535 <br />
net.core.rmem_default = 1048576 <br />
net.core.rmem_max = 1048576 <br />
net.core.wmem_default = 262144 <br />
net.core.wmem_max = 262144 <br />
root@hardy:~# <br />
Step 9 <br />
现在我们将刚才下载的oracle11g的安装包解压到/home/oracle/install/目录下。然后进入目录，设置DISPLAY参数，开始安装： <br />
<br />
root@hardy:~# cd /home/oracle <br />
root@hardy:/home/oracle# chown -R oracle:dba install <br />
<br />
<span style="color: violet">用oracle用户登陆，(不然会出安装界面出不来)</span> <br />
oracle@hardy:~$ export DISPLAY=127.0.0.1:0.0 <br />
oracle@hardy:~$ pwd <br />
/home/oracle <br />
oracle@hardy:~$ ls -l <br />
total 4 <br />
drwxr-xr-x 6 oracle dba 4096 2007-09-18 18:50 install <br />
oracle@hardy:~$ cd install <br />
oracle@hardy:~/install$ ls -l <br />
total 28 <br />
drwxr-xr-x 11 oracle dba 4096 2007-08-06 16:02 doc <br />
drwxr-xr-x 5 oracle dba 4096 2007-08-03 13:28 install <br />
drwxr-xr-x 2 oracle dba 4096 2007-09-18 18:52 response <br />
-rwxr-xr-x 1 oracle dba 2911 2007-08-03 13:28 runInstaller <br />
drwxr-xr-x 14 oracle dba 4096 2007-08-03 13:27 stage <br />
-rw-r--r-- 1 oracle dba 4835 2007-08-06 18:19 welcome.html <br />
oracle@hardy:~/install$ ./runInstaller -ignoreSysPrereqs <br />
输入完上面命令后，就进入了Oracle 的同一安装程序了（OUI），不要急，继续按照本文一步一步的通过安装： <br />
注意：OUI安装完后，并不是真正完全安装完成，还需要就行最后的收尾工作（在最后有），而且这是必须做的工作！ <br />
<br />
<br />
点（Next）下一步。 <br />
<br />
<br />
修改&#8220;Specify Operating System group name:&#8221;为："dba"，然后点"Next". <br />
<br />
<br />
按照上图设置，点下一步。 <br />
<br />
<br />
选择"Enterprise Edition"，然后下一步。 <br />
<br />
<br />
安图设置，下一步。 <br />
<br />
<br />
继续下一步。 <br />
<br />
<br />
等待系统检查，不要担心有错误和警告。 <br />
<br />
<br />
将检查到的所有非&#8220;Succeeded&#8221;的都打上勾，下一步。 <br />
<br />
<br />
，下一步。在这一步选"Create a Database"来安装数据库。<span style="color: violet">（[color=red]原文是通过netca建立监听，dbca建库，我第一次也是这样做的，dbca建库时会报错，因为ubutunbu 不支持RPM包）。</span>[/color] <br />
<br />
将所有组都设为：dba，下一步。 <br />
<br />
现在可以点&#8220;Install&#8221;了：）时间比较长。 <br />
<br />
<br />
到了这一步不要记着点&#8220;OK&#8221;，需要做下面操作：（另起一个终端，用sudo su - 转为超级用户） <br />
<br />
root@hardy:~# /u01/app/oraInventory/orainstRoot.sh <br />
Changing permissions of /u01/app/oraInventory to 770. <br />
Changing groupname of /u01/app/oraInventory to dba. <br />
The execution of the script is complete <br />
root@hardy:~# /u01/app/oracle/product/11.1.0/db_1/root.sh <br />
Running Oracle 11g root.sh script... <br />
<br />
The following environment variables are set as: <br />
ORACLE_OWNER= oracle <br />
ORACLE_HOME= /u01/app/oracle/product/11.1.0/db_1 <br />
<br />
Enter the full pathname of the local bin directory: [/usr/local/bin]: <br />
Copying dbhome to /usr/local/bin ... <br />
Copying oraenv to /usr/local/bin ... <br />
Copying coraenv to /usr/local/bin ... <br />
<br />
Creating /etc/oratab file... <br />
Entries will be added to the /etc/oratab file as needed by <br />
Database Configuration Assistant when a database is created <br />
Finished running generic part of root.sh script. <br />
Now product-specific root actions will be performed. <br />
Finished product-specific root actions. <br />
root@hardy:~# <br />
好了，这个完成后可以点&#8220;OK&#8221;了。 <br />
安后点&#8220;Exit&#8221;退出OUI，现在可以祝贺你，OUI安装完成了：）但是还是不要急，记住咱们还有收尾工作需要做。 <br />
在/etc/profile文件中加入下面几句： <br />
<br />
export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 <br />
export PATH=$PATH:/u01/app/oracle/product/11.1.0/db_1/bin <br />
创建一个Oracle 11g数据库的启动脚本，名字可以叫做：oracledb，在/u01/app/oracle/product/11.1.0/db_1/bin下建立文件：oracledb，内容： <br />
<br />
#!/bin/bash <br />
# <br />
# /etc/init.d/oracledb <br />
# <br />
# Run-level Startup script for the Oracle Listener and Instances <br />
# It relies on the information on /etc/oratab <br />
<br />
export ORACLE_BASE=/u01/app/oracle <br />
export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 <br />
export ORACLE_OWNR=oracle <br />
export PATH=$PATH:$ORACLE_HOME/bin <br />
<br />
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ] <br />
then <br />
echo "Oracle startup: cannot start" <br />
exit 1 <br />
fi <br />
<br />
case "$1" in <br />
start) <br />
# Oracle listener and instance startup <br />
echo -n "Starting Oracle: " <br />
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl start" <br />
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" <br />
touch /var/lock/oracle <br />
echo "OK" <br />
;; <br />
stop) <br />
# Oracle listener and instance shutdown <br />
echo -n "Shutdown Oracle: " <br />
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop" <br />
su $ORACLE_OWNR -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" <br />
rm -f /var/lock/oracle <br />
echo "OK" <br />
;; <br />
reload|restart) <br />
$0 stop <br />
$0 start <br />
;; <br />
*) <br />
echo "Usage: `basename $0` start|stop|restart|reload" <br />
exit 1 <br />
esac <br />
<br />
exit 0 <br />
修改脚本为可执行的： <br />
<br />
root@hardy:~# chmod a+x /u01/app/oracle/product/11.1.0/db_1/bin/oracledb <br />
如果你希望开机自动启动Oracle 11g数据库，那么就作下面的工作： <br />
<br />
root@hardy:~# ln -s /u01/app/oracle/product/11.1.0/db_1/bin/oracledb /etc/init.d/oracledb <br />
root@hardy:~# sudo sysv-rc-conf --level 2345 oracledb on <br />
<br />
如果没有sysv-rc-conf命令，就apt-get一个。 <br />
最后，增加你自己的用户名到dba组： <br />
<br />
root@hardy:~# usermod -G dba -a user <br />
好了，至此，Oracle 11g就安装完了。重新登录后，你就可以使用oracle的命令了。 <br />
(ORACLE_SID=orcl 是你安装时候设置的值) <br />
<br />
oracle@hardy:~$ export ORACLE_SID=orcl <br />
oracle@hardy:~$ sqlplus '/as sysdba' <br />
<br />
SQL*Plus: Release 11.1.0.6.0 - Production on Mon May 5 02:39:27 2008 <br />
<br />
Copyright (c) 1982, 2007, Oracle. All rights reserved. <br />
<br />
Connected to: <br />
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production <br />
With the Partitioning, OLAP, Data Mining and Real Application Testing options <br />
<br />
SQL&gt;connect /as sysdba <br />
Connected to an idle instance. <br />
<br />
SQL&gt;startup 启动数据库命令。 <br />
. <br />
ORACLE instance started. <br />
<br />
<br />
<br />
Total System Global Area 418484224 bytes <br />
<br />
Fixed Size 1300324 bytes <br />
<br />
Variable Size 281020572 bytes <br />
<br />
Database Buffers 130023424 bytes <br />
<br />
Redo Buffers 6139904 bytes <br />
<br />
Database mounted. <br />
<br />
Database opened. <br />
<br />
oracle@hardy:~$ export ORACLE_SID=orcl <br />
oracle@hardy:~$ emctl start dbconsole <span style="color: violet">启动EM，地址为https://yourip:1158/em/console</span>.这样你就可以通过IE登陆了。不过界面为乱码。呵呵！！解决方法自己在网上找吧！！ <br />
<br />
如果你看到了上面的结果，证明你的oracle安装成功了。</div>
<p>第二篇<br />
地址：<a href="http://www.linuxidc.com/Linux/2008-06/13855.htm">http://www.linuxidc.com/Linux/2008-06/13855.htm</a><br />
</p>
<p>花了半天时间,在<a title="Ubuntu" href="http://www.linuxidc.com/topicnews.aspx?tid=2">Ubuntu</a> 8.04 LTS上顺利安装Oracle 11G.下面说说大概的步骤.</p>
<p>1.确保安装了以下程序:</p>
<p>sudo apt-get install build-essential libaio1 gawk ksh libmotif3 alien libtool lsb-rpm</p>
<p>2.</p>
<p>cd /bin<br />
ln -sf bash /bin/sh<!--iwms_ad_begin--><br />
<div align="center"><script language="javaScript" src="../../system/system60.js" type="text/javascript"></script><script type="text/javascript"><!-- google_ad_client="pub-5195587195407606" ;
/* Linuxidc 468x60, ????Ӛ 08-8-31 */ google_ad_slot="9963827011" ; google_ad_width="468;
google_ad_height" = 60;
//-->
</script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script><script>window.google_render_ad();</script><ins style="padding-right: 0px; padding-left: 0px; visibility: visible; padding-bottom: 0px; margin: 0px; width: 468px; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; position: relative; height: 60px; border-bottom-style: none"><ins style="padding-right: 0px; display: block; padding-left: 0px; visibility: visible; padding-bottom: 0px; margin: 0px; width: 468px; border-top-style: none; padding-top: 0px; border-right-style: none; border-left-style: none; position: relative; height: 60px; border-bottom-style: none"><iframe id="google_ads_frame3" style="left: 0px; position: absolute; top: 0px" name="google_ads_frame" marginwidth="0" marginheight="0" src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-5195587195407606&amp;dt=1237343290062&amp;lmt=1232682600&amp;prev_slotnames=4448053148%2C0155470610&amp;output=html&amp;slotname=9963827011&amp;correlator=1237343289015&amp;url=http%3A%2F%2Fwww.linuxidc.com%2FLinux%2F2008-06%2F13855.htm&amp;frm=0&amp;ga_vid=1418700180.1237343289&amp;ga_sid=1237343289&amp;ga_hid=764714942&amp;flash=10.0.22.87&amp;u_h=800&amp;u_w=1280&amp;u_ah=769&amp;u_aw=1280&amp;u_cd=32&amp;u_tz=480&amp;u_java=true&amp;dtd=0&amp;w=468&amp;h=60&amp;xpc=SmYwFPsFEm&amp;p=http%3A//www.linuxidc.com" frameborder="0" width="468" scrolling="no" height="60" allowTransparency></iframe></ins></ins></div>
<p><!--iwms_ad_end--></p>
<p>&nbsp;</p>
<p>3.增加用户和组</p>
<p>addgroup oinstall<br />
addgroup dba<br />
addgroup nobody<br />
useradd -g oinstall -G dba -p passwd -d /home/oracle -s /bin/bash oracle<br />
usermod -g nobody nobody</p>
<p>4. <br />
mkdir /home/oracle<br />
chown -R oracle:dba /home/oracle</p>
<p>ln -s /usr/bin/awk /bin/awk<br />
ln -s /usr/bin/rpm /bin/rpm<br />
ln -s /usr/bin/basename /bin/basename</p>
<p>5. <br />
mkdir /etc/rc.d<br />
for i in 0 1 2 3 4 5 6 S ; do ln -s /etc/rc$i.d /etc/rc.d/rc$i.d ; done</p>
<p>mkdir -p /opt/ora11<br />
chown -R oracle:dba /opt</p>
<p>6.编辑/etc/sysctl.conf,增加以下内容:</p>
<p>fs.file-max = 65535<br />
kernel.shmall = 2097152<br />
kernel.shmmax = 2147483648<br />
kernel.shmmni = 4096<br />
kernel.sem = 250 32000 100 128<br />
net.ipv4.ip_local_port_range = 1024 65535<br />
net.core.rmem_default = 1048576<br />
net.core.rmem_max = 1048576<br />
net.core.wmem_default = 262144<br />
net.core.wmem_max = 262144</p>
<p>7.编辑/etc/security/limits.conf,增加以下内容:</p>
<p>oracle soft nproc 2047<br />
oracle hard nproc 16383<br />
oracle soft nofile 1023<br />
oracle hard nofile 65535</p>
<p>8.编辑/etc/pam.d/login,增加以下内容:</p>
<p>session required /lib/security/pam_limits.so<br />
session required pam_limits.so</p>
<p>9.执行:</p>
<p>sysctl -p</p>
<p>10.</p>
<p>su - oracle</p>
<p>以上命令需以root用户执行,接下来切换至oracle用户.</p>
<p>11.切换至安装目录,开始安装.我选择了英语作为安装时显示的语言.</p>
<p>export LANG=en_CN<br />
./runInstaller</p>
<p>12.安装过程中提示运行以下两个脚本:</p>
<p>orainstRoot.sh<br />
root.sh</p>
<p>12.安装过程中检测到系统未装有GLIBC环境,忽略后,未发现对安装和运行有多大影响.</p>
<p>13.切记,安装时选择自定义,并且选择数据库的字符集为 ZHS16GBK!</p>
<p>因为忘记了这个选项,我只好删掉数据库,重新建了一个,浪费了半个小时的时间.</p>
<p>PS.ORACLE 11g好像不支持更改数据库的字符集了...或是我没有找到正确的方法</p>
<p>14.安装完成后,数据库的连接和查询异常之慢,GOOGLE之,然后尝试着把网络的DNS服务器全给删了,解决.</p>
<p>15.两个常用的工具:dbca和netca. <br />
</p>
<p><br />
<br />
&nbsp;</p>
<img src ="http://www.blogjava.net/seesea/aggbug/260400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/seesea/" target="_blank">SeesSea</a> 2009-03-18 10:52 <a href="http://www.blogjava.net/seesea/archive/2009/03/18/260400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2 action 的 ;jsessionid=xxx 使找不到页面 Bug 的解决 [转帖]</title><link>http://www.blogjava.net/seesea/archive/2008/08/12/221439.html</link><dc:creator>SeesSea</dc:creator><author>SeesSea</author><pubDate>Tue, 12 Aug 2008 02:40:00 GMT</pubDate><guid>http://www.blogjava.net/seesea/archive/2008/08/12/221439.html</guid><wfw:comment>http://www.blogjava.net/seesea/comments/221439.html</wfw:comment><comments>http://www.blogjava.net/seesea/archive/2008/08/12/221439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/seesea/comments/commentRss/221439.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/seesea/services/trackbacks/221439.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原文地址自己留个地址，遇到这个问题可以考虑使用。不过要重新编译struts2的jar包确实比较。。。刚刚又找到一个解决办法：在用Struts的时候发现这样一个问题，不管我们的程序中是否创建了一个新的session，从页面提交表单到action类，再跳转到页面的时候url中总是出现了;jsessionid这样的一长串内容，这是由于新建的session导致容器产生的。经过深入研究s...&nbsp;&nbsp;<a href='http://www.blogjava.net/seesea/archive/2008/08/12/221439.html'>阅读全文</a><img src ="http://www.blogjava.net/seesea/aggbug/221439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/seesea/" target="_blank">SeesSea</a> 2008-08-12 10:40 <a href="http://www.blogjava.net/seesea/archive/2008/08/12/221439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2设置</title><link>http://www.blogjava.net/seesea/archive/2008/08/06/220459.html</link><dc:creator>SeesSea</dc:creator><author>SeesSea</author><pubDate>Wed, 06 Aug 2008 08:27:00 GMT</pubDate><guid>http://www.blogjava.net/seesea/archive/2008/08/06/220459.html</guid><wfw:comment>http://www.blogjava.net/seesea/comments/220459.html</wfw:comment><comments>http://www.blogjava.net/seesea/archive/2008/08/06/220459.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/seesea/comments/commentRss/220459.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/seesea/services/trackbacks/220459.html</trackback:ping><description><![CDATA[这几天总有其他事情在忙，现在有一点点时间了，尝试学习Struts2，洒家属于超级新人，一步一步记录吧。<br />
1、下载Struts2的jar包。下载地址：<br />
http://struts.apache.org/2.0.9/index.html<br />
2、解压缩必要文件到项目中WebRoot\WEB-INF\lib下。洒家最开始引用的为：<br />
commons-logging-1.0.4.jar<br />
ognl-2.6.11.jar<br />
xwork-2.0.4.jar<br />
freemarker-2.3.8.jar<br />
struts2-core-2.0.11.1.jar<br />
3、修改项目中WebRoot\WEB-INF\web.xml文档，增加如下内容<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">struts2</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;org.apache.struts2.dispatcher.FilterDispatcher<br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-class</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">struts2</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-name</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">/*</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">url-pattern</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">filter-mapping</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">&nbsp; <br />
</span></div>
4、在项目中WebRoot/WEB-INF/classes下建立struts.xml文件。如果在MyEclipse中，可以直接建立在项目的src目录中，MyEclipse将自动将其拷贝到发布目录的相关位置。文件内容如下：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;?</span><span style="color: #ff00ff;">xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;</span><span style="color: #0000ff;">?&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #0000ff;">&lt;!</span><span style="color: #ff00ff;">DOCTYPE&nbsp;struts&nbsp;PUBLIC<br />
&nbsp;&nbsp;&nbsp;&nbsp;"-//Apache&nbsp;Software&nbsp;Foundation//DTD&nbsp;Struts&nbsp;Configuration&nbsp;2.0//EN"<br />
&nbsp;&nbsp;&nbsp;&nbsp;"http://struts.apache.org/dtds/struts-2.0.dtd"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">struts</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">package&nbsp;</span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">="struts2"</span><span style="color: #ff0000;">&nbsp;extends</span><span style="color: #0000ff;">="struts-default"</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">&lt;!--</span><span style="color: #008000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;此处加入不同的action<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">--&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">package</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">struts</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp; <br />
</span></div>
5、建立jsp文件<br />
如果使用struts的标签，则需要在jsp文件的第一行后插入：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="background-color: #ffff00; color: #000000;">&lt;%</span><span style="background-color: #f5f5f5; color: #000000;">@&nbsp;taglib&nbsp;prefix</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">s</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;uri</span><span style="background-color: #f5f5f5; color: #000000;">=</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">/struts-tags</span><span style="background-color: #f5f5f5; color: #000000;">"</span><span style="background-color: #f5f5f5; color: #000000;">&nbsp;</span><span style="background-color: #ffff00; color: #000000;">%&gt;</span></div>
暂时有事，回头补充。<br />
<br />
<img src ="http://www.blogjava.net/seesea/aggbug/220459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/seesea/" target="_blank">SeesSea</a> 2008-08-06 16:27 <a href="http://www.blogjava.net/seesea/archive/2008/08/06/220459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu下的tomcat启动</title><link>http://www.blogjava.net/seesea/archive/2008/08/01/219275.html</link><dc:creator>SeesSea</dc:creator><author>SeesSea</author><pubDate>Fri, 01 Aug 2008 03:27:00 GMT</pubDate><guid>http://www.blogjava.net/seesea/archive/2008/08/01/219275.html</guid><wfw:comment>http://www.blogjava.net/seesea/comments/219275.html</wfw:comment><comments>http://www.blogjava.net/seesea/archive/2008/08/01/219275.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/seesea/comments/commentRss/219275.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/seesea/services/trackbacks/219275.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 上一个项目由于奥运的关系不能调试，只能先放下了。新的任务是一个b/s项目，彻底陌生的领域。以前做过的的项目全部都是C#.net下的东东。这次用jsp。又一次痛苦的学习历程。<br />
&nbsp;&nbsp;&nbsp; 还是喜欢ubuntu下的调试环境，所以还想选择在这个下面开发。<br />
&nbsp;&nbsp;&nbsp; 先在原有eclipse上安装了MyEclipse，这次比较顺利，记得上次安装比较费劲，总是启动不了，或许是因为这台机器是inter的CPU缘故？不得而知。<br />
&nbsp;&nbsp;&nbsp; 安装TomCat遇到一些问题，主要是TomCat总是随系统启动，每次开机都需要手动关闭服务，比较麻烦。由于对ubuntu不熟悉，找了下方法，感觉比较好的方法如下：<br />
安装sysv-rc-conf<br />
方法：<br />
sudo apt-get install sysv-rc-conf<br />
sudo sysv-rc-conf<br />
<br />
这个工具可以调整启动项目，比较方便。<br />
<br />
<br />
<img src ="http://www.blogjava.net/seesea/aggbug/219275.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/seesea/" target="_blank">SeesSea</a> 2008-08-01 11:27 <a href="http://www.blogjava.net/seesea/archive/2008/08/01/219275.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse发布程序</title><link>http://www.blogjava.net/seesea/archive/2008/07/24/217213.html</link><dc:creator>SeesSea</dc:creator><author>SeesSea</author><pubDate>Thu, 24 Jul 2008 08:19:00 GMT</pubDate><guid>http://www.blogjava.net/seesea/archive/2008/07/24/217213.html</guid><wfw:comment>http://www.blogjava.net/seesea/comments/217213.html</wfw:comment><comments>http://www.blogjava.net/seesea/archive/2008/07/24/217213.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/seesea/comments/commentRss/217213.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/seesea/services/trackbacks/217213.html</trackback:ping><description><![CDATA[辛辛苦苦在Eclipse里面写好东西，不会发布，网络上搜到的大多都是关于MyEclipse发布web方式。不过也难怪人家不写，因为是在比较简单。只要直接导出Jar文件就可以了，是在没什么可以写的，都怪洒家太笨了。<br />
不过导出后遇到一些问题，就是第三方jar文件错误，这个找了一下，同样在BlogJava上有人发表了方法，他推荐的是第一种方法，洒家用的是第二种。原文见<a href="http://www.blogjava.net/mimi-van/archive/2007/11/28/163597.html">http://www.blogjava.net/mimi-van/archive/2007/11/28/163597.html</a>。<br />
为了自己阅读方便，也粘贴一份吧。失敬，失敬！<br />
<br />
<div style="border: 1px solid #666666;">
<div>
<p _extended="true">我存档的一篇java资料，里面对 -jar 情况下的classpath 有了比较详细的阐述。<br />
<br />
当用java -jar
yourJarExe.jar来运行一个经过打包的应用程序的时候，你会发现如何设置-classpath参数应用程序都找不到相应的第三方类，报
ClassNotFound错误。实际上这是由于当使用-jar参数运行的时候，java
VM会屏蔽所有的外部classpath,而只以本身yourJarExe.jar的内部class作为类的寻找范围。</p>
<p _extended="true">**解决方案**</p>
<p _extended="true">一 BootStrap class扩展方案</p>
<p _extended="true">Java 命令行提供了如何扩展bootStrap 级别class的简单方法.<br _extended="true" />
-Xbootclasspath:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;完全取代基本核心的Java class 搜索路径.<br _extended="true" />
&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; 不常用,否则要重新写所有Java 核心class<br _extended="true" />
-Xbootclasspath/a: 后缀在核心class搜索路径后面.常用!!<br _extended="true" />
-Xbootclasspath/p: 前缀在核心class搜索路径前面.不常用,避免<br _extended="true" />
&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; 引起不必要的冲突.</p>
<p _extended="true">语法如下:<br _extended="true" />
&nbsp;(分隔符与classpath参数类似，unix使用:号,windows使用;号，这里以unix为例)<br _extended="true" />
<strong _extended="true">&nbsp;<font _extended="true" face="courier new,courier,monospace">java -Xbootclasspath/a:/usrhome/thirdlib.jar: -jar yourJarExe.jar</font></strong></p>
<p _extended="true">二 extend class 扩展方案</p>
<p _extended="true">Java exten class 存放在{Java_home}"jre"lib"ext目录下.当调用Java时,对扩展class路径的搜索是自动的.总会搜索的.这样,解决的方案就很简单了,将所有要使用的第三方的jar包都复制到ext 目录下.<br />
<br />
</p>
<p _extended="true">三 User class扩展方案</p>
<p _extended="true">当使用-jar执行可执行Jar包时,JVM将Jar包所在目录设置为codebase目录,所有的class搜索都在这个目录下开始.所以如果使用了其他第三方的jar包,一个比较可以接受的可配置方案,就是利用jar包的Manifest扩展机制.<br _extended="true" />
步骤如下:</p>
<p _extended="true">&nbsp;1.将需要的第三方的jar包,复制在同可执行jar所在的目录或某个子目录下.&nbsp;比如:jar 包在 /usrhome/yourJarExe.jar 那么你可以把所有jar包复制到/usrhome目录下或/usrhome/lib 等类似的子目录下.</p>
<p _extended="true">&nbsp;2.修改Manifest 文件</p>
<p _extended="true">&nbsp;在Manifest.mf文件里加入如下行</p>
<p _extended="true">&nbsp;<font _extended="true" face="courier new,courier,monospace">Class-Path:classes12.jar lib/thirdlib.jar</font></p>
<p _extended="true">&nbsp;Class-Path 是可执行jar包运行依赖的关键词.详细内容可以参考&nbsp;<a href="http://java.sun.com/docs/books/tutorial/deployment/jar/downman.html" target="_blank" _extended="true">http://java.sun.com/docs/books/tutorial/deployment/jar/downman.html</a>&nbsp;。
要注意的是 Class-Path
只是作为你本地机器的CLASSPATH环境变量的一个缩写，也就是说用这个前缀表示在你的jar包执行机器上所有的CLASSPATH目录下寻找相应的
第三方类/类库。你并不能通过 Class-Path
来加载位于你本身的jar包里面（或者网络上）的jar文件。因为从理论上来讲，你的jar发布包不应该再去包含其他的第三方类库（而应该通过使用说明来
提醒用户去获取相应的支持类库）。如果由于特殊需要必须把其他的第三方类库（jar, zip,
class等）直接打包在你自己的jar包里面一起发布，你就必须通过实现自定义的ClassLoader来按照自己的意图加载这些第三方类库。</p>
<p _extended="true"><br _extended="true" />
以上三种方法<strong _extended="true">推荐第一种</strong>，扩展性好，操作起来也最方便.<br _extended="true" />
另外编写自己的ClassLoader,来动态载入class,是更加复杂和高级技术.限于篇幅,不赘述.有兴趣了解可以去google一下custom classloader，或者参考我的另一篇日志：<a title="让classpath参数走开" href="http://www.zeali.net/blog/entry.php?id=337" _extended="true" alt="让classpath参数走开">让classpath参数走开</a>。</p>
<p _extended="true">Java的安全机制随不同的JDK版本有不同的变化,会影响很多核心CLASS,比如Thread,所以很多大型商业软件,要求JDK的版本很严格.部分原因也在此.这也要求在发布自己编写的应用时候,不管大小,都要说明开发和测试的JDK版本.</p>
<p _extended="true"><br _extended="true" />
本文所述方法测试基于j2sdk 1.4.2_04-b05</p>
<p _extended="true">----------------------------------------------------------------------------------------------</p>
<p _extended="true">附:背景知识</p>
<p _extended="true">自JDK 1.2以后,JVM采用了委托(delegate)模式来载入class．采用这种设计的原因可以参考<a href="http://java.sun.com/docs/books/tutorial/ext/basics/load.html" target="_blank" _extended="true">http://java.sun.com/docs/books/tutorial/ext/basics/load.html</a></p>
<p _extended="true">归纳来讲:是基于JVM sandbox(沙盒)安装模型上提供应用层的可定制的安全机制.</p>
<p _extended="true"><br _extended="true" />
Java虚拟机(JVM)寻找Class的顺序</p>
<p _extended="true">1. Bootstrap classes</p>
<p _extended="true">属于Java 平台核心的class,比如java.lang.String等.及rt.jar等重要的核心级别的class.这是由JVM Bootstrap class loader来载入的.一般是放置在{java_home}"jre"lib目录下</p>
<p _extended="true">2. Extension classes</p>
<p _extended="true">基于Java扩展机制,用来扩展Java核心功能模块.比如Java串口通讯模块comm.jar.一般放置在{Java_home}"jre"lib"ext目录下</p>
<p _extended="true">3. User classes</p>
<p _extended="true">开发人员或其他第三方开发的Java程序包.通过命令行的-classpath或-cp,或者通过设置
CLASSPATH环境变量来引用.JVM通过放置在{java_home}"lib"tools.jar来寻找和调用用户级的class.常用的
javac也是通过调用tools.jar来寻找用户指定的路径来编译Java源程序.这样就引出了User
class路径搜索的顺序或优先级别的问题.</p>
<p _extended="true">&nbsp;3.1 缺省值:调用Java或javawa的当前路径(.),是开发的class所存在的当前目录<br _extended="true" />
&nbsp;3.2 CLASSPATH环境变量设置的路径.如果设置了CLASSPATH,则CLASSPATH的值会覆盖缺省值<br _extended="true" />
&nbsp;3.3 执行Java的命令行-classpath或-cp的值,如果制定了这两个命令行参数之一,它的值会覆盖环境变量CLASSPATH的值<br _extended="true" />
&nbsp;3.4 -jar 选项:如果通过java -jar 来运行一个可执行的jar包,这当前jar包会覆盖上面所有的值.换句话说,-jar
后面所跟的jar包的优先级别最高,如果指定了-jar选项,所有环境变量和命令行制定的搜索路径都将被忽略.JVM
APPClassloader将只会以jar包为搜索范围.<br _extended="true" />
有关可执行jar有许多相关的安全方面的描述,可以参考<a href="http://java.sun.com/docs/books/tutorial/jar/" target="_blank" _extended="true">http://java.sun.com/docs/books/tutorial/jar/</a> 来全面了解.</p>
<p _extended="true">这也是为什么应用程序打包成可执行的jar包后,不管你怎么设置classpath都不能引用到第三方jar包的东西了</p>
<p _extended="true">关于 什么是 jar文件可以参看以下链接：</p>
<p _extended="true"><font _extended="true" face="宋体"><a href="http://www-128.ibm.com/developerworks/cn/java/j-jar/index.html">http://www-128.ibm.com/developerworks/cn/java/j-jar/index.html</a></font></p>
</div>
</div>
<br />
洒家测试的环境是：Ubuntu8.04+jdk 1.6+Eclipse 3.2。<br />
<br />
<img src ="http://www.blogjava.net/seesea/aggbug/217213.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/seesea/" target="_blank">SeesSea</a> 2008-07-24 16:19 <a href="http://www.blogjava.net/seesea/archive/2008/07/24/217213.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA实现CRC16校验</title><link>http://www.blogjava.net/seesea/archive/2008/07/24/217149.html</link><dc:creator>SeesSea</dc:creator><author>SeesSea</author><pubDate>Thu, 24 Jul 2008 04:11:00 GMT</pubDate><guid>http://www.blogjava.net/seesea/archive/2008/07/24/217149.html</guid><wfw:comment>http://www.blogjava.net/seesea/comments/217149.html</wfw:comment><comments>http://www.blogjava.net/seesea/archive/2008/07/24/217149.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/seesea/comments/commentRss/217149.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/seesea/services/trackbacks/217149.html</trackback:ping><description><![CDATA[<strong>要求：</strong><br />
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
<meta name="GENERATOR" content="OpenOffice.org 2.4  (Linux)" />
<style type="text/css">
<!--
@page { size: 21cm 29.7cm; margin: 2cm }
P { margin-bottom: 0.21cm }
-->
</style>
<p style="margin-bottom: 0cm; line-height: 150%;"><font face="黑体, SimHei"><font size="3"><span style="color: #3518ff;">
<p style="margin-bottom: 0cm; line-height: 150%;"><font face="黑体, SimHei"><font size="3">CRC</font></font><font size="3">循环冗余错误校验计算方法</font></p>
<p style="text-indent: 0.74cm; margin-top: 0.21cm; margin-bottom: 0cm; line-height: 150%;">
<font face="AR PL UMing HK, serif"><font size="3">CRC-16C(</font></font><font size="3">循环冗余错误校验</font><font face="AR PL UMing HK, serif"><font size="3">)</font></font><font size="3">生成</font><font face="AR PL UMing HK, serif"><font size="3">CRC-16</font></font><font size="3">校验字节的步聚如下：</font></p>
<p style="text-indent: 0.74cm; margin-top: 0.21cm; margin-bottom: 0cm; line-height: 150%;">
<font face="AR PL UMing HK, serif"><font size="3">(1)</font></font><font size="3">装入一个</font><font face="AR PL UMing HK, serif"><font size="3">16</font></font><font size="3">位寄存器，所有数位均为</font><font face="AR PL UMing HK, serif"><font size="3">1</font></font><font size="3">。</font></p>
<p style="text-indent: 0.74cm; margin-top: 0.21cm; margin-bottom: 0cm; line-height: 150%;">
<font face="AR PL UMing HK, serif"><font size="3">(2)</font></font><font size="3">该</font><font face="AR PL UMing HK, serif"><font size="3">16</font></font><font size="3">位寄存器的高位字节与开始</font><font face="AR PL UMing HK, serif"><font size="3">8</font></font><font size="3">位字节进行&#8220;异或&#8221;运算。运算结果放入这个</font><font face="AR PL UMing HK, serif"><font size="3">16</font></font><font size="3">位寄存器。</font></p>
<p style="text-indent: 0.74cm; margin-top: 0.21cm; margin-bottom: 0cm; line-height: 150%;">
<font face="AR PL UMing HK, serif"><font size="3">(3)</font></font><font size="3">把这个</font><font face="AR PL UMing HK, serif"><font size="3">16</font></font><font size="3">位寄存器向右移</font><font face="AR PL UMing HK, serif"><font size="3">1</font></font><font size="3">位。</font></p>
<p style="text-indent: 0.74cm; margin-top: 0.21cm; margin-bottom: 0cm; line-height: 150%;">
<font face="AR PL UMing HK, serif"><font size="3">(4a)</font></font><font size="3">若向右</font><font face="AR PL UMing HK, serif"><font size="3">(</font></font><font size="3">标记位</font><font face="AR PL UMing HK, serif"><font size="3">)</font></font><font size="3">移出的数位是</font><font face="AR PL UMing HK, serif"><font size="3">1</font></font><font size="3">，则生成多项式</font><font face="AR PL UMing HK, serif"><font size="3">1010000000000001</font></font><font size="3">和这个寄存器进行&#8220;异或&#8221;运算。</font></p>
<p style="text-indent: 0.74cm; margin-top: 0.21cm; margin-bottom: 0cm; line-height: 150%;">
<font face="AR PL UMing HK, serif"><font size="3">(4b)</font></font><font size="3">若向右移出的数位是</font><font face="AR PL UMing HK, serif"><font size="3">0</font></font><font size="3">，则返回</font><font face="AR PL UMing HK, serif"><font size="3">(3)</font></font><font size="3">。</font></p>
<p style="text-indent: 0.74cm; margin-top: 0.21cm; margin-bottom: 0cm; line-height: 150%;">
<font face="AR PL UMing HK, serif"><font size="3">(5)</font></font><font size="3">重处处</font><font face="AR PL UMing HK, serif"><font size="3">(3)</font></font><font size="3">和</font><font face="AR PL UMing HK, serif"><font size="3">(4)</font></font><font size="3">，直至移出</font><font face="AR PL UMing HK, serif"><font size="3">8</font></font><font size="3">位。</font></p>
<p style="text-indent: 0.74cm; margin-top: 0.21cm; margin-bottom: 0cm; line-height: 150%;">
<font face="AR PL UMing HK, serif"><font size="3">(6)</font></font><font size="3">另外</font><font face="AR PL UMing HK, serif"><font size="3">8</font></font><font size="3">位与该</font><font face="AR PL UMing HK, serif"><font size="3">16</font></font><font size="3">位寄存器进行&#8220;异或&#8221;运算。</font></p>
<p style="text-indent: 0.74cm; margin-top: 0.21cm; margin-bottom: 0cm; line-height: 150%;">
<font face="AR PL UMing HK, serif"><font size="3">(7)</font></font><font size="3">重处处</font><font face="AR PL UMing HK, serif"><font size="3">(3)-(6)</font></font><font size="3">，直至该报文所有字节均与</font><font face="AR PL UMing HK, serif"><font size="3">16</font></font><font size="3">位寄存器进行&#8220;异或&#8221;运算，并移位</font><font face="AR PL UMing HK, serif"><font size="3">8</font></font><font size="3">次。</font></p>
<p style="text-indent: 0.74cm; margin-top: 0.21cm; margin-bottom: 0cm; line-height: 150%;">
<font face="AR PL UMing HK, serif"><font size="3">(8)</font></font><font size="3">这个</font><font face="AR PL UMing HK, serif"><font size="3">16</font></font><font size="3">位寄存器的内容即</font><font face="AR PL UMing HK, serif"><font size="3">2</font></font><font size="3">字节</font><font face="AR PL UMing HK, serif"><font size="3">CRC</font></font><font size="3">错误校验。</font></p>
</span></font></font></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;CRC&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;CRC</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">&nbsp;data;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;reg</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;ploy</span><span style="color: #000000;">=</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[</span><span style="color: #000000;">2</span><span style="color: #000000;">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">&nbsp;Op;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;CRC(</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;source){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">初始化多项式</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;temp</span><span style="color: #000000;">=</span><span style="color: #000000;">0xA001</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ploy</span><span style="color: #000000;">=</span><span style="color: #000000;">InttoByteArray(temp,</span><span style="color: #000000;">2</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">初始化寄存器</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp</span><span style="color: #000000;">=</span><span style="color: #000000;">0xFFFF</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reg</span><span style="color: #000000;">=</span><span style="color: #000000;">InttoByteArray(temp,</span><span style="color: #000000;">2</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">source.length;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">获取数据</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data</span><span style="color: #000000;">=</span><span style="color: #000000;">source[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">与寄存器中数据进行异或操作</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reg[</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">(</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">)&nbsp;(reg[</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">^</span><span style="color: #000000;">data);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">移动数据</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;j</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;j</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">8</span><span style="color: #000000;">;j</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">获取数据的最后一位，即被移动出的数据判断是否与多项式异或</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Op</span><span style="color: #000000;">=</span><span style="color: #000000;">reg[</span><span style="color: #000000;">0</span><span style="color: #000000;">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">右移一位</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reg</span><span style="color: #000000;">=</span><span style="color: #000000;">InttoByteArray(ByteArraytoInt(reg)</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">2</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">如果移出数据为1</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">((Op</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">0x01</span><span style="color: #000000;">)</span><span style="color: #000000;">==</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">与多项式进行异或操作</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reg[</span><span style="color: #000000;">0</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">(</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">)&nbsp;(reg[</span><span style="color: #000000;">0</span><span style="color: #000000;">]</span><span style="color: #000000;">^</span><span style="color: #000000;">ploy[</span><span style="color: #000000;">0</span><span style="color: #000000;">]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reg[</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">(</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">)&nbsp;(reg[</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">^</span><span style="color: #000000;">ploy[</span><span style="color: #000000;">1</span><span style="color: #000000;">]);<br />
&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;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CRC</span><span style="color: #000000;">=</span><span style="color: #000000;">reg;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;getCRC()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;CRC;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;">格式化辅助函数</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;InttoByteArray(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;iSource,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;iArrayLen)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;bLocalArr&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[iArrayLen];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;(i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;(i&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;iArrayLen);&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bLocalArr[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">)(&nbsp;iSource</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">8</span><span style="color: #000000;">*</span><span style="color: #000000;">i&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0xFF</span><span style="color: #000000;">&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;bLocalArr;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;ByteArraytoInt(</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">[]&nbsp;bRefArr)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;iOutcome&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">byte</span><span style="color: #000000;">&nbsp;bLoop;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">bRefArr.length&nbsp;;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bLoop&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;bRefArr[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iOutcome</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;(bLoop&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0xFF</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">8</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;i);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;iOutcome;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />
}</span></div>
<p style="margin-bottom: 0cm; line-height: 150%;"><font face="黑体, SimHei"><font size="3"></font></font></p>
<p style="text-indent: 0.74cm; margin-top: 0.21cm; margin-bottom: 0cm; line-height: 150%;"><font size="3"></font></p>
开始把高低位搞混了，以为reg[0]是高位，调整了半天。郁闷！<br />
另外，好像CRC算法也有好多种，我就没在网上找到用户要求的这种算法。貌似这个算法是Modbus协议中的CRC校验方式。有待确认。<br />
<br />
<img src ="http://www.blogjava.net/seesea/aggbug/217149.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/seesea/" target="_blank">SeesSea</a> 2008-07-24 12:11 <a href="http://www.blogjava.net/seesea/archive/2008/07/24/217149.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ubuntu load/unload cycle count问题</title><link>http://www.blogjava.net/seesea/archive/2008/07/22/216497.html</link><dc:creator>SeesSea</dc:creator><author>SeesSea</author><pubDate>Mon, 21 Jul 2008 17:57:00 GMT</pubDate><guid>http://www.blogjava.net/seesea/archive/2008/07/22/216497.html</guid><wfw:comment>http://www.blogjava.net/seesea/comments/216497.html</wfw:comment><comments>http://www.blogjava.net/seesea/archive/2008/07/22/216497.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/seesea/comments/commentRss/216497.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/seesea/services/trackbacks/216497.html</trackback:ping><description><![CDATA[开始使用T61后就安装了Ubuntu。当时就看到说Ubuntu电源管理有缺陷，会损伤硬盘，没有太在意，只是查询了一下当时的load/unload cycle count的值，大约3000＋的样子。使用了半个月的今天，再次查询此值着实让人吃惊，已经到了惊人的近20000，按照这个速度，硬盘设计的600000次估计也就能维持10个月。找来解决方案如下，不知是否有效，试一段时间再说吧。毕竟硬盘热或者费电比起数据丢失都是太微不足道了。<br />
<br />
<br />
安装 laptop-mode，手动编辑 /etc/laptop-mode/laptop-mode.conf，大概 216 行左右，按如下修改：
<blockquote><br />
#                                                                                                                       <br />
# Should laptop mode tools control the hard drive power management settings?                                            <br />
#                                                                                                                       <br />
CONTROL_HD_POWERMGMT=1                                                                                                  <br />
<br />
<br />
#                                                                                                                       <br />
# Power management for HD (hdparm -B values)                                                                            <br />
#                                                                                                                       <br />
BATT_HD_POWERMGMT=192                                                                                                   <br />
LM_AC_HD_POWERMGMT=254                                                                                                  <br />
NOLM_AC_HD_POWERMGMT=254  <br />
</blockquote><br />
<br />
第 一项是为了让对硬盘参数的设置纳入 laptop-mode 管理（默认不开）。后面三个就是指定各种模式下的硬盘参数了。默认情况下是
1/255/255。1 这个值太激进（估计 3 分钟 1 次就是它干的），我改成了
192（电池模式下毕竟还是要省电的，虽然这个值在不同品牌的硬盘可能表现差异很大，但是根据我搜索的结果，设置成 192
的时候硬盘已经很难有机会自行 unload 了）。后两个默认值 255 是可以不改的，但是 255 是直接关闭
APM（高级电源管理），据说某些硬盘可能会忽略 255 这个极端值，所以改成 254（我的出发点其实还是不想舍弃 APM）。<br />
<br />
然后是修改 /etc/default/acpi-support 这个文件。文件末尾两个参数，按如下设置：<br />
<blockquote><br />
# Switch to laptop-mode on battery power - off by default as it causes odd                                              <br />
# hangs on some machines                                                                                                <br />
ENABLE_LAPTOP_MODE=true                                                                                                 <br />
<br />
# Spindown time on battery                                                                                              <br />
SPINDOWN_TIME=60    <br />
</blockquote><br />
<br />
第一项是开启 laptop-mode，第二项似乎是控制用来控制硬盘空闲多长时间自动断电的，可根据自己喜好修改（默认值是 12）。<br />
<br />
经几天观察，基本上这个 Load Cycle Count 只在关机的时候才会增加了。<br />
<br />
<span style="font-weight: bold;">附：监测 Load Cycle Count 的方法</span><br />
<blockquote><br />
sudo smartctl -a /dev/sda<br />
</blockquote><br />
<br />
设备可能是 /dev/hda（IDE 硬盘）或 /dev/sdb（第二块硬盘）等等。如果觉得输出太多，可以加上 grep 193。<br />
<br />
<br />
sudo smartctl -a /dev/sda | grep 193<br />
<br />
补充：<br />
2008年07月24日<br />
试运行了几天，至少从开机到关机，Ubuntu中的这个值不再变化。不过好像是硬盘比以前热一些了，或许是心里作用。但是在Vista中这个数据还在增加，具体值没有算过，最近项目是Linux里的，不怎么用Win系统，等常用时候在关注吧。<br />
<img src ="http://www.blogjava.net/seesea/aggbug/216497.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/seesea/" target="_blank">SeesSea</a> 2008-07-22 01:57 <a href="http://www.blogjava.net/seesea/archive/2008/07/22/216497.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA基本数据类型与其他语言数据类型之间的转换方法 (ZT)</title><link>http://www.blogjava.net/seesea/archive/2008/07/20/216159.html</link><dc:creator>SeesSea</dc:creator><author>SeesSea</author><pubDate>Sun, 20 Jul 2008 04:02:00 GMT</pubDate><guid>http://www.blogjava.net/seesea/archive/2008/07/20/216159.html</guid><wfw:comment>http://www.blogjava.net/seesea/comments/216159.html</wfw:comment><comments>http://www.blogjava.net/seesea/archive/2008/07/20/216159.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/seesea/comments/commentRss/216159.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/seesea/services/trackbacks/216159.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在写网络通信程序的时候非常非常有用<br>通信格式转换<br>Java和一些windows编程语言如c、c++、delphi所写的网络程序进行通讯时，需要进行相应的转换<br>高、低字节之间的转换<br>windows的字节序为低字节开头<br>linux,unix的字节序为高字节开头<br>java则无论平台变化，都是高字节开头&nbsp;&nbsp;<a href='http://www.blogjava.net/seesea/archive/2008/07/20/216159.html'>阅读全文</a><img src ="http://www.blogjava.net/seesea/aggbug/216159.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/seesea/" target="_blank">SeesSea</a> 2008-07-20 12:02 <a href="http://www.blogjava.net/seesea/archive/2008/07/20/216159.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XML读取</title><link>http://www.blogjava.net/seesea/archive/2008/07/19/216105.html</link><dc:creator>SeesSea</dc:creator><author>SeesSea</author><pubDate>Sat, 19 Jul 2008 15:09:00 GMT</pubDate><guid>http://www.blogjava.net/seesea/archive/2008/07/19/216105.html</guid><wfw:comment>http://www.blogjava.net/seesea/comments/216105.html</wfw:comment><comments>http://www.blogjava.net/seesea/archive/2008/07/19/216105.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/seesea/comments/commentRss/216105.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/seesea/services/trackbacks/216105.html</trackback:ping><description><![CDATA[<p>今天需要在C#下读取XML，查了N多文章，都写的太复杂。洒家只要读取一些基本信息做系统初始化用。没法子，只好翻出以前代码。留在这里一份，以备后查。<br />
另，前几天找JAVA的读取XML，网上很多也是比较繁复。费了点力气才搞定，回头另开一篇粘进去。<br />
<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">XmlTextReader&nbsp;xmlReader&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;XmlTextReader(</span><span style="color: #000000">"</span><span style="color: #000000">path/filename.xml</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(xmlReader.Read())<br />
</span><span style="color: #008080">&nbsp;</span><span style="color: #000000"><img id="Codehighlighter1_91_267_Open_Image" onclick="this.style.display='none'; Codehighlighter1_91_267_Open_Text.style.display='none'; Codehighlighter1_91_267_Closed_Image.style.display='inline'; Codehighlighter1_91_267_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_91_267_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_91_267_Closed_Text.style.display='none'; Codehighlighter1_91_267_Open_Image.style.display='inline'; Codehighlighter1_91_267_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_91_267_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_91_267_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(xmlReader.Name&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">XXX</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #008080">&nbsp;</span><span style="color: #000000"><img id="Codehighlighter1_130_265_Open_Image" onclick="this.style.display='none'; Codehighlighter1_130_265_Open_Text.style.display='none'; Codehighlighter1_130_265_Closed_Image.style.display='inline'; Codehighlighter1_130_265_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_130_265_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_130_265_Closed_Text.style.display='none'; Codehighlighter1_130_265_Open_Image.style.display='inline'; Codehighlighter1_130_265_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_130_265_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_130_265_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(xmlReader.Read()&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;xmlReader.NodeType&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;XmlNodeType.Text)<br />
</span><span style="color: #008080">&nbsp;</span><span style="color: #000000"><img id="Codehighlighter1_212_258_Open_Image" onclick="this.style.display='none'; Codehighlighter1_212_258_Open_Text.style.display='none'; Codehighlighter1_212_258_Closed_Image.style.display='inline'; Codehighlighter1_212_258_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_212_258_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_212_258_Closed_Text.style.display='none'; Codehighlighter1_212_258_Open_Image.style.display='inline'; Codehighlighter1_212_258_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_212_258_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_212_258_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xxx&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;xmlReader.Value;<br />
</span><span style="color: #008080">&nbsp;</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #000000">&nbsp;<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #000000">&nbsp;<img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
<br />
By SeeSea 
<img src ="http://www.blogjava.net/seesea/aggbug/216105.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/seesea/" target="_blank">SeesSea</a> 2008-07-19 23:09 <a href="http://www.blogjava.net/seesea/archive/2008/07/19/216105.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>