﻿<?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/narry/</link><description>雪化了，就是春天</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 16:51:36 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 16:51:36 GMT</pubDate><ttl>60</ttl><item><title>遇到了JVM的一个奇怪的现象</title><link>http://www.blogjava.net/narry/archive/2010/04/22/319141.html</link><dc:creator>narry</dc:creator><author>narry</author><pubDate>Thu, 22 Apr 2010 10:11:00 GMT</pubDate><guid>http://www.blogjava.net/narry/archive/2010/04/22/319141.html</guid><wfw:comment>http://www.blogjava.net/narry/comments/319141.html</wfw:comment><comments>http://www.blogjava.net/narry/archive/2010/04/22/319141.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/narry/comments/commentRss/319141.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/narry/services/trackbacks/319141.html</trackback:ping><description><![CDATA[<p>&nbsp; 昨天，遇到了一个测试的环境，虽然在启动脚本中，使用-server参数指定了sun jvm的运行模式，但是通过ProcessExplorer来看，居然是运行在client模式下，后来以为是打开了调试端口导致的，jvm_opts=%jvm_opts% -classic -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=%port%,server=y,suspend=y，最后发现时因为-classic造成的，解释参见 <a title="http://wangpan80.javaeye.com/blog/248708" href="http://wangpan80.javaeye.com/blog/248708">http://wangpan80.javaeye.com/blog/248708</a></p> <img src ="http://www.blogjava.net/narry/aggbug/319141.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/narry/" target="_blank">narry</a> 2010-04-22 18:11 <a href="http://www.blogjava.net/narry/archive/2010/04/22/319141.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>另一种导致原因导致的ORA-01658</title><link>http://www.blogjava.net/narry/archive/2010/01/07/308530.html</link><dc:creator>narry</dc:creator><author>narry</author><pubDate>Thu, 07 Jan 2010 04:32:00 GMT</pubDate><guid>http://www.blogjava.net/narry/archive/2010/01/07/308530.html</guid><wfw:comment>http://www.blogjava.net/narry/comments/308530.html</wfw:comment><comments>http://www.blogjava.net/narry/archive/2010/01/07/308530.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/narry/comments/commentRss/308530.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/narry/services/trackbacks/308530.html</trackback:ping><description><![CDATA[&nbsp; 前天同事反映在测试环境中，给表创建新的分区时，出现了：<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: #000000;">&nbsp;ORA-01658:&nbsp;unable&nbsp;to&nbsp;create&nbsp;INITIAL&nbsp;extent&nbsp;for&nbsp;segment&nbsp;in&nbsp;tablespace&nbsp;XXXX<br />
</span></div>
&nbsp; 根据经验和oracle官方的解释，是所在表空间的空间不够导致的，但是根据OEM观察，这个表空间的还有不少未使用的部分，这下就比较迷惑了。<br />
&nbsp; 当把oracle的alert.log文件拿出来分析后，发现有提示指明temp表空间不足了，当扩展了temp表空间的数据文件后，异常消失了，看来temp表空间的不足也能引发<span style="color: #000000;"> ORA-01658异常，并且是提示另一个表空间，值得注意</span><br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/narry/aggbug/308530.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/narry/" target="_blank">narry</a> 2010-01-07 12:32 <a href="http://www.blogjava.net/narry/archive/2010/01/07/308530.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle11gR2，在Linux IPV6环境下的一次Listener无法启动的问题</title><link>http://www.blogjava.net/narry/archive/2010/01/06/308420.html</link><dc:creator>narry</dc:creator><author>narry</author><pubDate>Wed, 06 Jan 2010 05:30:00 GMT</pubDate><guid>http://www.blogjava.net/narry/archive/2010/01/06/308420.html</guid><wfw:comment>http://www.blogjava.net/narry/comments/308420.html</wfw:comment><comments>http://www.blogjava.net/narry/archive/2010/01/06/308420.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/narry/comments/commentRss/308420.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/narry/services/trackbacks/308420.html</trackback:ping><description><![CDATA[&nbsp; 今天在linux搭建的IPV6环境下重新启动了一下oracle，在启动listener时得到如下的输出：<br />
&nbsp; <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: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LSNRCTL&gt;&nbsp;start<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Starting&nbsp;/oracle/11g/bin/tnslsnr:&nbsp;please&nbsp;wait<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TNSLSNR&nbsp;for&nbsp;Linux:&nbsp;Version&nbsp;11.2.0.1.0&nbsp;-&nbsp;Production<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System&nbsp;parameter&nbsp;file&nbsp;is&nbsp;/oracle/11g/network/admin/listener.ora<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log&nbsp;messages&nbsp;written&nbsp;to&nbsp;/oracle/diag/tnslsnr/node2/listener/alert/log.xml<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Trace&nbsp;information&nbsp;written&nbsp;to&nbsp;/oracle/diag/tnslsnr/node2/listener/trace/ora_8028_3086591680.trc<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listening&nbsp;on:&nbsp;(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node2)(PORT=1521)))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connecting&nbsp;to&nbsp;(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node2)(PORT=1521)))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;STATUS&nbsp;of&nbsp;the&nbsp;LISTENER<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;------------------------<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Alias&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LISTENER<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TNSLSNR&nbsp;for&nbsp;Linux:&nbsp;Version&nbsp;11.2.0.1.0&nbsp;-&nbsp;Production<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Start&nbsp;Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;06-JAN-2010&nbsp;13:07:43<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Uptime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;days&nbsp;0&nbsp;hr.&nbsp;0&nbsp;min.&nbsp;0&nbsp;sec<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Trace&nbsp;Level&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;admin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Security&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ON:&nbsp;Local&nbsp;OS&nbsp;Authentication<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SNMP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OFF<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listener&nbsp;Parameter&nbsp;File&nbsp;&nbsp;&nbsp;/oracle/11g/network/admin/listener.ora<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listener&nbsp;Log&nbsp;File&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/oracle/diag/tnslsnr/node2/listener/alert/log.xml<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listener&nbsp;Trace&nbsp;File&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/oracle/diag/tnslsnr/node2/listener/trace/ora_8028_3086591680.trc<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Listening&nbsp;Endpoints&nbsp;Summary<img src="http://www.blogjava.net/Images/dot.gif"  alt="" /><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=node2)(PORT=1521)))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;listener&nbsp;supports&nbsp;no&nbsp;services<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;command&nbsp;completed&nbsp;successfully<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LSNRCTL&gt;&nbsp;status<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connecting&nbsp;to&nbsp;(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=node2)(PORT=1521)))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TNS-12541:&nbsp;TNS:no&nbsp;listener<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TNS-12560:&nbsp;TNS:protocol&nbsp;adapter&nbsp;error<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TNS-00511:&nbsp;No&nbsp;listener<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Linux&nbsp;Error:&nbsp;111:&nbsp;Connection&nbsp;refused</span></div>
&nbsp; 根据提示listener在start后，显示启动成功，但是查看状态时报错，随即分析了Listener的日志，并且将listener的trace level设定为了admin，也无法定位问题。<br />
&nbsp; 随后，在google进行搜索，发现在linux下出现listener相关的问题，有很大部分是和/etc/hosts的配置有关，特别是其中一篇提到在/etc/hosts 中没有设定 127.0.0.1，会产生错误，的确在这个IPV6的环境中，已经将127.0.0.1从/etc/hosts，替换为::1,在/etc/hosts恢复了127.0.0.1的配置，问题解决。不知这个问题是否oracle的一个缺陷？特别是启动的提示太有误导了，一点提示都找不到<br />
<br />
<br />
<img src ="http://www.blogjava.net/narry/aggbug/308420.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/narry/" target="_blank">narry</a> 2010-01-06 13:30 <a href="http://www.blogjava.net/narry/archive/2010/01/06/308420.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在IPV6环境下使用Net-SNMP搭建snmp Agnet</title><link>http://www.blogjava.net/narry/archive/2010/01/05/308319.html</link><dc:creator>narry</dc:creator><author>narry</author><pubDate>Tue, 05 Jan 2010 10:45:00 GMT</pubDate><guid>http://www.blogjava.net/narry/archive/2010/01/05/308319.html</guid><wfw:comment>http://www.blogjava.net/narry/comments/308319.html</wfw:comment><comments>http://www.blogjava.net/narry/archive/2010/01/05/308319.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/narry/comments/commentRss/308319.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/narry/services/trackbacks/308319.html</trackback:ping><description><![CDATA[&nbsp;&nbsp; 今天在IPV6环境下使用NET-SNMP搭建了一个snmp Agnet，搭建步骤记录在此，操作系统为CentOS 5.3<br />
1.安装NET-SNMP，需要安装 net-snmp，net-snmp-libs,net-snmp-utils,其对应的rpm都能在CentOS的安装盘中找到。<br />
2.修改/etc/snmp/snmpd.conf,内容如下，其中<span style="color: red;">2001::/64是snmp manager所在IPV6的子网前缀</span>：<br />
<br />
rwcommunity6 public<br />
<br />
com2sec6 mynet <span style="color: red;">2001::/64</span> public<br />
<br />
group mygroup v1 mynet<br />
group mygroup v2c mynet<br />
group mygroup usm mynet<br />
<br />
view&nbsp;&nbsp;&nbsp; systemview&nbsp;&nbsp;&nbsp; included&nbsp;&nbsp; .1.3.6.1.2.1.1<br />
view&nbsp;&nbsp;&nbsp; systemview&nbsp;&nbsp;&nbsp; included&nbsp;&nbsp; .1.3.6.1.2.1.25.1.1<br />
<br />
access mygroup "" any noauth exact all all all<br />
3.修改snmpd<br />
snmpd -f -L udp:161,udp6:161 -d -c /etc/snmp/snmpd.conf<br />
4.在2001::/64子网中另一台主机上，运行如下命令进行测试，其中2001:468:181:f101:20c:29ff:fe5d:10b4为agnet所在主机的IPV6地址<br />
snmpwalk -v 2c -c public udp6:[2001:468:181:f101:20c:29ff:fe5d:10b4] system<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/narry/aggbug/308319.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/narry/" target="_blank">narry</a> 2010-01-05 18:45 <a href="http://www.blogjava.net/narry/archive/2010/01/05/308319.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用String对象作为锁的异常行为的分析</title><link>http://www.blogjava.net/narry/archive/2009/03/03/257322.html</link><dc:creator>narry</dc:creator><author>narry</author><pubDate>Tue, 03 Mar 2009 05:17:00 GMT</pubDate><guid>http://www.blogjava.net/narry/archive/2009/03/03/257322.html</guid><wfw:comment>http://www.blogjava.net/narry/comments/257322.html</wfw:comment><comments>http://www.blogjava.net/narry/archive/2009/03/03/257322.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/narry/comments/commentRss/257322.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/narry/services/trackbacks/257322.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用String对象作为锁时，可能会因为String对象是通过“”创建，而造成程序出现死锁的现象&nbsp;&nbsp;<a href='http://www.blogjava.net/narry/archive/2009/03/03/257322.html'>阅读全文</a><img src ="http://www.blogjava.net/narry/aggbug/257322.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/narry/" target="_blank">narry</a> 2009-03-03 13:17 <a href="http://www.blogjava.net/narry/archive/2009/03/03/257322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件架构的十大错误(转)</title><link>http://www.blogjava.net/narry/archive/2007/10/18/153984.html</link><dc:creator>narry</dc:creator><author>narry</author><pubDate>Thu, 18 Oct 2007 11:21:00 GMT</pubDate><guid>http://www.blogjava.net/narry/archive/2007/10/18/153984.html</guid><wfw:comment>http://www.blogjava.net/narry/comments/153984.html</wfw:comment><comments>http://www.blogjava.net/narry/archive/2007/10/18/153984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/narry/comments/commentRss/153984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/narry/services/trackbacks/153984.html</trackback:ping><description><![CDATA[<h1>软件架构的十大错误</h1>
<p class="info">作者 <strong>Niclas Nilsson</strong>译者 <strong>郭晓刚</strong> 发布于 2007年10月17日 上午10时49分 </p>
<p><a href="http://www.iasahome.org/web/home/membership/fellows">IASA成员</a><a href="http://www.eoinwoods.info/">Eoin Woods</a>发表了一篇文章讲述他所认为的<a href="http://www.itarchitect.co.uk/articles/display.asp?id=377">十大软件架构错误</a>——常常要碰得头破血流才会得到的一些教训。这十大错误简要总结如下： </p>
<ol>
    <li><strong>不能界定项目范围。</strong>&#8220;在这种情况发生时，一个简单的出差登记系统结果变成内建了完整的花费报销管理系统，项目费用、时间跨度和质量都留下不可避免的烂摊子&#8230;&#8230;除了简单的登录真的不需要安全措施了？用户登录系统后真的不能够执行任何系统操作吗？&#8221;
    <li><strong>网撒得不够宽。</strong>&#8220;我们都曾经犯过的一个错误是，只关注系统所有利益相关者中的一两方——通常受让人（为系统出钱的人）和最终用户得到了全部的关注。&#8221;
    <li><strong>只关注功能。</strong>&#8220;&#8230;&#8230;除非系统表现出了全面的高质量（诸如性能、安全、可维护性等等），否则不太可能成功。&#8221;
    <li><strong>用方框和线条来描述。</strong>&#8220;[一个无所不包的]巨大的Visio图无法成为有效的架构描述，有两个原因：第一，它试图在单一表示中呈现太多信息；第二，没人真正清楚地知道你画的各种符号到底表示什么意思。&#8221;
    <li><strong>忘了需要培养的过程。</strong>&#8220;在建造系统的时候常常需要小心的事物包括：开发者和测试者没法真正理解设计，他们不热衷或者没时间学习技术，以及还没有很好的工具支持的新技术，或者新技术会强迫人们以新的不熟悉的方式工作。&#8221;
    <li><strong>平台定义不精确。</strong>&#8220;光用&#8216;需要Unix和Oracle&#8217;来描述你的平台是不足够的。你需要精确地说明每一部分具体的版本和配置，才能保证得到你所需的平台。不然如果有人好心为平台的某一部分升级了一个库，就可能导致某些东西停止运作。精确定义平台你才能在部署中避免这样的情形。&#8221;
    <li><strong>对性能和伸缩能力想当然。</strong>&#8220;及早开始考虑性能和伸缩性，构建性能模型尝试预测关键的性能指标并定位瓶颈，在设计逐渐成型的同时投入到一些实际的验证性工作中去。这会帮助你提高对设计中不存在严重性能和伸缩性缺陷的信心。&#8221;
    <li><strong>自己发明安全技术。</strong>&#8220;多年来许多系统所犯的一个错误是试图加入自己发明的安全技术来提高系统安全性。比如定制的加密算法，开发者自己编写的审核系统，甚至完全DIY的访问控制系统。自家开发的安全方案基本上都是不明智的。虽然很多人都以为自己可以马上搞出一些聪明的安全技术，但通常都只是自作聪明。&#8221;
    <li><strong>没有灾难恢复。</strong>&#8220;要想得到资源来实现系统的灾难恢复机制，其关键在于在若干真实的场景中，具体衡量系统不可用所导致的损失。如果你还能估算这些场景发生的概率，你就可以用这两组数据去说服人们灾难恢复的重要性，并获得合理的预算去实现它。&#8221;
    <li><strong>没有撤退计划。</strong>&#8220;确保无论在系统部署或升级的过程中发生任何事，你都有一份书面的、经过审查的、一致同意的撤退计划，允许你将整个环境恢复到部署之前的状态。&#8221; </li>
</ol>
<p>Eoin Woods是UBS Investment Bank的软件及企业架构师。 </p>
<strong>查看英文原文：</strong><a href="http://www.infoq.com/news/2007/10/top-ten-architecture-mistakes">Top Ten Software Architecture Mistakes</a> 
<img src ="http://www.blogjava.net/narry/aggbug/153984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/narry/" target="_blank">narry</a> 2007-10-18 19:21 <a href="http://www.blogjava.net/narry/archive/2007/10/18/153984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>The SCA V1.0 metamodel</title><link>http://www.blogjava.net/narry/archive/2007/10/16/153379.html</link><dc:creator>narry</dc:creator><author>narry</author><pubDate>Tue, 16 Oct 2007 13:10:00 GMT</pubDate><guid>http://www.blogjava.net/narry/archive/2007/10/16/153379.html</guid><wfw:comment>http://www.blogjava.net/narry/comments/153379.html</wfw:comment><comments>http://www.blogjava.net/narry/archive/2007/10/16/153379.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/narry/comments/commentRss/153379.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/narry/services/trackbacks/153379.html</trackback:ping><description><![CDATA[<img alt="" src="http://www.blogjava.net/images/blogjava_net/narry/sca10.png" border="0" />
 <img src ="http://www.blogjava.net/narry/aggbug/153379.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/narry/" target="_blank">narry</a> 2007-10-16 21:10 <a href="http://www.blogjava.net/narry/archive/2007/10/16/153379.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>被诺顿玩了!!</title><link>http://www.blogjava.net/narry/archive/2007/05/18/118444.html</link><dc:creator>narry</dc:creator><author>narry</author><pubDate>Fri, 18 May 2007 12:12:00 GMT</pubDate><guid>http://www.blogjava.net/narry/archive/2007/05/18/118444.html</guid><wfw:comment>http://www.blogjava.net/narry/comments/118444.html</wfw:comment><comments>http://www.blogjava.net/narry/archive/2007/05/18/118444.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/narry/comments/commentRss/118444.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/narry/services/trackbacks/118444.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;今天升级诺顿后,居然导致系统瘫痪了,而且我还重装了,我的资料呀~~~~~~~~,
<img src ="http://www.blogjava.net/narry/aggbug/118444.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/narry/" target="_blank">narry</a> 2007-05-18 20:12 <a href="http://www.blogjava.net/narry/archive/2007/05/18/118444.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>这段时间在学java nio</title><link>http://www.blogjava.net/narry/archive/2007/05/16/117915.html</link><dc:creator>narry</dc:creator><author>narry</author><pubDate>Wed, 16 May 2007 10:58:00 GMT</pubDate><guid>http://www.blogjava.net/narry/archive/2007/05/16/117915.html</guid><wfw:comment>http://www.blogjava.net/narry/comments/117915.html</wfw:comment><comments>http://www.blogjava.net/narry/archive/2007/05/16/117915.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/narry/comments/commentRss/117915.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/narry/services/trackbacks/117915.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 这段时间为了能写一个高效的socket server，开始学习java nio，主要的资料是 ibm 《nio 入门》和 《O'Reilly - Java NIO》，现在正在看《O'Reilly - Java NIO》，发现原来java 的i/o操作其实有很多东东呀<img src="http://www.blogjava.net/CuteSoft_Client/CuteEditor/images/emsmile.gif" align="absmiddle" border="0"><br><img src ="http://www.blogjava.net/narry/aggbug/117915.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/narry/" target="_blank">narry</a> 2007-05-16 18:58 <a href="http://www.blogjava.net/narry/archive/2007/05/16/117915.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ftp通信时的指令</title><link>http://www.blogjava.net/narry/archive/2007/05/11/116853.html</link><dc:creator>narry</dc:creator><author>narry</author><pubDate>Fri, 11 May 2007 11:27:00 GMT</pubDate><guid>http://www.blogjava.net/narry/archive/2007/05/11/116853.html</guid><wfw:comment>http://www.blogjava.net/narry/comments/116853.html</wfw:comment><comments>http://www.blogjava.net/narry/archive/2007/05/11/116853.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/narry/comments/commentRss/116853.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/narry/services/trackbacks/116853.html</trackback:ping><description><![CDATA[今天在一个国外网站看到了ftp通信时的指令，将它贴在这里：<br>
<h2>FTP Commands</h2>
<p>This document describes all the FTP commands implemented.</p>
<h3><a name="FTPCommands-ABOR"></a>ABOR</h3>
<p>Aborts the previous FTP service command and any associated transfer of data.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            226 ABOR command successful.</p>
<h3><a name="FTPCommands-ACCT"></a>ACCT</h3>
<p>Provides the user's account. Not used by FtpServer.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            202 Command ACCT not implemented.</p>
<h3><a name="FTPCommands-APPE"></a>APPE</h3>
<p>Appends data to the end of a file on the remote host. If the file
does not already exist, it is created. This command must be preceded by
a PORT or PASV command.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
550 Not a plain file.<br>
550 Permission denied.<br>
150 Opening data connection.<br>
425 Cannot open data connection.<br>
426 Data connection error.<br>
551 Error on output file.<br>
226 Transfer complete.</p>
<h3><a name="FTPCommands-AUTH"></a>AUTH</h3>
<p>Establishes SSL encrypted session. Only SSL type is supported.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
431 Service is unavailable.<br>
234 AUTH command okay; starting SSL connection.</p>
<h3><a name="FTPCommands-CDUP"></a>CDUP</h3>
<p>Change to parent directory.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            250 Command okay.<br>
550 No such directory.</p>
<h3><a name="FTPCommands-CWD"></a>CWD</h3>
<p>Changes the working directory. If directory name is not specified, root directory (/) is assumed.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            250 Command okay.<br>
550 No such directory.</p>
<h3><a name="FTPCommands-DELE"></a>DELE</h3>
<p>Deletes the file specified by the provided path.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            250 Command okay.<br>
450 No permission to delete.<br>
450 Can't delete file.<br>
550 Not a valid file.<br>
501 Syntax error in parameters or arguments.</p>
<h3><a name="FTPCommands-EPRT"></a>EPRT</h3>
<p>The EPRT command allows for the specification of an extended address
for the data connection. The extended address MUST consist of the
network protocol as well as the network and transport addresses. The
format of EPRT is EPRT
|&lt;net-prt&gt;|&lt;net-addr&gt;|&lt;tcp-port&gt;|</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
510 EPRT is disabled.<br>
510 Syntax error.<br>
553 Host unknown.<br>
510 EPRT IP is not same as client IP.<br>
552 Not a valid port number.<br>
200 EPRT command okay.</p>
<h3><a name="FTPCommands-EPSV"></a>EPSV</h3>
<p>The EPSV command requests that a server listen on a data port and wait for a connection.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            425 Cannot open passive connection.<br>
229 Entering passive mode (&lt;message&gt;).</p>
<h3><a name="FTPCommands-FEAT"></a>FEAT</h3>
<p>Displays the feature list.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            221 List of all the extensions supported.</p>
<h3><a name="FTPCommands-HELP"></a>HELP</h3>
<p>Displays the help information.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            214 Help information.</p>
<h3><a name="FTPCommands-LANG"></a>LANG</h3>
<p>A new command "LANG" is added to the FTP command set to allow
server-FTP process to determine in which language to present server
greetings and the textual part of command responses.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            502 Not yet implemented.</p>
<h3><a name="FTPCommands-LIST"></a>LIST</h3>
<p>This command causes a list to be sent from the server to the passive
DTP. If the pathname specifies a directory or other group of files, the
server should transfer a list of files in the specified directory. If
the pathname specifies a file then the server should send current
information on the file. A null argument implies the user's current
working or default directory. The data transfer is over the data
connection. This command must be preceded by a PORT or PASV command.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            150 Opening data connection.<br>
425 Cannot open data connection.<br>
426 Data connection error.<br>
551 File listing failed.<br>
501 Syntax error.<br>
226 Closing data connection.</p>
<h3><a name="FTPCommands-MDTM"></a>MDTM</h3>
<p>Returns the date and time of when a file was modified.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
550 File unavailable.<br>
213 &lt;timestamp&gt;</p>
<h3><a name="FTPCommands-MKD"></a>MKD</h3>
<p>This command causes the directory specified in the pathname to be
created as a directory (if the pathname is absolute) or as a
subdirectory of the current working directory (if the pathname is
relative).</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
550 Not a valid file.<br>
550 Already exists.<br>
550 No permission.<br>
250 Directory created.<br>
550 Cannot create directory.</p>
<h3><a name="FTPCommands-MLSD"></a>MLSD</h3>
<p>Causes a list to be sent from the server to the passive DTP</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            150 File status okay; about to open data connection.<br>
226 Closing data connection.<br>
425 Can't open data connection.<br>
426 Data connection error.<br>
501 Syntax error in parameters or arguments.<br>
551 File listing failed.</p>
<h3><a name="FTPCommands-MODE"></a>MODE</h3>
<p>Set data transfer mode. The valid values are S and Z.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
504 Not implemented for this command.<br>
200 Command okay.</p>
<h3><a name="FTPCommands-NLST"></a>NLST</h3>
<p>This command causes a directory listing to be sent from server to
user site. The pathname should specify a directory or other
system-specific file group descriptor; a null argument implies the
current directory. The server will return a stream of names of files
and no other information.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            150 Opening data connection.<br>
425 Cannot open data connection.<br>
426 Data connection error.<br>
551 File listing failed.<br>
501 Syntax error.<br>
226 Closing data connection.</p>
<h3><a name="FTPCommands-NOOP"></a>NOOP</h3>
<p>No operation.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            200 Command okay.</p>
<h3><a name="FTPCommands-NOOP"></a>NOOP</h3>
<p>Cause the server use optional features for the command specified.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            500 Execution failed.<br>
501 Syntax error in parameters or arguments.<br>
502 Command OPTS not implemented for ...<br>
Additional return codes available for different OPTS commands.</p>
<h3><a name="FTPCommands-PASS"></a>PASS</h3>
<p>The argument field is a Telnet string specifying the user's
password. This command must be immediately preceded by the USER command.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
503 Login with USER first.<br>
202 Already logged-in.<br>
421 Maximum anonymous login limit has been reached.<br>
421 Maximum login limit has been reached.<br>
530 Authentication failed.<br>
230 User logged in, proceed.</p>
<h3><a name="FTPCommands-PASV"></a>PASV</h3>
<p>This command requests the server-DTP to listen on a data port (which
is not its default data port) and to wait for a connection rather than
initiate one upon receipt of a transfer command. The response to this
command includes the host and port address this server is listening on.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            425 Cannot open passive connection.<br>
227 Entering passive mode (&lt;h1,h2,h3,h4,p1,p2&gt;)</p>
<h3><a name="FTPCommands-PBSZ"></a>PBSZ</h3>
<p>protection buffer size.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            200 Command okay.</p>
<h3><a name="FTPCommands-PORT"></a>PORT</h3>
<p>The argument is a HOST-PORT specification for the data port to be
used in data connection. There are defaults for both the user and
server data ports, and under normal circumstances this command and its
reply are not needed. If this command is used, the argument is the
concatenation of a 32-bit internet host address and a 16-bit TCP port
address. This address information is broken into 8-bit fields and the
value of each field is transmitted as a decimal number (in character
string representation). The fields are separated by commas. A port
command would be:</p>
<p> PORT h1,h2,h3,h4,p1,p2</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
510 Syntax error in parameters.<br>
510 Port is disabled.<br>
553 Host unknown.<br>
510 PORT IP mismatch.<br>
552 Invalid port number.<br>
200 Command PORT okay.</p>
<h3><a name="FTPCommands-PROT"></a>PROT</h3>
<p>Data channel protection level. The supported level values are C, P.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
431 Security is disabled.<br>
504 Server does not understand the specified protection level.<br>
200 Command PROT okay.</p>
<h3><a name="FTPCommands-PWD"></a>PWD</h3>
<p>This command causes the name of the current working directory to be returned in the reply.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            257 "&lt;current directory&gt;"</p>
<h3><a name="FTPCommands-QUIT"></a>QUIT</h3>
<p>Closes connection.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            200 Goodbye.</p>
<h3><a name="FTPCommands-REIN"></a>REIN</h3>
<p>Flushes a user, without affecting transfers in progress</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            220 Service ready for new user.</p>
<h3><a name="FTPCommands-REST"></a>REST</h3>
<p>The argument field represents the server marker at which file
transfer is to be restarted. This command does not cause file transfer
but skips over the file to the specified data checkpoint. This command
shall be immediately followed by the appropriate FTP service command
which shall cause file transfer to resume.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
501 Not a valid number.<br>
501 Marker cannot be negetive.<br>
350 Restarting at &lt;position&gt;. Send STORE or RETRIEVE to initiate transfer.</p>
<h3><a name="FTPCommands-RETR"></a>RETR</h3>
<p>This command causes the server-DTP to transfer a copy of the file,
specified in the pathname, to the server- or user-DTP at the other end
of the data connection. The status and contents of the file at the
server site shall be unaffected.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
550 No such file or directory.<br>
550 Not a plain file.<br>
550 Permission denied.<br>
150 Opening data connection.<br>
425 Cannot open the data connection.<br>
426 Data connection error.<br>
551 Error on input file.<br>
226 Transfer complete.</p>
<h3><a name="FTPCommands-RMD"></a>RMD</h3>
<p>This command causes the directory specified in the pathname to be
removed as a directory (if the pathname is absolute) or as a
subdirectory of the current working directory (if the pathname is
relative).</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
550 No permission.<br>
550 Not a valid directory.<br>
250 Directory removed.<br>
550 Cannot remove directory.</p>
<h3><a name="FTPCommands-RNFR"></a>RNFR</h3>
<p>This command specifies the old pathname of the file which is to be
renamed. This command must be immediately followed by a RNTO command
specifying the new file pathname.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
550 File unavailable.<br>
350 Requested file action pending further information.</p>
<h3><a name="FTPCommands-RNTO"></a>RNTO</h3>
<p>This command specifies the new pathname of the file specified in the
immediately preceding RNFR command. Together the two commands cause a
file to be renamed.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
503 Cannot find the file which has to be renamed.<br>
553 Not a valid file name.<br>
553 No permission.<br>
250 Requested file action okay, file renamed.<br>
553 Cannot rename file.</p>
<h3><a name="FTPCommands-SITE"></a>SITE</h3>
<p>Handle Apache FTP Server specific custom commands. Please see the SITE commands page.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            200 Command SITE okay.<br>
502 Command SITE not implemented for this argument.<br>
500 Execution failed.<br>
530 Access denied.</p>
<h3><a name="FTPCommands-SIZE"></a>SIZE</h3>
<p>Returns the size of the file in bytes.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
550 No such file or directory.<br>
550 Not a plain file.<br>
213 &lt;size&gt;</p>
<h3><a name="FTPCommands-STAT"></a>STAT</h3>
<p>This command shall cause a status response to be sent over the control connection in the form of a reply.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            211 Statistics information.</p>
<h3><a name="FTPCommands-STOR"></a>STOR</h3>
<p>This command causes the server-DTP to accept the data transferred
via the data connection and to store the data as a file at the server
site. If the file specified in the pathname exists at the server site,
then its contents shall be replaced by the data being transferred. A
new file is created at the server site if the file specified in the
pathname does not already exist.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
550 Invalid path.<br>
550 Permission denied.<br>
150 Opening data connection.<br>
425 Cannot open the data connection.<br>
426 Data connection error.<br>
551 Error on output file.<br>
226 Transfer complete.</p>
<h3><a name="FTPCommands-STOU"></a>STOU</h3>
<p>This command behaves like STOR except that the resultant file is to
be created in the current directory under a name unique to that
directory. The 250 Transfer Started response must include the name
generated.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            550 Unique file name error.<br>
550 Permission denied.<br>
150 Opening data connection.<br>
425 Cannot open the data connection.<br>
250 &lt;file&gt; Transfer started.<br>
426 Data connection error.<br>
551 Error on output file.<br>
226 Transfer complete.</p>
<h3><a name="FTPCommands-STRU"></a>STRU</h3>
<p>The argument is a single Telnet character code specifying file structure. The allowed argument is F.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
504 Command not implemented.<br>
200 Command okay.</p>
<h3><a name="FTPCommands-SYST"></a>SYST</h3>
<p>This command is used to find out the type of operating system at the server.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            215 UNIX Type: Apache FTP Server</p>
<h3><a name="FTPCommands-TYPE"></a>TYPE</h3>
<p>The argument specifies the representation type. The allowed types are A and I.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
504 Command not implemented.<br>
200 Command okay.</p>
<h3><a name="FTPCommands-USER"></a>USER</h3>
<p>The argument field is a Telnet string identifying the user. The user
identification is that which is required by the server for access to
its file system. This command will normally be the first command
transmitted by the user after the control connections are made.</p>
<h4><a name="FTPCommands-ServerReplies"></a>Server Replies</h4>
<p>            501 Syntax error.<br>
230 Already logged-in.<br>
530 Invalid user name.<br>
530 Anonymous connection is not allowed.<br>
421 Maximum anonymous login limit has been reached.<br>
421 Maximum login limit has been reached.<br>
331 Guest login okay, send your complete e-mail address as password.<br>
331 User name okay, need password.</p>
<br><br><img src ="http://www.blogjava.net/narry/aggbug/116853.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/narry/" target="_blank">narry</a> 2007-05-11 19:27 <a href="http://www.blogjava.net/narry/archive/2007/05/11/116853.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>