??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩精品一区第一页,亚洲国产中文字幕,亚洲人体偷拍http://www.aygfsteel.com/x-29/ƣ赏永运比跟风好zh-cnFri, 20 Jun 2025 00:25:19 GMTFri, 20 Jun 2025 00:25:19 GMT60◎Baby’s First Languagehttp://www.aygfsteel.com/x-29/archive/2009/07/27/288651.html听风的歌听风的歌Mon, 27 Jul 2009 14:46:00 GMThttp://www.aygfsteel.com/x-29/archive/2009/07/27/288651.htmlhttp://www.aygfsteel.com/x-29/comments/288651.htmlhttp://www.aygfsteel.com/x-29/archive/2009/07/27/288651.html#Feedback0http://www.aygfsteel.com/x-29/comments/commentRss/288651.htmlhttp://www.aygfsteel.com/x-29/services/trackbacks/288651.htmlBaby's First Language

听风的歌 2009-07-27 22:46 发表评论
]]>
◎本地计机上的OracleOraHome92TNSListener服务启动后又停止?/title><link>http://www.aygfsteel.com/x-29/archive/2008/11/07/239167.html</link><dc:creator>听风的歌</dc:creator><author>听风的歌</author><pubDate>Fri, 07 Nov 2008 02:09:00 GMT</pubDate><guid>http://www.aygfsteel.com/x-29/archive/2008/11/07/239167.html</guid><wfw:comment>http://www.aygfsteel.com/x-29/comments/239167.html</wfw:comment><comments>http://www.aygfsteel.com/x-29/archive/2008/11/07/239167.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/x-29/comments/commentRss/239167.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/x-29/services/trackbacks/239167.html</trackback:ping><description><![CDATA[<p>今天在服务里启动OracleOraHome92TNSListener服务时出?#8220;</p> 本地计算Z的OracleOraHome92TNSListener服务启动后又停止了,一些服务自动停止,如果它们没有什么可做的Q例?性能日志和警报服??br /> <br /> 因ؓ前两天更改了计算机名Q于是打Net Manager重新讑֮之后Q就OK啦?br /> <br /> <img height="497" alt="" src="http://www.aygfsteel.com/images/blogjava_net/x-29/1.JPG" width="669" border="0" /><br /> <br /> <img src ="http://www.aygfsteel.com/x-29/aggbug/239167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/x-29/" target="_blank">听风的歌</a> 2008-11-07 10:09 <a href="http://www.aygfsteel.com/x-29/archive/2008/11/07/239167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>◎Oracle 10g轻量U客L安装?/title><link>http://www.aygfsteel.com/x-29/archive/2007/11/14/160479.html</link><dc:creator>听风的歌</dc:creator><author>听风的歌</author><pubDate>Wed, 14 Nov 2007 04:00:00 GMT</pubDate><guid>http://www.aygfsteel.com/x-29/archive/2007/11/14/160479.html</guid><wfw:comment>http://www.aygfsteel.com/x-29/comments/160479.html</wfw:comment><comments>http://www.aygfsteel.com/x-29/archive/2007/11/14/160479.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/x-29/comments/commentRss/160479.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/x-29/services/trackbacks/160479.html</trackback:ping><description><![CDATA[1、从<a >http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/winsoft.html</a>下蝲下列几个压宿文g<br /> instantclient-basic-win32-10.1.0.2.zip    q是最核心的包<br /> instantclient-jdbc-win32-10.1.0.2.zip      包含JDBC Driver的包<br /> instantclient-sqlplus-win32-10.1.0.2.zip   最单的SQLPLUS?br /> 下蝲之后Q解压到一个单独的目录里,如:D:\dev\oraclient<br /> <br /> 2、配|tnsnames.oraQ如果本Z没有安装oracleQ可以从安装了oracle的机上拷贝一?tnsnames.ora文g?ORACLE_HOME%\network\admin?攑֜上面的目录D:\dev\oraclient下?br /> oracledata =<br />   (DESCRIPTION =<br />     (ADDRESS_LIST =<br />       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.58)(PORT = 1521))<br />     )<br />     (CONNECT_DATA =<br />       (SERVICE_NAME = oracledata)<br />     )<br />   )<br /> <br /> 3、添加一个环境变量,名ؓTNS_ADMINQgؓtnsnames.ora文g所在\径(如:D:\dev\oraclient)Q这是ؓ了能够找C面说的tnsnames.ora。如果本Z安装了ORACLEQƈ且设|了ORACLE_HOME环境变量Q那么会自动?ORACLE_HOME%/network/admin/位置查找tnsnames.ora文g?br /> <br /> 4、设|ORACLE的语aQ添加注册表:“NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK”Q位?HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE。如果本机没有安装ORACLEQ在H_L_M\SOFTWARE\下是没有"ORACLE"q一的Q需要手动创建,然后再在ORACLE下创徏键NLS_LANGQ键gؓ:SIMPLIFIED CHINESE_CHINA.ZHS16GBK<br /> <br /> 5、下载ƈ安装PL.SQL.Developer配置应用<br />   配置tools->preferences->connection<br />   Oracle Home=D:\dev\oracleclient<br />   OCI library=D:\dev\oracleclient\oci.dll<br /> <br /> 6、再ơ打开plsql则会在database中有oracledata 选项输入用户名密码就可以登陆?br /> <br /> <br /> <img src ="http://www.aygfsteel.com/x-29/aggbug/160479.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/x-29/" target="_blank">听风的歌</a> 2007-11-14 12:00 <a href="http://www.aygfsteel.com/x-29/archive/2007/11/14/160479.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>◎XFire 使用?/title><link>http://www.aygfsteel.com/x-29/archive/2007/06/19/125058.html</link><dc:creator>听风的歌</dc:creator><author>听风的歌</author><pubDate>Tue, 19 Jun 2007 02:26:00 GMT</pubDate><guid>http://www.aygfsteel.com/x-29/archive/2007/06/19/125058.html</guid><wfw:comment>http://www.aygfsteel.com/x-29/comments/125058.html</wfw:comment><comments>http://www.aygfsteel.com/x-29/archive/2007/06/19/125058.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/x-29/comments/commentRss/125058.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/x-29/services/trackbacks/125058.html</trackback:ping><description><![CDATA[<p>XFire开发Web服务的基本步?br>1) 验JAVAcȝҎ和构造函数是否是公共?一定要是公开的?br>2) XFire Servlet相关的入口添加到web.xml中?br></p> <div style="BORDER-RIGHT: #ffffff 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ffffff 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #ffffff 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #ffffff 1px solid; BACKGROUND-COLOR: #ffffff"><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">servlet</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">XFireServlet</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">servlet-class</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">org.codehaus.xfire.transport.http.XFireConfigurableServlet</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">servlet-class</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">load-on-startup</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">0</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">load-on-startup</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">servlet</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">servlet-mapping</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">XFireServlet</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">url-pattern</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">/services/*</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">url-pattern</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">servlet-mapping</span><span style="COLOR: #0000ff">></span></div> <p>3) 创徏services.xmlq把它放到WEB-INF/classes/META-INF/xfire目录下,q是默认的做?也可以将services.xml的\径配|到web.xml文g中?/p> <div style="BORDER-RIGHT: #ffffff 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ffffff 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #ffffff 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #ffffff 1px solid; BACKGROUND-COLOR: #ffffff"><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">servlet</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">XFire</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">display-name</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">XFire Servlet</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">display-name</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">servlet-class</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>        org.codehaus.xfire.transport.http.XFireConfigurableServlet<br>    </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">servlet-class</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br><br>    </span><span style="COLOR: #008000"><!--</span><span style="COLOR: #008000"><br>      The servlet will by default look for the configuration on<br>      the classpath in "META-INF/xfire/services.xml". You can<br>      override it with this parameter. Seperate multiple configuration files with a comma.<br>     </span><span style="COLOR: #008000">--></span><span style="COLOR: #000000"><br>   </span><span style="COLOR: #008000"><!--</span><span style="COLOR: #008000"> 默认会在classpath的META-INF/xfire/下查找services.xml文gQ?br>     可以覆盖q个参数Q指定多个配|文?/span><span style="COLOR: #008000">--></span><span style="COLOR: #000000"><br>    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">init-param</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">param-name</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">config</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">param-name</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>      </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">param-value</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">services.xml</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">param-value</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>    </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">init-param</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">servlet</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br><br></span></div> <p>4) XFire和其它第三方库添加到Web应用的WEB-INF/lib目录下?/p> <p><br>FAQ<br>1) Weblogic8.1中应用XFireQ启动wlsӞ出现java.lang.NoSuchMethodError的解军_法?br>   首先Q将XFire提供的QName JARQqname.jar)放进WEB-INF/lib目录下。然后,weblogic.xml文g攑ֈWEB-INF下?br>weblogic.xml的内容ؓQ?/p> <div style="BORDER-RIGHT: #ffffff 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ffffff 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #ffffff 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #ffffff 1px solid; BACKGROUND-COLOR: #ffffff"><span style="COLOR: #0000ff"><!</span><span style="COLOR: #ff00ff">DOCTYPE weblogic-web-app PUBLIC<br>  "-//BEA Systems, Inc.//DTD Web Application 8.1//EN"<br>  "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">weblogic-web-app</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>  </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">container-descriptor</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">prefer-web-inf-classes</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000">true</span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">prefer-web-inf-classes</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br>  </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">container-descriptor</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">weblogic-web-app</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br></span></div> <p>具体的详l解_LXFire的User's Guide.</p> <p><br>技?br>1. 如果Web Services的方法的参数是CollectionsQ那需要徏一个Mapping文gQ而且Mapping文g的命名ؓclassName.aegis.xmlQƈ且与class攑֜同一个package下?br>如:<br>public interface IConstraceSerice {<br>   boolean editConstraceInfo(List aList);<br>}<br>Mapping文g如下QIConstraceService.aegis.xml<br><?xml version="1.0" encoding="utf-8"?><br><mappings><br>   <mapping><br>      <method name="editConstraceInfo"><br>          <parameter index="0" componentType="java.lang.String"/><br>      </method><br>   </mapping><br></mappings></p> <p><parameter index="0" componentType="java.lang.String"/>表示W一个参敎ͼ里面实际值的cd,q里实际值的cd是java.lang.String.<br>如果是一个JavaBean,如com.test.TestBean,那以p写成<parameter index="0" compentType="com.test.TestBean"/></p> <p>2. 如果q回cd是List或MapQƈ且里面存攄是自定义cȝ话,则需要增加一个对于服务接口的配置文g。该文g的命名规则是 接口文g?aegis.xml。例如接口是UserService.java的话Q则此配|文件命名ؓUserService.aegis.xml。注意此配置文gM接口攑֜同一目录下面?br><?xml version="1.0" encoding="UTF-8"?>  <br> <mappings>  <br>   <mapping >  <br>     <method name="getUsers">  <br>       <return-type componentType="com.test.domain.User"/>  <br>     </method>  <br>   </mapping>  <br> </mappings> <br>getUsersҎq回cd是ListQ里面装的User对象。对于这U类型的ҎQ在配置文g中描qC它的q回值类型?/p> <p>如果q回的类型是Map的话Q做法和List一栗但定义的类型,是Map中的Value部分Qƈ且这L话,Map中Value所存放的对象就必须全部是同一U类啦?/p> <p>下面l出一个详l的例子Q?br>1Q服务接?<br>public interface MyService2<br>{<br>    boolean getInfo();<br>    Collection getCollection(); //method 1<br>    Collection getCollection(int id); //method 2<br>    Collection getCollection(String id); //method 3<br>    Collection getCollectionForValues(String id, Collection c); //method 4<br>    Collection getCollectionForValues(int value, Collection c); //method 5<br>}<br>2) Mapping文g内容:<br><mappings><br>    <mapping><br>        <!-- mapping 1 --><br>        <method name="getCollection"><br>            <return-type componentType="java.lang.Double"/><br>        </method><br>        <!-- mapping 2 --><br>        <method name="getCollection"><br>            <return-type componentType="java.lang.Float"/><br>            <parameter index="0" class="int"/><br>        </method><br>        <!-- mapping 3 --><br>        <method name="getCollectionForValues"><br>            <return-type componentType="java.math.BigDecimal"/><br>        </method><br>        <!-- mapping 4 --><br>        <method name="getCollectionForValues"><br>            <parameter index="0" class="java.lang.String"/><br>            <parameter index="1" componentType="java.util.Date"/><br>        </method><br>        <!-- mapping 5 --><br>        <method name="getCollectionForValues"><br>            <return-type componentType="java.util.Calendar"/><br>            <parameter index="0" class="int"/><br>            <parameter index="1" componentType="java.lang.Bit"/><br>        </method><br>    </mapping><br></mappings></p> <p><br>3. 如果一个方法的q回cd是一个JavaBean,而这个JavaBean当中又存在Collections,那么需要定义一个与JavaBean相关的Mapping文g,文g名要与JavaBean名相??User.aegis.xmll,q且与JavaBean攑֜同一个目?</p> <p>例子:<br>1) 服务接口<br>public interface IYMServiceFacade {<br>   User getUser();<br>}</p> <p>2) JavaBean<br>public class User {<br>   private Strirng userName;<br>   // q里是一个Collection<br>   private Set rooms;</p> <p>   .....<br>   .....<br>}</p> <p>3) Mapping文g(User.aegis.xml)<br><?xml version="1.0" encoding="utf-8"?><br><mappings><br>    <mapping><br>        <property name="rooms" componentType="com.powerunion.ymservice.dto.Room"/><br>    </mapping><br></mappings></p> <p>介绍:<property name="rooms" componentType="com.powerunion.ymservice.dto.Room"/><br>其中的name属性就是JavaBean里面定义的rooms,componentType上面的相?表示Collections里真正存储的cd.</p> <p><br>注:如果服务接口的参数或者返因类型是基本cdQint, float, double{?׃需要创建Mapping文g?br>详细的信息见XFire的User's Guide.</p> <p><br>4.如果Web Services和客Lq行在同一个JVM上,可以选择使用本地传输Q可以大q提升性能。如Q以下指定服务端URL的这行?br>String serviceUrl = "<a href="http://localhost:8080/YM/services/ContractService">http://localhost:8080/YM/services/ContractService</a>";<br>替换?br>String serviceUrl = "xfire.local://ContractService";</p> <p><br>5. 用ant task 生成xfire 客户端代?<br>   <br>用xfire不管是配|web serviceQ还是生成客户代码都很方便. <br>生成客户代码只要在用ant生成可以了Q?/p> <p>build.xml </p> <p><br>代码<br><?xml version="1.0"?>  <br>  <br><project default="genfiles" basedir=".">  <br>    <property name="lib" value="WebRoot/WEB-INF/lib" />  <br>    <path id="myclasspath">  <br>        <fileset dir="${lib}">  <br>            <include name="*.jar" />  <br>        </fileset>  <br>        <pathelement location="${genfiles}" />  <br>    </path>  <br>    <property name="code_path" value="src" />  <br>    <property name="wsdl_path" value="Echo1Service.xml" />  <br>    <property name="code_package" value="com.client" />  <br>    <target name="genfiles"  description="Generate the files">  <br>        <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="myclasspath" />  <br>        <wsgen outputDirectory="${code_path}" wsdl="${wsdl_path}" package="${code_package}" binding="xmlbeans" />  <br>    </target>  <br></project>  <br> <br></p> <img src ="http://www.aygfsteel.com/x-29/aggbug/125058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/x-29/" target="_blank">听风的歌</a> 2007-06-19 10:26 <a href="http://www.aygfsteel.com/x-29/archive/2007/06/19/125058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>◎XFire on WAS5.1http://www.aygfsteel.com/x-29/archive/2007/05/28/120401.html听风的歌听风的歌Mon, 28 May 2007 02:07:00 GMThttp://www.aygfsteel.com/x-29/archive/2007/05/28/120401.htmlhttp://www.aygfsteel.com/x-29/comments/120401.htmlhttp://www.aygfsteel.com/x-29/archive/2007/05/28/120401.html#Feedback0http://www.aygfsteel.com/x-29/comments/commentRss/120401.htmlhttp://www.aygfsteel.com/x-29/services/trackbacks/120401.html2、将jaxen.jar、jdom-1.0.jar、qname.jar、stax-api-1.0.1.jar、wsdl5j-1.6.1.jar攄于共享库里?br>3、在应用E序里引用这个共享库Qƈ应用程序的class loader policy 讄为parent_last.


听风的歌 2007-05-28 10:07 发表评论
]]>
◎一D关于工厂方法模式和抽象工厂模式的精彩回复[zz]http://www.aygfsteel.com/x-29/archive/2007/05/15/117527.html听风的歌听风的歌Tue, 15 May 2007 02:23:00 GMThttp://www.aygfsteel.com/x-29/archive/2007/05/15/117527.html来自javayeye的帖子,http://www.javaeye.com/topic/18648?page=1Q运用设计模式很重要一点:模式应该带来清晰q且易于理解的结构,而非大堆大堆的麻烦?/strong>如果是你发现变麻烦了Q那是你的方法错了。设计模式的异同不是通过l构Q而是通过意图和场景来理解Q当Ӟ如果真能辑ֈ应用中重而非形的境界Q就玄而又玄了?/p>


工厂模式是最重要的模式,因ؓ大多数模式都需要用到工厂模式。如果不能正的q用工厂模式Q那么可以说无法成ؓ合格的架构师?
多数设计模式的内容讲解的都是如何设计接口?
接口如何产生呢?如果在客户代码(cd的用者称之ؓ客户Q中直接使用具体c,那么失M接口的意义。因为接口的使用目的Q就是要降低客户对具体类的依赖程度。如果在客户代码中直接用接口,那么造成了客户对具体cdU的依赖。(客户最l需要以某种方式指明所需要的具体c,如配|文件或代码Q但是只需要指Zơ,所以说降低对具体类的依赖程度)。要使客户代码不依赖具体c,唯一的方法,是让客户代码不依赖具体cȝ部分不知道具体类的名U。知道具体类名称的部分,仅仅是配|部分。(配置文g或者配|代码)?
依赖不可能完全消除,除非二者毫无联pR但是可以将q种依赖的程度降到最低?
既然不能直接创徏具体c,那么需要通过一个创类来创建接口的实现cR这样就产生了工厂类?
那么现在已经知道工厂cd在的理由Q抽象创建接口的q程?/strong>
q样Q就可以使用单工厂?
单工厂,一般是两l构。工厂类创徏接口?
随着接口创徏复杂性的增强Q可能在接口创徏的过E中Q一个创类Q无法承担创建所有的接口cȝ职责?
可能会有q样的情况,我们定义了一个接口,?个实现类分别?23456受但是,q六个实现类不可能用一个工厂创建出来,因ؓ123h windows下的实现Q?56hlinux上的实现。(假设我们使用的语a不是q大人民众热爱的java语言Q,那么q个时候,我还需要客h用相同的方式来创个借口Q而不是在代码中到处写

代码
     if  (操作pȝ == " windows " ){  
      
    }  
     
else {  
      
    }  

那样太ȝ了。设计模式就是ؓ了减麻烦,而不是什么别的废话,比如什么太极八卦、天人合一、面向xx之类的。因为怕麻烦,所以搞计模式这个咚咚减麻烦。如果你发现用了设计模式更麻烦了Q那么肯定是你用错了?
q个时候ؓ了省事,我就把工厂也抽象成一个接口(因ؓ我有两个怼的工厂,如果只有一个,我还废话什么呢Q,q样成了工厂方法?
当然Q既然工厂方法成了一个接口,那么当然也需要用一个工厂来创徏它。这个时候,创徏是三U结构,单工厂(此时是工厂的工厂Q创建工厂接口(本来是个c,现在因ؓq一步的抽象Q成为接口了Q,工厂接口创徏产品?
q了一D|_随着我们的工厂业务不断发展,我们有了很多产品?
比如Q我们有锤子和钉子两U品。这两种产品都有windows品牌和linux品牌的。我们给锤子和钉子各自定义了一个创建的接口?
代码
    interface 锤子工厂{  
    造锤子(Q;  
    }  
    
interface 钉子工厂{  
    造钉?);  
    }  

可是Q我们发现某些用P用windows的锤子去敲linux的钉子,从而把E序敲出了bug。这当然是我们的错误Q因为我们违反了一条金U玉律:
要想使你的程序稳定运行,你假讄h猪?/strong>
所以,我们把锤子和钉子的工厂合qӞ让一个工厂只能造出配套的锤子和钉子Q这L没有犯错误的机会了?
于是我们搞出一个抽象工厂:
interface 铁匠铺{
造锤子(Q;
造钉?);

当然Q这个铁匠铺是个接口Q所以同样需要用一个工厂来创徏它。所以,q个时候,工厂q是三l构?
我们的工厂,业务很多Q而且产品一般都是配套用的Q这样可以多骗点钱)Q所以,我们大多数情况下Q都是用抽象工厂和单工厂。简单工厂用来创建工厂,抽象工厂创徏产品?
工厂的作用,是创徏接口?/strong>
其实我们不知道什么是设计模式Q我们只是怕麻烦。什么是ȝ呢?
我们觉得把同L代码写两遍就非常ȝ。所以,我们宁可多写几句Q也要解决麻烦。猪不怕麻烦,可以日复一日的重复相同的事情,可是我们不是猪?br>

听风的歌 2007-05-15 10:23 发表评论
]]>
◎Design Pattern: Abstract Factory 模式http://www.aygfsteel.com/x-29/archive/2007/04/19/111950.html听风的歌听风的歌Thu, 19 Apr 2007 07:24:00 GMThttp://www.aygfsteel.com/x-29/archive/2007/04/19/111950.htmlhttp://www.aygfsteel.com/x-29/comments/111950.htmlhttp://www.aygfsteel.com/x-29/archive/2007/04/19/111950.html#Feedback0http://www.aygfsteel.com/x-29/comments/commentRss/111950.htmlhttp://www.aygfsteel.com/x-29/services/trackbacks/111950.html 拿服装专卖店来说Q一个专卖店里面肯定有好几个品牌的服装,比如Giordano、BalenoQ这些品牌都是不同公司生产的?br /> 没h见个专卖店自q产服装的吧,专卖店需要某个品牌的服装Ӟ去联系相应的厂家供货即可,具体的生产是由厂家去完成?br /> 抽象工厂模式也是如此Q抽象工厂提供多个抽象方法,由具体的子工厂去实现?br /> 现在我想开一家服装店Q经营上衣和短裤Q至于具体什么品牌的{选门面在装修之时再定?br />
interface ISpecialityShop {
   Shirt createShirt();
   Pants createPants();
}

好了Q现在门面选好且已装修完毕Q具体经营什么品牌也早想好,׃丹奴和班D\吧?br /> 开始联pdӞ厂家要能生Shirt和PantsQ而且要有生Giordano、Balenoq两个品牌?/p>

我们都知道服装都有一些共同的特征Q每件衣服都有所属的品牌、每条短裤都有一个尺码?/p>

interface Shirt {
   
// 品牌
   String getBrand();
}

interface Pants {
   
// 寸
   double getSize(); 
}

佐丹奴的衣服自然会印上Giordano字样的标?/p>

class GiordanoTShirt implements Shirt {
   
public String getBrand() {
       
return "Giordano";
   }
}

class GiordanoPants implements Pants {
   
public double getSize() {
       
return 31;
   }
}

班尼路的也不例外Q加上自q品牌标志

class BalenoTShirt implements Shirt {
   
public String getBrand() {
       
return "Baleno";
   }
}

class BalenoPants implements Pants {
   
public double getSize() {
       
return 29;
   }
}


q气不错Q很快就扑ֈ了厂家?br />
// 生Giordano上衣和短裤的工厂

class GiordanoFactory implements ISpecialityShop {
   Shirt createShirt() {
      
return new GiordanoTShirt();
   }
   
   Pants createPants() {
      
return new GiordanoPants();
   }
}

// 生Baleno上衣和短裤的工厂
class BalenoFactory implements ISpecialityShop {
   Shirt createShirt() {
      
return new BalenoTShirt();
   }
   
   Pants createPants() {
      
return new BanlenoPants();
   }
}


厂家开始供货,开业大吉,哈哈?/p>

public class TestAbstractFactory extends TestCase {
 
public static void main(String[] args) {
  TestRunner.run(TestAbstractFactory.
class);
 }

 
public void testFac() {
  setShop(
new GiordanoFactory());
  IShirt shirt 
= shopFactory.createShirt();
  shirt.getBrand();
  IPants pants 
= shopFactory.createPants();
  pants.getSize();
  
  setShop(
new BalenoFactory());
  shirt 
= shopFactory.createShirt();
  shirt.getBrand();
  pants 
= shopFactory.createPants();
  pants.getSize();
 }
 
 
private void setShop(ISpecialityShop factory) {
  shopFactory 
= factory;
 }

 
protected void setUp() throws Exception {
  
 }

 
protected void tearDown() throws Exception {
  shopFactory 
= null;  
 }
 
private ISpecialityShop shopFactory;
}


以后惛_l营几个品牌Q只需直接L了厂家供货即可?/p>


最后,Z充分理解抽象工厂模式Q画出它的UML图是很有必要的?br />





听风的歌 2007-04-19 15:24 发表评论
]]>
◎Ant的?- 常用d标签(一)http://www.aygfsteel.com/x-29/archive/2007/04/10/109656.html听风的歌听风的歌Tue, 10 Apr 2007 07:41:00 GMThttp://www.aygfsteel.com/x-29/archive/2007/04/10/109656.htmlhttp://www.aygfsteel.com/x-29/comments/109656.htmlhttp://www.aygfsteel.com/x-29/archive/2007/04/10/109656.html#Feedback0http://www.aygfsteel.com/x-29/comments/commentRss/109656.htmlhttp://www.aygfsteel.com/x-29/services/trackbacks/109656.html建立一个基本的E序通常有几个常用的dQ像是设|通用属性、创建或删除目录、编译程序、打包、拷贝文件等{?br>q些dQ我们都可以在build.xml中编写相应的d目标[target]

?属性设定:<property>

如果一个固定的|如:目录D:\dev\lib)Q在多个target中被应用刎ͼq时我们通过<property>对它讑֮Q应用到它的地方都用设定的<property>代替Q如果日后有发生变化Q也只需要改?lt;property>的设定即?/p>
<target name="defProperty" description="讑֮属?>
      <property name="tomcat.home" value="C:/jakarta-tomcat" />
     
<property name="app.home"  value="." />
     
<property name="src.home" value="${app.home}/src"/>
     
<property name="lib.home" value="${app.home}/WEB-INF/lib"/>
     
<property name="classes.home" value="${app.home}/WEB-INF/classes"/>
</target>

每个property都有一个name(名称)和一个value(?Q要引用某个property可以使用${property-name}Q像上面?{app.home}?br>q些属性的g可以在执行的时候指定,如:ant -Dapp.home="d:\dev\book"Q如果执行时没有指定Q那么就会用value上定义的倹{?/p>
?创徏目录Q?lt;mkdir>

<target name="createDir" description="创徏必要的目?>
    
<mkdir dir="test/classes">
    
<mkdir dir="${DIST.DIR}"/>
</target>
如果父目录不存在Q也会被同时创徏Q如test不存在,会先创徏test目录Q然后在其下创徏classes目录。可以看到我们这里用了一个属性DIST.DIR代替一个具体的目录?br>
?创徏目录和文Ӟ<delete>
<target name="delDirAndFile" description="删除目录和文?>
    
<!-- 删除目录 -->
    
<delete dir="${classes.dir}"/>
    
<!-- 删除指定的文?nbsp;-->
    
<delete file="${jar.file}"/>
    
<!-- 删除指定目录的一l文?nbsp;-->
    
<delete>
       
<fileset dir="${classes.dir}" includes="**/*.class"/>
    
</delete>
    
<!-- 删除指定目录及子目录Q同时也删除它自?nbsp;-->
    
<delete includeEmptyDirs="true">
       
<fileset dir="build"/>
    
</delete>
</target>

?拯文g和目录:<copy>
<target name="copyFileAndDir" description="拯文g和目?>
    
<!-- 拯单个文g -->
    
<copy file="error.log" tofile="debug.log"/>
    
    
<!-- 拯单个文g到指定目?nbsp;-->
    
<copy file="error.log" todir="${LOG.DIR}"/>

    
<!-- 拯多个文g到指定目?nbsp;-->
    
<copy todir="${LOG.DIR}">
        
<fileset dir="log">
            
<include name="**/*.log"/>
            
<exclude name="**/error.log"/>
        
</fileset>
    
</copy>
    
<!-- 同上 -->
    
<!--
    <copy todir="${LOG.DIR}">
        <fileset dir="log" excludes="**/*.txt"/>
    </copy>
    
-->

    
<!-- 拯一个目录到另一个目?nbsp;-->
    
<copy todir="newbin">
       
<fileset dir="bin"/>
    
</copy>
</target>

?Ud或重命名文g、目录:<move>
<target name="moveFileAndDir" description="Ud或重命名文g和目?>
    
<!-- Ud或重命名一个文?nbsp;-->
    
<move file="error.log" tofile="debug.log"/>

    
<!-- Ud或重命名一个文件到另一个目录下 -->
    
<move file="error.log" todir="new/log"/>

    
<!-- 目录移到另一个目录下 -->
    
<move todir="new/log">
        
<fileset dir="log"/>
    
</move>

    
<!-- 一l文件移到另一个目录下 -->
    
<move todir="new/log">
        
<fileset dir="log">
            
<include name="**/*.log"/>
            
<exclude name="**/error.log"/>
        
</fileset>
    
</move>  
</target>


听风的歌 2007-04-10 15:41 发表评论
]]>
◎Ant的?- buildfilehttp://www.aygfsteel.com/x-29/archive/2007/04/09/109466.html听风的歌听风的歌Mon, 09 Apr 2007 09:30:00 GMThttp://www.aygfsteel.com/x-29/archive/2007/04/09/109466.htmlhttp://www.aygfsteel.com/x-29/comments/109466.htmlhttp://www.aygfsteel.com/x-29/archive/2007/04/09/109466.html#Feedback0http://www.aygfsteel.com/x-29/comments/commentRss/109466.htmlhttp://www.aygfsteel.com/x-29/services/trackbacks/109466.htmlhttp://www.aygfsteel.com/x-29/archive/2007/04/09/109426.html

现在来看一下,如何~写Ant的buildfile.

buildfile是一个xml文档Q默认命名ؓbuild.xmlQ在Ant的buildfile中,我们可以讑֮属性[property]、Q务[task]Q每个buildfile中可以设定多个Q务[task]Q这些Q务可以是~译源码、生成Doc文档、程序测试等Q通常会将q些dl织Z个目标[target]?br>
看一个简单的build.xmlQ大概了解一?br>
<project name="addressbook" default="compile" basedir=".">

<!-- ===================== Property Definitions =========================== -->
  
<property name="tomcat.home" value="C:/jakarta-tomcat" />
  
<property name="app.home"          value="." />
  <property name="src.home"          value="${app.home}/src"/>
  
<property name="lib.home"          value="${app.home}/WEB-INF/lib"/>
  
<property name="classes.home"       value="${app.home}/WEB-INF/classes"/>

<!-- ==================== "compile" Target ============================= -->
  
<target name="compile"  >
    
<javac srcdir="${src.home}" destdir="${classes.home}" debug="yes" >
        
<classpath refid="compile.classpath"/>
    
</javac>
  
</target>
</project>

可以看到build.xml中,project作ؓ根元?每个buildfile中都会有一个project)Q然后是定义了两个属性以及一个target?br>
project元素和target元素的属性,可以看下面的表?br>
标签 属?/td> 描述 必需?/td>
project name 目名称 No
default 没有指定targetӞ~省使用的target Yes
basedir 作ؓ计算其它路径的基路径。该属性可以被basedir property覆盖Q当覆盖Ӟ该属性被忽略。如果属性和basedir property都没有设定,׃用buildfile文g的父目录 No
target name target的名?/td> Yes
depends 用逗号隔开的target名字列表Q设定些属性,意味着本target依赖于depends讑֮的target No
if 执行target所需讑֮的属性名 No
unless 执行target所需要清除设定的属性名 No
description 关于target的描q?/td> No

在?br>
D:\>Ant
执行Ӟ会先q入?complie"目标(上面的Ant没有指定targetQ所以会使用project的default?Q编译源?javac task)

提示Q我们可以在ant后面指定惌执行的targetQ缺省情况下会用默认的(?project元素default属性设定的target)?/span> 

通常Q要q行一个程序,首先得要~译它的源码Q生成可执行文gQ然后才q行q个可执行文件?nbsp;可以看到q是׃个Q务组成,而且q行可执行文件Q务依赖编译源码Q务。Ant的buildfile中可以定义多个targetQ同时一个target的执行可以依赖于另一个targetQ表描这U依赖关pd以通过target元素的depends属性,depends可以讑֮多个target(以逗号间隔)Q如Q?br>
<target name="run" depends="mkdir,complie">
   
<!--
   q行E序
   
-->
</target>
"run"目标依赖"mkdir"?complie"目标Q也是q行E序之前Q要先徏立相x档目录,~译源码生成可执行文件?br>depends属性设定的依赖是按左到右的序执行Q执行命?em>Ant runQ会先执?mkdir"目标Q执行完后,再到"complie"Q最后才执行"run"目标?br>
<property>元素Q主要是讄一些常用的属性,每个属性都会有一个名U?name)Q以后再做详解?br>
有关Ant的buildfileQ就说到q,下篇说说Ant的常用Q务[task]标签




听风的歌 2007-04-09 17:30 发表评论
]]>
◎Ant的?- 单介l?/title><link>http://www.aygfsteel.com/x-29/archive/2007/04/09/109426.html</link><dc:creator>听风的歌</dc:creator><author>听风的歌</author><pubDate>Mon, 09 Apr 2007 07:39:00 GMT</pubDate><guid>http://www.aygfsteel.com/x-29/archive/2007/04/09/109426.html</guid><wfw:comment>http://www.aygfsteel.com/x-29/comments/109426.html</wfw:comment><comments>http://www.aygfsteel.com/x-29/archive/2007/04/09/109426.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/x-29/comments/commentRss/109426.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/x-29/services/trackbacks/109426.html</trackback:ping><description><![CDATA[<p>Ant是什么? Ant的全名是"<strong>Another Neat Tool"</strong>Q它是一个基于java的生成工兗?br><br>在用Ant之前Q我们要先到<a >Ant官方|站</a>其下蝲下来Q进行相关的讄?br><br>下面说一下怎么讄AntQ下载Ant之后Q解压到相关的目录,如:D:\dev\apache-ant-1.6.1<br></p> <p> <ul> <li>新增环境变量QJAVA_HOMEQ内容ؓJAVA的安装\径;如:D:\dev\j2sdk1.4.2 <li>新增环境变量QANT_HOMEQ内容ؓAnt的安装目录,如上QD:\dev\apache-ant-1.6.1 <li>在PATH环境变量中加入Ant的bin目录Q?\ANT_HOME%\bin </li> </ul> <p> </p> 正确的安装Ant和设|好环境变量后,可以开始运行ant了?br>q行Ant很简单,只要输入ant可以了<br> <div style="BORDER-RIGHT: #ffffff 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ffffff 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: #ffffff 1px solid; WIDTH: 98%; COLOR: #ffffff; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #ffffff 1px solid; BACKGROUND-COLOR: #333300"><span style="COLOR: #ffffff">D:\</span><span style="COLOR: #ffffff">></span><span style="COLOR: #ffffff">ant<br>Buildfile: build.xml does not exist</span><span style="COLOR: #ffffff">!</span><span style="COLOR: #ffffff"><br>Build failed<br>D:\</span><span style="COLOR: #ffffff">></span></div> 没有指定M参数ӞAnt会在当前目录下寻找build.xml文g。如果找Cq该文件作为buildfile?br><br>如果Q用Ant?find选择Q就会在当前目录的上U目录查找build.xml文gQ一直到达文件系l的栏V?br> <div style="BORDER-RIGHT: #ffffff 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ffffff 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: #ffffff 1px solid; WIDTH: 98%; COLOR: #ffffff; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #ffffff 1px solid; BACKGROUND-COLOR: #333300"><span style="COLOR: #ffffff">D:\</span><span style="COLOR: #ffffff">></span><span style="COLOR: #ffffff">ant -find</span></div> <br>上面说得的都是默认的buildfileQ要想用指定的buildfileQ可以?buildfile file参数Q这里file是指定的要查找的buildfile?br> <div style="BORDER-RIGHT: #ffffff 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ffffff 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: #ffffff 1px solid; WIDTH: 98%; COLOR: #ffffff; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #ffffff 1px solid; BACKGROUND-COLOR: #333300"><span style="COLOR: #ffffff">D:\</span><span style="COLOR: #ffffff">></span><span style="COLOR: #ffffff">ant -buildfile hibernate-build.xml</span></div> <br>也可以在Ant命o之后指定执行一个或者多个targetQ缺省情况下QAnt使用<project>标签中default属性所指定的target?br> <div style="BORDER-RIGHT: #ffffff 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #ffffff 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; BORDER-LEFT: #ffffff 1px solid; WIDTH: 98%; COLOR: #ffffff; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #ffffff 1px solid; BACKGROUND-COLOR: #333300"><span style="COLOR: #ffffff">D:\</span><span style="COLOR: #ffffff">></span><span style="COLOR: #ffffff">ant -buildfile hibernate-build.xml compile</span></div> "complie"是一个target<br><br><br><strong>下面来看一些具体的例子<br></strong><em>D:\>Ant</em><br>使用当前目录下的build.xmlq行antQ执行缺省的targetQ也是<project>标答中default属性所讑ֆ的target)<br><br><em>D:\>Ant -buildfile hibernate-build.xml<br></em>使用当前目录下的hibernate-build.xmlq行antQ执行缺省的target?br><br><em>D:\>And -buildfile hibernate-build.xml compile<br></em>使用当前目录下的hibernate-build.xmlq行antQƈ执行名ؓ"complie"的target?<br><br><br> <img src ="http://www.aygfsteel.com/x-29/aggbug/109426.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/x-29/" target="_blank">听风的歌</a> 2007-04-09 15:39 <a href="http://www.aygfsteel.com/x-29/archive/2007/04/09/109426.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>