??xml version="1.0" encoding="utf-8" standalone="yes"?>精品国产成人系列,日韩在线影院,日韩一区日韩二区http://www.aygfsteel.com/shaofan/关于JAVA与Y件工E?/description>zh-cnSun, 18 May 2025 13:52:39 GMTSun, 18 May 2025 13:52:39 GMT60关于三层架构的一些想?/title><link>http://www.aygfsteel.com/shaofan/archive/2007/09/08/143662.html</link><dc:creator>shaofan</dc:creator><author>shaofan</author><pubDate>Sat, 08 Sep 2007 11:45:00 GMT</pubDate><guid>http://www.aygfsteel.com/shaofan/archive/2007/09/08/143662.html</guid><wfw:comment>http://www.aygfsteel.com/shaofan/comments/143662.html</wfw:comment><comments>http://www.aygfsteel.com/shaofan/archive/2007/09/08/143662.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/shaofan/comments/commentRss/143662.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/shaofan/services/trackbacks/143662.html</trackback:ping><description><![CDATA[目前开发h员对pȝ开发的一个共识是使用三层架构Q分C层Q业务层Q和持久层。而这三层之间的依赖关pd何?比较常见的一U看法是<br /> <br /> <span style="color: #000dd6;">表示?--> 业务?--> 持久?/span><br /> <br /> q表明了层与层之间的调用关系Q表C层通过调用业务层来完成dQ而业务层则调用持久层。从另一个角度来看,一U依赖关pL<br /> <br /> <span style="color: #000dd6;">表示?--> 领域模型(Domain Model) <-- 持久?/span><br /> <br /> ?strong>表示层和持久层都应该理解(recognize)领域模型</strong>。而领域模型则是业务层的一部分。业务层正是pȝ的h值所在。虽说表C和持久也很重要Q在某些pȝ中可以说是很关键Q但?strong>它们的最l目的都是ؓ业务服务Q所以业务层应该是系l的核心</strong>?br /> <br /> Z以上的认识,在系l设计的时应首先分析需求得到领域模型,扑ևpȝ中的实体、对象(静态的一面)Qƈ明确大致的业务流E?动态的一??而另两层应尽最大努力ؓ业务层服务,且尽量减业务层受另两层的限制?br /> <br /> <br /> 各层的职责:<br /> <br /> 表示层:负责昄信息Q及从系l外部得到输入。表C层的设计决定系l界面的可用性,及信息输入和展示的可靠性。表C层只知道如何展CZ息,及收集用戯入,q不知道该如何对q些输入q行处理来完成业务?br /> <br /> 业务层:完成业务逻辑。业务层设计军_客户价值是否能够得到实现。这是系l的关键。外在的表现是功能性。业务层设计和实现的p表现在用L卛_能缺失,功能不可靠等。如果需要对业务层的业务规则q行解耦,则可以用规则引擎如DroolsQ把业务规则分离出来。但分离后的业务规则仍属于业务层。业务层知道如何对用戯入进行处理,能够应用业务规则完成用户所需的业务,但它不知道数据如何读取和保存?br /> <br /> 持久层:负责用户信息的持久化。持久层的失误表现在外即数据处理(储存Q展C等)不可靠。持久层完全不知道业务,只专注于数据存储和读取。所谓持久化q不一定是指数据库QQ何方式的持久?通过文gQ网l的持久化等)都应由持久层完成?br /> <br /> 各层的设计都会直接媄响系l性能?br /> <br /> 三层的体U大和复杂度在不同的系l中可能会有很大的不同。比如说GOOGLE的搜索引擎,它的界面很简单,可以惛_表示层是比较Ҏ实现的,而它的业务层Q关pd处理关键字,分析搜烦l果Q决定排名等Q而持久层则要负责处理大量的数据。业务层和持久层则相当复杂。而有的系l持久层会很,比如杀毒YӞ媒体播放软g{。业务层而另两层大的例子暂时q没有想?)<br /> <br /> <br /> <img src ="http://www.aygfsteel.com/shaofan/aggbug/143662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/shaofan/" target="_blank">shaofan</a> 2007-09-08 19:45 <a href="http://www.aygfsteel.com/shaofan/archive/2007/09/08/143662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> Python中help()怎么用?http://www.aygfsteel.com/shaofan/archive/2007/06/05/122036.htmlshaofanshaofanMon, 04 Jun 2007 22:28:00 GMThttp://www.aygfsteel.com/shaofan/archive/2007/06/05/122036.htmlhttp://www.aygfsteel.com/shaofan/comments/122036.htmlhttp://www.aygfsteel.com/shaofan/archive/2007/06/05/122036.html#Feedback0http://www.aygfsteel.com/shaofan/comments/commentRss/122036.htmlhttp://www.aygfsteel.com/shaofan/services/trackbacks/122036.htmlhelp是一个内|函敎ͼ所谓内|函敎ͼ是在Python中被自动加蝲的函敎ͼM时候都可以用。参数分两种Q?/span>

  • 如果传一个字W串做参数的话,它会自动搜烦以这个字W串命名的模块,ҎQ等?/span>
  • 如果传入的是一个对象,׃昄q个对象的类型的帮助?/span>

比如输入help(’print’)Q它׃L?#8217;print’为名的模块,c,{,找不到就会看到提CZ息。而print在python里是一个保留字Q和pass,return同等Q而非对象Q所以help(print)也会出错((kkkkkkk))?/span>

举个例子Q?br>

1 help(’sys’) #会列出sys模块的帮?/span>
2 = [1,2,3]
3 help(a) #会显Clist的帮?/span>
4 help(a.append) #会显Clist的appendҎ的帮?/span>

python安装自带的library referenceQ?.1节是关于内置函数的?/p>

Reference Manual?.6节可以找到关于print的东东?/span>



shaofan 2007-06-05 06:28 发表评论
]]>
Struts2客户端验证的一个bughttp://www.aygfsteel.com/shaofan/archive/2007/06/03/121663.htmlshaofanshaofanSun, 03 Jun 2007 09:56:00 GMThttp://www.aygfsteel.com/shaofan/archive/2007/06/03/121663.htmlhttp://www.aygfsteel.com/shaofan/comments/121663.htmlhttp://www.aygfsteel.com/shaofan/archive/2007/06/03/121663.html#Feedback3http://www.aygfsteel.com/shaofan/comments/commentRss/121663.htmlhttp://www.aygfsteel.com/shaofan/services/trackbacks/121663.html
它的客户端验证的程大概是这P用户提交表单Ӟ对各个控件的输入按预先设|的规则q行验证Q如果有问题Q则清除表单里原有的出错提示信息Qƈ写入新的提示。其设计的功能是把出错信息写表格里出错控件的上方Q以便用L得更加清楚。问题就出在其用来清除原出错信息的函敎ͼ其代码是q样?在struts.jar的template/xhtml目录下可以找?Q?br>
 1 function clearErrorMessages(form) {
 2 
 3     var table = form.childNodes[1];
 4     iftypeof table == "undefined" ) {
 5         table = form.childNodes[0];
 6     }
 7 
 8     // clear out any rows with an "errorFor" attribute
 9     var rows = table.rows;
10     var rowsToDelete = new Array();
11     if (rows == null){
12         return;
13     }
14 
15     for(var i = 0; i < rows.length; i++) {
16         var r = rows[i];
17         if (r.getAttribute("errorFor")) {
18             rowsToDelete.push(r);
19         }
20     }
21 
22     // now delete the rows
23     for (var i = 0; i < rowsToDelete.length; i++) {
24         var r = rowsToDelete[i];
25         table.deleteRow(r.rowIndex);
26         //table.removeChild(rowsToDelete[i]);
27     }
28 }


看这个函数的前三行,它试囑֏得form的第1个或W?个子节点Qƈ把它作ؓtable来处?看接下来的几?。要x除表格里的错误信息,首先要取得表格本w,q没错,但是如果W?个或W?个子节点不是table的话Q脚本就会出错,造成原出错信息无法清除,q样每次提交后的提示信息׃累积在屏q上?br>
要解册个问题有两个办法Q?br>
  • 写代码时要小心,保证form的第1?个子节点是tableQ不要在生成table前加其他代码?/li>
  • 或,修改xhtml的validation.jsQ它总能获得正确的table元素Q重新打包到struts.jar?/li>
刚看了一下Struts的JIRAQ已l有人报告了q个问题(id WW-1802)Q而且q个bug?.1版本中已l解决了?br>

shaofan 2007-06-03 17:56 发表评论
]]>
单对比一下Python/Django和Java/Struts/JSP的请求处理结?/title><link>http://www.aygfsteel.com/shaofan/archive/2007/04/06/109007.html</link><dc:creator>shaofan</dc:creator><author>shaofan</author><pubDate>Fri, 06 Apr 2007 11:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/shaofan/archive/2007/04/06/109007.html</guid><wfw:comment>http://www.aygfsteel.com/shaofan/comments/109007.html</wfw:comment><comments>http://www.aygfsteel.com/shaofan/archive/2007/04/06/109007.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/shaofan/comments/commentRss/109007.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/shaofan/services/trackbacks/109007.html</trackback:ping><description><![CDATA[假设Q用两者写一个最的WEBE序?br>q程可以参照Q?br>1.struts的就太多?随便哪个都可?br>2.python/django可以看limodou写的<a target="_blank" >Django step by step</a><br><br>  <table style="width: 874px; height: 274px;" bgcolor="#ffffff" border="1"> <tbody> <tr bgcolor="#dde6ff"> <td><br></td> <td style="font-weight: bold;">Java/Struts/JSP</td> <td align="left" valign="middle"> <span style="font-weight: bold;">Python/Django</span></td> </tr> <tr bgcolor="#dde6ff"> <td style="font-weight: bold;">开发步?/td> <td>1.在web.xml里配|struts的servlet<br>2.在struts-config.xml里配|URL和action的映?br>3.写action<br>4.写JSP</td> <td align="left" valign="middle">1.在urls.py里配|URL到方法的映射<br>2.写相应的Ҏ<br>3.写HTML模板</td> </tr> <tr bgcolor="#dde6ff"> <td style="font-weight: bold;" align="left" valign="middle">调用q程</td> <td align="left" valign="middle">1.Ҏweb.xml的映调用struts的servlet controller<br>2.servlet controllerҎstruts-config.xml的映调用相应的action<br>3.action处理h<br>4.JSP渲染昄</td> <td align="left" valign="middle">1.Ҏurls.py的映调用相应的Ҏ<br>2.Ҏ处理h<br>3.HTML渲染昄</td> </tr> </tbody> </table> <br><br>相比之下前者用了两层才把一个HTTPh映射到实际处理的ҎQ第一ơ是servlet的映,W二ơ是struts action的映?br>而django则一ơ就从URL映射到相应的Ҏ了?br><br>另外一个比较显著的区别Q也是基于java和python的语a上的区别吧,java的所有方法必需包含在一个类中,因此action mapping配置时是映射到类Q而action在实现类则应实现事先U定的方?通过l承或实现接?。而django则直接得多,可以直接在配|里写明处理h的方法名?br><br><br><img src ="http://www.aygfsteel.com/shaofan/aggbug/109007.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/shaofan/" target="_blank">shaofan</a> 2007-04-06 19:11 <a href="http://www.aygfsteel.com/shaofan/archive/2007/04/06/109007.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于DOM的另一?/title><link>http://www.aygfsteel.com/shaofan/archive/2007/04/01/107803.html</link><dc:creator>shaofan</dc:creator><author>shaofan</author><pubDate>Sun, 01 Apr 2007 10:45:00 GMT</pubDate><guid>http://www.aygfsteel.com/shaofan/archive/2007/04/01/107803.html</guid><wfw:comment>http://www.aygfsteel.com/shaofan/comments/107803.html</wfw:comment><comments>http://www.aygfsteel.com/shaofan/archive/2007/04/01/107803.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/shaofan/comments/commentRss/107803.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/shaofan/services/trackbacks/107803.html</trackback:ping><description><![CDATA[ <p>DOM (Document Object Model)是一套语a无关的XML解析的接口定义。它定义了在XML解析中需要的cdQ方法,以及属性,比如如何获得一个XML标签Q如何改变标{内容Q如何改变它的属性,{等?/p> <p>DOM只是一个定义,q不是具体的实现Q它的目的就是ؓ了让大家在各个^C都能用相同的方式来处理XMLQ这样一来,我只要了解DOMQ基本上在各个^C都可以方便的处理XMLQ而不用重新学习了。比如说QJava, JavaScript, Python都有DOM的实玎ͼ用它们来处理XMLQ方式基本上都是一LQ当然也有非DOM的XML解析方式Q。在Java下,实现DOM的类库就有很多,比如JDom,XercesQ?用GOOGLE一搜就一大把。现在Java 5.0内置的就是Xerces。而JavaScript本n内|了DOM的实现。Python也默认安装了DOM的库?/p> <p>正因为DOM致力于实现各个^C对XML一致的处理方式Q它定义了一堆自q接口。因此在用DOM的时候,会有很多非NATIVE的东东。比如说Q返回节点的子节点的ҎQchildNodesQ返回的cd是NodeList。我W一ơ在Java上用Q就以ؓ是返回一个ListQ然后用get(n)Ҏ来取得某元素。而实际上NodeList是用item(n)的方法来取得某元素的。这p我觉得很怪。而DOM正是用这U方式来获得“语a无关”的能力的?/p> <p>DOM是用IDL(Interface Definition Language)来定义的。完整的定义可以在这里找?<a >http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html</a>。IDL也很Ҏ看懂。定义的1.1节列Z所有的接口?/p> <p>q些接口里,最重要而且常用的是Node,NodeList,Document,Element,Text,Attrq几个。DOM把XML文档看作一|Q树上的每个元素都是Node。每个Node都属于某个类型,比如Element,attribute,text{。这些类型就表明q个节点在XML文档里的cd了?/p> <p>比如Node里有个属性:</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"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #000000">  readonly attribute unsigned </span> <span style="COLOR: #0000ff">short</span> <span style="COLOR: #000000">  nodeType;<img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /></span> </div> <p>Ҏq个定义Q对于取得的节点Q我们就可以通过dnodeTypeq个属性来判断q个节点的类型。在Java里,所有的属性都是用getter来取得的Q因此对某节点nQ就可以用n.getNodeType()取得它的cd。Node接口里也定义了类型常量:</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"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #000000">  const unsigned short      ELEMENT_NODE                   = 1;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  const unsigned short      ATTRIBUTE_NODE                 = 2;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  const unsigned short      TEXT_NODE                      = 3;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  const unsigned short      CDATA_SECTION_NODE             = 4;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  const unsigned short      ENTITY_REFERENCE_NODE          = 5;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  const unsigned short      ENTITY_NODE                    = 6;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  const unsigned short      PROCESSING_INSTRUCTION_NODE    = 7;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  const unsigned short      COMMENT_NODE                   = 8;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  const unsigned short      DOCUMENT_NODE                  = 9;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  const unsigned short      DOCUMENT_TYPE_NODE             = 10;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  const unsigned short      DOCUMENT_FRAGMENT_NODE         = 11;<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />  const unsigned short      NOTATION_NODE                  = 12;</span> </div> <p>用这些常量和和n.getNodeType()的结果比较,可以知道它是不是某U类型?/p> <p>Node接口中也定义了一些方法,比如Q?/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"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #000000"> Node     appendChild(in Node newChild)    raises(DOMException);</span> </div> <p>表明appendChildҎ需要一个Nodecd的参敎ͼq回一个Node?具体的说明可以点文档上的链接q去Q也很容易看懂?/p> <p>Node接口里定义了操纵节点的方法,比如增加子节点,q回父节点,插入新节点,q回节点cdQ等{。Document,Element{接口都l承Node接口Q因此在它们上面都可以用操U节点的Ҏ?/p> <p> <strong>Document</strong>:代表整个XML文档。所有DOM元素都不能用cMJava里new的方式来生成Q而是要通过调用Document里的相应Ҏ来生成。因此它提供了生成诸如Element, Attr, Text的方法。比如createElement, createTextNode, createComment{。它也提供了名ؓgetElementsByTagName的方法,用来通过标签名称来取得其对象。比如getElementByTagName("ul")可以获得所有ul标签。它也提供一些文档的属性,比如xmlEncoding,inputEncoding{。它的一个属?documentElement代表文档的根节点。所有对XML元素的操作,基本上都是从Document开始的?/p> <p> <strong>Element</strong>:代表一个XML标签。它可以有属性,子标{,{。比?lt;ul id="booklist"><li>hello</li></ul>。标{ul是一个Element,它有一个属性叫idQ属性的值是booklist。它有一个子l点li。li也是一个标{,它也有个子节点helloQ是一个Textcd的节炏V这个接口提供操U其标签属性的ҎQ比如getAttribute,setAttribute,removeAttribute{。它也提供了和Document中一LgetElementsByTagName的方法,用来获得在这个节点下的元素?/p> <p> <strong>Attr</strong>:代表标签中的属性。比如上面的id。它也是一个Node。它有名字,|也可以获得它的所属标{?/p> <p> <strong>Text</strong>:代表一D|字,比如上面的helloQ它也一个NodeQ但比较ҎQ它不是直接l承NodeQ而是l承CharacterData接口Q后者承了Node。但是它不能有子节点?/p> <p>用JavaScriptl一个例子。假设有一个HTML文档Q?/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"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">html</span> <span style="COLOR: #0000ff">><</span> <span style="COLOR: #800000">head</span> <span style="COLOR: #0000ff">><</span> <span style="COLOR: #800000">title</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000">Try DOM</span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">title</span> <span style="COLOR: #0000ff">></</span> <span style="COLOR: #800000">head</span> <span style="COLOR: #0000ff">><</span> <span style="COLOR: #800000">body</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">ul</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">li</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000">hello</span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">li</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"><</span> <span style="COLOR: #800000">li</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000">world</span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">li</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">ul</span> <span style="COLOR: #0000ff">></span> <span style="COLOR: #000000"> <br /> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> </span> <span style="COLOR: #0000ff"></</span> <span style="COLOR: #800000">body</span> <span style="COLOR: #0000ff">></</span> <span style="COLOR: #800000">html</span> <span style="COLOR: #0000ff">></span> </div> <p>下面是增加一个li的JavaScriptҎQ?/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"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #000000">ulList </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> document.getElementsByTagName(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">ul</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />ul     </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> ulList.item(</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />txt    </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> document.createTextNode(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">I am new li</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />li     </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> document.createElement(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">li</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />li.appendChild(txt);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />ul.appendChild(li);</span> </div> <p>用Java来写Q是q样Q?/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"> <img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #000000">NodeList ulList </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> document.getElementsByTagName(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">ul</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />Node        ul       </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> ulList.item(</span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />Text          txt      </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> document.createTextNode(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">I am new li</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />Element    li        </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> document.createElement(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">li</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />li.appendChild(txt);<br /><img src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align="top" />ul.appendChild(li);</span> </div> <p>可以看到处理方式和数据类型都是一L。如果要了解更多Q可以看看DOM的定义,都是IDL?/p> <img src ="http://www.aygfsteel.com/shaofan/aggbug/107803.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/shaofan/" target="_blank">shaofan</a> 2007-04-01 18:45 <a href="http://www.aygfsteel.com/shaofan/archive/2007/04/01/107803.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux中对不同版本的Y件进行管?update-alternatives)http://www.aygfsteel.com/shaofan/archive/2006/12/25/89801.htmlshaofanshaofanSun, 24 Dec 2006 17:43:00 GMThttp://www.aygfsteel.com/shaofan/archive/2006/12/25/89801.htmlhttp://www.aygfsteel.com/shaofan/comments/89801.htmlhttp://www.aygfsteel.com/shaofan/archive/2006/12/25/89801.html#Feedback1http://www.aygfsteel.com/shaofan/comments/commentRss/89801.htmlhttp://www.aygfsteel.com/shaofan/services/trackbacks/89801.html我的博客已搬ӞL步到 http://shao-fan.com/blog 阅读最新内容!


Ubuntu/Debian中的update-alternative用来对系l中不同版本的同个Y件进行管理?br /> 比如Q系l中可能装有GNU的Java~译器,和SUN的Java~译器。可以用update-alternatives来设|当前用它们中的哪一个?/p>

它的原理是在/usr/bin中徏立一个linkQ指?etc/alternatives中的一个文Ӟ而些文g又是一个linkQ指向当前用的命o。比如java命oQ查看如下:

 $ which java
/usr/bin/java
$ ls -l /usr/bin/java
lrwxrwxrwx /usr/bin/java -> /etc/alternatives/java
$ ls -l /etc/alternatives/java
lrwxrwxrwx /etc/alternatives/java -> /usr/lib/j2re1.5-sun/bin/java
$ ls -l /usr/lib/j2re1.5-sun/bin/java
-rwxr-xr-x /usr/lib/j2re1.5-sun/bin/java

参数--display可以某个软g的当前配|,如:

 $ /usr/sbin/update-alternatives --display java
java - status is auto.
link currently points to /usr/lib/j2re1.5-sun/bin/java
/usr/lib/kaffe/bin/java - priority 300
slave java.1.gz: /usr/share/man/man1/java.kaffe.1.gz
/usr/lib/j2re1.5-sun/bin/java - priority 315
slave java.1.gz: /usr/lib/j2re1.5-sun/man/man1/java.1.gz
Current `best' version is /usr/lib/j2re1.5-sun/bin/java.

status有auto和manual两种。一旦用h改了pȝ的默认设|,它就变ؓmanual。在auto的状态下Q系l会Ҏ几套配置的priority来判断当前应该用哪套配|?/p>

每套配置可以讑֮多个linkQ它们被UCؓslave。上面的例子中,有两套java的配|。一套是/usr/lib/kafe/bin/javaQ另一套是/usr/lib/j2re1.5-sun/bin/javaQ它们各有一个slave。在些例中这些slave讄的是java命o?manual。当更改了配|时Q用man命o查看的帮助也会相应更攏V?/p>

参数--config可以用来更改当前的配|?/p>

 $ sudo /usr/sbin/update-alternatives --config java 
There are 2 alternatives which provide `java'.
Selection Alternative
-----------------------------------------------
1 /usr/lib/kaffe/bin/java
*+ 2 /usr/lib/j2re1.5-sun/bin/java
Press enter to keep the default*, or type selection number: 1
Using `/usr/lib/kaffe/bin/java' to provide `java'.

参数--install用来讄一套新的配|。具体参?http://blog.stevenkroon.com/2006/08/29/debian-update-alternatives/



shaofan 2006-12-25 01:43 发表评论
]]>
用javascript直接调用javaE序http://www.aygfsteel.com/shaofan/archive/2006/09/08/68407.htmlshaofanshaofanThu, 07 Sep 2006 19:59:00 GMThttp://www.aygfsteel.com/shaofan/archive/2006/09/08/68407.htmlhttp://www.aygfsteel.com/shaofan/comments/68407.htmlhttp://www.aygfsteel.com/shaofan/archive/2006/09/08/68407.html#Feedback6http://www.aygfsteel.com/shaofan/comments/commentRss/68407.htmlhttp://www.aygfsteel.com/shaofan/services/trackbacks/68407.html
buffalo.remoteCall("userService.listAll",[],function(reply){
 // 不用担心Qreply.getResult会从聪明的判断服务器端远E调用的l果cd?/span>
 var userList = reply.getResult(); 
 var firstUserFamilyName = userList[0].name.familyName;
});

lWebE序加上Buffalo也相当容易。只要下载几个jar文g攑ֈlib目录下,外加几个JS文gQ然后在web.xml里加一个Servlet卛_。用的时候是需要有个properties文g来定义哪些JAVAҎ可以被JS调用。而服务器端的JAVA代码不需要做M改动?br />
暂时手头上还想不h哪些地方会用Q但是这个东东可是我很久以前曄惌的,现在有h实现了,q是很激动h心的啊。Buffalo的主| http://www.amowa.net/buffalo/zh/index.html ?br />



shaofan 2006-09-08 03:59 发表评论
]]>
一个Linux下显C目录树的脚?/title><link>http://www.aygfsteel.com/shaofan/archive/2006/08/01/61122.html</link><dc:creator>shaofan</dc:creator><author>shaofan</author><pubDate>Tue, 01 Aug 2006 00:57:00 GMT</pubDate><guid>http://www.aygfsteel.com/shaofan/archive/2006/08/01/61122.html</guid><wfw:comment>http://www.aygfsteel.com/shaofan/comments/61122.html</wfw:comment><comments>http://www.aygfsteel.com/shaofan/archive/2006/08/01/61122.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/shaofan/comments/commentRss/61122.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/shaofan/services/trackbacks/61122.html</trackback:ping><description><![CDATA[最q因为Globus的原因,不得不用Linux了。以前几ơ想学,都因为难得要领放弃了。这ơ装?a >Ubuntu</a>Q又y在它的论坛上看到<a >一很不错的教E?/a>Q终于有些“入门”的感觉了。看来找到合适的教程真的是很重要啊。这几天用下来,感觉q真的很不错。用Python写了个显C目录树的小E序。也不知道有没有现成的,反正很简单,刚好ql手Q功能也够我自己用了:)<br /><br /><a href="/Files/shaofan/dtree.rar">下蝲Python脚本</a><br /><br /><img src="http://img539.photo.163.com/rainy14f/46864571/1716495189.jpg" /><br /><img src ="http://www.aygfsteel.com/shaofan/aggbug/61122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/shaofan/" target="_blank">shaofan</a> 2006-08-01 08:57 <a href="http://www.aygfsteel.com/shaofan/archive/2006/08/01/61122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Firefox无法保存讄的问?/title><link>http://www.aygfsteel.com/shaofan/archive/2006/07/24/59866.html</link><dc:creator>shaofan</dc:creator><author>shaofan</author><pubDate>Mon, 24 Jul 2006 10:21:00 GMT</pubDate><guid>http://www.aygfsteel.com/shaofan/archive/2006/07/24/59866.html</guid><wfw:comment>http://www.aygfsteel.com/shaofan/comments/59866.html</wfw:comment><comments>http://www.aygfsteel.com/shaofan/archive/2006/07/24/59866.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/shaofan/comments/commentRss/59866.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/shaofan/services/trackbacks/59866.html</trackback:ping><description><![CDATA[最qFirefoxZ炚w题。我q里用http proxy上网Q连接设|里要设|相应的proxy。但发现每次重启ffQ连接设|都被重|ؓ“直接连接”。即使改回“通过proxyq接”,下次重启又被重置了?br /><br />马上google一把,发现cM的问题大致有两种解决办法Q?br />1.q入safe modeQ会出现一个对话框Q把三个选项都勾上,重启?br />2.在地址栏输入about:configQ会出现所有的配置Q把要改的改了即可?br />3.直接修改prefs.js文g?br /><br />但这三个Ҏ对偶的FF都不用?br /><br />最后的解决Ҏ是,删除<br />C:\Documents and Settings\<user name>\Application Data\Mozilla\Firefox\Profiles\<xxxxxxxx.default>\ <br />下的user.jsQ然后再修改prefs.js。然后一切都正常了?br /><br />原来Qff最基本的配|文件是prefs.js。而user.js的优先应该是比prefs.js高,因此每次重启它都从user.jsd配置。而通过正常途径Q如在选项菜单里改讄Q无法在user.js里保存(不知道ؓ什么)。所以就造成了每ơ重启配|被重置的情况,其实是讄无法被保存。把user.js删掉以后Qff׃prefs.js里读取配|了Q而且新的讄也可以正怿存?br /><br />不管是从选项菜单里修攚w|,q是以上的第二种ҎQ最l的l果都是配置被保存在prefs.js文g里,效果都是一L?br /><br />目前已知的会U自修改FF配置的Y件只有Hide IP PlantiumQ而以上情冉|是在安装Hide IP Plantium以后出现的。用的时候要注意?br /><br />相关的讨论在mozillazine里有很多。不得不承认Q这cȝ英文资源要比中文的多得多。看q里的详l讨论:<br /><a target="_blank" >http://forums.mozillazine.org/viewtopic.php?t=413875&postdays=0&postorder=asc&postsperpage=15&start=15</a><br /><br /><img src ="http://www.aygfsteel.com/shaofan/aggbug/59866.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/shaofan/" target="_blank">shaofan</a> 2006-07-24 18:21 <a href="http://www.aygfsteel.com/shaofan/archive/2006/07/24/59866.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>q日学习CSS的一些零笔?/title><link>http://www.aygfsteel.com/shaofan/archive/2006/06/21/54103.html</link><dc:creator>shaofan</dc:creator><author>shaofan</author><pubDate>Tue, 20 Jun 2006 22:22:00 GMT</pubDate><guid>http://www.aygfsteel.com/shaofan/archive/2006/06/21/54103.html</guid><wfw:comment>http://www.aygfsteel.com/shaofan/comments/54103.html</wfw:comment><comments>http://www.aygfsteel.com/shaofan/archive/2006/06/21/54103.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/shaofan/comments/commentRss/54103.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/shaofan/services/trackbacks/54103.html</trackback:ping><description><![CDATA[1.理解面?flow)Q理解几U不同的定位方式Qstatic, relative, absolute{?br />Positioning and other definitions:<a target="_blank" class="" title="" >http://css.maxdesign.com.au/floatutorial/definitions.htm</a>  <br /><br />2.HTML面表达内容逻辑Q把样式控制写到CSS文g?br /><br />3.动(float)的DIV要配合width属性来?br /><br />4.怎样控制层的位置Q用floatQpaddingQwidthQheightq些属性来控制<br />Float Tutorial: <a target="_blank" class="" title="" >http://css.maxdesign.com.au/floatutorial/index.htm</a><br /><br />5.讄可见的border或background-color来帮助排?br /><br />6.出现内层的DIV跑到外层之外的情冉|Q可以在外层DIV?lt;/DIV>前加上一个clear层来解决问题。就是这P<br />   <div class="container"><br />    ...<br />    ...<br />    <div class="clear"></div><br />  </div><br /><br />  css:<br />  .clear{<br />    clear:both;<br />  }<br /><br />7.样式表的选择W?Selector)Q?br />   Type/Class/ID{?br />  Selector Tutorial:<a target="_blank" class="" title="" >http://css.maxdesign.com.au/selectutorial/index.htm</a><br /><br />8.关于表单的样式设计:<br />让我们更好的设计表单:议Web的表单设?<a target="_blank" class="" title="" >http://tech.163.com/06/0529/04/2I8UPHTB0009158Q.html</a><br />用CSS制作h亲和力的表单 作者:greengnn <br /><a target="_blank" class="" title="" >http://www.jluvip.com/blog/article.asp?id=192</a><br /><br />9.各种览器对各种标签用不同的方式渲染Q如p, h1, ul{,它们会有不同的padding和marginQؓ了在各种览器下都正常的昄Q可以把它们清零Q如Q?br />*{<br />    padding:0;<br />    margin:0;<br />}<br /><br />10.使用list来显C数据或菜单<br />List Tutorial:<br /><a target="_blank" class="" title="" >http://css.maxdesign.com.au/listamatic/</a><br /><a target="_blank" class="" title="" >http://css.maxdesign.com.au/listamatic2/</a><br /><a target="_blank" class="" title="" >http://css.maxdesign.com.au/listutorial/</a><br /><br />11.关于各种标准Q布局Q技巧等的网站:<br />|页设计师:<a target="_blank" class="" title="" >http://www.w3cn.org/</a><br />CSS教程Q?a target="_blank" class="" title="" >http://www.netvtm.com/w3s/css/</a><br />|页制作指导 - 致力于网制作知识的普及Q?a target="_blank" class="" title="" >http://www.jianzhan8.cn/</a><br />当然q有必不可少的经典论坛blueideaQ?a >http://www.blueidea.com/bbs/list.asp?GroupName=%CD%F8%D2%B3%B1%EA%D7%BC%BB%AF%D7%A8%C0%B8</a><img src ="http://www.aygfsteel.com/shaofan/aggbug/54103.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/shaofan/" target="_blank">shaofan</a> 2006-06-21 06:22 <a href="http://www.aygfsteel.com/shaofan/archive/2006/06/21/54103.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ƽ̶</a>| <a href="http://" target="_blank">ͩ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank">鴨</a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϻ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ﴨ</a>| <a href="http://" target="_blank">ʯ</a>| <a href="http://" target="_blank">ֺ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">г</a>| <a href="http://" target="_blank">˫</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">ѽ</a>| <a href="http://" target="_blank">˴</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʻ</a>| <a href="http://" target="_blank">ɽʡ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>