﻿<?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/site120/</link><description>不要自我设限，一切皆有可能！凝聚，积累，量变……  &lt;b&gt;心领神会，勤加练习！&lt;/b&gt; 大处着眼，小处着手。(MSN:site120@163.com)</description><language>zh-cn</language><lastBuildDate>Thu, 24 Jul 2008 20:01:49 GMT</lastBuildDate><pubDate>Thu, 24 Jul 2008 20:01:49 GMT</pubDate><ttl>60</ttl><item><title>兴趣的本质</title><link>http://www.blogjava.net/site120/archive/2008/05/08/199147.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Thu, 08 May 2008 02:09:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2008/05/08/199147.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/199147.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2008/05/08/199147.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/199147.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/199147.html</trackback:ping><description><![CDATA[<p>我们对某一方面有兴趣<br />
<br />
从本质上来讲， 就是对某一方面有很强的求知欲望。<br />
<br />
兴趣，就是欲望驱动。</p>
<img src ="http://www.blogjava.net/site120/aggbug/199147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2008-05-08 10:09 <a href="http://www.blogjava.net/site120/archive/2008/05/08/199147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>推导：管理学的精髓-赏与罚</title><link>http://www.blogjava.net/site120/archive/2008/05/05/198316.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Mon, 05 May 2008 01:34:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2008/05/05/198316.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/198316.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2008/05/05/198316.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/198316.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/198316.html</trackback:ping><description><![CDATA[<p>1) 万物一切的行为驱动都遵循：追求快乐，避免痛苦。<br />
<br />
2) <br />
&nbsp;&nbsp;&nbsp;&nbsp; 赏的精髓：给人带来利益，使人快乐。<br />
&nbsp;&nbsp;&nbsp;&nbsp; 罚的精髓：给你造成伤害，或损害利益，使人痛苦。<br />
<br />
3) &nbsp;根据1) 可以推出，要管好人， 用好人，必须要有赏有罚，而且有实实在在的赏与罚。</p>
<img src ="http://www.blogjava.net/site120/aggbug/198316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2008-05-05 09:34 <a href="http://www.blogjava.net/site120/archive/2008/05/05/198316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IE中Js执行的一个Bugs - document.getElementsByName()</title><link>http://www.blogjava.net/site120/archive/2008/02/19/180705.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Tue, 19 Feb 2008 08:31:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2008/02/19/180705.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/180705.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2008/02/19/180705.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/180705.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/180705.html</trackback:ping><description><![CDATA[<p>当执行如下代码时：点击输入框时 IE弹出0， Firefox弹出1，Opera弹出1<br />
显然IE在执行document.body.appendChild()语句后并没有刷新name为("abc_name")的元素列表<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: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br />
&nbsp;&nbsp;&nbsp;&nbsp;window.onload&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;input&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;document.createElement(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">input</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input.name</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">abc_name</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input.onclick&nbsp;</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert(document.getElementsByName(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">abc_name</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).length);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.body.appendChild(input);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
fasd<br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
<img src ="http://www.blogjava.net/site120/aggbug/180705.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2008-02-19 16:31 <a href="http://www.blogjava.net/site120/archive/2008/02/19/180705.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DB2 常用命令</title><link>http://www.blogjava.net/site120/archive/2008/01/13/174935.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Sun, 13 Jan 2008 02:08:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2008/01/13/174935.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/174935.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2008/01/13/174935.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/174935.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/174935.html</trackback:ping><description><![CDATA[<strong><br />
DB2&nbsp;系统命令</strong> <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dasauto&nbsp;－&nbsp;自动启动&nbsp;DB2&nbsp;管理服务器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dascrt&nbsp;－&nbsp;创建&nbsp;DB2&nbsp;管理服务器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dasdrop&nbsp;－&nbsp;除去&nbsp;DB2&nbsp;管理服务器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dasmigr&nbsp;－&nbsp;迁移&nbsp;DB2&nbsp;管理服务器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dasupdt&nbsp;－&nbsp;更新&nbsp;DB2&nbsp;管理服务器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2_deinstall&nbsp;－&nbsp;卸载&nbsp;DB2&nbsp;产品或功能部件&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2_install&nbsp;－&nbsp;安装&nbsp;DB2&nbsp;产品&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2admin&nbsp;－&nbsp;DB2&nbsp;管理服务器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2adutl&nbsp;－&nbsp;管理&nbsp;TSM&nbsp;内的&nbsp;DB2&nbsp;对象&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2advis&nbsp;－&nbsp;DB2&nbsp;设计顾问程序&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2audit&nbsp;－&nbsp;审计设施管理员工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2batch&nbsp;－&nbsp;基准程序工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2bfd&nbsp;－&nbsp;绑定文件描述工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2ca&nbsp;－&nbsp;启动&#8220;配置助手&#8221;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2cap&nbsp;－&nbsp;CLI/ODBC&nbsp;静态程序包绑定工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2cat&nbsp;－&nbsp;系统目录分析&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2cc&nbsp;－&nbsp;启动控制中心&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2cfexp&nbsp;－&nbsp;连接配置导出工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2cfimp&nbsp;－&nbsp;连接配置导入工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2chglibpath&nbsp;－&nbsp;修改嵌入的运行时库搜索路径&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2chgpath&nbsp;－&nbsp;更改嵌入的运行时路径&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2ckbkp&nbsp;－&nbsp;检查备份&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2ckmig&nbsp;－&nbsp;数据库预迁移工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2ckrst&nbsp;－&nbsp;检查增量复原映像序列&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2cli&nbsp;－&nbsp;DB2&nbsp;交互式&nbsp;CLI&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2cmd&nbsp;－&nbsp;打开&nbsp;DB2&nbsp;命令窗口&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2dart&nbsp;－&nbsp;数据库分析和报告工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2daslevel&nbsp;－&nbsp;显示&nbsp;DAS&nbsp;级别&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2dclgn&nbsp;－&nbsp;声明生成器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2diag&nbsp;－&nbsp;db2diag.log&nbsp;分析工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2drdat&nbsp;－&nbsp;DRDA&nbsp;跟踪&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2drvmp&nbsp;－&nbsp;DB2&nbsp;数据库驱动器映射&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2empfa&nbsp;－&nbsp;启用多页文件分配&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2envar.bat&nbsp;－&nbsp;设置当前命令窗口的环境&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2eva&nbsp;－&nbsp;事件分析器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2evmon&nbsp;－&nbsp;事件监视器生产率工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2evtbl&nbsp;－&nbsp;生成事件监视器目标表定义&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2exfmt&nbsp;－&nbsp;说明表格式&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2exmig&nbsp;－&nbsp;迁移说明表命令&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2expln&nbsp;－&nbsp;SQL&nbsp;和&nbsp;XQuery&nbsp;说明&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2extsec&nbsp;－&nbsp;设置&nbsp;DB2&nbsp;对象的许可权&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2flsn&nbsp;－&nbsp;查找日志序号&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2fm&nbsp;－&nbsp;DB2&nbsp;故障监视器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2fs&nbsp;－&nbsp;第一步&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2gcf&nbsp;－&nbsp;控制&nbsp;DB2&nbsp;实例&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2gov&nbsp;－&nbsp;DB2&nbsp;控制器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2govlg&nbsp;－&nbsp;DB2&nbsp;控制器日志查询&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2gpmap&nbsp;－&nbsp;获取分布图&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2hc&nbsp;－&nbsp;启动运行状况中心&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2iauto&nbsp;－&nbsp;自动启动实例&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2iclus&nbsp;－&nbsp;Microsoft&nbsp;Cluster&nbsp;Server&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2icrt&nbsp;－&nbsp;创建实例&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2idrop&nbsp;－&nbsp;除去实例&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2ilist&nbsp;－&nbsp;列示实例&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2imigr&nbsp;－&nbsp;迁移实例&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2inidb&nbsp;－&nbsp;初始化镜像数据库&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2inspf&nbsp;－&nbsp;格式化检查结果&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2isetup&nbsp;－&nbsp;启动实例创建界面&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2iupdt&nbsp;－&nbsp;更新实例&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2jdbcbind&nbsp;－&nbsp;DB2&nbsp;JDBC&nbsp;程序包绑定程序&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2ldcfg&nbsp;－&nbsp;配置&nbsp;LDAP&nbsp;环境&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2level&nbsp;－&nbsp;显示&nbsp;DB2&nbsp;服务级别&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2licm&nbsp;－&nbsp;许可证管理工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2listvolumes&nbsp;－&nbsp;显示所有磁盘卷的&nbsp;GUID&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2logsforrfwd&nbsp;－&nbsp;列示前滚恢复所需的日志&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2look&nbsp;－&nbsp;DB2&nbsp;统计信息和&nbsp;DDL&nbsp;抽取工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2ls&nbsp;－&nbsp;列出已安装的&nbsp;DB2&nbsp;产品和功能部件&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2move&nbsp;－&nbsp;数据库移动工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2mqlsn&nbsp;－&nbsp;MQ&nbsp;侦听器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2mscs&nbsp;－&nbsp;设置&nbsp;Windows&nbsp;故障转移实用程序&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2mtrk&nbsp;－&nbsp;内存跟踪程序&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2nchg&nbsp;－&nbsp;更改数据库分区服务器配置&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2ncrt&nbsp;－&nbsp;将数据库分区服务器添加至实例&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2ndrop&nbsp;－&nbsp;从实例中删除数据库分区服务器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2osconf&nbsp;－&nbsp;内核参数值的实用程序&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2pd&nbsp;－&nbsp;监视&nbsp;DB2&nbsp;数据库并对它进行故障诊断&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2pdcfg&nbsp;－&nbsp;为问题确定行为配置&nbsp;DB2&nbsp;数据库&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2perfc&nbsp;－&nbsp;复位数据库性能值&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2perfi&nbsp;－&nbsp;性能计数器注册实用程序&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2perfr&nbsp;－&nbsp;性能监视器注册工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2rbind&nbsp;－&nbsp;重新绑定所有程序包&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2relocatedb&nbsp;－&nbsp;重定位数据库&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2rfpen&nbsp;－&nbsp;复位前滚暂挂状态&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2rspgn&nbsp;－&nbsp;响应文件生成器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2sampl&nbsp;－&nbsp;创建样本数据库&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2set&nbsp;－&nbsp;DB2&nbsp;概要文件注册表&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2setup&nbsp;－&nbsp;安装&nbsp;DB2&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2sql92&nbsp;－&nbsp;符合&nbsp;SQL92&nbsp;的&nbsp;SQL&nbsp;语句处理器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2sqljbind&nbsp;－&nbsp;SQLJ&nbsp;概要文件绑定程序&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2sqljcustomize&nbsp;－&nbsp;SQLJ&nbsp;概要文件定制程序&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2sqljprint&nbsp;－&nbsp;SQLJ&nbsp;概要文件打印程序&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2start&nbsp;－&nbsp;启动&nbsp;DB2&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2stop&nbsp;－&nbsp;停止&nbsp;DB2&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2support&nbsp;－&nbsp;问题分析和环境收集工具&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2swtch&nbsp;－&nbsp;切换缺省&nbsp;DB2&nbsp;副本&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2sync&nbsp;－&nbsp;启动&nbsp;DB2&nbsp;同步器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2systray&nbsp;－&nbsp;启动&nbsp;DB2&nbsp;系统任务栏&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2tapemgr&nbsp;－&nbsp;管理磁带上的日志文件&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2tbst&nbsp;－&nbsp;获取表空间状态&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2trc&nbsp;－&nbsp;跟踪&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2uiddl&nbsp;－&nbsp;准备转换为&nbsp;V5&nbsp;语义的唯一索引转换&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2undgp&nbsp;－&nbsp;撤销执行特权&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2unins&nbsp;－&nbsp;卸载&nbsp;DB2&nbsp;数据库产品&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2untag&nbsp;－&nbsp;释放容器标记&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2updv9&nbsp;－&nbsp;将数据库更新为版本&nbsp;9&nbsp;当前级别&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2xdbmig&nbsp;－&nbsp;迁移&nbsp;XSR&nbsp;对象&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2xprt&nbsp;－&nbsp;格式化陷阱文件&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;disable_MQFunctions&nbsp;－&nbsp;禁用&nbsp;WebSphere&nbsp;MQ&nbsp;函数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doce_deinstall&nbsp;－&nbsp;卸载&nbsp;DB2&nbsp;信息中心&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doce_install&nbsp;－&nbsp;安装&nbsp;DB2&nbsp;信息中心&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enable_MQFunctions&nbsp;－&nbsp;启用&nbsp;WebSphere&nbsp;MQ&nbsp;函数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;installFixPack&nbsp;－&nbsp;更新已安装的&nbsp;DB2&nbsp;产品&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setup&nbsp;－&nbsp;安装&nbsp;DB2&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqlj&nbsp;－&nbsp;SQLJ&nbsp;转换程序&nbsp; <br />
<br />
<strong>DB2&nbsp;数据库管理器配置参数</strong>&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;agent_stack_sz&nbsp;－&nbsp;代理程序堆栈大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;agentpri&nbsp;－&nbsp;代理程序的优先级&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aslheapsz&nbsp;－&nbsp;应用程序支持层堆大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;audit_buf_sz&nbsp;－&nbsp;审计缓冲区大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;authentication&nbsp;－&nbsp;认证类型&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catalog_noauth&nbsp;－&nbsp;允许进行编目，无需权限&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clnt_krb_plugin&nbsp;－&nbsp;客户机&nbsp;Kerberos&nbsp;插件&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clnt_pw_plugin&nbsp;－&nbsp;客户机用户标识密码插件&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comm_bandwidth&nbsp;－&nbsp;通信带宽&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn_elapse&nbsp;－&nbsp;连接耗用时间&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpuspeed&nbsp;－&nbsp;CPU&nbsp;速度&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dft_account_str&nbsp;－&nbsp;缺省对方付费帐户&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dft_monswitches&nbsp;－&nbsp;缺省数据库系统监视器开关&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dftdbpath&nbsp;－&nbsp;缺省数据库路径&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;diaglevel&nbsp;－&nbsp;诊断错误捕获级别&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;diagpath&nbsp;－&nbsp;诊断数据目录路径&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dir_cache&nbsp;－&nbsp;目录高速缓存支持&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;discover&nbsp;－&nbsp;发现方式&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;discover_inst&nbsp;－&nbsp;发现服务器实例&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fcm_num_buffers&nbsp;－&nbsp;FCM&nbsp;缓冲区数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fcm_num_channels&nbsp;－&nbsp;FCM&nbsp;通道数配置参数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fed_noauth&nbsp;－&nbsp;绕过联合认证&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;federated&nbsp;－&nbsp;联合数据库系统支持&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fenced_pool&nbsp;－&nbsp;最大受防护进程数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;group_plugin&nbsp;－&nbsp;组插件&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;health_mon&nbsp;－&nbsp;运行状况监视&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;indexrec&nbsp;－&nbsp;索引重新创建时间&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instance_memory&nbsp;－&nbsp;实例内存&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intra_parallel&nbsp;－&nbsp;启用分区内并行性&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java_heap_sz&nbsp;－&nbsp;最大&nbsp;Java&nbsp;解释器堆大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jdk_path&nbsp;－&nbsp;Java&nbsp;软件开发者工具箱安装路径&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keepfenced&nbsp;－&nbsp;保持受防护进程&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;local_gssplugin&nbsp;－&nbsp;用于本地实例级别权限的&nbsp;GSS&nbsp;API&nbsp;插件&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_connections&nbsp;－&nbsp;客户机连接的最大数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_connretries&nbsp;－&nbsp;节点连接重试次数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_coordagents&nbsp;－&nbsp;最大协调代理进程数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_querydegree&nbsp;－&nbsp;最大查询并行度&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_time_diff&nbsp;－&nbsp;节点间的最大时差&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxagents&nbsp;－&nbsp;最大代理进程数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxcagents&nbsp;－&nbsp;并发代理进程的最大数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxtotfilop&nbsp;－&nbsp;最大的已打开文件总数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mon_heap_sz&nbsp;－&nbsp;数据库系统监视器堆大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nname&nbsp;－&nbsp;NetBIOS&nbsp;工作站名称&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nodetype&nbsp;－&nbsp;机器节点类型&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notifylevel&nbsp;－&nbsp;通知级别&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_initagents&nbsp;－&nbsp;池中的代理进程的初始数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_initfenced&nbsp;－&nbsp;受防护进程的初始数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_poolagents&nbsp;－&nbsp;代理进程池大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numdb&nbsp;－&nbsp;包括主机和&nbsp;iSeries&nbsp;数据库的同时活动的数据库的最大数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query_heap_sz&nbsp;－&nbsp;查询堆大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;release&nbsp;－&nbsp;配置文件发行版级别&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resync_interval&nbsp;－&nbsp;事务再同步时间间隔&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rqrioblk&nbsp;－&nbsp;客户机&nbsp;I/O&nbsp;块大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sheapthres&nbsp;－&nbsp;排序堆阈值&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spm_log_file_sz&nbsp;－&nbsp;同步点管理器日志文件大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spm_log_path&nbsp;－&nbsp;同步点管理器日志文件路径&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spm_max_resync&nbsp;－&nbsp;同步点管理器再同步代理进程限制&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spm_name&nbsp;－&nbsp;同步点管理器名称&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srvcon_auth&nbsp;－&nbsp;服务器中的入局连接的认证类型&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srvcon_gssplugin_list&nbsp;－&nbsp;服务器中的入局连接的&nbsp;GSS&nbsp;API&nbsp;插件的列表&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srvcon_pw_plugin&nbsp;－&nbsp;服务器中的入局连接的用户标识密码插件&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srv_plugin_mode&nbsp;－&nbsp;服务器插件方式&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;start_stop_time&nbsp;－&nbsp;启动和停止超时&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;svcename&nbsp;－&nbsp;TCP/IP&nbsp;服务名称&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysadm_group&nbsp;－&nbsp;系统管理权限组名&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysctrl_group&nbsp;－&nbsp;系统控制权限组名&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysmaint_group&nbsp;－&nbsp;系统维护权限组名&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysmon_group&nbsp;－&nbsp;系统监视权限组名&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tm_database&nbsp;－&nbsp;事务管理器数据库名称&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tp_mon_name&nbsp;－&nbsp;事务处理器监视器名称&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trust_allclnts&nbsp;－&nbsp;信赖所有客户机&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trust_clntauth&nbsp;－&nbsp;可信的客户机认证&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;util_impact_lim&nbsp;－&nbsp;实例影响策略&nbsp; <br />
<br />
<strong>DB2&nbsp;数据库系统配置参数</strong>&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alt_collate&nbsp;－&nbsp;备用整理顺序&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;app_ctl_heap_sz&nbsp;－&nbsp;应用程序控制堆大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appgroup_mem_sz&nbsp;－&nbsp;应用程序组内存集的最大大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;applheapsz&nbsp;－&nbsp;应用程序堆大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;archretrydelay&nbsp;－&nbsp;发生错误时的归档重试延迟&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autonomic_switches&nbsp;－&nbsp;自动维护开关&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autorestart&nbsp;－&nbsp;启用自动重新启动&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;avg_appls&nbsp;－&nbsp;活动应用程序的平均数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;backup_pending&nbsp;－&nbsp;备份暂挂指示符&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;blk_log_dsk_ful&nbsp;－&nbsp;日志磁盘已满时挂起&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catalogcache_sz&nbsp;－&nbsp;目录高速缓存大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chngpgs_thresh&nbsp;－&nbsp;已更改的页阈值&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;codepage&nbsp;－&nbsp;数据库的代码页&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;codeset&nbsp;－&nbsp;数据库的代码集&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collate_info&nbsp;－&nbsp;整理信息&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;country/region&nbsp;－&nbsp;数据库地域代码&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;database_consistent&nbsp;－&nbsp;数据库是一致的&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;database_level&nbsp;－&nbsp;数据库发行版级别&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;database_memory&nbsp;－&nbsp;数据库共享内存大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db_mem_thresh&nbsp;－&nbsp;数据库内存阈值配置参数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbheap&nbsp;－&nbsp;数据库堆&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dft_degree&nbsp;－&nbsp;缺省度&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dft_extent_sz&nbsp;－&nbsp;表空间的缺省扩展数据块大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dft_loadrec_ses&nbsp;－&nbsp;装入恢复会话的缺省数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dft_mttb_types&nbsp;－&nbsp;对于优化配置参数缺省保留的表类型&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dft_prefetch_sz&nbsp;－&nbsp;缺省预取大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dft_queryopt&nbsp;－&nbsp;缺省查询优化类&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dft_refresh_age&nbsp;－&nbsp;缺省刷新寿命&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dft_sqlmathwarn&nbsp;－&nbsp;出现算术异常时继续&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;discover_db&nbsp;－&nbsp;发现数据库&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dlchktime&nbsp;－&nbsp;检查死锁的时间间隔&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dyn_query_mgmt&nbsp;－&nbsp;动态&nbsp;SQL&nbsp;和&nbsp;XQuery&nbsp;查询管理配置参数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;failarchpath&nbsp;－&nbsp;故障转移日志归档路径&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;groupheap_ratio&nbsp;－&nbsp;应用程序组堆的内存百分比&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hadr_db_role&nbsp;－&nbsp;HADR&nbsp;数据库角色&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hadr_local_host&nbsp;－&nbsp;HADR&nbsp;本地主机名&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hadr_local_svc&nbsp;－&nbsp;HADR&nbsp;本地服务名称&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hadr_remote_host&nbsp;－&nbsp;HADR&nbsp;远程主机名&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hadr_remote_inst&nbsp;－&nbsp;远程服务器的&nbsp;HADR&nbsp;实例名&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hadr_remote_svc&nbsp;－&nbsp;HADR&nbsp;远程服务名称&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hadr_syncmode&nbsp;－&nbsp;处于对等状态的日志写的&nbsp;HADR&nbsp;同步方式&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hadr_timeout&nbsp;－&nbsp;HADR&nbsp;超时值&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jdk_64_path&nbsp;－&nbsp;64&nbsp;位&nbsp;Java&nbsp;软件开发者工具箱安装路径&nbsp;DAS&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;locklist&nbsp;－&nbsp;锁定列表的最大存储量&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;locktimeout&nbsp;－&nbsp;锁定超时&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log_retain_status&nbsp;－&nbsp;日志保留状态指示符&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logarchmeth1&nbsp;－&nbsp;主日志归档方法&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logarchmeth2&nbsp;－&nbsp;辅助日志归档方法&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logarchopt1&nbsp;－&nbsp;主日志归档选项&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logarchopt2&nbsp;－&nbsp;辅助日志归档选项&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logbufsz&nbsp;－&nbsp;日志缓冲区大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logfilsiz&nbsp;－&nbsp;日志文件的大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loghead&nbsp;－&nbsp;第一个活动日志文件&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logindexbuild&nbsp;－&nbsp;已创建的日志索引页&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logpath&nbsp;－&nbsp;日志文件的位置&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logprimary&nbsp;－&nbsp;主日志文件数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logretain&nbsp;－&nbsp;启用日志保留&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logsecond&nbsp;－&nbsp;辅助日志文件数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max_log&nbsp;－&nbsp;每个事务的最大日志&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxappls&nbsp;－&nbsp;活动应用程序的最大数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxfilop&nbsp;－&nbsp;每个应用程序打开的数据库文件的最大数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxlocks&nbsp;－&nbsp;升级之前锁定列表的最大百分比&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min_dec_div_3&nbsp;－&nbsp;十进制除法，小数位为&nbsp;3&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mincommit&nbsp;－&nbsp;针对组的落实数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mirrorlogpath&nbsp;－&nbsp;镜像日志路径&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multipage_alloc&nbsp;－&nbsp;已启用的多页文件分配&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newlogpath&nbsp;－&nbsp;更改数据库日志路径&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_db_backups&nbsp;－&nbsp;数据库备份数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_freqvalues&nbsp;－&nbsp;保留的高频值数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_iocleaners&nbsp;－&nbsp;异步页清除程序的数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_ioservers&nbsp;－&nbsp;I/O&nbsp;服务器数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_log_span&nbsp;－&nbsp;编号日志范围&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;num_quantiles&nbsp;－&nbsp;列的分位数的数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numarchretry&nbsp;－&nbsp;发生错误时的重试次数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numsegs&nbsp;－&nbsp;SMS&nbsp;容器的缺省数目&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;overflowlogpath&nbsp;－&nbsp;溢出日志路径&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pagesize&nbsp;－&nbsp;数据库缺省页大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pckcachesz&nbsp;－&nbsp;程序包高速缓存大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rec_his_retentn&nbsp;－&nbsp;恢复历史记录保留期&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;restore_pending&nbsp;－&nbsp;复原暂挂&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;restrict_access&nbsp;－&nbsp;数据库访问权受限配置参数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rollfwd_pending&nbsp;－&nbsp;前滚暂挂指示符&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;self_tuning_mem&nbsp;－&nbsp;自调整内存配置参数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;seqdetect&nbsp;－&nbsp;顺序检测标志&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sheapthres_shr&nbsp;－&nbsp;共享排序的排序堆阈值&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;softmax&nbsp;－&nbsp;恢复范围和软检查点时间间隔&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sortheap&nbsp;－&nbsp;排序堆大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stat_heap_sz&nbsp;－&nbsp;统计信息堆大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmtheap&nbsp;－&nbsp;语句堆大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;territory&nbsp;－&nbsp;数据库地域&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tpname&nbsp;－&nbsp;APPC&nbsp;事务程序名&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trackmod&nbsp;－&nbsp;启用跟踪已修改的页&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tsm_mgmtclass&nbsp;－&nbsp;Tivoli&nbsp;Storage&nbsp;Manager&nbsp;管理类&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tsm_nodename&nbsp;－&nbsp;Tivoli&nbsp;Storage&nbsp;Manager&nbsp;节点名&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tsm_owner&nbsp;－&nbsp;Tivoli&nbsp;Storage&nbsp;Manager&nbsp;所有者名称&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tsm_password&nbsp;－&nbsp;Tivoli&nbsp;Storage&nbsp;Manager&nbsp;密码&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use_sna_auth&nbsp;－&nbsp;使用&nbsp;SNA&nbsp;认证&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user_exit_status&nbsp;－&nbsp;用户出口状态指示符&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;userexit&nbsp;－&nbsp;启用用户出口&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;util_heap_sz&nbsp;－&nbsp;实用程序堆大小&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vendoropt&nbsp;－&nbsp;提供方选项&nbsp; <br />
<br />
DB2&nbsp;管理服务器（DAS）配置参数&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;authentication&nbsp;－&nbsp;认证类型&nbsp;DAS&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contact_host&nbsp;－&nbsp;联系人列表的位置&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;das_codepage&nbsp;－&nbsp;DAS&nbsp;代码页&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;das_territory&nbsp;－&nbsp;DAS&nbsp;地域&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dasadm_group&nbsp;－&nbsp;DAS&nbsp;管理权限组名&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db2system&nbsp;－&nbsp;DB2&nbsp;服务器系统的名称&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;discover&nbsp;－&nbsp;DAS&nbsp;发现方式&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exec_exp_task&nbsp;－&nbsp;执行到期的任务&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jdk_path&nbsp;－&nbsp;Java&nbsp;软件开发者工具箱安装路径&nbsp;DAS&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sched_enable&nbsp;－&nbsp;调度程序方式&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sched_userid&nbsp;－&nbsp;调度程序用户标识&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;smtp_server&nbsp;－&nbsp;SMTP&nbsp;服务器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toolscat_db&nbsp;－&nbsp;工具目录数据库&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toolscat_inst&nbsp;－&nbsp;工具目录数据库实例&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;toolscat_schema&nbsp;－&nbsp;工具目录数据库模式<br />
<br />
<a href="http://www.longtengwang.com/article/shujuku/db2/200711/7396.html">摘自：http://www.longtengwang.com/article/shujuku/db2/200711/7396.html</a>
<img src ="http://www.blogjava.net/site120/aggbug/174935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2008-01-13 10:08 <a href="http://www.blogjava.net/site120/archive/2008/01/13/174935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>商业计划书的核心内容</title><link>http://www.blogjava.net/site120/archive/2007/12/01/164545.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Sat, 01 Dec 2007 13:33:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2007/12/01/164545.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/164545.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2007/12/01/164545.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/164545.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/164545.html</trackback:ping><description><![CDATA[1） 做什么？<br />
2） 准备赚谁的钱？<br />
3） 怎么样赚他们的钱？<br />
4） 能赚多少？
<img src ="http://www.blogjava.net/site120/aggbug/164545.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2007-12-01 21:33 <a href="http://www.blogjava.net/site120/archive/2007/12/01/164545.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DB2 两种分页方式</title><link>http://www.blogjava.net/site120/archive/2007/11/28/163749.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Wed, 28 Nov 2007 09:14:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2007/11/28/163749.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/163749.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2007/11/28/163749.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/163749.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/163749.html</trackback:ping><description><![CDATA[1， <br />
SELECT * FROM (Select 字段1,字段2,字段3,rownumber() over(ORDER BY 排序用的列名 ASC) AS rn from 表名) AS a1 WHERE a1.rn BETWEEN 10 AND 20<br />
<br />
以上表示提取第10到20的纪录<br />
<br />
2 ， <br />
select * from BALANCE order by id desc fetch first 10 row only
<img src ="http://www.blogjava.net/site120/aggbug/163749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2007-11-28 17:14 <a href="http://www.blogjava.net/site120/archive/2007/11/28/163749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>思考是世界上最艰苦的工作,这就是为什么很少人从事这项工作的原因</title><link>http://www.blogjava.net/site120/archive/2007/11/26/163060.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Sun, 25 Nov 2007 23:59:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2007/11/26/163060.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/163060.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2007/11/26/163060.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/163060.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/163060.html</trackback:ping><description><![CDATA[<p align="left">思考是世界上最艰苦的工作,这就是为什么很少人从事这项工作的原因<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;亨利.福特</p>
<img src ="http://www.blogjava.net/site120/aggbug/163060.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2007-11-26 07:59 <a href="http://www.blogjava.net/site120/archive/2007/11/26/163060.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ajax 前进后退及书签功能的 第三方框架RSH</title><link>http://www.blogjava.net/site120/archive/2007/11/22/162253.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Wed, 21 Nov 2007 23:54:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2007/11/22/162253.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/162253.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2007/11/22/162253.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/162253.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/162253.html</trackback:ping><description><![CDATA[RSH (Really Simple History) <br />
<br />
能够解决Ajax中不能前进，后退及没有书签的困扰<br />
<br />
利用隐藏的Iframe， 并结合锚点来模拟前进后退操作<br />
<br />
<br />
下载地址：http://code.google.com/p/reallysimplehistory/<br />
<br />
 <img src ="http://www.blogjava.net/site120/aggbug/162253.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2007-11-22 07:54 <a href="http://www.blogjava.net/site120/archive/2007/11/22/162253.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>史记【货殖列传】箴言</title><link>http://www.blogjava.net/site120/archive/2007/11/10/159605.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Sat, 10 Nov 2007 11:05:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2007/11/10/159605.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/159605.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2007/11/10/159605.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/159605.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/159605.html</trackback:ping><description><![CDATA[<p><br />
原文：故善者因之，其次利道之，其次教诲之，其次整齐之，最下者与之争。&nbsp; <br />
今译：所以说，最好的办法是顺其自然，其次是因势利导，再次是施加教诲，再&nbsp; <br />
　　　次是用行政手段来规范，最不可取的是与其争执。&nbsp; <br />
评论：此为道家之精义，强调顺势而为、因势利导，善择人任时而不与人争。&nbsp; <br />
　&nbsp; <br />
原文：故待农而食之，虞而出之，工而成之，商而通之。&nbsp; <br />
今译：所以说，要靠农民种地才能有饭吃；要靠虞官、猎户、渔民从水泽山林中&nbsp; <br />
　　　提供产品；要靠工匠制作器物、修建宫室；要靠商人贸易使得货物流通。&nbsp; <br />
评论：这里农虞工商是并重的。商而通之实为画龙点睛之笔。设封建帝王诚循此&nbsp; <br />
　　　道，则吾国必也为当世之列强矣！唉哉千百年来重农轻商，迄今方醒。&nbsp; <br />
　&nbsp; <br />
原文：物贱之征贵，贵之征贱。&nbsp; <br />
今译：商品贱极即为返贵之征兆，贵即又为返贱之征兆。&nbsp; <br />
评论：谁道供求关系、价值规律为西人所发现？差矣！首创者其华人欤！&nbsp; <br />
　&nbsp; <br />
原文：贫富之道，莫之夺予，而巧者有余，拙者不足。&nbsp; <br />
今译：贫富的道理，富者没有人白白给予他财富，贫者也没有人夺取他的财富，&nbsp; <br />
　　　总是勤巧者往往财富有余，拙惰者大多衣食不足。&nbsp; <br />
评论：大气磅礴、开宗明义！强调后天、强调人的主观能动性，很客观。&nbsp; <br />
　&nbsp; <br />
原文：天下熙熙，皆为利来；天下壤壤，皆为利往。&nbsp; <br />
今译：此句之意，勿庸赘言。看似简单，实际深刻！&nbsp; <br />
　&nbsp; <br />
原文：知斗则修备，时用则知物。&nbsp; <br />
今译：懂得打仗才善于战备，了解市场需求才算真正知道货物。&nbsp; <br />
评注：尊重市场对资源的配置作用，以销定产。市场经济的鼻祖亦中国人也！&nbsp; </p>
<p>原文：旱则资舟，水则资车，物之理也。&nbsp; <br />
今译：大旱之时，多买船只；大涝之时，多置车辆。&nbsp; <br />
评注：史家多一司马，商家少一巨富。太史公若从商，必也良贾。然而，还是一&nbsp; <br />
　　　部史记数千年哺育炎黄子孙。可见还是文化的、精神的东西更具生命力。&nbsp; <br />
　　　诚如韦应物言：方知大藩地，岂曰财赋强！&nbsp; <br />
　&nbsp; <br />
原文：论其有余不足，则知贵贱。贵上极则反贱，贱下极则反贵。 <br />
今译：分析市场之供需情况，则可知物价之高低。货物贵到一定程度则会便宜，&nbsp; <br />
　　　便宜到一定程度则又会涨价。在高价点毫不吝惜地出手，在低价点如取珠&nbsp; <br />
　　　玉一般地吸筹。资金要象流水样的周转。&nbsp; <br />
评注：精辟之极，无可复加！各位自己理解吧！&nbsp; </p>
<p>原文：贵出如粪土，贱取如珠玉。财币欲其行如流水。故人弃我取，人取我与。&nbsp; <br />
今译：&#8220;贱取如珠玉&#8221;即像重视珠玉那样重视降价的物品，在物价便宜时，要大 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 量收进尽量存贮起来。&#8220;贵出如粪土&#8221;即像抛弃粪土那样毫不可惜地抛出， <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 等到涨价之后，就尽量卖出。这样财富才能象流水一样流通。其实这也是 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;人弃我取，人取我与&#8221;所隐含的真实道理。 <br />
　&nbsp; <br />
原文：夫纤啬筋力，治生之正道，而富者必用奇胜。&nbsp; <br />
今译：节衣缩时、卖气力干活，这是做生意发财的正道。但大富之人必然是出奇&nbsp; <br />
　　　制胜的。&nbsp; <br />
评论：切入点的高低，思路的科学与否，预见的准确程度等等。智慧经济，知识&nbsp; <br />
　　　经济。&nbsp; <br />
　&nbsp; <br />
原文：富无经业，则货无常主，能者辐凑，不肖者瓦解。&nbsp; <br />
今译：致富没有固定的职业，财货没有固定的主人。有才有能者能聚敛财富，不&nbsp; <br />
　　　肖无能之辈则会败家丢财。&nbsp; <br />
评论：三百六十行，行行出状元。立足本职，爱岗敬业，这是有所作为的基础。</p>
<img src ="http://www.blogjava.net/site120/aggbug/159605.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2007-11-10 19:05 <a href="http://www.blogjava.net/site120/archive/2007/11/10/159605.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>捷径 - 就是不走弯路</title><link>http://www.blogjava.net/site120/archive/2007/11/10/159567.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Sat, 10 Nov 2007 08:17:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2007/11/10/159567.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/159567.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2007/11/10/159567.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/159567.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/159567.html</trackback:ping><description><![CDATA[<p align="right">----- 酸酸菜</p>
<img src ="http://www.blogjava.net/site120/aggbug/159567.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2007-11-10 16:17 <a href="http://www.blogjava.net/site120/archive/2007/11/10/159567.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>越明晰的认识意味着越明晰的区分</title><link>http://www.blogjava.net/site120/archive/2007/11/10/159562.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Sat, 10 Nov 2007 07:54:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2007/11/10/159562.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/159562.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2007/11/10/159562.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/159562.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/159562.html</trackback:ping><description><![CDATA[<p align="right">-----Canonical</p>
<img src ="http://www.blogjava.net/site120/aggbug/159562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2007-11-10 15:54 <a href="http://www.blogjava.net/site120/archive/2007/11/10/159562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用Js加密，编码算法 整理</title><link>http://www.blogjava.net/site120/archive/2007/11/10/159499.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Fri, 09 Nov 2007 22:57:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2007/11/10/159499.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/159499.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2007/11/10/159499.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/159499.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/159499.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一：UTF8编码函数function&nbsp;URLEncode(Str){&nbsp;&nbsp;if(Str==null||Str=="")&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;"";&nbsp;&nbsp;var&nbsp;newStr="";&nbsp;&nbsp;function&nbsp;toCase(sStr){&nbsp;...&nbsp;&nbsp;<a href='http://www.blogjava.net/site120/archive/2007/11/10/159499.html'>阅读全文</a><img src ="http://www.blogjava.net/site120/aggbug/159499.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2007-11-10 06:57 <a href="http://www.blogjava.net/site120/archive/2007/11/10/159499.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>远程方法调用入门指南</title><link>http://www.blogjava.net/site120/archive/2007/11/08/159203.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Thu, 08 Nov 2007 15:25:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2007/11/08/159203.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/159203.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2007/11/08/159203.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/159203.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/159203.html</trackback:ping><description><![CDATA[<div><a></a>
<h3><a><font color="#0066a7">Stephen Suen</font> </a></h3>
</div>
<p>Copyright &#169; 2005 Stephen Suen. All rights reserved. </p>
<div>
<div>
<p><a></a></p>
<p>Java 远程方法调用（Remote Method Invocation, RMI）使得运行在一个 Java 虚拟机（Java Virtual Machine, JVM）的对象可以调用运行另一个 JVM 之上的其他对象的方法，从而提供了程序间进行远程通讯的途径。RMI 是 J2EE 的很多分布式技术的基础，比如 RMI-IIOP 乃至 EJB。本文是 RMI 的一个入门指南，目的在于帮助读者快速建立对 Java RMI 的一个感性认识，以便进行更深层次的学习。事实上，如果你了解 RMI 的目的在于更好的理解和学习 EJB，那么本文就再合适不过了。通过本文所了解的 RMI 的知识和技巧，应该足够服务于这个目的了。 </p>
<p>&nbsp;</p>
</div>
</div>
<div></div>
<div>
<h1><a><font color="#0066a7">1. 简介</font> </a></h1>
<p>我们知道远程过程调用（Remote Procedure Call, RPC）可以用于一个进程调用另一个进程（很可能在另一个远程主机上）中的<span><em>过程</em></span>，从而提供了过程的分布能力。Java 的 RMI 则在 RPC 的基础上向前又迈进了一步，即提供分布式<span><em> 对象</em></span>间的通讯，允许我们获得在远程进程中的对象（称为远程对象）的引用（称为远程引用），进而通过引用调用远程对象的方法，就好像该对象是与你的客户端代码同样运行在本地进程中一样。RMI 使用了术语"方法"（Method）强调了这种进步，即在分布式基础上，充分支持面向对象的特性。 </p>
<p>RMI 并不是 Java 中支持远程方法调用的唯一选择。在 RMI 基础上发展而来的 RMI-IIOP（Java Remote Method Invocation over the Internet Inter-ORB Protocol），不但继承了 RMI 的大部分优点，并且可以兼容于 CORBA。J2EE 和 EJB 都要求使用 RMI-IIOP 而不是 RMI。尽管如此，理解 RMI 将大大有助于 RMI-IIOP 的理解。所以，即便你的兴趣在 RMI-IIOP 或者 EJB，相信本文也会对你很有帮助。另外，如果你现在就对 API 感兴趣，那么可以告诉你，RMI 使用 <font color="red">java.rmi</font> 包，而 RMI-IIOP 则既使用 <font color="red">java.rmi</font> 也使用扩展的 <font color="red">javax.rmi</font> 包。 </p>
<p>本文的随后内容将仅针对 Java RMI。</p>
</div>
<div>
<h1><a><font color="#0066a7">2. 分布式对象</font> </a></h1>
<p>在学习 RMI 之前，我们需要了解一些基础知识。首先需要了解所谓的分布式对象（Distributed Object）。分布式对象是指一个对象可以被远程系统所调用。对于 Java 而言，即对象不仅可以被同一虚拟机中的其他客户程序（Client）调用，也可以被运行于其他虚拟机中的客户程序调用，甚至可以通过网络被其他远程主机之上的客户程序调用。 </p>
<p>下面的图示说明了客户程序是如何调用分布式对象的： </p>
<div>
<p><img alt="" src="http://storage.msn.com/x1pGg9EMswqL--KyzGRGdhRjrq64UqttMM_PJCibCwwE4IdiYXO1md4zsjx996jvYuxnudo29e0GI0ry5z7KlGOWTxiA7t3Y3D5evWkQ8tZPfazDTvArq--pvMKaUlc__RNmlIlOq5vY-H0Kl2N47CivQ" /> </p>
</div>
<p>从图上我们可以看到，分布式对象被调用的过程是这样的： </p>
<p>&nbsp;</p>
<ol>
    <li>
    <p>客户程序调用一个被称为 Stub （有时译作存根，为了不产生歧义，本文将使用其英文形式）的客户端代理对象。该代理对象负责对客户端隐藏网络通讯的细节。Stub 知道如何通过网络套接字（Socket）发送调用，包括如何将调用参数转换为适当的形式以便传输等。 </p>
    <li>
    <p>Stub 通过网络将调用传递到服务器端，也就是分布对象一端的一个被称为 Skeleton 的代理对象。同样，该代理对象负责对分布式对象隐藏网络通讯的细节。Skeleton 知道如何从网络套接字（Socket）中接受调用，包括如何将调用参数从网络传输形式转换为 Java 形式等。 </p>
    <li>
    <p>Skeleton 将调用传递给分布式对象。分布式对象执行相应的调用，之后将返回值传递给 Skeleton，进而传递到 Stub，最终返回给客户程序。</p>
    </li>
</ol>
<p>这个场景基于一个基本的法则，即行为的定义和行为的具体实现相分离。如图所示，客户端代理对象 Stub 和分布式对象都实现了相同的接口，该接口称为远程接口（Remote Interface）。正是该接口定义了行为，而分布式对象本身则提供具体的实现。对于 Java RMI 而言，我们用接口（<font color="red">interface</font>）定义行为，用类（<font color="red">class</font>）定义实现。 </p>
</div>
<div>
<h1><a><font color="#0066a7">3. RMI 架构</font> </a></h1>
<p>RMI 的底层架构由三层构成： </p>
<p>&nbsp;</p>
<ul>
    <li>
    <p>首先是 Stub/Skeleton 层。该层提供了客户程序和服务程序彼此交互的接口。 </p>
    <li>
    <p>然后是远程引用（Remote Reference）层。这一层相当于在其之上的 Stub/Skeleton 层和在其之下的传输协议层之前的中间件，负责处理远程对象引用的创建和管理。 </p>
    <li>
    <p>最后是传输协议（Transport Protocol） 层。该层提供了数据协议，用以通过线路传输客户程序和远程对象间的请求和应答。</p>
    </li>
</ul>
<p>这些层之间的交互可以参照下面的示意图： </p>
<div>
<p><img alt="" src="http://storage.msn.com/x1pGg9EMswqL--KyzGRGdhRjrq64UqttMM_PJCibCwwE4LYc9TR44YWI1mMQE5aQp9ot9OjPBDKWlfamAjUBUEv9B78DuzO6uk_6mbUokjRpiHZnuy_Vhk1YzAUlzbLdD0LfHsABLa8zbukz397rrHcWccZDZQyoGBG" /> </p>
</div>
<p>和其它分布式对象机制一样，Java RMI 的客户程序使用客户端的 Stub 向远程对象请求方法调用；服务器对象则通过服务器端的 Skeleton 接受请求。我们深入进去，来看看其中的一些细节。 </p>
<div>
<blockquote>
<p><strong>注意: </strong>事实上，在 Java 1.2 之后，RMI 不再需要 Skeleton 对象，而是通过 Java 的反射机制（Reflection）来完成对服务器端的远程对象的调用。为了便于说明问题，本文以下内容仍然基于 Skeleton 来讲解。</p>
</blockquote></div>
<p>当客户程序调用 Stub 时，Stub 负责将方法的参数转换为序列化（Serialized）形式，我们使用一个特殊的术语，即编列（Marshal）来指代这个过程。编列的目的是将这些参数转换为可移植的形式，从而可以通过网络传输到远程的服务对象一端。不幸的是，这个过程没有想象中那么简单。这里我们首先要理解一个经典的问题，即方法调用时，参数究竟是传值还是传引用呢？对于 Java RMI 来说，存在四种情况，我们将分别加以说明。 </p>
<p>&nbsp;</p>
<ul>
    <li>
    <p>对于基本的原始类型（整型，字符型等等），将被自动的序列化，以传值的方式编列。 </p>
    <li>
    <p>对于 Java 的对象，如果该对象是可序列化的（实现了 <font color="red">java.io.Serializable</font> 接口），则通过 Java 序列化机制自动地加以序列化，以传值的方式编列。对象之中包含的原始类型以及所有被该对象引用，且没有声明为 <font color="red">transient</font> 的对象也将自动的序列化。当然，这些被引用的对象也必须是可序列化的。 </p>
    <li>
    <p>绝大多数内建的 Java 对象都是可序列化的。 对于不可序列化的 Java 对象（<font color="red">java.io.File</font> 最典型），或者对象中包含对不可序列化，且没有声明为 <font color="red">transient</font> 的其它对象的引用。则编列过程将向客户程序抛出异常，而宣告失败。 </p>
    <li>
    <p>客户程序可以调用远程对象，没有理由禁止调用参数本身也是远程对象（实现了 <font color="red">java.rmi.Remote</font> 接口的类的实例）。此时，RMI 采用一种<span><em>模拟的</em></span>传引用方式（当然不是传统意义的传引用，因为本地对内存的引用到了远程变得毫无意义），而不是将参数直接编列复制到远程。这种情况下，交互的双方发生的戏剧性变化值得我们注意。参数是远程对象，意味着该参数对象可以远程调用。当客户程序指定远程对象作为参数调用服务器端远程对象的方法时，RMI 的运行时机制将向服务器端的远程对象发送作为参数的远程对象的一个 Stub 对象。这样服务器端的远程对象就可以回调（Callback）这个 Stub 对象的方法，进而调用在客户端的远程对象的对应方法。通过这种方法，服务器端的远程对象就可以修改作为参数的客户端远程对象的内部状态，这正是传统意义的传引用所具备的特性。是不是有点晕？这里的关键是要明白，在分布式环境中，所谓服务器和客户端都是相对的。被请求的一方就是服务器，而发出请求的一方就是客户端。 </p>
    </li>
</ul>
<p>在调用参数的编列过程成功后，客户端的远程引用层从 Stub 那里获得了编列后的参数以及对服务器端远程对象的远程引用（参见 <font color="red">java.rmi.server.RemoteRef</font> API）。该层负责将客户程序的请求依据底层的 RMI 数据传输协议转换为传输层请求。在 RMI 中，有多种的可能的传输机制，比如点对点（Point-to-Point）以及广播（Multicast）等。不过，在当前的 JMI 版本中只支持点对点协议，即远程引用层将生成唯一的传输层请求，发往指定的唯一远程对象（参见 <font color="red">java.rmi.server.UnicastRemoteObject</font> API）。 </p>
<p>在服务器端，服务器端的远程引用层接收传输层请求，并将其转换为对远程对象的服务器端代理对象 Skeleton 的调用。Skeleton 对象负责将请求转换为对实际的远程对象的方法调用。这是通过与编列过程相对的反编列（Unmarshal）过程实现的。所有序列化的参数被转换为 Java 形式，其中作为参数的远程对象（实际上发送的是远程引用）被转换为服务器端本地的 Stub 对象。 </p>
<p>如果方法调用有返回值或者抛出异常，则 Skeleton 负责编列返回值或者异常，通过服务器端的远程引用层，经传输层传递给客户端；相应地，客户端的远程引用层和 Stub 负责反编列并最终将结果返回给客户程序。 </p>
<p>整个过程中，可能最让人迷惑的是远程引用层。这里只要明白，本地的 Stub 对象是如何产生的，就不难理解远程引用的意义所在了。远程引用中包含了其所指向的远程对象的信息，该远程引用将用于构造作为本地代理对象的 Stub 对象。构造后，Stub 对象内部将维护该远程引用。真正在网络上传输的实际上就是这个远程引用，而不是 Stub 对象。</p>
</div>
<div>
<h1><a><font color="#0066a7">4. RMI 对象服务</font> </a></h1>
<p>在 RMI 的基本架构之上，RMI 提供服务与分布式应用程序的一些对象服务，包括对象的命名/注册（Naming/Registry）服务，远程对象激活（Activation）服务以及分布式垃圾收集（Distributed Garbage Collection, DGC）。作为入门指南，本文将指介绍其中的命名/注册服务，因为它是实战 RMI 所必备的。其它内容请读者自行参考其它更加深入的资料。 </p>
<p>在前一节中，如果你喜欢刨根问底，可能已经注意到，客户端要调用远程对象，是通过其代理对象 Stub 完成的，那么 Stub 最早是从哪里得来的呢？RMI 的命名/注册服务正是解决这一问题的。当服务器端想向客户端提供基于 RMI 的服务时，它需要将一个或多个远程对象注册到本地的 RMI 注册表中（参见<font color="red">java.rmi.registry.Registry</font> API）。每个对象在注册时都被指定一个将来用于客户程序引用该对象的名称。客户程序通过命名服务（参见 <font color="red">java.rmi.Naming</font> API），指定类似 URL 的对象名称就可以获得指向远程对象的远程引用。在 <font color="red">Naming</font> 中的 <font color="red">lookup()</font> 方法找到远程对象所在的主机后，它将检索该主机上的 RMI 注册表，并请求所需的远程对象。如果注册表发现被请求的远程对象，它将生成一个对该远程对象的远程引用，并将其返回给客户端，客户端则基于远程引用生成相应的 Stub 对象，并将引用传递给调用者。之后，双方就可以按照我们前面讲过的方式进行交互了。 </p>
<div>
<blockquote>
<p><strong>注意: </strong>RMI 命名服务提供的 <font color="red">Naming</font> 类并不是你的唯一选择。RMI 的注册表可以与其他命名服务绑定，比如 JNDI，这样你就可以通过 JNDI 来访问 RMI 的注册表了。</p>
</blockquote></div>
</div>
<div>
<h1><a><font color="#0066a7">5. 实战 RMI</font> </a></h1>
<p>理论离不开实践，理解 RMI 的最好办法就是通过例子。开发 RMI 的分布式对象的大体过程包括如下几步： </p>
<p>&nbsp;</p>
<ol>
    <li>
    <p>定义远程接口。这一步是通过扩展 <font color="red">java.rmi.Remote</font> 接口，并定义所需的业务方法实现的。 </p>
    <li>
    <p>定义远程接口的实现类。即实现上一步所定义的接口，给出业务方法的具体实现逻辑。 </p>
    <li>
    <p>编译远程接口和实现类，并通过 RMI 编译器 <strong>rmic</strong> 基于实现类生成所需的 Stub 和 Skeleton 类。</p>
    </li>
</ol>
<p>RMI 中各个组件之间的关系如下面这个示意图所示： </p>
<div>
<p><img alt="" src="http://storage.msn.com/x1pGg9EMswqL--KyzGRGdhRjrq64UqttMM_PJCibCwwE4JxA-aX-SZD0hjjnO9OG_VQQMz7HdUngz_LHForXB2I2mTv509Lxg9BFNumeHviSDXogOWKhYd19lHUSUiy6q91gU2yB69bThJI89K6hoqnkg" /> </p>
</div>
<p>回忆我们上一节所讲的，Stub 和 Skeleton 负责代理客户和服务器之间的通讯。但我们并不需要自己生成它们，相反，RMI 的编译器 <strong>rmic</strong> 可以帮我们基于远程接口和实现类生成这些类。当客户端对象通过命名服务向服务器端的 RMI 注册表请求远程对象时，RMI 将自动构造对应远程对象的 Skeleton 实例对象，并通过 Skeleton 对象将远程引用返回给客户端。在客户端，该远程引用将用于构造 Stub 类的实例对象。之后，Stub 对象和 Skeleton 对象就可以代理客户对象和远程对象之间的交互了。 </p>
<p>我们的例子展现了一个简单的应用场景。服务器端部署了一个计算引擎，负责接受来自客户端的计算任务，在服务器端执行计算任务，并将结果返回给客户端。客户端将发送并调用计算引擎的计算任务实际上是计算指定精度的 &#960; 值。 </p>
<div>
<blockquote>
<p><strong>重要: </strong>本文的例子改编自 <a href="http://java.sun.com/docs/books/tutorial/rmi/index.html"><font color="#0066a7">The Java&#8482; Tutorial Trail:RMI</font></a>。所有权利属于相应的所有人。</p>
</blockquote></div>
</div>
<div>
<h1><a><font color="#0066a7">6. 定义远程接口</font> </a></h1>
<p>定义远程接口与非分布式应用中定义接口的方法没有太多的区别。只要遵守下面两个要求： </p>
<p>&nbsp;</p>
<ul>
    <li>
    <p>远程接口必须直接或者间接的扩展自 <font color="red">java.rmi.Remote</font> 接口。远程接口还可以在扩展该接口的基础上，同时扩展其它接口，只要被扩展的接口的所有方法与远程接口的所有方法一样满足下一个要求。 </p>
    <li>
    <p>在远程接口或者其超接口（Super-interface）中声明的方法必须满足下列对<span><em>远程方法</em></span>的要求： </p>
    <p>&nbsp;</p>
    <ul>
        <li>
        <p>远程方法必须声明抛出 <font color="red">java.rmi.RemoteException</font> 异常，或者该异常的超类（Superclass），比如 <font color="red">java.io.IOException</font> 或者 <font color="red">java.lang.Exception</font> 异常。在此基础上，远程方法可以声明抛出应用特定的其它异常。 </p>
        <li>
        <p>在远程方法声明中，作为参数或者返回值的远程对象，或者包含在其它非远程对象中的远程对象，必须声明为其对应的远程接口，而不是实际的实现类。</p>
        </li>
    </ul>
    </li>
</ul>
<ul></ul>
    <div>
    <blockquote>
    <p><strong>注意: </strong>在 Java 1.2 之前，上面关于抛出异常的要求更严格，即必须抛出 <font color="red">java.rmi.RemoteExcption</font>，不允许类似 <font color="red">java.io.IOException</font> 这样的超类。现在之所以放宽了这一要求，是希望可以使定义既可以用于远程对象，也可以用于本地对象的接口变得容易一些（想想 EJB 中的本地接口和远程接口）。当然，这并没有使问题好多少，你还是必须声明异常。不过，一种观点认为这不是问题，强制声明异常可以使开发人员保持清醒的头脑，因为远程对象和本地对象在调用时传参的语意是不同的。本地对象是传引用，而远程对象主要是传值，这意味对参数内部状态的修改产生的结果是不同的。 </p>
    </blockquote></div>
    <p>对于第一个要求，<font color="red">java.rmi.Remote</font> 接口实际上没有任何方法，而只是用作标记接口。RMI 的运行环境依赖该接口判断对象是否是远程对象。第二个要求则是因为分布式应用可能发生任何问题，比如网络问题等等。 </p>
    <p><a><font color="#0066a7">例 1</font> </a>列出了我们的远程接口定义。该接口只有一个方法：<font color="red">executeTask()</font> 用以执行指定的计算任务，并返回相应的结果。注意，我们用后缀 <tt>Remote</tt> 表明接口是远程接口。 </p>
    <div><a></a>
    <p><strong>例 1. ComputeEngineRemote 远程接口</strong> <a></a></p>
    <blockquote>
    <pre>package rmitutorial;
    import java.rmi.Remote;
    import java.rmi.RemoteException;
    public interface ComputeEngineRemote extends Remote {
    public Object executeTask(Task task) throws RemoteException;
    }</pre>
    </blockquote></div>
    <p><a><font color="#0066a7">例 2</font> </a>列出了计算任务接口的定义。该接口也只有一个方法：<font color="red">execute()</font> 用以执行实际的计算逻辑，并返回结果。注意，该接口不是远程接口，所以没有扩展 <font color="red">java.rmi.Remote</font> 接口；其方法也不必抛出 <font color="red">java.rmi.RemoteException</font> 异常。但是，因为它将用作远程方法的参数，所以扩展了 <font color="red">java.io.Serializable</font> 接口。 </p>
    <div><a></a>
    <p><strong>例 2. Task 接口</strong> <a></a></p>
    <blockquote>
    <pre>package rmitutorial;
    import java.io.Serializable;
    public interface Task extends Serializable {
    Object execute();
    }</pre>
    </blockquote></div>
    </div>
    <div>
    <h1><a><font color="#0066a7">7. 实现远程接口</font> </a></h1>
    <p>接下来，我们将实现前面定义的远程接口。<a><font color="#0066a7">例 3</font></a>给出了实现的源代码。 </p>
    <div><a></a>
    <p><strong>例 3. ComputeEngine 实现</strong> <a></a></p>
    <blockquote>
    <pre>package rmitutorial;
    import java.rmi.RemoteException;
    import java.rmi.server.UnicastRemoteObject;
    public class ComputeEngine extends UnicastRemoteObject
    implements ComputeEngineRemote {
    public ComputeEngine() throws RemoteException {
    super();
    }
    public Object executeTask(Task task) throws RemoteException {
    return task.execute();
    }
    }</pre>
    </blockquote></div>
    <p>类 <font color="red">ComputeEngine</font> 实现了之前定义的远程接口，同时继承自 <font color="red">java.rmi.server.UnicastRemoteObject</font> 超类。<font color="red">UnicastRemoteObject</font> 类是一个便捷类，它实现了我们前面所讲的基于 TCP/IP 的点对点通讯机制。远程对象都必须从该类扩展（除非你想自己实现几乎所有 <font color="red">UnicastRemoteObject</font> 的方法）。在我们的实现类的构造函数中，调用了超类的构造函数（当然，即使你不显式的调用这个构建函数，它也一样会被调用。这里这样做，只是为了突出强调这种调用而已）。该构造函数的最重要的意义就是调用 <font color="red">UnicastRemoteObject</font> 类的 <font color="red">exportObject() </font>方法。导出（Export）对象是指使远程对象准备就绪，可以接受进来的调用的过程。而这个过程的最重要内容就是建立服务器套接字，监听特定的端口，等待客户端的调用请求。</p>
    </div>
    <div>
    <h1><a><font color="#0066a7">8. 引导程序</font> </a></h1>
    <p>为了让客户程序可以找到我们的远程对象，就需要将我们的远程对象注册到 RMI 的注册表。这个过程有时被称为"引导"过程（Bootstrap）。我们将为此编写一个独立的引导程序负责创建和注册远程对象。<a><font color="#0066a7">例 4</font></a> 给出了引导程序的源代码。 </p>
    <div><a></a>
    <p><strong>例 4. 引导程序</strong> <a></a></p>
    <blockquote>
    <pre>package rmitutorial;
    import java.rmi.Naming;
    import java.rmi.RMISecurityManager;
    public class Bootstrap {
    public static void main(String[] args) throws Exception {
    String name = "ComputeEngine";
    ComputeEngine engine = new ComputeEngine();
    System.out.println("ComputerEngine exported");
    Naming.rebind(name, engine);
    System.out.println("ComputeEngine bound");
    }
    }
    </pre>
    </blockquote></div>
    <p>可以看到，我们首先创建了一个远程对象（同时导出了该对象），之后将该对象绑定到 RMI 注册表中。<font color="red">Naming</font> 的 <font color="red">rebind()</font> 方法接受一个 URL 形式的名字作绑定之用。其完整格式如下：<a></a></p>
    <blockquote>
    <p><a><font color="#0066a7">protocol://host:port/object</font> </a></p>
    </blockquote>
    <p>其中，协议（Protocol）默认为 <span>rmi</span>；主机名默认为 <span>localhost</span>；端口默认为 <tt>1099</tt>。注意，JDK 中提供的默认 <font color="red">Naming</font> 实现只支持 <span>rmi</span> 协议。在我们的引导程序里面只给出了对象绑定的名字，而其它部分均使用缺省值。</p>
    </div>
    <div>
    <h1><a><font color="#0066a7">9. 客户端程序</font> </a></h1>
    <p><a><font color="#0066a7">例 5</font> </a>给出了我们的客户端程序。该程序接受两个参数，分别是远程对象所在的主机地址和希望获得的 &#960; 值的精度。 </p>
    <div><a></a>
    <p><strong>例 5. Client.java</strong> <a></a></p>
    <blockquote>
    <pre>package rmitutorial;
    import java.math.BigDecimal;
    import java.rmi.Naming;
    public class Client {
    public static void main(String args[]) throws Exception {
    String name = "rmi://" + args[0] + "/ComputeEngine";
    ComputeEngineRemote engineRemote =
    (ComputeEngineRemote)Naming.lookup(name);
    Pi task = new Pi(Integer.parseInt(args[1]));
    BigDecimal pi = (BigDecimal)(engineRemote.executeTask(task));
    System.out.println(pi);
    }
    }</pre>
    </blockquote></div>
    <div><a></a>
    <p><strong>例 6. Pi.java</strong> <a></a></p>
    <blockquote>
    <pre>package rmitutorial;
    import java.math.*;
    public class Pi implements Task {
    private static final BigDecimal ZERO =
    BigDecimal.valueOf(0);
    private static final BigDecimal  ONE =
    BigDecimal.valueOf(1);
    private static final BigDecimal FOUR =
    BigDecimal.valueOf(4);
    private static final int roundingMode =
    BigDecimal.ROUND_HALF_EVEN;
    private int digits;
    public Pi(int digits) {
    this.digits = digits;
    }
    public Object execute() {
    return computePi(digits);
    }
    public static BigDecimal computePi(int digits) {
    int scale = digits + 5;
    BigDecimal arctan1_5 = arctan(5, scale);
    BigDecimal arctan1_239 = arctan(239, scale);
    BigDecimal pi = arctan1_5.multiply(FOUR).subtract(
    arctan1_239).multiply(FOUR);
    return pi.setScale(digits,
    BigDecimal.ROUND_HALF_UP);
    }
    public static BigDecimal arctan(int inverseX,
    int scale) {
    BigDecimal result, numer, term;
    BigDecimal invX = BigDecimal.valueOf(inverseX);
    BigDecimal invX2 =
    BigDecimal.valueOf(inverseX * inverseX);
    numer = ONE.divide(invX, scale, roundingMode);
    result = numer;
    int i = 1;
    do {
    numer =
    numer.divide(invX2, scale, roundingMode);
    int denom = 2 * i + 1;
    term =
    numer.divide(BigDecimal.valueOf(denom),
    scale, roundingMode);
    if ((i % 2) != 0) {
    result = result.subtract(term);
    } else {
    result = result.add(term);
    }
    i++;
    } while (term.compareTo(ZERO) != 0);
    return result;
    }
    }</pre>
    </blockquote></div>
    </div>
    <div>
    <h1><a><font color="#0066a7">10. 编译示例程序</font> </a></h1>
    <p>编译我们的示例程序和编译其它非分布式的应用没什么区别。只是编译之后，需要使用 RMI 编译器，即 <strong>rmic</strong> 生成所需 Stub 和 Skeleton 实现。使用 <strong>rmic</strong> 的方式是将我们的远程对象的实现类（不是远程接口）的全类名作为参数来运行 <strong>rmic</strong> 命令。参考下面的示例：<a></a></p>
    <blockquote>
    <pre>E:\classes\rmic rmitutorial.ComputeEngine</pre>
    </blockquote>
    <p>编译之后将生成 <font color="red">rmitutorial.ComputeEngine_Skel</font> 和 <font color="red">rmitutorial.ComputeEngine_Stub</font> 两个类。</p>
    </div>
    <div>
    <h1><a><font color="#0066a7">11. 运行示例程序</font> </a></h1>
    <p>远程对象的引用通常是通过 RMI 的注册表服务以及 <font color="red">java.rmi.Naming</font> 接口获得的。远程对象需要导出（注册）相应的远程引用到注册表服务，之后注册表服务就可以监听并服务于客户端对远程对象引用的请求。标准的 Sun Java SDK 提供了一个简单的 RMI 注册表服务程序，即 <strong>rmiregistry</strong> 用于监听特定的端口，等待远程对象的注册，以及客户端对这些远程对象引用的检索请求。 </p>
    <p>在运行我们的示例程序之前，首先要启动 RMI 的注册表服务。这个过程很简单，只要直接运行 <strong>rmiregistry</strong> 命令即可。缺省的情况下，该服务将监听 <tt>1099</tt> 端口。如果需要指定其它的监听端口，可以在命令行指定希望监听的端口（如果你指定了其它端口，需要修改示例程序以适应环境）。如果希望该程序在后台运行，在 Unix 上可以以如下方式运行（当然，可以缺省端口参数）： <a></a></p>
    <blockquote>
    <pre>$ rmiregistry 1099 &amp;</pre>
    </blockquote>
    <p>在 Windows 操作系统中可以这样运行：<a></a></p>
    <blockquote>
    <pre>C:\&gt; start rmiregistry 1099</pre>
    </blockquote>
    <p>我们的 <font color="red">rmitutorial.Bootstrap</font> 类将用于启动远程对象，并将其绑定在 RMI 注册表中。运行该类后，远程对象也将进入监听状态，等待来自客户端的方法调用请求。<a></a></p>
    <blockquote>
    <pre>$ java rmitutorial.Bootstrap
    ComputeEngine exported
    ComputeEngine bound</pre>
    </blockquote>
    <p>启动远程对象后，打开另一个命令行窗口，运行客户端。命令行的第一个参数为 RMI 注册表的地址，第二个参数为期望的 &#960; 值精度。参考下面的示例：<a></a></p>
    <blockquote>
    <pre>$ java rmitutorial.Client localhost 50
    3.14159265358979323846264338327950288419716939937511</pre>
    </blockquote></div>
    <div>
    <h1><a><font color="#0066a7">12. 其它信息</font> </a></h1>
    <p>在演示示例程序时，我们实际上是在同一主机上运行的服务器和客户端，并且无论是服务器和客户端所需的类都在相同的类路径上，可以同时被服务器和客户端所访问。这忽略了 Java RMI 的一个重要细节，即动态类装载。因为 RMI 的特性（包括其它几个特性）并不适用于 J2EE 的 RMI-IIOP 和 EJB 技术，所以，本文将不作详细介绍，请读者自行参考本文给出的参考资料。不过，为了让好奇的读者不至于过分失望，这里简单介绍一下动态类装载的基本思想。 </p>
    <p>RMI 运行时系统采用动态类装载机制来装载分布式应用所需的类。如果你可以直接访问应用所涉及的所有包括服务器端客户端在内的主机，并且可以把分布式应用所需的所有类都安装在每个主机的 <code>CLASSPATH</code> 中（上面的示例就是极端情况，所有的东西都在本地主机），那么你完全不必关心 RMI 类装载的细节。显然，既然是分布式应用，情况往往正相反。对于 RMI 应用，客户端需要装载客户端自身所需的类，将要调用的远程对象的远程接口类以及对应的 Stub 类；服务器端则要装载远程对象的实现类以及对应的 Skeleton 类（Java 1.2 之后不需要 Skeleton 类）。RMI 在处理远程调用涉及的远程引用，参数以及返回值时，可以将一个指定的 URL 编码到流中。交互的另一端可以通过 该 URL 获得处理这些对象所需的类文件。这一点类似于 Applet 中的 CODEBASE 的概念，交互的两端通过 HTTP 服务器发布各自控制的类，允许交互的另一端动态下载这些类。以我们的示例为例，客户端不必部署 <font color="red">ComputeEngine_Stub </font>的类文件，而可以通过服务器端的 HTTP 服务器获得类文件。同样，服务器端也不需要客户端实现的定制任务 <font color="red">Pi</font> 的类文件。 </p>
    <p>注意，这种动态类装载将需要交互的两端加载定制的安全管理器（参见 <font color="red">java.rmi.RMISecurityManager</font> API），以及对应的策略文件。</p>
    </div>
    <div>
    <h1><a><font color="#0066a7">13. 参考资料</font> </a></h1>
    <p><font color="#0066a7"></font></p>
    <ul>
        <li>
        <p><a href="http://java.sun.com/docs/books/tutorial/rmi/index.html"><font color="#0066a7">The Java&#8482; Tutorial Trail:RMI</font> </a></p>
        <li>
        <p>David Flanagan, Jim Farley, William Crawford and Kris Magnusson, 1999, ISBN 1-56592-483-5E, O'Reilly, <span><em>Java&#8482; Enterprise in a Nutshell</em></span></p>
        <li>
        <p>Ed Roman, Scott Ambler and Tyler Jewell 2002, ISBN 0-471-41711-4, John Wiley &amp;Sons, Inc., <span><em>Matering Enterprise JavaBeans&#8482;</em></span> , Second Edition</p>
        </li>
    </ul>
    </div>
<img src ="http://www.blogjava.net/site120/aggbug/159203.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2007-11-08 23:25 <a href="http://www.blogjava.net/site120/archive/2007/11/08/159203.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>运动一下【图】</title><link>http://www.blogjava.net/site120/archive/2007/11/08/159191.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Thu, 08 Nov 2007 14:54:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2007/11/08/159191.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/159191.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2007/11/08/159191.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/159191.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/159191.html</trackback:ping><description><![CDATA[QQ群上看到的。<br />
&nbsp;<br />
<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/site120/abc.gif" border="0" /> 
 <img src ="http://www.blogjava.net/site120/aggbug/159191.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2007-11-08 22:54 <a href="http://www.blogjava.net/site120/archive/2007/11/08/159191.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重新认识一下Java</title><link>http://www.blogjava.net/site120/archive/2007/11/08/159182.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Thu, 08 Nov 2007 14:43:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2007/11/08/159182.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/159182.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2007/11/08/159182.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/159182.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/159182.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp; Java是巨大的推动力量 ， Java已用动态的交互应用软件使Web栩栩如生。它使开发人员 具有&#8216;<span style="color: red">编写一次到处运行TM</span>&#8221;的巨大能力。而且，借助其JavaAPI 及其编程语言上的Java虚拟机，<span style="color: red">它已产生一种分布信息的崭新模式。 这种模式叫做Java企业计算</span>，正在帮助各企业以各种不同的方法取 得竞争优势。网管和控制已大大简化。软件分配基本上是免费的， 而且立即可实现。电子贸易已获得。占有成本大幅度降低。信息和 应用软件到处可存取。 </p>
<p>Java建立在简单的前提基础上，即<span style="color: red">所有微处理器都应讲同一种语言</span>——所有内部采用芯片的产品都应能一起工作，无缝而方便地 <strong style="color: red">共享信息</strong>。它已经改变企业和个人同Internet大交道的方式。现在， 它正在对消费类产品产生明显的影响，而且从总体上更加深刻地影 响企业计算。 </p>
<p><span style="color: red">借助Java，您可自由自在地使用您已拥有的硬件和软件</span>。这是因 为Java是独立于平台的。它还可使您超越企业计算，使应用软件在便 携式计算机、信息亭、电视、蜂窝电话和其他大量设备上运行。 全世界的公司都已发现Java数不胜数的用途。所有用途可从其无 可比拟的能力，即提高可靠性、安全性和简化各种不同计算产品和 环境的能力中受益非浅，而且节省的时间和费用十分可观。 </p>
<p><span style="color: red">Java无处不在</span>。它已拥有几百万个用户，其发展速度要快于在它 以前的其他任何一种计算机产品。它可位于任何地方，而且能到处运 行。Java正在迅速被用做传播信息的事实上标准，这是因为它既可给 企业，也可给最终用户带来似乎数不清的好处。 因此，请您仔细考察一下Java。它的优点是很容易发现的。 </p>
<p><br />
&#8220;Java正在进入企业、家庭和学校。 它正在象Internet本身一样成为普遍存在的技术。&#8221; <br />
Oracle 公司董事长和首席执行官 <br />
Larru Ellison </p>
<p><br />
&#8220;Java正在改变我们使用Internet的方法，改变我们 在公司内部存取信息的方法，甚至改变我们使用蜂窝 电话的方法。它正在从根本上改变制作信息、销售信息 和分配信息的方法。&#8221; <br />
EarthWeb公司董事长和首席执行官 <br />
Jack Hidary </p>
<p>&nbsp;</p>
<p>Java的来龙去脉 </p>
<p>Sun公司一小组工程师聚集在一起，认真思考日常生活中的 数字系统——因为烤面包机、恒温器、游戏机和其他无数设备 都包含越来越复杂的CPU——以及他们如何能使这些<span style="color: #ff0000">数字系统<strong>共享信息</strong></span>。 </p>
<p><br />
创造未来的计算 </p>
<p>制造产品的人当然全都从不同的方面来考虑其设计，视他们 所使用的硬件平台、操作系统和应用软件而定。但是，如果您要 使这些产品中的一些产品一起工作，那怎么办？安全性、可靠性 和网络问题又这么样呢？ </p>
<p>因此，Sun公司这些工程师把各种不同的产品折开来，然后又 把它们重新组装起来，其目标是要使这些不同的设备相互交谈。 他们把这些研究对象相互传来传去，并理解所有其他研究对象的 特性，以便使他们能更好地一起工作。这就把制造商的问题缩减 到最低程度，并使消费者能方便地进行集成。当传统的语言证明 是不适用时，工程师们就打算找到某种简单的现代新语言。于 是， Java应运而生。 </p>
<p>&nbsp; 人们很快发现，Java有可能超越工程师的想象。Java的魅力在 于它提供给开发人员和用户的简便性。开发人员拥有广大的用户基 础、平台独立性、降低的开发费用和始终如一的执行环境，而用户 则可 从生动的内容、即时软件和增大的安全性中受益。 但是，<span style="color: #ff0000">Java正是从置于World Wide Web那时起才真正起飞</span>。<br />
<br />
&nbsp; Java 使全世界大为震动，因为它使Web页面栩栩如生，而且不久变得很明 显，Java拥有大得多的潜力。人们之所以采纳Java，<span style="color: #ff0000">是因为它有独特 的能力来编制和部署能在任何一个网络、任何一个操作系统上运行的应用软件</span>。分配软件的时间和费用实际上已不复存在，使得各公司可 把更多的资源用来开发其产品。而且，某些工业专家认为，Java可能 会改变软件销售模式，从固定价格改变为按使用量收费，这样做更有 利可图，而且可阻止非法盗版。 <br />
<span style="color: #ff0000"><br />
<br />
&nbsp; Java是一种网络计算的通用开放标准平台</span>。这种平台可从电话一 直扩展到极端重要的应用，建立在您现有的硬件和软件体系结构基础 上，从而创造出一个全部联网的企业或者制造出超出的创新产品。 </p>
<p><br />
&#8220;由于Java具有可缩放性，因而我们可以把Java应用于小应用软件或大应用软件，把它芯片组以及大型计算机和服务器，并使它为各种不同的应用领域服务。&#8221; <br />
三菱公司系统营销副总裁 <br />
Steve Hester </p>
<p><br />
&#8220;借助Java，您可以用一种能最有效地使用的方式动态地分发和分配交互式商务应用软件一一在需要运行应用软件的地方， 在需要运行应用软件的时候。&#8221; <br />
Novell公司开发者服务部副总和总经理 <br />
Gary Mueller </p>
<p><br />
Java扎下根来 </p>
<p>在某种意义上，Java具体体现了Sun Microsystiems公司自其14年前创建以来所追述的目标。当时，它创造了&#8220;<span style="color: red">网络就是计算机</span>&#8221;这局名言。它市基于Web的新网络计算模式的完美平台，因为它建立在各个组织现有的硬件和软件体系结构基础上，能建立一个全部联网的企业。</p>
<p><span style="color: red"><br />
Java是一个完整而全面的解决方案Java远不止是一种编程语言，<span style="color: #000000">它是企业内外的完整计算环境，而且万事齐备，从开发工具、操作系统、服务器软件和瘦／肥客户机一直到网络管理工具、支持、培训、咨询和集成服务，一应俱全。Java使用起来非常简单，部分原因是Sun提供一种全面统一的解决方案.</span> </span></p>
<p>主要组成部分包括： <br />
*Java开发工具和服务：有助于简化开发Java应用软件的产品和服务 </p>
<p>*JavaOS：一种结构紧凑的操作系统，可使Java应用软件在网络计算机和蜂窝电话等设备上运行 </p>
<p>*Java虚拟机：一层软件，嵌入Windows、Macintosh和UNIX等计 算机操作系统，或在这些操作系统上运行，从而使计算机能 运行Java应用软件 </p>
<p>*Java API：标准软件界面，位于Java应用软件和数据库检索和 安全性等服务软件之间 </p>
<p>*Java芯片：一系列为Java优化的为处理器 </p>
<p>*Solstice WorkShop：Java启动的网络管理工具 </p>
<p>*Java培训：一个由教师指导和基于多媒体的完整课程，教会编 程员如何开发Java应用软件，包括一个用来验证熟练程度的 认证计划 </p>
<p>*JavaWorkShop支持：900号电话服务，可为Java WorkShop用户（仅限美国用户）立即提供按需支持 这些产品依靠由Sun的核心技术和服务提供的基础，包括： </p>
<p>*Solaris操作系统 <br />
*Sikstuce企业管理系统 <br />
*WorkShop开发者工具 <br />
*SunSpectrum支持服务 <br />
*Internet咨询和集成服务 <br />
*Java和Internet教育服务 <br />
*ultra工作站和Ultra Enterprise服务器;Netra服务器 </p>
<p>难怪大公司和日益增多的全球2000公司正在把Java计算用做系统以及其终产品的主要方面。 </p>
<p>&#8220;您不会把您自己锁住在任何一家公司的专有技术中。 开放意味着选择。而Java使您有选择余地。&#8221; </p>
<p>Oracle公司董事长和首席执行官 <br />
Larry Ellison</p>
<img src ="http://www.blogjava.net/site120/aggbug/159182.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2007-11-08 22:43 <a href="http://www.blogjava.net/site120/archive/2007/11/08/159182.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>