??xml version="1.0" encoding="utf-8" standalone="yes"?>成人在线视频一区,久久久国产精品网站,精品国产髙清在线看国产毛片http://www.aygfsteel.com/wangzhouyu/category/22142.htmlzh-cnTue, 09 Mar 2010 16:32:59 GMTTue, 09 Mar 2010 16:32:59 GMT60Unitils开发指南(三)(j)http://www.aygfsteel.com/wangzhouyu/archive/2008/08/25/224169.html小~咖啡?/dc:creator>小~咖啡?/author>Mon, 25 Aug 2008 07:11:00 GMThttp://www.aygfsteel.com/wangzhouyu/archive/2008/08/25/224169.htmlhttp://www.aygfsteel.com/wangzhouyu/comments/224169.htmlhttp://www.aygfsteel.com/wangzhouyu/archive/2008/08/25/224169.html#Feedback2http://www.aygfsteel.com/wangzhouyu/comments/commentRss/224169.htmlhttp://www.aygfsteel.com/wangzhouyu/services/trackbacks/224169.html

@DataSet

public class UserDAOTest extends UnitilsJUnit4 {

    @Test

    public void testFindByName() {

        User result = userDao.findByName("doe", "john");

        assertPropertyLenEquals("userName", "jdoe", result);

    }

    @Test

    public void testFindByMinimalAge() {

        List<User> result = userDao.findByMinimalAge(18);        

        assertPropertyLenEquals("firstName", Arrays.asList("jack"), result);

    }

}

    @DateSet 

    

   

<?xml version='1.0' encoding='UTF-8'?>

<dataset>

    <usergroup name="admin" />  

    <user userName="jdoe"  name="doe"   firstname="john"   userGroup="admin" />

    <usergroup name="sales" />    

    <user userName="smith" name="smith" userGroup="sales" />

    

</dataset>

   

   UserDAOTest.testFindByMinimalAge.xml 

<?xml version='1.0' encoding='UTF-8'?>

<dataset>

    <user userName="jack" age="18" />

    <user userName="jim"  age="17" />

</dataset>

public class UserDAOTest extends UnitilsJUnit4 {

@Test

@DataSet("UserDAOTest.testFindByMinimalAge.xml")

public void testFindByMinimalAge() {

List<User> result = userDao.findByMinimalAge(18); 

assertPropertyLenEquals("firstName", Arrays.asList("jack"), result);

}

}

clean insertDbUnitModule.DataSet.loadStrategy.default 

DbUnitModule.DataSet.loadStrategy.default=org.unitils.dbunit.datasetloadstrategy.InsertLoadStrategy 

clean insertinsert

@DataSet

@DataSet(loadStrategy = InsertLoadStrategy.class) 

DatabaseOperation

CleanInsertLoadStrategy: 

InsertLoadStrategy: 

RefreshLoadStrategy: 

UpdateLoadStrategy: 

 multischema xml FlatXmlDataSet DataSetFactory 

DataSetFactoryDbUnitModule.DataSet.factory.default @DataSet XlsDataSet 

public class UserDAOTest extends UnitilsJUnit4 { 

    @Test @ExpectedDataSet 

    public void testInactivateOldAccounts() { 

        userDao.inactivateOldAccounts(); 

    } 

@ExpectedDataSet UserDAOTest.testInactivateOldAccounts-result.xml 

<?xml version='1.0' encoding='UTF-8'?> 

<dataset> 

    <user userName="jack" active="true" /> 

    <user userName="jim"  active="false" /> 

</dataset> 

@DataSet className .methodName -result.xml 

<?xml version='1.0' encoding='UTF-8'?> 

<dataset xmlns="SCHEMA_A" xmlns:b="SCHEMA_B"> 

    <user id="1" userName="jack" />     

    <b:role id="1" roleName="admin" /> 

</dataset> 

SCHEMA_A SCHEMA_BSCHEMA_A SCHEMA_B SCHEMA_B SCHEMA_A  

SCHEMA_A.user SCHEMA_B.role

database.schemaNames 

database.schemaNames=SCHEMA_A, SCHEMA_B 

SCHEMA_A 

<?xml version='1.0' encoding='UTF-8'?> 

<dataset xmlns:b="SCHEMA_B"> 

    <user id="1" userName="jack" />     

    <b:role id="1" roleName="admin" /> 

</dataset> 

 

DataSource

DataSource DataSource 

database.driverClassName=oracle.jdbc.driver.OracleDriver 

database.url=jdbc:oracle:thin:@yourmachine:1521:YOUR_DB 

database.userName=john 

database.password=secret 

database.schemaNames=test_john 

unitils.properties unitils-local.properties 

@TestDataSource DataSource 

public abstract class BaseDAOTest extends UnitilsJUnit4 { 

    @TestDataSource 

    private DataSource dataSource; 

     

    @Before     

    public void initializeDao() { 

        BaseDAO dao = getDaoUnderTest(); 

        dao.setDataSource(dataSource); 

    } 

    protected abstract BaseDAO getDaoUnderTest(); 

DatabaseUnitils.getDataSource() 

SELECT FOR UPDATE 

DatabaseModule.Transactional.value.default=commit 

rollback disabled 

@Transactional 

@Transactional(TransactionMode.ROLLBACK) 

public class UserDaoTest extends UnitilsJUnit4 { 

@Transactional 

.........



]]>
Unitils开发指南(二)(j)http://www.aygfsteel.com/wangzhouyu/archive/2008/04/07/191137.html小~咖啡?/dc:creator>小~咖啡?/author>Sun, 06 Apr 2008 16:45:00 GMThttp://www.aygfsteel.com/wangzhouyu/archive/2008/04/07/191137.htmlhttp://www.aygfsteel.com/wangzhouyu/comments/191137.htmlhttp://www.aygfsteel.com/wangzhouyu/archive/2008/04/07/191137.html#Feedback2http://www.aygfsteel.com/wangzhouyu/comments/commentRss/191137.htmlhttp://www.aygfsteel.com/wangzhouyu/services/trackbacks/191137.htmlUnitils模块

配置

和大多数的项目一Punitils也需要一些配|,默认情况下有3个配|,每个配置都覆写前一个的配置

  1. unitils-default.properties 默认的配|,在unitils发行包中?/li>
  2. unitils.properties 可包含项目的全部配置
  3. unitils-local.properties 可以包含用户特定配置

W一个配|文件unitils-default.propertiesQ它包含?jin)缺省值ƈ被包含在unitils的发行包中。我们没有必要对q个文gq行修改Q但它可以用来作参考?/p>

W二个配|文件unitils.propertiesQ它是我们需要进行配|的文gQƈ且能覆写~省的配|。D个例子,如果你的目使用的是oracle数据库,你可以创Z个unitils.properties文gq覆写相应的driver class和database url?/p>

database.driverClassName=oracle.jdbc.driver.OracleDriver
database.url=jdbc:oracle:thin:@yourmachine:1521:YOUR_DB

q个文gq不是必ȝQ但是一旦你创徏?jin)一个,你就需要将该文件放|在目的classpath?/p>

最后一个文Ӟunitils-local.properties是可选的配置文gQ它可以覆写目的配|,用来定义开发者的具体讄QD个例子来_(d)如果每个开发者都使用自己的数据库schemaQ你可以创Z个unitils-local.properties为每个用户配|自q数据库̎受密码和schema?/p>

database.userName=john
database.password=secret
database.schemaNames=test_john

每个unitils-local.properties文g应该攄在对应的用户文g夹中Q?em>System.getProperty("user.home")Q?/p>

本地文g名unitils-local.properties也可以通过配置文g定义Q在unitils.properties覆写unitils.configuration.localFileName可以?/p>

unitils.configuration.localFileName=projectTwo-local.properties

 

启用你的unitils

unitils的功能是依赖于基的测试框Ӟ要用unitils的功能,必denable他们Q这样做的目的也是ؓ(f)?jin)容易扩展。目前支持的框架有:(x)

  1. JUnit3 Qorg.unitils.UnitilsJUnit3
  2. JUnit4 Qorg.unitils.UnitilsJUnit4
  3. TestNGQorg.unitils.UnitilsTestNG

举个例子Q如果用JUnit3Q你要用unitils

import org.unitils.UnitilsJUnit3;
public class MyTest extends UnitilsJUnit3 {
}

通常你将创徏你自q包含一些公p为的试基类Q如dataSource的注入,你可以让q个基类l承unitils试cR?/p>

当你使用的是JUnit4的话Q你也可是?em>@RunWith来代替(h)承unitils试c?/p>

import org.junit.runner.RunWith;
import org.unitils.UnitilsJUnit4TestClassRunner;
@RunWith(UnitilsJUnit4TestClassRunner.class)
public class MyTest {
}

 

模块pȝ

在开始D例之前,让我们先?jin)解一下unitils概念?/p>

unitils的结构被设计成了(jin)十分Ҏ(gu)扩展Q每个模块提供了(jin)一U服务,当执行Test的时候通过TestListener调用相应的服务?/p>

image

q种设计采用?jin)一个统一的方式提供服务,如果你需要加入其他的服务Q无需L~测试基c(UnitilsJUnit4q些c)(j)。要加入新的服务只需要添加一个新的模块ƈ在unitls配置文g中登记这个模块?/p>

目前unitils中所有有效的模块如下Q?/p>

  1. DatabaseModule 数据库单元测试的l护和连接池?/li>
  2. DbUnitModule 使用DBUnit来管理测试数据?/li>
  3. hibernatemodule 支持Hibernate的配|和自动数据库映检查?/li>
  4. EasyMockModule 支持创徏mock和宽杄反射参数匚w?/li>
  5. InjectModule 支持在一个对象中注入另一个对象?/li>
  6. SpringModule 支持加蝲spring的上下文配置Qƈ(g)索和Spring Bean注入?/li>


]]>
Unitils开发指南(一Q?/title><link>http://www.aygfsteel.com/wangzhouyu/archive/2008/04/05/190908.html</link><dc:creator>小~咖啡?/dc:creator><author>小~咖啡?/author><pubDate>Sat, 05 Apr 2008 06:23:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangzhouyu/archive/2008/04/05/190908.html</guid><wfw:comment>http://www.aygfsteel.com/wangzhouyu/comments/190908.html</wfw:comment><comments>http://www.aygfsteel.com/wangzhouyu/archive/2008/04/05/190908.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangzhouyu/comments/commentRss/190908.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangzhouyu/services/trackbacks/190908.html</trackback:ping><description><![CDATA[<p>      单元试应该是简单和直观的,而现实中的项目大多都是采用多层方式的Q如EJB和hibernate的数据驱动层的中间g技术? <p>      unitils来源于一个尝试,是希望能以更务实的方式来看待单元测?..... <p>      q个指南?x)告诉你Q什么项目可以用unitils?q在q个<a >指导斚w?/a> 中你可以?jin)解到测试的准侧和它的特炏V如果?zhn)想?jin)解如何可以配|unitils Qƈ得以q速地启动Q请查看<a >cookbook</a> ? <ul> <li>unitils的断a <li>unitils的模? <li>数据库的试 <li>数据库的自动试 <li>hibernate的测? <li>jpa的测? <li>spring的测? <li>mock object的测? <li>今后的方?/li></ul> <p>      <strong>unitils的断a</strong></p> <p>      在开始这个指南之前我们先说明一下独立于unitils核心(j)模块的断a。在下面的例子中Q不需要进行配|,unitils的jar包和依赖包放在你的classpath下,可以进行测试了(jin)?/p> <p>      通过反射q行断言</p> <p>      一个典型的单元试包含?jin)结果值和期望值的比较Qunitils提供?jin)断a的方法以帮助你进行该操作Q让我们看看实例2中对有着id、first name、last name属性的Usercȝ2个实例的比较</p><pre><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> User { <span style="color: #0000ff">private</span> <span style="color: #0000ff">long</span> id; <span style="color: #0000ff">private</span> String first; <span style="color: #0000ff">private</span> String last; <span style="color: #0000ff">public</span> User(<span style="color: #0000ff">long</span> id, String first, String last) { <span style="color: #0000ff">this</span>.id = id; <span style="color: #0000ff">this</span>.first = first; <span style="color: #0000ff">this</span>.last = last; } } User user1 = <span style="color: #0000ff">new</span> User(1, "<span style="color: #8b0000">John</span>", "<span style="color: #8b0000">Doe</span>"); User user2 = <span style="color: #0000ff">new</span> User(1, "<span style="color: #8b0000">John</span>", "<span style="color: #8b0000">Doe</span>"); assertEquals(user1, user2);</pre><pre> 你期望这个断a是成功的Q因两个实例含有相同的属性,但是q行的结果ƈ非如此,应ؓ(f)Usercdƈ没有覆写<br>equals()Ҏ(gu)Q所以assertEquals是对两个实例是否相等q行判断Quser1 == user2Q结果导致了(jin)比较的失败?/pre><pre> 假设你像如下代码一样实C(jin)equalsҎ(gu)</pre><pre><span style="color: #0000ff">public</span> <span style="color: #0000ff">boolean</span> equals(Object <span style="color: #0000ff">object</span>) { <span style="color: #0000ff">if</span> (<span style="color: #0000ff">object</span> <span style="color: #0000ff">instanceof</span> User) { <span style="color: #0000ff">return</span> id == ((User) <span style="color: #0000ff">object</span>).id; } <span style="color: #0000ff">return</span> <span style="color: #0000ff">false</span>; }</pre> <p>       q在你的E序逻辑中是一个合乎逻辑的实玎ͼ当两个User实例拥有相同的id的时候,那么q两个实例就是相{的。然而这U方式在你的单元试中ƈ不合适,q不能通过id的相同来认ؓ(f)两个user是相同的?/p><pre>User user1 = <span style="color: #0000ff">new</span> User(1, "<span style="color: #8b0000">John</span>", "<span style="color: #8b0000">Doe</span>"); User user2 = <span style="color: #0000ff">new</span> User(1, "<span style="color: #8b0000">Jane</span>", "<span style="color: #8b0000">Smith</span>"); assertEquals(user1, user2);</pre> <p>       q个断言会(x)成功Q但qƈ不是你所期望的,因此不要使用assertEquals来对两个对象q行判定是否相等Q外覆类和java.lang.Stringc除外)(j)。要x(chng)a他们相等Q一U方法就是断a每个属性相{?/p><pre>User user1 = <span style="color: #0000ff">new</span> User(1, "<span style="color: #8b0000">John</span>", "<span style="color: #8b0000">Doe</span>"); User user2 = <span style="color: #0000ff">new</span> User(1, "<span style="color: #8b0000">John</span>", "<span style="color: #8b0000">Doe</span>"); assertEquals(user1.getId(), user2.getId()); assertEquals(user1.getFirst(), user2.getFirst()); assertEquals(user1.getLast(), user2.getLast());</pre> <p>       unitils提供?jin)一些方法来帮助你执行断a更加的简单,通过反射Q?em>ReflectionAssert.assertRefEquals</em>上面的代码重写如下:(x)</p><pre>User user1 = <span style="color: #0000ff">new</span> User(1, "<span style="color: #8b0000">John</span>", "<span style="color: #8b0000">Doe</span>"); User user2 = <span style="color: #0000ff">new</span> User(1, "<span style="color: #8b0000">John</span>", "<span style="color: #8b0000">Doe</span>"); assertRefEquals(user1, user2);</pre><pre> q个断言通过反射对两个实例中的每个属性都q行比较Q先是id、然后是first name、最后是last name?/pre><pre> 如果一个属性本w也是一个对象,那么会(x)使用反射q行递归比较Q这同样适合与集合、map、和数组之间的比较,他们<br>的每个元素会(x)通过反射q行比较。如果值是一个基本类型或者是一个外覆类Q那么将?x)?=q行值的比较Q因此下面的?br>a?x)取得成?/pre><pre>assertRefEquals(1, 1L); List<Double> myList = <span style="color: #0000ff">new</span> ArrayList<Double>(); myList.add(1.0); myList.add(2.0); assertRefEquals(Arrays.asList(1, 2), myList);</pre> <p>      <strong>宽松的断a</strong></p> <p><strong>     </strong>Z可维护性,q一Ҏ(gu)十分重要的,举例说明Q如果你要计一个帐L(fng)余额Q那你就没比较检查这个帐L(fng)名称。他只会(x)增加复杂性,使之更难理解。如果你惌你的试代码更容易生存,更容易重构的话,那请保你断a的范围?/p> <p>      <em>宽松的顺?/em></p> <p><em>      </em>在比较集合和数组的时候你可能q不兛_(j)他们中元素的序Q通过使用<i>ReflectionAssert.assertRefEquals</i>Ҏ(gu)q?i>ReflectionComparatorMode.LENIENT_ORDER</i>参数忽略元素的序?/p><pre>List<Integer> myList = Arrays.asList(3, 2, 1); assertRefEquals(Arrays.asList(1, 2, 3), myList, LENIENT_ORDER);</pre><pre> <em>无视默认</em></pre><pre><em> </em>W二U的从宽方式是?i>ReflectionComparatorMode.IGNORE_DEFAULTS</i>模式Q当q种模式被设|的时?java<br>的默认|如null?、false会(x)不参与断aQ忽略)(j)?/pre><pre> 举个例子Q如果你有一个Userc,该类有着first nameQlast nameQstreet{属性,但是你仅仅想对first name<br>和streetq行(g)查而忽略其他的属性?/pre><pre>User actualUser = <span style="color: #0000ff">new</span> User("<span style="color: #8b0000">John</span>", "<span style="color: #8b0000">Doe</span>", <span style="color: #0000ff">new</span> Address("<span style="color: #8b0000">First street</span>", "<span style="color: #8b0000">12</span>", "<span style="color: #8b0000">Brussels</span>")); User expectedUser = <span style="color: #0000ff">new</span> User("<span style="color: #8b0000">John</span>", <span style="color: #0000ff">null</span>, <span style="color: #0000ff">new</span> Address("<span style="color: #8b0000">First street</span>", <span style="color: #0000ff">null</span>, <span style="color: #0000ff">null</span>)); assertRefEquals(expectedUser, actualUser, IGNORE_DEFAULTS);</pre> <p>      你所期望忽略的属性的对象必须攑֜断言左边Q如果放在右辚w么依然进行比较?/p><pre>assertRefEquals(<span style="color: #0000ff">null</span>, anyObject, IGNORE_DEFAULTS); <span style="color: #008000">// Succeeds</span> assertRefEquals(anyObject, <span style="color: #0000ff">null</span>, IGNORE_DEFAULTS); <span style="color: #008000">// Fails</span></pre> <p>      <em>宽松的日?/em></p> <p><em>      </em>W三U从宽处理是<em>ReflectionComparatorMode.LENIENT_DATESQ?/em>当两个日期都是|或者都是null的时候,实际的日期将?x)被忽略Q即断言为相{)(j)?/p><pre>Date actualDate = <span style="color: #0000ff">new</span> Date(44444); Date expectedDate = <span style="color: #0000ff">new</span> Date(); assertRefEquals(expectedDate, actualDate, LENIENT_DATES);</pre> <p>      <em>assertLenEquals </em></p> <p><em>      ReflectionAssert</em>q提供了(jin)一U断aQ他提供宽松的顺序又提供无视的忽略?/p><pre>List<Integer> myList = Arrays.asList(3, 2, 1); assertLenEquals(Arrays.asList(1, 2, 3), myList); assertLenEquals(<span style="color: #0000ff">null</span>, "<span style="color: #8b0000">any</span>"); <span style="color: #008000">// Succeeds</span> assertLenEquals("<span style="color: #8b0000">any</span>", <span style="color: #0000ff">null</span>); <span style="color: #008000">// Fails</span></pre> <p>      <strong>属性断a</strong></p> <p><em>      assertLenEquals</em>?i>assertRefEquals</i>都是比较对象QReflectionAssert也提供方法对对象的属性进行比较。(依赖与ONGLQ?/p> <p>      一些属性比较的例子</p><pre>assertPropertyLenEquals("<span style="color: #8b0000">id</span>", 1, user); //断言user的id属性的值是1 assertPropertyLenEquals("<span style="color: #8b0000">address.street</span>", "<span style="color: #8b0000">First street</span>", user); //断言user的address的street属?/pre> <p>      在这个方式中你期望的值和判定的对象也可以使用集合</p><pre>assertPropertyLenEquals("<span style="color: #8b0000">id</span>", Arrays.asList(1, 2, 3), users); assertPropertyLenEquals("<span style="color: #8b0000">address.street</span>", Arrays.asList("<span style="color: #8b0000">First street</span>", <br> "<span style="color: #8b0000">Second street</span>", "<span style="color: #8b0000">Third street</span>"), users);</pre><img src ="http://www.aygfsteel.com/wangzhouyu/aggbug/190908.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangzhouyu/" target="_blank">小~咖啡?/a> 2008-04-05 14:23 <a href="http://www.aygfsteel.com/wangzhouyu/archive/2008/04/05/190908.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>单元试的十二信?/title><link>http://www.aygfsteel.com/wangzhouyu/archive/2007/04/30/114712.html</link><dc:creator>小~咖啡?/dc:creator><author>小~咖啡?/author><pubDate>Mon, 30 Apr 2007 01:59:00 GMT</pubDate><guid>http://www.aygfsteel.com/wangzhouyu/archive/2007/04/30/114712.html</guid><wfw:comment>http://www.aygfsteel.com/wangzhouyu/comments/114712.html</wfw:comment><comments>http://www.aygfsteel.com/wangzhouyu/archive/2007/04/30/114712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/wangzhouyu/comments/commentRss/114712.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/wangzhouyu/services/trackbacks/114712.html</trackback:ping><description><![CDATA[ <blockquote> <ol> <li>写代码,׃定要写测?/li> <li>不要受单元测试的教条所?/li> <li>怿单元试会(x)带来的成?/li> <li>l一考虑~码和测?/li> <li>试比单元代码重?/li> <li>试的最x(chng)机是代码刚写完之?/li> <li>试不会(x)白费</li> <li>当天有瑕늚试也比后补的完测试好</li> <li>不好的测试也比没有测试强</li> <li>试有时可以验证意图</li> <li>只有?c)不用工?/li> <li>用好的去试不好?/li> </ol> <p>引至QInfo中文|站<a >http://www.infoq.com/cn/news/2007/04/savoia-tao-of-testing</a></p> </blockquote> <img src ="http://www.aygfsteel.com/wangzhouyu/aggbug/114712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/wangzhouyu/" target="_blank">小~咖啡?/a> 2007-04-30 09:59 <a href="http://www.aygfsteel.com/wangzhouyu/archive/2007/04/30/114712.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>