??xml version="1.0" encoding="utf-8" standalone="yes"?>精品免费av一区二区三区 ,a级片国产精品自在拍在线播放,日韩欧美一区二区三区四区http://www.aygfsteel.com/kinoviti/zh-cnSun, 06 Jul 2025 17:57:52 GMTSun, 06 Jul 2025 17:57:52 GMT60Xen 基础一 虚拟化技术比较篇http://www.aygfsteel.com/kinoviti/archive/2007/04/19/112071.html-=Kinohl=--=Kinohl=-Thu, 19 Apr 2007 15:06:00 GMThttp://www.aygfsteel.com/kinoviti/archive/2007/04/19/112071.htmlhttp://www.aygfsteel.com/kinoviti/comments/112071.htmlhttp://www.aygfsteel.com/kinoviti/archive/2007/04/19/112071.html#Feedback0http://www.aygfsteel.com/kinoviti/comments/commentRss/112071.htmlhttp://www.aygfsteel.com/kinoviti/services/trackbacks/112071.html

-=Kinohl=- 2007-04-19 23:06 发表评论
]]>
Xen 基础一 背景?/title><link>http://www.aygfsteel.com/kinoviti/archive/2007/03/09/102841.html</link><dc:creator>-=Kinohl=-</dc:creator><author>-=Kinohl=-</author><pubDate>Fri, 09 Mar 2007 07:29:00 GMT</pubDate><guid>http://www.aygfsteel.com/kinoviti/archive/2007/03/09/102841.html</guid><wfw:comment>http://www.aygfsteel.com/kinoviti/comments/102841.html</wfw:comment><comments>http://www.aygfsteel.com/kinoviti/archive/2007/03/09/102841.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/kinoviti/comments/commentRss/102841.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/kinoviti/services/trackbacks/102841.html</trackback:ping><description><![CDATA[既然是随W,加之我确实也没有什么心得,那就允许我和大家聊一下吧? 说到Xen我们׃能不从虚拟化说v。虚拟化最初的需求就是,降低资源成本Q把多操作系l进行集成。(节约思想Q? 借用我的一位前辈的资料Q我׃l说了背景了? OS虚拟化的概念出现?972qIBM的一个名叫System 360的系l上。简单的_是在OS和硬件之间插入一个系l管理层Q系l管理层负责调度多个OS之间的硬件用,包括MMUQI/OQDMA{等? 在目前的ITpȝ中,虚拟化越来越成ؓ一个关键的技术领域。主要的原因有以下几炏V? 费用的节? 目前大多数的服务器应用中Q只能用到服务器自w硬件能力的15%。但是ؓ了扩展不同的业务Q用戯需要购|新的服务器。按照统计,数据中心中的一台服务器需要每q一万美元的费用Q另外还需要系l维护,理Q硬件和软g的license{等的费用? 在用了虚拟化技术后Q可以在每一台服务器上同时运行多个操作系l和应用。有效的利用服务器硬件自w的能力。从而减低系l的购置费用和全生命周期的维护费用? 提高了系l配布和理能力 使用虚拟化,可以单的实现OS的动态配布。patch的安装,不断늚pȝl护{等也可以实现? 高可靠性的实现 硬件与OS之间隔离QOS中所使用的物理设备变成了逻辑讑֤。提高了pȝ的可靠性。另外,针对虚拟化的pȝQOS的备份恢复等非常Ҏ实现Q一旦出现系l故障也可以很快的恢复? 那么什么又是Xen呢: XEN是一个基于X86q_的虚拟机pȝQ它支持多个操作pȝqpȝgQ而且更重要的是,它不会导致操作系l的功能性和性能性的劣化。它可以支持多种操作pȝ的虚拟化Q比如LinuxQBSDQWindows XP{等? 作ؓ设计目标QXEN希望能够在一台服务器上同时运行多?00个虚拟机QVMQ。此外,XEN有以下的几个Ҏ。XEN是最快的和安全性最好的虚拟机系l,它是开源的pȝQ取得了世界领先的许多公司的支持。还有一点,它是免费的? 相对比已有的几个虚拟机系l,比如VMwareQUMLQUser-Mode LinuxQ来_XEN的性能有显著的提高? 此外QXEN提供了对于硬件虚拟化技术的全面支持。比如,IntelC代的VT-x处理器中支持了CPUQMMU和内存的虚拟化。AMD的Pacifica也有怼的技术。对于此cȝӞXEN可以不修改GuestOS直接q行理? <img src ="http://www.aygfsteel.com/kinoviti/aggbug/102841.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/kinoviti/" target="_blank">-=Kinohl=-</a> 2007-03-09 15:29 <a href="http://www.aygfsteel.com/kinoviti/archive/2007/03/09/102841.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX Web Tree 构徏Ҏ及实现思想http://www.aygfsteel.com/kinoviti/archive/2006/01/27/29304.html-=Kinohl=--=Kinohl=-Fri, 27 Jan 2006 08:42:00 GMThttp://www.aygfsteel.com/kinoviti/archive/2006/01/27/29304.htmlhttp://www.aygfsteel.com/kinoviti/comments/29304.htmlhttp://www.aygfsteel.com/kinoviti/archive/2006/01/27/29304.html#Feedback7http://www.aygfsteel.com/kinoviti/comments/commentRss/29304.htmlhttp://www.aygfsteel.com/kinoviti/services/trackbacks/29304.html***************************************
关键字:AJAX,Tree,StrutsQDOM
难易度: ?BR>软g版本Qstruts 1.2.8
旉Q?006-01-27
AuthorQKino
***************************************


前阵子写了一个小代码处理AJAX下WebTree的构建,其中到了一些问题,也有一些想法,现在说出来希望大家一L看,如果案由问题请不吝赐教,本h不胜感激啊?BR>
背景Q?BR>q次因ؓ是加载在Struts上的开发,Web面上的Tree作AJAX处理Q因为有Node的增删改操作。Server端因和WebServiceq接Q所以不做Cache?BR>
解决案:
1。用Polling调用AJAX定期更新Tree?BR>2。AJAX讉K的地址是一个ActionQ例Qcreatetree.doQ。用来返回Tree模型或者错误消息(国际化)?BR>3。Browser解析XML的TreeModel?BR>4。在Browser比较新旧2个TreeModelQ完成选中状态的l承?BR>5。CSS渲染TreeNode?BR>
以上是简单的思\。传l的AJAX应该是尽量减XMl传输量,q于没有Cache的缘故,q且WSl我的节点ƈ不能单的得到父子关系。我选择了,每次Polling更新整棵树的Ҏ。性能未测?BR>
我这ơ在web server 端构建Tree时直接用深度优先转换成XML。XMl中数据的先后序军_了Tree从父到子Q从兄到弟的深度优先关系Qindent军_了深度(也就是羃q)。这h从Server端传入的也就成了一个标准的Tree昄Model。格式定义如下?BR>  * Gobal Master Tree DTD
 * &lt!ELEMENT tree (tree*)&gt
 * &lt!ATTLIST tree
 *  id   CDATA #REQUIRED LoctionInfo's toString
 *  indent  CDATA #REQUIRED Tree's Level
 *  text        CDATA   #REQUIRED label in html
 *  tooltip     CDATA   #IMPLIED title in html
 *  action      CDATA   #IMPLIED href in html
 *  icon        CDATA   #IMPLIED close icon with the node status
 *  openicon    CDATA   #IMPLIED open icon with the node status
 *  open        CDATA   #IMPLIED&gt node's open states ,default is false in server.
 *  target  CDATA #IMPLIED node's open target
 *
<span id="maintree">
 <tree id="Ajax" indent=0 text="Root" tooltip="Root" action="/logout.do" icon="" openicon= "" open="false"/>
 <tree id="110" indent=1 text="Node 1" tooltip="Node 1" action="/logout.do" icon="" openicon= "" open="false"/>
 <tree id="120" indent=2 text="Node 2" tooltip="Node 2" action="/logout.do" icon="" openicon= "" open="false"/>
 <tree id="12580" indent=2 text="Node 3" tooltip="Node 3" action="/logout.do" icon="" openicon= "" open="false"/>
 <tree id="user" indent=1 text="Node 4" tooltip="Node 4" action="/logout.do" icon="" openicon= "" open="false"/>
</span>

上边?Tree昄出来如下
Root
 ?BR> ├Node 1
 ?nbsp;   ?BR> ?nbsp;   ├Node 2
 ?nbsp;   └Node 3
 └Node 4
indent   是~进?BR>数据的先后顺序就是深度优先的遍历序?BR>

q样的数据到了BrowserQ会先被转成一个对象数l?BR>

 1// Tree Node object
 2// This function creates a node in the tree with the following arguments:
 3//    sId         - The node's index within the global nodes_array
 4//    iIndent    - The level within the tree hierarchy (0 = top)
 5//    sText      - The text displayed in the tree for this node
 6//    sTooltip     - the tool tip
 7//    oAction   - For a document, the address it will display when clicked
 8//    sIcon        - the node's icon 
 9//    sIconOpen    - the node's icon state
10//      bOpen - true  false
11function GMTreeNode(sId,iIndent,sText,sTooltip,sAction,sIcon,sIconOpen,bOpen,sTarget)
12{
13    if (sId) this.id = sId;
14    if (iIndent) this.indent = iIndent;
15    if (sText) this.text = sText;
16    if (sAction) this.action = sAction;
17    if (sTooltip) this.tooltip = sTooltip;
18    if (sIcon) this.icon = sIcon;
19    if (sIconOpen) this.iconopen = sIconOpen;
20    if (bOpen) this.open = bOpen;
21    if (sTarget) this.target = sTarget;
22    
23//    //alert(this.id + "  " + this.indent + "  " + this.text + "  " + this.action + "  " + 
24//    this.tooltip + "  " + this.icon + "  " + this.iconopen + "  " + this.open);
25}

然后会和正在昄的Tree数组 q行一?比较Q用于写入展开状态,代码如下Q?BR>
 1/////////////////////////////////
 2//    >>>Compare 
 3//    compare maintree with maintree. and copy maintree to maintree
 4/////////////////////////////////
 5function compareTreeModel()
 6{
 7    //alert("I am here in compareTreeModel");
 8    if (ajaxtree.length <= 0){
 9        alert("ajaxtree is null");//TODO
10        return;
11    }

12    
13    if (maintree.length <= 0){
14        //alert("maintree is null");
15        maintree = ajaxtree;
16        return;
17    }

18    //compare start
19    //var maxlen = Math.max(ajaxtree.length,maintree.length);
20    for(var i=0;i<ajaxtree.length;i++)
21    {
22        for(var j=0;j<maintree.length;j++)
23        {
24            if (ajaxtree[i].id == maintree[j].id)
25            {
26                ajaxtree[i].open = maintree[j].open;
27                break;
28            }

29        }
    
30    }

31    
32    maintree = ajaxtree;
33    
34}
maintree 是正在昄?TreeQajaxtree是刚得到的新Tree?个对象都是TreeNode的数l。而TreeNode对象的Open属性即记录了节点的展开状态。那么这里就对这个节点状态进行“移植”,完毕后,把新Tree模型交付昄ҎQ也是ToHtmlҎ?BR>
转换Html部分是一个比较容易出bug的危险点?BR>
首先分析一下,生成的代码是什么样子的?BR>q里仍然用上边的那棵树作例子?BR>生成的DOMl构应该?BR><div ?gt;
    <div  收羃>
    <img  折线  />
    <img  图标 />
    <a 节点动作>节点Label</a>
    <div ?gt;
        ....递归的构?BR>    </div ?gt;
    </div 收羃>
</div ?gt;

其次 对于q种q不直接含有父子关系的节炚w先要判明一个节点的??兄弟Q然后用递归解决?BR>递归的思\如下深度优先Q?BR>function toHtml(节点index)
{
   var child_htmlQ?BR>   if q个节点有子
   {
        Loop子节?BR>        {
               child_html[i] = toHtml(子节点index)Q?BR>               i++Q访问下一个子节点
   }
  
   var 所有子节点Html模块 = <div 收羃>   child_html.join("") </div>

   var 本节点Html模块 = <div 本节?gt;<div 收羃><img ><img  图标 /><a 节点动作>节点Label</a>所有子节点Html模块</div 收羃></div 本节?gt;;

   return  本节点Html模块;
}

树就构徏好了?BR>
作ؓ昄Q用了CSS?BR>background-repeat: repeat-y;
 background-image: url("../images/tree/I.png") !important;
 background-position-y: 1px !important; /* IE only */

q有padding-left作Div的向叛_U,默认的偏U量?9个像素点Q然后根据Tree昄模型的indent怹ok了?BR>
思\是q些。希望能?朋友们有所帮助?BR>Ƣ迎讨论?BR>

-=Kinohl=- 2006-01-27 16:42 发表评论
]]>
Subversion 客户?配置及简单实?/title><link>http://www.aygfsteel.com/kinoviti/archive/2006/01/27/29291.html</link><dc:creator>-=Kinohl=-</dc:creator><author>-=Kinohl=-</author><pubDate>Fri, 27 Jan 2006 03:19:00 GMT</pubDate><guid>http://www.aygfsteel.com/kinoviti/archive/2006/01/27/29291.html</guid><wfw:comment>http://www.aygfsteel.com/kinoviti/comments/29291.html</wfw:comment><comments>http://www.aygfsteel.com/kinoviti/archive/2006/01/27/29291.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.aygfsteel.com/kinoviti/comments/commentRss/29291.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/kinoviti/services/trackbacks/29291.html</trackback:ping><description><![CDATA[<P class=MsoTitle style="MARGIN: 12pt 0cm 3pt"><FONT size=5><SPAN lang=EN-US><FONT face=Arial><FONT color=#0000ff>Lqsubversion的朋友一起交一下用心得吧?/FONT><BR><BR><STRONG>Subversion </STRONG></FONT></SPAN><STRONG><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">客户?/SPAN><FONT face=Arial> </FONT><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial">配置</SPAN></STRONG></FONT></P> <H1 style="MARGIN: 17pt 0cm 16.5pt; TEXT-INDENT: 0cm"><SPAN lang=EN-US style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%; mso-bidi-font-family: 宋体"><SPAN style="mso-list: Ignore">W一?</SPAN></SPAN><SPAN style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">环境配置</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></H1> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">软g环境Q?/SPAN><SPAN lang=EN-US>TortoiseSVN-<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:chsdate IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year="1899" w:st="on">1.2.4</st1:chsdate>.4479-svn-1.2.3.msi<SPAN style="mso-spacerun: yes">  </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/SPAN><SPAN lang=EN-US>Windows</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?BR></SPAN><SPAN lang=EN-US>Linux</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q还使用命o行吧</SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">嘿嘿</SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不过也没有谁自己?/SPAN><SPAN lang=EN-US>client</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/SPAN><SPAN lang=EN-US>Linux</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/SPAN></P> <H1 style="MARGIN: 17pt 0cm 16.5pt; TEXT-INDENT: 0cm"><SPAN lang=EN-US style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%; mso-bidi-font-family: 宋体"><SPAN style="mso-list: Ignore">W二?</SPAN></SPAN><SPAN style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">主要操作</SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%"><o:p></o:p></SPAN></H1> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">l<SPAN style="FONT: 7pt 'Times New Roman'">         </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如何下蝲</SPAN><SPAN lang=EN-US>CVS ?checkout</SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如图?/SPAN><SPAN lang=EN-US>URL of repository </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输入服务器项目名U就好。(?/SPAN><SPAN lang=EN-US>IE</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">也能看啦Q?BR></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:wrapblock><?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id=_x0000_s1026 style="MARGIN-TOP: 5.4pt; Z-INDEX: 1; LEFT: 0px; VISIBILITY: hidden; MARGIN-LEFT: 0px; WIDTH: 0pt; POSITION: absolute; HEIGHT: 0pt; TEXT-ALIGN: left" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\admin\LOCALS~1\Temp\msohtml1\01\clip_image001.jpg" o:title="001"></v:imagedata><?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" /><w:wrap type="topAndBottom"></w:wrap></v:shape></o:wrapblock><BR><BR><IMG height=320 alt=001.JPG src="http://www.aygfsteel.com/images/blogjava_net/kinoviti/Subversion/001.JPG" width=456 border=0><BR><BR><BR><BR><BR><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">l<SPAN style="FONT: 7pt 'Times New Roman'">         </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如何q加新文件或者目?/SPAN> <SPAN lang=EN-US>?add</SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>Subversion</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是递归q加的,省去?/SPAN><SPAN lang=EN-US>cvs</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/SPAN><SPAN lang=EN-US>python</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q一步?/SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q里的追加仅仅是在本地打标记Q别忘了提交Q!Q?BR><BR><BR><IMG height=386 alt=007.JPG src="http://www.aygfsteel.com/images/blogjava_net/kinoviti/Subversion/007.JPG" width=498 border=0><BR></SPAN></P> <P><SPAN style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></SPAN><o:wrapblock><v:shape id=_x0000_s1027 style="MARGIN-TOP: 3.7pt; Z-INDEX: 2; LEFT: 0px; VISIBILITY: hidden; MARGIN-LEFT: 0px; WIDTH: 0pt; POSITION: absolute; HEIGHT: 0pt; TEXT-ALIGN: left" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\admin\LOCALS~1\Temp\msohtml1\01\clip_image002.jpg" o:title="007"></v:imagedata><w:wrap type="topAndBottom"><BR></w:wrap></v:shape></o:wrapblock><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore"><BR>l<SPAN style="FONT: 7pt 'Times New Roman'">         </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如何提交修改</SPAN> <SPAN lang=EN-US>?commit</SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:wrapblock><v:shape id=_x0000_s1028 style="MARGIN-TOP: 2.25pt; Z-INDEX: 3; LEFT: 0px; VISIBILITY: hidden; MARGIN-LEFT: 0px; WIDTH: 0pt; POSITION: absolute; HEIGHT: 0pt; TEXT-ALIGN: left" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\admin\LOCALS~1\Temp\msohtml1\01\clip_image003.jpg" o:title="003"></v:imagedata><w:wrap type="topAndBottom"></w:wrap></v:shape></o:wrapblock><BR style="mso-ignore: vglayout" clear=all></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">英文?/SPAN><SPAN lang=EN-US>CVS</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一P毕竟q?/SPAN><SPAN lang=EN-US>2</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个Y仉有同一个“老爸?/SPAN><SPAN lang=EN-US>(</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Arial">Karl</SPAN><SPAN lang=EN-US>)</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q相q也自然?/SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p> <IMG height=515 alt=003.JPG src="http://www.aygfsteel.com/images/blogjava_net/kinoviti/Subversion/003.JPG" width=551 border=0></o:p></SPAN><BR style="mso-ignore: vglayout" clear=all><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是不是比</SPAN><SPAN lang=EN-US>CVS</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">友好Q这?/SPAN><SPAN lang=EN-US>Client</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q不错么Q?</SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">呵呵</SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">但这q不?/SPAN><SPAN lang=EN-US>Subversion</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">真正的强V?BR><BR><IMG height=500 alt=004.JPG src="http://www.aygfsteel.com/images/blogjava_net/kinoviti/Subversion/004.JPG" width=635 border=0><BR><BR><BR><BR><BR></SPAN><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">l<SPAN style="FONT: 7pt 'Times New Roman'">         </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如何撤销操作</SPAN> <SPAN lang=EN-US>?clean up / revert</SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:wrapblock><v:shape id=_x0000_s1030 style="MARGIN-TOP: 0.3pt; Z-INDEX: 5; LEFT: 0px; VISIBILITY: hidden; MARGIN-LEFT: 0px; WIDTH: 0pt; POSITION: absolute; HEIGHT: 0pt; TEXT-ALIGN: left" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\admin\LOCALS~1\Temp\msohtml1\01\clip_image006.jpg" o:title="005"></v:imagedata><w:wrap type="topAndBottom"></w:wrap></v:shape></o:wrapblock><BR style="mso-ignore: vglayout" clear=all><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果你做了不该做的事?/SPAN><SPAN lang=EN-US>?-_-!<SPAN style="mso-spacerun: yes">   </SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">那么恢复很重要了(当然了,q都是客L的,如果已经提交了,?/SPAN><SPAN lang=EN-US>?/SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q着挨板子吧Q?/SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>Clean </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/SPAN><SPAN lang=EN-US> Revert </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">很相q。都是撤销提交前进行的所有修攏V可以对目录作?BR></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><BR><BR><IMG height=423 alt=005.JPG src="http://www.aygfsteel.com/images/blogjava_net/kinoviti/Subversion/005.JPG" width=627 border=0><BR><BR><BR><BR> <BR></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo2; tab-stops: list 21.0pt"><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">l<SPAN style="FONT: 7pt 'Times New Roman'">         </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如何明确目录下的变更?/SPAN> <SPAN lang=EN-US>?status</SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:wrapblock><v:shape id=_x0000_s1031 style="MARGIN-TOP: 3.4pt; Z-INDEX: 6; LEFT: 0px; VISIBILITY: hidden; MARGIN-LEFT: 0px; WIDTH: 0pt; POSITION: absolute; HEIGHT: 0pt; TEXT-ALIGN: left" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\admin\LOCALS~1\Temp\msohtml1\01\clip_image008.jpg" o:title="008"></v:imagedata><w:wrap type="topAndBottom"></w:wrap></v:shape></o:wrapblock><IMG height=523 alt=008.JPG src="http://www.aygfsteel.com/images/blogjava_net/kinoviti/Subversion/008.JPG" width=707 border=0><BR><BR><BR><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">右键</SPAN> <o:wrapblock><v:shape id=_x0000_s1032 style="MARGIN-TOP: 3.4pt; Z-INDEX: 7; LEFT: 0px; VISIBILITY: hidden; MARGIN-LEFT: 0px; WIDTH: 0pt; POSITION: absolute; HEIGHT: 0pt; TEXT-ALIGN: left; mso-position-horizontal-relative: text; mso-position-vertical-relative: text" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\admin\LOCALS~1\Temp\msohtml1\01\clip_image008.jpg" o:title="008"></v:imagedata><w:wrap type="topAndBottom"></w:wrap></v:shape></o:wrapblock><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">右键</SPAN> <o:wrapblock><v:shape id=_x0000_s1033 style="MARGIN-TOP: 3.4pt; Z-INDEX: 8; LEFT: 0px; VISIBILITY: hidden; MARGIN-LEFT: 0px; WIDTH: 0pt; POSITION: absolute; HEIGHT: 0pt; TEXT-ALIGN: left; mso-position-horizontal-relative: text; mso-position-vertical-relative: text" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\admin\LOCALS~1\Temp\msohtml1\01\clip_image008.jpg" o:title="008"></v:imagedata><w:wrap type="topAndBottom"></w:wrap></v:shape></o:wrapblock><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q是右键。对Q就?/SPAN><SPAN lang=EN-US> Check for Modifications </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q厮Q?/SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes"></SPAN></SPAN> </P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo2; tab-stops: list 21.0pt"><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">l<SPAN style="FONT: 7pt 'Times New Roman'">         </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如何删除一个文件或者目?/SPAN> <SPAN lang=EN-US>?delete</SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q就不说了,</SPAN><SPAN lang=EN-US>Delete </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q个东东是Q?SPAN style="COLOR: red">别忘?/SPAN></SPAN><SPAN style="COLOR: red"> </SPAN><SPAN style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提交Q?/SPAN><SPAN lang=EN-US style="COLOR: red"><o:p></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo2; tab-stops: list 21.0pt"><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">l<SPAN style="FONT: 7pt 'Times New Roman'">         </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如何察看一个文件的或者目录的修改记录</SPAN><SPAN lang=EN-US> --- log</SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p> <BR></o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:wrapblock><v:shape id=_x0000_s1034 style="MARGIN-TOP: -52.4pt; Z-INDEX: 9; LEFT: 0px; VISIBILITY: hidden; MARGIN-LEFT: 2.85pt; WIDTH: 0pt; POSITION: absolute; HEIGHT: 0pt; TEXT-ALIGN: left" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\admin\LOCALS~1\Temp\msohtml1\01\clip_image010.jpg" o:title="009"></v:imagedata><w:wrap type="topAndBottom"></w:wrap></v:shape></o:wrapblock><IMG height=647 alt=009.JPG src="http://www.aygfsteel.com/images/blogjava_net/kinoviti/Subversion/009.JPG" width=633 border=0><BR><BR><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是?/SPAN><SPAN lang=EN-US> history </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">了。?/SPAN><SPAN lang=EN-US>Show Log</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">好?/SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo2; tab-stops: list 21.0pt"><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">l<SPAN style="FONT: 7pt 'Times New Roman'">         </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如何比较文g或者不同版本之间的比较</SPAN> <SPAN lang=EN-US>?diff</SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如上图,得到历史版本后,可以直?/SPAN><SPAN lang=EN-US>diff</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">了,q个</SPAN><SPAN lang=EN-US>Client</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">自带?/SPAN><SPAN lang=EN-US>Compare</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">功能。可能不?/SPAN><SPAN lang=EN-US>BC</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">强吧Q不定?/SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo2; tab-stops: list 21.0pt"><SPAN lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><SPAN style="mso-list: Ignore">l<SPAN style="FONT: 7pt 'Times New Roman'">         </SPAN></SPAN></SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">明确提交文g时的用户权限验证</SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><o:wrapblock><v:shape id=_x0000_s1035 style="MARGIN-TOP: 3.7pt; Z-INDEX: 10; LEFT: 0px; VISIBILITY: hidden; MARGIN-LEFT: 0px; WIDTH: 0pt; POSITION: absolute; HEIGHT: 0pt; TEXT-ALIGN: left" type="#_x0000_t75"><v:imagedata src="file:///C:\DOCUME~1\admin\LOCALS~1\Temp\msohtml1\01\clip_image012.jpg" o:title="006"></v:imagedata><w:wrap type="topAndBottom"></w:wrap></v:shape></o:wrapblock><BR><IMG height=408 alt=006.JPG src="http://www.aygfsteel.com/images/blogjava_net/kinoviti/Subversion/006.JPG" width=652 border=0><BR><BR><BR><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">写个代码</SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Ҏ么。都是体力啊Q被盖了Q可不是气的嘴都歪了。所?/SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">权限</SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">理也就应历史z流Q出现在</SPAN><SPAN lang=EN-US>Subversion</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中。这个图是提交时的密码输入。具体的讄请参?/SPAN><SPAN lang=EN-US>《subversion之Apache配置?/SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/SPAN></P> <H1 style="MARGIN: 17pt 0cm 16.5pt; TEXT-INDENT: 0cm"><SPAN lang=EN-US style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%; mso-bidi-font-family: 宋体"><SPAN style="mso-list: Ignore">W三?</SPAN></SPAN><SPAN style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">预设权限和用?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%"><o:p></o:p></SPAN></H1> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>Subversion</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">自带了一个小型的</SPAN><SPAN lang=EN-US>server</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">叫做</SPAN><SPAN lang=EN-US> svnserve </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">但是他不能完成复杂的权限目录{的理Q因此我们这ơ借用</SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/SPAN><SPAN lang=EN-US>XX </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/SPAN><SPAN lang=EN-US>Apache Server</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/SPAN><st1:chsdate IsROCDate="False" IsLunarDate="False" Day="30" Month="12" Year="1899" w:st="on"><SPAN lang=EN-US>2.0.53</SPAN></st1:chsdate><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/SPAN><SPAN lang=EN-US>,</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">使用了他?/SPAN><SPAN lang=EN-US>Apache Base Auth </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">框架。具体设|?/SPAN> <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">参见</SPAN><SPAN lang=EN-US> <SPAN lang=EN-US>《subversion之Apache配置?/SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/SPAN></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo2; tab-stops: list 21.0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></SPAN></P><STRONG><SPAN lang=EN-US style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%; mso-bidi-font-family: 宋体"><SPAN style="mso-list: Ignore">W四?</SPAN></SPAN><SPAN style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">参?/SPAN></STRONG><SPAN lang=EN-US style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%"><o:p></o:p></SPAN> <P></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">《?/SPAN><SPAN lang=EN-US>Subversion</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q行版本控制?/SPAN><SPAN lang=EN-US> Orilly </SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中文</SPAN> </P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A ></A></SPAN> </P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p> </o:p></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/SPAN><SPAN lang=EN-US>Apache Securty</SPAN><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/SPAN><SPAN lang=EN-US><SPAN style="mso-spacerun: yes">  </SPAN>HTMLPage<SPAN style="mso-spacerun: yes">  </SPAN>ApacheGroup English</SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><A ></A></SPAN> </P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p> </o:p></SPAN></P> <H1 style="MARGIN: 17pt 0cm 16.5pt; TEXT-INDENT: 0cm"><SPAN lang=EN-US style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%; mso-bidi-font-family: 宋体"><SPAN style="mso-list: Ignore">W五?</SPAN></SPAN><SPAN style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">疑问和联p?/SPAN><SPAN lang=EN-US style="FONT-SIZE: 14pt; LINE-HEIGHT: 240%"><o:p></o:p></SPAN></H1> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><SPAN style="mso-spacerun: yes">kino <BR><BR><A href="mailto:kinoviti@gmail.co">kinoviti@gmail.co</A>m<BR>QQ:23493713</SPAN></SPAN></P><img src ="http://www.aygfsteel.com/kinoviti/aggbug/29291.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/kinoviti/" target="_blank">-=Kinohl=-</a> 2006-01-27 11:19 <a href="http://www.aygfsteel.com/kinoviti/archive/2006/01/27/29291.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX之工E感?/title><link>http://www.aygfsteel.com/kinoviti/archive/2006/01/27/29290.html</link><dc:creator>-=Kinohl=-</dc:creator><author>-=Kinohl=-</author><pubDate>Fri, 27 Jan 2006 02:14:00 GMT</pubDate><guid>http://www.aygfsteel.com/kinoviti/archive/2006/01/27/29290.html</guid><wfw:comment>http://www.aygfsteel.com/kinoviti/comments/29290.html</wfw:comment><comments>http://www.aygfsteel.com/kinoviti/archive/2006/01/27/29290.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/kinoviti/comments/commentRss/29290.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/kinoviti/services/trackbacks/29290.html</trackback:ping><description><![CDATA[<P>恩,q个我觉得才是真正的 随笔吧。谈谈我的感触吧?BR>AJAX  Struts q?大红大的技术都在强?MVCQ前者应该说是SPBQ,实在理解上清晰了很多。但是在工作中,我认?无论白猫、黑猫、抓住老鼠的就是好猫。(老板才不在乎你用的是什么,效率重要Qؓ什么说q个Q目的就一个:灉|变通?BR><BR>在标准的概念和传l的例子里, AJAX传输的应该是XMLQ纯U的数据对象Q,拿到Browser再通过JS解析、拼装,生成所需的真正对象。可JS毕竟M开他的本质ScriptQ性能是瓉Q把大量的数据放到客L解析Q本w就不好?BR>在我上一个项目里Q需要构Z颗web treeQ能够动态更新。案有几个,最好的自然是js对象+onXXҎ重蝲Q传输纯DataQBrowser解析、构建TreeQ需要记住选中和展开方式。但是这时要有一定JS基础的。不然说hҎQ写h难了。这U代码,用JS实现?k左右Q行敎ͼQ调试JS比吃蜡都头疼。我化了一些功能,?.5k实现了功能,但是q是调试太篏?BR><BR>我又选择了简单的另一U案QTree昄Module直接在Server构徏好,传输的XML其实是Tree昄模型Q具体一Ҏ说比 ? 的数据多??属性: iIndent(~紧int)QiOrderQ展开节点Q。这2个属性和h正好?深度优先的构建顺序。那么在客户端,我放弃了复杂的对象化Q直接用js解析xmlQ生成html代码。和?相比功能一P但是代码量降低到 700L?BR><BR>ȝ一下吧Q说得这么ؕ。那是 因地制宜吧。如果你是学习结构那么SPB MVCl对是好事情Q如果是公司应用Q时间要求的紧紧圎ͼ那么攑ּq些 框框Q怎么方便怎么来,毕竟U学是要转化为生产力才有用嘛?BR><BR>敬请各位讨论?/P><img src ="http://www.aygfsteel.com/kinoviti/aggbug/29290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/kinoviti/" target="_blank">-=Kinohl=-</a> 2006-01-27 10:14 <a href="http://www.aygfsteel.com/kinoviti/archive/2006/01/27/29290.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>探Subversion Server ?Apache配置http://www.aygfsteel.com/kinoviti/archive/2006/01/26/29277.html-=Kinohl=--=Kinohl=-Thu, 26 Jan 2006 15:32:00 GMThttp://www.aygfsteel.com/kinoviti/archive/2006/01/26/29277.htmlhttp://www.aygfsteel.com/kinoviti/comments/29277.htmlhttp://www.aygfsteel.com/kinoviti/archive/2006/01/26/29277.html#Feedback0http://www.aygfsteel.com/kinoviti/comments/commentRss/29277.htmlhttp://www.aygfsteel.com/kinoviti/services/trackbacks/29277.html关键字:Subversion,Apache,DAV
难易度: ?

软g版本Qsubversion1.2.3
apache-server 2.0.55

旉Q?006-01-26
AuthorQKino
***************************************
安装到Apache
Subversion作ؓCVS的次代作品,Kerl真的是煞费苦心啊。现在我们就来看看如何配|它到ApacheServer?BR>Subversion本n有一个自带的server是bin下的cvsserve Q通过svn://XXXXq行讉K。同时支持ssh配置。但是弱点就是这个server对于权限和用L理很弱,对于大型目Q必d他挂在ApacheServerq样的重萨巴上?BR>[svnserve的用h仉要修改conf下的2个文Ӟ自己看看Q很单都有注释的Q这里不说了]

        你应该得到subversion的二q制安装版,比较E_的是1.2.3版本Q这个版本对于apacheserver最低的版本要求?.0.45 所以我们可以去apache官方站点下蝲2.0.55版本Q最新已l是2.5了吧Q。分别安?个Y件?BR>ok,软g环境好了Q那来q接他们吧?BR>
数据库连接:
Q如果你懒得改,那么安装软g的时候就一定要先安装ApacheServer,Subversion安装的时候会自动修改Q?BR>subversion可以被看作是一个特D的数据库(事实上也是Q呵呵FSFS 和伯克利DBQ。那么就需要让Apache能够讉Ksubversion的数据库Q这qCmodule概念Q我们便来修改httpd.conf文g?BR>1。打开Apache自带的DAVmoduleQ去掉“LoadModule dav_module modules/mod_dav.so”前?
2。追加访问subversion用的moduleQ(subversion安装目录bin下自带有q?个modulesQ?BR>LoadModule dav_svn_module "C:/Program Files/Subversion/bin/mod_dav_svn.so"
LoadModule authz_svn_module "C:/Program Files/Subversion/bin/mod_authz_svn.so"

权限讄Q?/FONT>
比较ȝ的东西来了。我们需要配|?个东西:
1。在httpd.conf中追?lt;Location > 。例子如下:
#配置subversion用户权限
<Location /mysvn>
  DAV svn
  # http中输?nbsp;"/mysvn/Parser" URL will map to a repository F:/SVN/repository/Parser
 SVNParentPath F:/SVN/repository/

  #声明 accessfilepolicy 文gQ目的是认Group分类和目录的讉K权限
 AuthzSVNAccessFile F:/SVN/commonconf/accessfilepolicy 

 # only authenticated users may access the repository
 # Require valid-user
 # For any operations other than these, require an authenticated user.
 <LimitExcept GET PROPFIND OPTIONS REPORT>
    Require valid-user
 </LimitExcept>

  # 声明userauthofapachedav文gQ其内容是各个用Lmd5密码
  AuthType Basic
  AuthName "HFSVB AuthName"
  AuthUserFile F:/SVN/commonconf/userauthofapachedav
</Location>

2。accessfilepolicy 文gQ放在项目的conf目录下,也可随意Q?如下Q?BR>#this file communicate with httpd file's Location Tag ,per file  per Tag
#like svnserve.conf  here section is [repos-name:path] or [path]
#if you use SVNParentPath in httpd.conf then here you MUST use repository name
#if you use SVNPath ,no problem
#r   read     w   write 

#don't have any right to parser:/src/ of user guest
#[repository名字Qpath]
#[parser:/src/]
#guest =

[groups]
administrator = admin
developer = tester
everyone = admin, tester

#default no one has right to repos,so use * to everyone
[parser:/] #根目录下所有的文g和目录,又承关p?BR>* = r  #默认的所有h都有 L?BR>@developer = rw  #q就表明只有developerQtesterQ才有读写权?BR>[ 具体的文件和内容可查?Orilly的《用Subversionq行版本控制?BR>讉K http://www.subversion.org.cn/svnbook/1.1/index.html  ]
3。userauthofapachedav文g
admin:$apr1$A45.....$WQ0RCK61I/PO4gSKt.kK60
q个文g是如何生成的呢,使用apache 的bin目录下的htpasswd.exe。用法可以参?--help的帮助?BR>q里l一个例子吧
>htpasswd -cm C:/userauthofapachedav  admin
>input password:admin123
>again : admin123 
具体的英文忘了。呵呵不q很单的?BR>
好了Q就q么单。祝大家开心。这只是入门。具体的操作q要靠各位自己去感受?BR>
关于如何讄subversion的项目库Q上Ҏ到的orilly的书有记蝲?BR>
       



-=Kinohl=- 2006-01-26 23:32 发表评论
]]>
Log4j 单配|?/title><link>http://www.aygfsteel.com/kinoviti/archive/2006/01/26/29267.html</link><dc:creator>-=Kinohl=-</dc:creator><author>-=Kinohl=-</author><pubDate>Thu, 26 Jan 2006 10:09:00 GMT</pubDate><guid>http://www.aygfsteel.com/kinoviti/archive/2006/01/26/29267.html</guid><wfw:comment>http://www.aygfsteel.com/kinoviti/comments/29267.html</wfw:comment><comments>http://www.aygfsteel.com/kinoviti/archive/2006/01/26/29267.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/kinoviti/comments/commentRss/29267.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/kinoviti/services/trackbacks/29267.html</trackback:ping><description><![CDATA[<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>Log4j 单配|?/SPAN><SPAN style="FONT-FAMILY: 宋体"></SPAN><SPAN lang=EN-US><BR>***************************************<BR></SPAN><SPAN style="FONT-FAMILY: 宋体">关键字:</SPAN><SPAN lang=EN-US>Log4j<BR></SPAN><SPAN style="FONT-FAMILY: 宋体">难易度:?/SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN style="FONT-FAMILY: 宋体">软g版本Qapache-log4j-1.2.9</SPAN><SPAN lang=EN-US><BR>旉Q?006-01-26<BR>AuthorQKino<BR>***************************************<BR><BR>呵呵 快过q了。眼看n边的朋友一个一个离开Q踏上归途,心里不免有些淡E的忧伤。ؓ了消时_写写文章也和久违的大家聊聊?BR><BR>q里先祝愿各位朋友新春快乐。在狗年旺、旺、旺旺旺?<BR><BR>切入正题吧。大名鼎鼎的Log4j我也理解得不深,q里采用假设的问{方式介l吧?BR>QQLog4j是个什么东西?<BR>AQLog4j应该叫做 Log for java吧,是ApacheGroup旗下的明星项目,已经应用在很多方面了。同cȝq有针对c c++{的log4c log4XXX之类。请自己看链接:<BR><BR>QQLog4j到底是怎么被应用得Q?BR>AQ这p从结构上说了Q首先我们应用的q不是Log4j而是Jakarta-Commons-loggingQ但是这只是一个interface包没有具体的实现Q其实是有的Q叫做SampleLog׃是快Q。所以在大火的source里你只需要面向Logging~程而无d心到底是如何生成的。因为Logging目支持很多实现q不一定是Log4j。还有JDK的Log也行啊。那我们要做的就?nbsp; 配置 Log4j到系l就好了?BR><BR>QQLog4j到底要配|什么东西,才能被系l识别?<BR>AQ?个:Jar?nbsp; ?nbsp; log4j配置文g?Jar我就不说了。现在来说Log4j配置文g。这个文件可以随意命名,默认的文件是 log4j.properties 。放在你的src根目录下好。比?你的source的catagory是com.yourcompany.xx那么攑֜和comq列的目录下好?BR><BR>QQ如果我不想用默认的log4j.properties 我应该怎么定义Q怎么做?<BR>AQ那׃用下边的命o定义Q?BR>System.setProperty("");  -_-! 具体内容想不h了,留言中补充吧?BR>如果你是Struts工程或者Web工程Q需要做一个sevlet把这D代码蝲入。重载ActionServlet的initҎ好?BR><BR>QQ这个文件如何定义?<BR>AQ如下例。(具体的可以查阅JavaDocQ?BR>### direct log messages to console ###<BR>log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender<BR>log4j.appender.CONSOLE.Target=System.out<BR>log4j.appender.CONSOLE.Threshold=INFO<BR>log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout<BR>log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss:SSS} %-5p %m (%F:%L) [%t]%n<BR></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US>### direct messages to file gm_web.log ###<BR>log4j.appender.FILE=org.apache.log4j.RollingFileAppender<BR>log4j.appender.FILE.File=../logs/gm_web.log<BR>log4j.appender.FILE.MaxFileSize=1000KB<BR>log4j.appender.FILE.MaxBackupIndex=5<BR>log4j.appender.FILE.Append=true<BR>log4j.appender.FILE.Threshold=DEBUG<BR>log4j.appender.FILE.layout=org.apache.log4j.PatternLayout<BR>log4j.appender.FILE.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss:SSS} %-5p %m (%F:%L) [%t]%n<BR></SPAN></P> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US># Set root category priority to INFO and its only appender to CONSOLE.<BR>log4j.rootCategory=ERROR, CONSOLE, FILE<BR>log4j.logger.com.mycompany.ui=DEBUG, CONSOLE, FILE<BR><BR>XML格式的定义,我就不说了,资料满天都是?BR><BR>QQ听说Log记录有承关p,那么多LogQ效率太低了?BR>AQ有l承关系Q对应的当然有打破l承的定义,比如上例?BR>log4j.rootCategory=ERROR, CONSOLE, FILE<BR>log4j.logger.com.mycompany.ui=DEBUG, CONSOLE, FILE<BR>com.mycompany.uiq承了rootCategory的Log记录U别。但是如果像破除使用additivity<BR>log4j.additivity.com.mycompany.ui=false<BR>KO了?BR><BR>QQlog4j.appender.FILE.File=yourlogfile.log 到底l我把Log攑֓MQ能改不Q?BR>AQ如果是Tomcat那就攑ֈbin下边了。能改啊Qbin是基准目录Q写相对路径好咯。如上例?BR><BR>QQLog4j中ConversionPattern到底都是什么意思,都怎么用啊Q?BR>AQ?如下解释</P> <OL style="MARGIN-TOP: 0in; MARGIN-BOTTOM: 0in; MARGIN-LEFT: 1.5in; DIRECTION: ltr; unicode-bidi: embed" type=1> <LI style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3" value=1><SPAN lang=EN-US style="FONT-FAMILY: Verdana">[c]/[C] -- </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">q回用来军_</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> Class</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">名称</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">以及</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> package</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">路径Q\径也可是部分的)</SPAN> <LI style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3" value=2><SPAN lang=EN-US style="FONT-FAMILY: Verdana">[d] -- </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">q回旉</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">可能有各U格?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">format</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">的时间?/SPAN> <LI style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3" value=3><SPAN lang=EN-US style="FONT-FAMILY: Verdana">[F] -- </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">q回发出记蝲</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Log</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">h的文件得名字?/SPAN> <LI style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3" value=4><SPAN lang=EN-US style="FONT-FAMILY: Verdana">[l] -- </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">q回生成</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">log</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">事g的调用者的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Location Information</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">?/SPAN> <LI style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3" value=5><SPAN lang=EN-US style="FONT-FAMILY: Verdana">[L] -- </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">q回发出记蝲</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Log</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">h的行数?/SPAN> <LI style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3" value=6><SPAN lang=EN-US style="FONT-FAMILY: Verdana">[m] -- </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">q回用户自己写的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> message</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">?/SPAN> <LI style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3" value=7><SPAN lang=EN-US style="FONT-FAMILY: Verdana">[M] -- </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">q回发出记蝲</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Log</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">h的方法名U?/SPAN> <LI style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3" value=8><SPAN lang=EN-US style="FONT-FAMILY: Verdana">[n] -- </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">q回</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">换行。(依据q_不同而不同)</SPAN> <LI style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3" value=9><SPAN lang=EN-US style="FONT-FAMILY: Verdana">[p] -- </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">q回</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Log</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">事g的优先?/SPAN> <LI style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3" value=10><SPAN lang=EN-US style="FONT-FAMILY: Verdana">[r] -- </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">q回?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Application</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">开始到q条</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Log</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">事g产生之间的时间间隔?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">(</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">毫秒</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">)</SPAN> <LI style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3" value=11><SPAN lang=EN-US style="FONT-FAMILY: Verdana">[t] -- </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">q回生成</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Log</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">事g的线E名U?/SPAN> <LI style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3" value=12><SPAN lang=EN-US style="FONT-FAMILY: Verdana">[x] -- </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">q回与生?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Log</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">事g的线E相关的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">NDC(</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">内嵌特征内容</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">)</SPAN> <LI style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3" value=13><SPAN lang=EN-US style="FONT-FAMILY: Verdana">[X] -- </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">q回与生?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">Log</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">事g的线E相关的</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">MDC(</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">映射特征内容</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">)</SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">Q要</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">KeyofMDC</SPAN> <LI style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3" value=14><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">分隔W?/SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> -- </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">I格Q可能在</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana">left </SPAN><SPAN lang=ZH-CN style="FONT-FAMILY: SimSun">也可能在</SPAN><SPAN lang=EN-US style="FONT-FAMILY: Verdana"> right</SPAN></LI></OL> <P style="MARGIN-TOP: 0px; FONT-SIZE: 11pt; MARGIN-BOTTOM: 0px; VERTICAL-ALIGN: middle; FONT-FAMILY: SimSun; mso-outline-level: 3"><SPAN lang=EN-US style="FONT-FAMILY: Verdana"><BR>QQConversionPattern参数能去哪里参考呢Q?BR>AQJavaDoc  PatternLayout cR?/P></SPAN> <P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><A >http://logging.apache.org/log4j/docs/api-unstable/index.html</A><BR><BR>QQLog4j会不会太慢啊Q性能如何Q?BR>AQ这个问题不好回{。反正记录一条Log大约的时间是20ms ?400ms吧,Ҏ你ConversionPattern需要记录的格式内容Q以及package catagory的承关pL军_。那么每个pattern到底哪个快哪个慢Q哪个超U慢Q请?A >http://logging.apache.org/log4j/docs/api-unstable/index.html</A>。d一句话Q只要让log4jl你trace调用关系Q反class 别指望能快Q格谁都一P是吧?BR><BR><BR>QQ下班了没,啰嗦q么多,有问题再问你吧,留下联系信息<BR>AQ刚下班Q还吃了朋友的蛋p?他本人正在飞ZQ哈哈,吃了个独?Q回家咯。讨论问题的La或?A href="mailto:kinoviti@gmail.com">kinoviti@gmail.com</A>   QQ:23493713</SPAN></P><img src ="http://www.aygfsteel.com/kinoviti/aggbug/29267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/kinoviti/" target="_blank">-=Kinohl=-</a> 2006-01-26 18:09 <a href="http://www.aygfsteel.com/kinoviti/archive/2006/01/26/29267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ Test ?RuleWizard 使用心得http://www.aygfsteel.com/kinoviti/archive/2005/11/22/21007.html-=Kinohl=--=Kinohl=-Tue, 22 Nov 2005 09:43:00 GMThttp://www.aygfsteel.com/kinoviti/archive/2005/11/22/21007.htmlhttp://www.aygfsteel.com/kinoviti/comments/21007.htmlhttp://www.aygfsteel.com/kinoviti/archive/2005/11/22/21007.html#Feedback9http://www.aygfsteel.com/kinoviti/comments/commentRss/21007.htmlhttp://www.aygfsteel.com/kinoviti/services/trackbacks/21007.htmlC++  Test  ?RuleWizard 使用心得
***************************************
关键字:C++Test    Rulewizard    Python
难易度:?/SPAN>

软g版本Q?/SPAN>Parasoft  C++ Test  6.5
旉Q?005-11-23
AuthorQKino
********************************

一.介绍一下C++Test吧(q一部分请允许我ctrl + c/v Q?/STRONG>

是单元测试和静态分析工P自动试C?/SPAN>CQ+cd、功能或lgQ而无需~写单个试实例、测试驱动程序或桩调用。只需点击按钮Q?/SPAN>C++Test即会采用业内~码标准执行代码的静态分析,试代码构造(白盒试Q,试代码功能性(黑盒试Q,q保持代码完整性(回归试Q。可以E行在Windows 2000/XP ?/SPAN>Linux ?/SPAN>Solaris 7, 8, 9q_之上。她的主要功能可以参见下边的链接|页Q?/SPAN>

http://www.superinst.com/cn/products/software_engineering/unit_testing/parasoft/ctest.html

q里我想说明的不?/SPAN>C++Test有多么好用,而是要说明她内置?/SPAN>RuleWizard™定制编码机能。那么什么才?/SPAN>RuleWizard呢?他到底能q什么?

?RuleWizard

C++Test内置?/SPAN>300多个静态测试项Q一般的情况下其实也够用了。但是如果有Ҏ的测试要求,动辄几十K的代码,用眼睛看Q脑子想Q太辛苦Q也不“安全”。那么?/SPAN>rulewizard定制自己的规则还是很有用的?/SPAN>

我们首先要明,rulewizard定制的是 不成?/STRONG> 的情c也是应该被排除的?/SPAN>

Rule的创建有2U方式,一U是手工写规则,另一U是写入需要剔除的代码Q让rulewizardd你生成规则(最好别用,弱弱?/SPAN>autocreateQ。我q里主要重点攑֜自己写规则方面?/SPAN>

Rulewizard的界面如下图Q?/SPAN>


o_Rulewizard001.JPG*******

?。RuleWizard界面

 

 

双的就是我们写的规则?/SPAN>

那么我们先来大概的介l一?/SPAN>rulewizard定义的基本组成部分吧。(实在不太会翻译,那么沿用英文名字了Q请大家多多包涵Q?/SPAN>

NodeQ规则的基本l成部分Q通过Node你可以很清楚的知道它的功能。比如表辑ּa=b、变量的cd试。。。分为:

parentNodeQ规则中的主分支Node或者次分支的主Node。内容可以是表达式、变量、函数等

childNodeQ规则的l成单元?/SPAN>

CommandsQ?/SPAN>用来?/SPAN>Node?/SPAN>Nodes之间建立兌关系。Ş象一点就是点中一?/SPAN>Node然后右键昄出的快捷菜单的上半部分。如下图Q?/SPAN>

 o_Rulewizard002.JPG

 ?

介绍一下主要的Command

Collector:集合。这个概忉|像数学中的集合而不?/SPAN>Java中的q义集合。满一定条件的数据或者方法或者变量的全体。比如,所有被声明q的变量Q?SPAN style="COLOR: red">如下?BR>

o_Rulewizard003.JPG
?

isDecl是用来返回前边的node是不是一个声明。那?/SPAN>body?/SPAN>membervariableq回了所有的包涵指定cd变量得语句(包括 变量付倹{声明、判断等Q那么这个图被理解ؓQ所有不是声明得语句内用的变量的集合?/SPAN>

没有被声明的变量Q?SPAN style="COLOR: red">如下?/SPAN>?BR>

o_Rulewizard004.JPG
?

q里的意思是所有作为声明语句的变量的集合?/SPAN>

 

那么通常情况下,A集合?/SPAN>B集合应该是相{的Q也是说所有被声明q的变量Q?/SPAN>B集合内容Q应该都被?/SPAN>/付?/SPAN>/判断Q?/SPAN>A集合的内容)。那么对于存在声明了但没有被使用的变量的Ҏ情况应该怎么栯C呢Q?/SPAN>

Node Set:Node?/SPAN>Node集合的处理。分?/SPAN>UnionQ合qӞ?/SPAN>IntersectionQ交叉)?/SPAN>DifferenceQ差|左差/叛_Q?/SPAN>XorQ异或)?SPAN style="COLOR: red">如下?/SPAN>Q?BR>

o_Rulewizard006.JPG
?

如果 满q个规则Q那么输出相应得警告信息?/SPAN>

 

OutputQ?/SPAN>如果满check的条Ӟ向用戯回一个消息(头表示Q?/SPAN>

 

三.Python

       q里python是用来给rulewizard作补充的一个脚本语a。通过python可以定制一些特D的Q?/SPAN>rulewizard?/SPAN>node不能完成的规则?/SPAN>Python可以使用2U方式被加入到规则中Q?/SPAN>

作ؓ一个输?/SPAN>Q如果规则没有被遵守那么可以调用一个违反规则的Ҏ。(cM于输出错误消息,只不q这里用来启动一个方法而已Q?/SPAN>

作ؓ一个单独的ҎlgQ其实就是一个方法而已。比如,以上图ؓ例子Q如果我们不判断B ?/SPAN> A的大关p,是xC?/SPAN>A?/SPAN>B的内容,那么得到如下的图:

 

 r_Rulewizard005.JPG

?

 

其中Method的内ҎQ?/SPAN>

def showCollectorContext(node,context):

       a = context.getList("A")

       b = context.getList("B")

       context.report("D's Context is " + str(a) + "C's Context is " + str(b))

那么?/SPAN>c++testq行试的时候就会得到输出我们需要的内容?/SPAN>

关于python的语法我q里׃写了Q毕竟和q篇文章的内容美关系。如果想要了解,可以M载相兌料,我这里徏议?/SPAN> Orielly?/SPAN> Python in a Nutshell ?/SPAN>

四.不?/SPAN>

作ؓ一个能自定义规则的静态测试工P不得不佩?/SPAN>parasoft兄弟们的才智。但是我觉得q有一些改善点的:Q当然也不排除,已经有,但我没有发现的情况,如果各位知道h教,谢谢先)

1Q?SPAN style="FONT: 7pt 'Times New Roman'">              通过pyhon我们可以q涉规则的制定,比如Q对于上例变量的定Q如果们不?/SPAN>collect  set?/SPAN>Difference|left menusQ就是图4中最下的那个6边ŞQ,而用python一L可以Ҏ2?/SPAN>List。但是就像他提供的功能是静态测试一Pq里我们得到的永q是l过处理的集合。而不能把python插入的循环中,不能一ơ得C个变量,做点操作然后{下ơ的变量?/SPAN>

2Q?SPAN style="FONT: 7pt 'Times New Roman'">              集合的概念在q里?/SPAN> 他的优点Q也有缺点,如果我们惌明确的得C码里相同变量的出现次敎ͼ那么通过现有?/SPAN>rulewizard是得不到的,因ؓ我们得到的集合Ll过“合q”的、没有重复的数据l构?/SPAN>

3Q?SPAN style="FONT: 7pt 'Times New Roman'">              我看到的资料,所有的内置?/SPAN>node都没有ؓ用户提供接口。不能够把通过python的处理结果正的传递给内置?/SPAN>node。感觉所有的python做成?/SPAN>node 都是“叶子”?/SPAN>

4Q?SPAN style="FONT: 7pt 'Times New Roman'">              技术支持和官方论坛人气低到Q看了浑w发抖的地步。没有交,没有讨论。不知道是不是因为太늚原因?/SPAN>

5Q?SPAN style="FONT: 7pt 'Times New Roman'">              贵!Q!真的很贵。动辄就?/SPAN>4XXX$?/SPAN>-_-! 反正c?/SPAN>

写q么多,希望大家多多交流Q国内关于Y件的新闻有不,l验却没有,希望能给我仍的“砖”能换来大家“玉”。谢谢!



-=Kinohl=- 2005-11-22 17:43 发表评论
]]>
C#与JavaQ一Q?/title><link>http://www.aygfsteel.com/kinoviti/archive/2005/11/11/19257.html</link><dc:creator>-=Kinohl=-</dc:creator><author>-=Kinohl=-</author><pubDate>Fri, 11 Nov 2005 02:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/kinoviti/archive/2005/11/11/19257.html</guid><wfw:comment>http://www.aygfsteel.com/kinoviti/comments/19257.html</wfw:comment><comments>http://www.aygfsteel.com/kinoviti/archive/2005/11/11/19257.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/kinoviti/comments/commentRss/19257.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/kinoviti/services/trackbacks/19257.html</trackback:ping><description><![CDATA[<P align=left><FONT size=6><STRONG>C#与JavaQ一Q?/STRONG></FONT><BR><BR><BR>************************************************<BR>关键字:l承<BR>难易度:?IMG height=20 src="http://www.aygfsteel.com/Emoticons/QQ/14.gif" width=20 border=0><BR>************************************************<BR><BR><BR>最q因为工作需要开展基于C#的研发。我在这里也写一点作为JavaE序员对于C#的部分感惛_。毕竟能力有限,请各位高手多多点拨?BR><BR>1.1实现的?BR><BR>C#和Java一样不能承private。但是C++可以在承中明确指出要承共有的q是U有的。如下:<BR><BR>q个是C#的承书写方法,作ؓ基类的CSharpBaseClassq没有限定符?/P> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080">1</SPAN><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000"> CSharpClass QCSharpBaseClass<BR></SPAN><SPAN style="COLOR: #008080">2</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_35_45_Open_Image onclick="this.style.display='none'; Codehighlighter1_35_45_Open_Text.style.display='none'; Codehighlighter1_35_45_Closed_Image.style.display='inline'; Codehighlighter1_35_45_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_35_45_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_35_45_Closed_Text.style.display='none'; Codehighlighter1_35_45_Open_Image.style.display='inline'; Codehighlighter1_35_45_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_35_45_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_35_45_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">3</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>   </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">成员</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">4</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">}</SPAN></SPAN></DIV> <P>q个是Java了,熟悉吧?/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">public</SPAN><SPAN style="COLOR: #000000"> Class JavaClass </SPAN><SPAN style="COLOR: #0000ff">extends</SPAN><SPAN style="COLOR: #000000"> JavaBaseClass<BR><IMG id=Codehighlighter1_45_54_Open_Image onclick="this.style.display='none'; Codehighlighter1_45_54_Open_Text.style.display='none'; Codehighlighter1_45_54_Closed_Image.style.display='inline'; Codehighlighter1_45_54_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_45_54_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_45_54_Closed_Text.style.display='none'; Codehighlighter1_45_54_Open_Image.style.display='inline'; Codehighlighter1_45_54_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_45_54_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_45_54_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>  </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">成员</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">}</SPAN></SPAN></DIV> <P>C++的定义如下:</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">class</SPAN><SPAN style="COLOR: #000000"> CPlusPlusClass: </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> CPlusPlusBaseClass<BR><IMG id=Codehighlighter1_48_58_Open_Image onclick="this.style.display='none'; Codehighlighter1_48_58_Open_Text.style.display='none'; Codehighlighter1_48_58_Closed_Image.style.display='inline'; Codehighlighter1_48_58_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_48_58_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_48_58_Closed_Text.style.display='none'; Codehighlighter1_48_58_Open_Image.style.display='inline'; Codehighlighter1_48_58_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_48_58_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_48_58_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>   </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">成员</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">}</SPAN></SPAN></DIV> <P>1.2虚函?BR><BR>把一个基cd数声明ؓvirtualQ该函数可以在MzcM重写了?BR>Java的语法中没有virtualq个词,但是Java却彻d底的贯彻着q个概念QJava的所有函数都是虚拟的?BR>C++的朋友可能比较熟悉这个词吧。对于这一点C#和C++是相同的。但是语法稍微有点不同,C#需要用overridecLC声明重写函数。如下例<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"><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000"> BaseClass<BR><IMG id=Codehighlighter1_16_158_Open_Image onclick="this.style.display='none'; Codehighlighter1_16_158_Open_Text.style.display='none'; Codehighlighter1_16_158_Closed_Image.style.display='inline'; Codehighlighter1_16_158_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_16_158_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_16_158_Closed_Text.style.display='none'; Codehighlighter1_16_158_Open_Image.style.display='inline'; Codehighlighter1_16_158_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_16_158_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_16_158_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>         </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">virtual</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000"> VirtualMethod()<BR><IMG id=Codehighlighter1_73_156_Open_Image onclick="this.style.display='none'; Codehighlighter1_73_156_Open_Text.style.display='none'; Codehighlighter1_73_156_Closed_Image.style.display='inline'; Codehighlighter1_73_156_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_73_156_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_73_156_Closed_Text.style.display='none'; Codehighlighter1_73_156_Open_Image.style.display='inline'; Codehighlighter1_73_156_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </SPAN><SPAN id=Codehighlighter1_73_156_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_73_156_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>                   </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">The virtual method in defined in Base class</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000"> ChildClass : BaseClass<BR><IMG id=Codehighlighter1_190_338_Open_Image onclick="this.style.display='none'; Codehighlighter1_190_338_Open_Text.style.display='none'; Codehighlighter1_190_338_Closed_Image.style.display='inline'; Codehighlighter1_190_338_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_190_338_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_190_338_Closed_Text.style.display='none'; Codehighlighter1_190_338_Open_Image.style.display='inline'; Codehighlighter1_190_338_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_190_338_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_190_338_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>            </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">override</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000"> VirtualMethod()<BR><IMG id=Codehighlighter1_251_336_Open_Image onclick="this.style.display='none'; Codehighlighter1_251_336_Open_Text.style.display='none'; Codehighlighter1_251_336_Closed_Image.style.display='inline'; Codehighlighter1_251_336_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_251_336_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_251_336_Closed_Text.style.display='none'; Codehighlighter1_251_336_Open_Image.style.display='inline'; Codehighlighter1_251_336_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </SPAN><SPAN id=Codehighlighter1_251_336_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_251_336_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>                   </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">The override method in defined in child class</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV> <P><BR><BR>1.3隐藏Ҏ<BR>相同{֐的方法在基类和子c都声明了,但方法不是vitrual。那么实际中到底哪个Ҏ被执行,取决于引用实例的变量cdQ而不是实力本w的cd?BR>我们也不用太担心q个问题Q因为C#会在~译期给告?BR><BR>1.4调用U篏函数的方?BR>java中我们用superQC#中用base?BR><BR>1.5抽象cd抽象函数<BR>和java一样用abstract声明?BR>和C++相比QC++的抽象函数被声明为纯虚函数?BR><BR>1.6密封cd密封Ҏ<BR>在Java中我们把它叫做final。也是不能l承的类或不能重载的Ҏ?/P> <P>1.7构造函数的调用层次<BR>和Java一P我就不多说了。这里强调一个特D的语法格式Q?BR><BR></P> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000"> BaseClass<BR><IMG id=Codehighlighter1_23_280_Open_Image onclick="this.style.display='none'; Codehighlighter1_23_280_Open_Text.style.display='none'; Codehighlighter1_23_280_Closed_Image.style.display='inline'; Codehighlighter1_23_280_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_23_280_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_23_280_Closed_Text.style.display='none'; Codehighlighter1_23_280_Open_Image.style.display='inline'; Codehighlighter1_23_280_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_23_280_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_23_280_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000"> temp </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Default Construct</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000"> _flag<BR><IMG id=Codehighlighter1_88_141_Open_Image onclick="this.style.display='none'; Codehighlighter1_88_141_Open_Text.style.display='none'; Codehighlighter1_88_141_Closed_Image.style.display='inline'; Codehighlighter1_88_141_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_88_141_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_88_141_Closed_Text.style.display='none'; Codehighlighter1_88_141_Open_Image.style.display='inline'; Codehighlighter1_88_141_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>  </SPAN><SPAN id=Codehighlighter1_88_141_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_88_141_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG id=Codehighlighter1_98_112_Open_Image onclick="this.style.display='none'; Codehighlighter1_98_112_Open_Text.style.display='none'; Codehighlighter1_98_112_Closed_Image.style.display='inline'; Codehighlighter1_98_112_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_98_112_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_98_112_Closed_Text.style.display='none'; Codehighlighter1_98_112_Open_Image.style.display='inline'; Codehighlighter1_98_112_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>     </SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN id=Codehighlighter1_98_112_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_98_112_Open_Text><SPAN style="COLOR: #000000">{ </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> temp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_122_137_Open_Image onclick="this.style.display='none'; Codehighlighter1_122_137_Open_Text.style.display='none'; Codehighlighter1_122_137_Closed_Image.style.display='inline'; Codehighlighter1_122_137_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_122_137_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_122_137_Closed_Text.style.display='none'; Codehighlighter1_122_137_Open_Image.style.display='inline'; Codehighlighter1_122_137_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>     </SPAN><SPAN style="COLOR: #0000ff">set</SPAN><SPAN id=Codehighlighter1_122_137_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_122_137_Open_Text><SPAN style="COLOR: #000000">{ temp </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> value;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>  }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>  </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">Constructor with one Parameter</SPAN><SPAN style="COLOR: #008000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">  </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> BaseClass(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000"> f)<BR><IMG id=Codehighlighter1_258_278_Open_Image onclick="this.style.display='none'; Codehighlighter1_258_278_Open_Text.style.display='none'; Codehighlighter1_258_278_Closed_Image.style.display='inline'; Codehighlighter1_258_278_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_258_278_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_258_278_Closed_Text.style.display='none'; Codehighlighter1_258_278_Open_Image.style.display='inline'; Codehighlighter1_258_278_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>  </SPAN><SPAN id=Codehighlighter1_258_278_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_258_278_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>      flag </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> f;<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>  }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000"> ChildClass : BaseClass<BR><IMG id=Codehighlighter1_319_1043_Open_Image onclick="this.style.display='none'; Codehighlighter1_319_1043_Open_Text.style.display='none'; Codehighlighter1_319_1043_Closed_Image.style.display='inline'; Codehighlighter1_319_1043_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_319_1043_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_319_1043_Closed_Text.style.display='none'; Codehighlighter1_319_1043_Open_Image.style.display='inline'; Codehighlighter1_319_1043_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_319_1043_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_319_1043_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG id=Codehighlighter1_372_373_Open_Image onclick="this.style.display='none'; Codehighlighter1_372_373_Open_Text.style.display='none'; Codehighlighter1_372_373_Closed_Image.style.display='inline'; Codehighlighter1_372_373_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_372_373_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_372_373_Closed_Text.style.display='none'; Codehighlighter1_372_373_Open_Image.style.display='inline'; Codehighlighter1_372_373_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>   </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> ChildClass():</SPAN><SPAN style="COLOR: #0000ff">base</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Customized Construct</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN id=Codehighlighter1_372_373_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_372_373_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_428_429_Open_Image onclick="this.style.display='none'; Codehighlighter1_428_429_Open_Text.style.display='none'; Codehighlighter1_428_429_Closed_Image.style.display='inline'; Codehighlighter1_428_429_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_428_429_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_428_429_Closed_Text.style.display='none'; Codehighlighter1_428_429_Open_Image.style.display='inline'; Codehighlighter1_428_429_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>   </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> Second(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000"> f):</SPAN><SPAN style="COLOR: #0000ff">base</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">BPara:CPara = 1:1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN id=Codehighlighter1_428_429_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_428_429_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_493_494_Open_Image onclick="this.style.display='none'; Codehighlighter1_493_494_Open_Text.style.display='none'; Codehighlighter1_493_494_Closed_Image.style.display='inline'; Codehighlighter1_493_494_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_493_494_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_493_494_Closed_Text.style.display='none'; Codehighlighter1_493_494_Open_Image.style.display='inline'; Codehighlighter1_493_494_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>   </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> Second(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000"> f,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000"> g):</SPAN><SPAN style="COLOR: #0000ff">base</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">BPara:CPara = 1:2</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN id=Codehighlighter1_493_494_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_493_494_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>   </SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> showConstructFlag()<BR><IMG id=Codehighlighter1_543_966_Open_Image onclick="this.style.display='none'; Codehighlighter1_543_966_Open_Text.style.display='none'; Codehighlighter1_543_966_Closed_Image.style.display='inline'; Codehighlighter1_543_966_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_543_966_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_543_966_Closed_Text.style.display='none'; Codehighlighter1_543_966_Open_Image.style.display='inline'; Codehighlighter1_543_966_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>   </SPAN><SPAN id=Codehighlighter1_543_966_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_543_966_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> Second();<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>      Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Show ConstructFlag:\n ChildClass():base(\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Customized Construct\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">_Flag);<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> Second(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>      Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Show ConstructFlag:\n Second(string f,string g):base(\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">BPara:CPara </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">:</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">_Flag);<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> Second(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test2</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">no use</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>      Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Show ConstructFlag:\n Second(string f,string g):base(\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">BPara:CPara </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">:</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">\</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">_Flag);<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>   <BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> Main()<BR><IMG id=Codehighlighter1_1006_1041_Open_Image onclick="this.style.display='none'; Codehighlighter1_1006_1041_Open_Text.style.display='none'; Codehighlighter1_1006_1041_Closed_Image.style.display='inline'; Codehighlighter1_1006_1041_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1006_1041_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1006_1041_Closed_Text.style.display='none'; Codehighlighter1_1006_1041_Open_Image.style.display='inline'; Codehighlighter1_1006_1041_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </SPAN><SPAN id=Codehighlighter1_1006_1041_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_1006_1041_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>        showConstructFlag();<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV> <P>l果如预计那?Q?BR>如果基类含有带参数的构造函敎ͼzcM能调用默认基cL造函数?BR>多参数派生类构造函敎ͼ可以调用参数数目不同的基cL造函数?BR><BR>我们一h看看Z么这2个结论可以成立:<BR>首先Q对于带参数的基cL造函数在初始化的时候会试图去调用基c默认构造函敎ͼ但在上边的基cȝ序里Q因为只声明了带一个参数的构造函敎ͼ所以public Second(string f):base()或者public Second(string f)׃会通过~译Q因Z找不到基cȝ默认构造函敎ͼ只能q加<SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> BaseClass(</SPAN><SPAN style="COLOR: #000000">)才会通过。这一点和JAVA是不同的Qjava的默认构造函数默认是不出现在代码里的。C#却一定要写出来?BR><BR><<<== <FONT color=#ff0000>有错误。C#的默认构造函C制和Java是一L。具体如下:<BR>1。父cL有自定义构造函数的情况下,使用默认构造函数。用户可以不写出来?BR>2。一旦父cL了自定义的构造函敎ͼ那么如果要用无参的默认构造函数就必须要显C定义?/FONT><BR><BR><BR><BR><BR>其次Q下Ҏ生类1个参数?个参数甚臛_个参数的构造函Cؓ什么能讉K只有一个参数的基类构造函数呢Q原因是Q关键字thisQ上边的E序改写如下我想大家明白了?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"><IMG id=Codehighlighter1_49_50_Open_Image onclick="this.style.display='none'; Codehighlighter1_49_50_Open_Text.style.display='none'; Codehighlighter1_49_50_Closed_Image.style.display='inline'; Codehighlighter1_49_50_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_49_50_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_49_50_Closed_Text.style.display='none'; Codehighlighter1_49_50_Open_Image.style.display='inline'; Codehighlighter1_49_50_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> Second(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000"> f):</SPAN><SPAN style="COLOR: #0000ff">base</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">BPara:CPara = 1:1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN id=Codehighlighter1_49_50_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_49_50_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><BR><IMG id=Codehighlighter1_108_109_Open_Image onclick="this.style.display='none'; Codehighlighter1_108_109_Open_Text.style.display='none'; Codehighlighter1_108_109_Closed_Image.style.display='inline'; Codehighlighter1_108_109_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_108_109_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_108_109_Closed_Text.style.display='none'; Codehighlighter1_108_109_Open_Image.style.display='inline'; Codehighlighter1_108_109_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> Second(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000"> f,</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000"> g):</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000"> f,</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"><None</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN id=Codehighlighter1_108_109_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_108_109_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN></DIV> <P dir=ltr style="MARGIN-RIGHT: 0px"></SPAN>2.1修饰W?BR>C#支持下边的集中修饰符Q?BR>public Q?nbsp;  protected Q?internal  Qprivate Q?protected internal<BR>同Java。internal和protected internal?net framework新增的一个内宏V根据定义?BR>internal在同一个程序集内和publiccMQ不同的E序集间Qpublic声明的类或方法仍然可用,但是internal的方法或cd被隐藏?BR>protected internal合ƈ了protected 和internalQ但q是一Uor关系Q而不是and关系。protected internal成员在同一个程序集的Q何代码都可见Q在zcd见?BR><BR>2.3接口<BR>接口公约Q?BR>不能实例化接口?BR>接口不能有构造函数或字段?BR>接口定义也不允许包含q算W重载?BR>接口定义中还不允许声明成员上的修饰符。接口成员都是public的,不需要static也不需要virtual?BR><BR>同Java<BR>接口可以彼此l承Q其方式和类l承相同。如下:<BR><BR></P> <DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">namespace</SPAN><SPAN style="COLOR: #000000"> my.test<BR><IMG id=Codehighlighter1_18_154_Open_Image onclick="this.style.display='none'; Codehighlighter1_18_154_Open_Text.style.display='none'; Codehighlighter1_18_154_Closed_Image.style.display='inline'; Codehighlighter1_18_154_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_18_154_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_154_Closed_Text.style.display='none'; Codehighlighter1_18_154_Open_Image.style.display='inline'; Codehighlighter1_18_154_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_18_154_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_18_154_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>  </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">interface</SPAN><SPAN style="COLOR: #000000"> IBase<BR><IMG id=Codehighlighter1_47_152_Open_Image onclick="this.style.display='none'; Codehighlighter1_47_152_Open_Text.style.display='none'; Codehighlighter1_47_152_Closed_Image.style.display='inline'; Codehighlighter1_47_152_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_47_152_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_47_152_Closed_Text.style.display='none'; Codehighlighter1_47_152_Open_Image.style.display='inline'; Codehighlighter1_47_152_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>  </SPAN><SPAN id=Codehighlighter1_47_152_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_47_152_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> setName();<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff">bool</SPAN><SPAN style="COLOR: #000000"> isMe(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000"> name);<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000"> name<BR><IMG id=Codehighlighter1_125_147_Open_Image onclick="this.style.display='none'; Codehighlighter1_125_147_Open_Text.style.display='none'; Codehighlighter1_125_147_Closed_Image.style.display='inline'; Codehighlighter1_125_147_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_125_147_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_125_147_Closed_Text.style.display='none'; Codehighlighter1_125_147_Open_Image.style.display='inline'; Codehighlighter1_125_147_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>      </SPAN><SPAN id=Codehighlighter1_125_147_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_125_147_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>         </SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>      }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>   }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">namespace</SPAN><SPAN style="COLOR: #000000"> my.test<BR><IMG id=Codehighlighter1_175_243_Open_Image onclick="this.style.display='none'; Codehighlighter1_175_243_Open_Text.style.display='none'; Codehighlighter1_175_243_Closed_Image.style.display='inline'; Codehighlighter1_175_243_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_175_243_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_175_243_Closed_Text.style.display='none'; Codehighlighter1_175_243_Open_Image.style.display='inline'; Codehighlighter1_175_243_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_175_243_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_175_243_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>    </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">interface</SPAN><SPAN style="COLOR: #000000"> IChild:IBase<BR><IMG id=Codehighlighter1_215_241_Open_Image onclick="this.style.display='none'; Codehighlighter1_215_241_Open_Text.style.display='none'; Codehighlighter1_215_241_Closed_Image.style.display='inline'; Codehighlighter1_215_241_Closed_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_215_241_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_215_241_Closed_Text.style.display='none'; Codehighlighter1_215_241_Open_Image.style.display='inline'; Codehighlighter1_215_241_Open_Text.style.display='inline';" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>    </SPAN><SPAN id=Codehighlighter1_215_241_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.aygfsteel.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_215_241_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" align=top>       </SPAN><SPAN style="COLOR: #0000ff">bool</SPAN><SPAN style="COLOR: #000000"> isOK();<BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>    }</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV> <P dir=ltr style="MARGIN-RIGHT: 0px">告一D落吧?nbsp;                                (つづ?<BR><IMG height=20 src="http://www.aygfsteel.com/Emoticons/QQ/laf.gif" width=20 border=0>请多提意见,如果有什么不清楚的地方也请你写下来,一赯查咯?nbsp; <IMG height=20 src="http://www.aygfsteel.com/Emoticons/QQ/laf.gif" width=20 border=0></P><img src ="http://www.aygfsteel.com/kinoviti/aggbug/19257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/kinoviti/" target="_blank">-=Kinohl=-</a> 2005-11-11 10:27 <a href="http://www.aygfsteel.com/kinoviti/archive/2005/11/11/19257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts Logic标签?/title><link>http://www.aygfsteel.com/kinoviti/archive/2005/10/13/15446.html</link><dc:creator>-=Kinohl=-</dc:creator><author>-=Kinohl=-</author><pubDate>Thu, 13 Oct 2005 12:04:00 GMT</pubDate><guid>http://www.aygfsteel.com/kinoviti/archive/2005/10/13/15446.html</guid><wfw:comment>http://www.aygfsteel.com/kinoviti/comments/15446.html</wfw:comment><comments>http://www.aygfsteel.com/kinoviti/archive/2005/10/13/15446.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/kinoviti/comments/commentRss/15446.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/kinoviti/services/trackbacks/15446.html</trackback:ping><description><![CDATA[<P><BR><IMG height=20 src="http://www.aygfsteel.com/Emoticons/QQ/blink.gif" width=20 border=0>Struts Logic标签?IMG height=20 src="http://www.aygfsteel.com/Emoticons/QQ/blink.gif" width=20 border=0> <BR><BR>Keywords: Struts   Logic  标签  JSP<BR>隑ֺQ易<BR><BR>背景Q不知道是不是相应“与时俱q”的大号召。反正当今的JSP是越来越难懂了。不是说ȝQ而是因ؓ太简单了Q反而不懂了。都是因为引入了 标签库?q下好了Q除了基HTML,JSP语法外还要学很多标签库的用法。加油吧?BR><BR>概念Q?BR>Struts Logic标签库中的标{֏以根据特定的逻辑条g来控制输出网늚内容Q或者@环遍历集合中的所有元素。主要用于表C层的显C?BR>Logic标签库的标签大致分ؓ以下几类Q?BR><BR><BR>...没有旉写了。我倒,争取11月之前写完?BR></P><img src ="http://www.aygfsteel.com/kinoviti/aggbug/15446.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/kinoviti/" target="_blank">-=Kinohl=-</a> 2005-10-13 20:04 <a href="http://www.aygfsteel.com/kinoviti/archive/2005/10/13/15446.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>