php中serialize序列化与json性能测试的示例分析


Posted in PHP onApril 27, 2013

最近需要对大数组做存储,需要在serialize序列化和json之间做了选择。因此需要做了性能测试。

在php5.2之前对数组存储的时候,大都使用serialize系列化。php5.2之后,开始内置了 JSON 的支持

在网上看到有些资料说:json_encode和json_decode比内置的serialize和unserialize函数要高效。耳闻不如眼见,眼见不一定为实。那就用实际数据测试吧.....

我们先理解概念:

一、 序列化

序列化是将对象状态转换为可保持或可传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

将对象的状态信息转换为可以存储或传输的窗体的过程。 在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

通常,对象实例的所有字段都会被序列化,这意味着数据会被表示为实例的序列化数据。这样,能够解释该格式的代码有可能能够确定这些数据的值,而不依赖于该成员的可访问性。类似地,反序列化从序列化的表示形式中提取数据,并直接设置对象状态,这也与可访问性规则无关。 对于任何可能包含重要的安全性数据的对象,如果可能,应该使该对象不可序列化。如果它必须为可序列化的,请尝试生成特定字段来保存不可序列化的重要数据。如果无法实现这一点,则应注意该数据会被公开给任何拥有序列化权限的代码,并确保不让任何恶意代码获得该权限。

二、 JSON

JSON,JavaScript Object Notation,一种更轻、更友好的用于接口(AJAX、REST等)数据交换的格式。 JSON是结构化数据串行化的文本格式,作为XML的一种替代品,用于表示客户端与服务器间数据交换有效负载的格式。它是从ECMAScript语言标准衍生而来的。JSON的设计目标是使它成为小的、轻便的、文本的,而且是JavaScript的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成。

JSON建构有两种结构:
1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。


2.值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

测试:

三、 实际测试

在PHP 5.3下执行:我们先使用小的数据做测试:

    <?php    
    $target = array (    
       'battle_id'=> 257    
       ,'user_id'=> 41248    
       ,'user_id2'=> 23989    
       ,'player'=> 41248    
       ,'formation'=> Array    
            (    
               '41248'=> 1    
               ,'23989'=> 2    
            )           ,'result'=> 1    
       ,'battle_type'=> 1    
       ,'speed'=> Array    
            (    
               '41248'=> 0    
               ,'23989'=> 0    
            )    
            );    
    $json = json_encode($target);    
    $seri = serialize($target);    
    echo "json :" , strlen($json) ,'<br/>';    
    echo "serialize :", strlen($seri) ,'<br/>';    
    $stime = microtime(true);    
    for ($i = 0; $i < 10000; $i ++) {    
        json_encode($target);    
    }    
    $etime = microtime(true);    
    echo "json_encode :", ($etime - $stime) ,'<br/>';    
    //----------------------------------    
    $stime = microtime(true);    
    for ($i = 0; $i < 10000; $i ++) {    
       json_decode($json,true);    
    }    
    $etime = microtime(true);    
    echo "json_decode :", ($etime - $stime),'<br/>';    
    //----------------------------------    
    $stime = microtime(true);    
    for ($i = 0; $i < 10000; $i ++) {    
        serialize($target);    
    }    
    $etime = microtime(true);    
    echo "serialize :", ($etime - $stime) ,'<br/>';    
    //----------------------------------    
    $stime = microtime(true);    
    for ($i = 0; $i < 10000; $i ++) {    
        unserialize($seri);    
    }    
    $etime = microtime(true);    
    echo "unserialize :", ($etime - $stime),'<br/>';    
    ?>   

测试结果:

json :156
serialize :222
json_encode :0.1087498664856
json_decode :0.12652111053467
serialize :0.041656017303467
unserialize :0.040987968444824

测试结果看出json效率稍微比serialize差点,在php5.2可能会更差。应该是在php5.3之后,json扩展做了优化。

然后使用大数组做测试(代码放到最后,因为代码的数组比较长):

测试结果:

json :5350
serialize :8590
json_encode :0.90479207038879
json_decode :1.753741979599
serialize :1.3566699028015
unserialize :1.3003630638123

我们可以看出,serialize比json差了快一个数量级。

总结:

1) 空间的比较

serialize在编码后大概是json的1.5倍

原因:

  • serialize后字符串包含了子串的长度,这可能是速度方面的优化,但是测试结果不尽人意
  • serialize有更加详细的类型区分,而json只有四种类型,并且是以简单的符号表示。
  • 2)速度的比较
  • 在较小数据的情况下, serialize比json快数量级。

    在大数据量的情况下,json比serialize稍微差一点

    3)处理对象
    json无法处理对象方法等数据。

    4)使用范围

    • 序列化使用serialize,特别是对象的存储。这是其存在的意义。
    • 与对象无关的数据存储可以使用json,如包含大量数字的数组等。
      • 在前后端交互一般都使用JSON,另外,目前JSON只支持UTF-8编码的数据。
 <?php  $target = array (  
   'battle_id'=> 257  
   ,'user_id'=> 41248  
   ,'user_id2'=> 23989  
   ,'player'=> 41248  
   ,'formation'=> Array ('41248'=> 1  ,'23989'=> 2)  
   ,'result'=> 1  
   ,'battle_type'=> 1  
   ,'speed'=> Array( '41248'=> 0,'23989'=> 0  )  
   ,'attacker'=> Array(  
    '1'=> Array (  
                   'user_id'=> 41248  
                   ,'soldier_id'=> 28  
                   ,'prototype_id'=> 4  
                   ,'bid'=> 1  
                   ,'level'=> 1  
                   ,'rare'=> 1  
                   ,'skill_id'=> 1  
                   ,'totalhp'=> 3997  
                   ,'hp'=> 3997  
                   ,'attack_general'=> 346  
                   ,'attack_skill'=> 596  
                   ,'attack_explode'=> 458  
                   ,'attack_type'=> 1  
                   ,'defense'=> 0  
                   ,'anger'=> 50  
                   ,'dodge'=> 2  
                   ,'crit'=> 2  
                   ,'block'=> 2  
                   ,'block_effect'=> 0.5  
                   ,'crit_effect'=> 2  
                   ,'foramtion_effect'=> 0)  
           ,'4'=> Array (  
                   'user_id'=> 41248  
                   ,'soldier_id'=> 29  
                   ,'prototype_id'=> 2  
                   ,'bid'=> 1  
                   ,'level'=> 1  
                   ,'rare'=> 1  
                   ,'skill_id'=> 1  
                   ,'totalhp'=> 3555  
                   ,'hp'=> 3555  
                   ,'attack_general'=> 396  
                   ,'attack_skill'=> 581  
                   ,'attack_explode'=> 418  
                   ,'attack_type'=> 1  
                   ,'defense'=> 0  
                   ,'anger'=> 50  
                   ,'dodge'=> 2  
                   ,'crit'=> 2  
                   ,'block'=> 0  
                   ,'block_effect'=> 0.5  
                   ,'crit_effect'=> 2  
                   ,'foramtion_effect'=> 0  
                )  
           ,'5'=> Array                (  
                   'user_id'=> 41248  
                   ,'soldier_id'=> 30  
                   ,'prototype_id'=> 6  
                   ,'bid'=> 1  
                   ,'level'=> 1  
                   ,'rare'=> 1  
                   ,'skill_id'=> 1  
                   ,'totalhp'=> 3043  
                   ,'hp'=> 3043  
                   ,'attack_general'=> 351  
                   ,'attack_skill'=> 540  
                   ,'attack_explode'=> 474  
                   ,'attack_type'=> 1  
                   ,'defense'=> 0  
                   ,'anger'=> 50  
                   ,'dodge'=> 2  
                   ,'crit'=> 2  
                   ,'block'=> 0  
                   ,'block_effect'=> 0.5  
                   ,'crit_effect'=> 2  
                   ,'foramtion_effect'=> 0)  
           ,'7'=> Array (  
                   'user_id'=> 41248  
                   ,'soldier_id'=> 37  
                   ,'prototype_id'=> 2  
                   ,'bid'=> 1  
                   ,'level'=> 1  
                   ,'rare'=> 1  
                   ,'skill_id'=> 1  
                   ,'totalhp'=> 3491  
                   ,'hp'=> 3491  
                   ,'attack_general'=> 393  
                   ,'attack_skill'=> 532  
                   ,'attack_explode'=> 456  
                   ,'attack_type'=> 1  
                   ,'defense'=> 0  
                   ,'anger'=> 50  
                   ,'dodge'=> 2  
                   ,'crit'=> 2  
                   ,'block'=> 0  
                   ,'block_effect'=> 0.5  
                   ,'crit_effect'=> 2  
                   ,'foramtion_effect'=> 0   ))  
   ,'defender'=> Array(  
           '2'=> Array(  
                   'user_id'=> 23989  
                   ,'soldier_id'=> 24  
                   ,'prototype_id'=> 1  
                   ,'bid'=> 1  
                   ,'level'=> 1  
                   ,'rare'=> 1  
                   ,'skill_id'=> 1  
                   ,'totalhp'=> 3230  
                   ,'hp'=> 3230  
                   ,'attack_general'=> 390  
                   ,'attack_skill'=> 567  
                   ,'attack_explode'=> 442  
                   ,'attack_type'=> 1  
                   ,'defense'=> 0  
                   ,'anger'=> 50  
                   ,'dodge'=> 2  
                   ,'crit'=> 2  
                   ,'block'=> 0  
                   ,'block_effect'=> 0.5  
                   ,'crit_effect'=> 2  
                   ,'foramtion_effect'=> 0)  
           ,'5'=> Array(  
                   'user_id'=> 23989  
                   ,'soldier_id'=> 25  
                   ,'prototype_id'=> 2  
                   ,'bid'=> 1  
                   ,'level'=> 1  
                   ,'rare'=> 1  
                   ,'skill_id'=> 1  
                   ,'totalhp'=> 3400  
                   ,'hp'=> 3400  
                   ,'attack_general'=> 379  
                   ,'attack_skill'=> 536  
                   ,'attack_explode'=> 405  
                   ,'attack_type'=> 1  
                   ,'defense'=> 0  
                   ,'anger'=> 50  
                   ,'dodge'=> 2  
                   ,'crit'=> 2  
                   ,'block'=> 0  
                   ,'block_effect'=> 0.5  
                   ,'crit_effect'=> 2  
                   ,'foramtion_effect'=> 0 )  
           ,'7'=> Array(  
                   'user_id'=> 23989  
                   ,'soldier_id'=> 26  
                   ,'prototype_id'=> 6  
                   ,'bid'=> 1  
                   ,'level'=> 1  
                   ,'rare'=> 1  
                   ,'skill_id'=> 1  
                   ,'totalhp'=> 3669  
                   ,'hp'=> 3669  
                   ,'attack_general'=> 362  
                   ,'attack_skill'=> 549  
                   ,'attack_explode'=> 426  
                   ,'attack_type'=> 1  
                   ,'defense'=> 0  
                   ,'anger'=> 50  
                   ,'dodge'=> 2  
                   ,'crit'=> 2  
                   ,'block'=> 0  
                   ,'block_effect'=> 0.5  
                   ,'crit_effect'=> 2  
                   ,'foramtion_effect'=> 0 )  
           ,'9'=> Array(  
                   'user_id'=> 23989  
                   ,'soldier_id'=> 27  
                   ,'prototype_id'=> 1  
                   ,'bid'=> 1  
                   ,'level'=> 1  
                   ,'rare'=> 1  
                   ,'skill_id'=> 1  
                   ,'totalhp'=> 3618  
                   ,'hp'=> 3618  
                   ,'attack_general'=> 326  
                   ,'attack_skill'=> 510  
                   ,'attack_explode'=> 419  
                   ,'attack_type'=> 1  
                   ,'defense'=> 0  
                   ,'anger'=> 50  
                   ,'dodge'=> 2  
                   ,'crit'=> 2  
                   ,'block'=> 0  
                   ,'block_effect'=> 0.5  
                   ,'crit_effect'=> 2  
                   ,'foramtion_effect'=> 0) )  
   ,'battle_process'=> Array(  
           '0'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'1'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'2'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'3'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'4'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'5'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'6'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'7'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'8'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'9'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'10'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'11'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'12'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'13'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'14'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'15'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'16'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'17'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'18'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'19'=> Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
           ,'20'=>Array(  
                   'user_id'=> 41248  
                   ,'asid'=> 28  
                   ,'bsid'=> Array( '0'=> 26 )  
                   ,'harm'=> Array('0'=> 1650)  
                   ,'dhp'=> Array('0'=> 2019  )  
                   ,'attacker_anger'=> 66  
                   ,'defender_anger'=> Array('0'=> 94 )  
                   ,'skill'=> 0  
                   ,'state'=> 0  
                )  
        )  
);  
   
$json = json_encode($target);  
$seri = serialize($target);  
echo "json :" , strlen($json) ,'<br/>';  
echo "serialize :", strlen($seri) ,'<br/>';  
$stime = microtime(true);  
for ($i = 0; $i < 10000; $i ++) {  
    json_encode($target);  
}  
$etime = microtime(true);  
echo "json_encode :", ($etime - $stime) ,'<br/>';  
//----------------------------------  
$stime = microtime(true);  
for ($i = 0; $i < 10000; $i ++) {  
   json_decode($json,true);  
}  
$etime = microtime(true);  
echo "json_decode :", ($etime - $stime),'<br/>';  
//----------------------------------  
$stime = microtime(true);  
for ($i = 0; $i < 10000; $i ++) {  
    serialize($target);  
}  
$etime = microtime(true);  
echo "serialize :", ($etime - $stime) ,'<br/>';  
//----------------------------------  
$stime = microtime(true);  
for ($i = 0; $i < 10000; $i ++) {  
    unserialize($seri);  
}  
$etime = microtime(true);  
echo "unserialize :", ($etime - $stime),'<br/>';  
?>   
PHP 相关文章推荐
聊天室php&amp;mysql(二)
Oct 09 PHP
PHP中使用file_get_contents抓取网页中文乱码问题解决方法
Dec 17 PHP
PHP调用MySQL存储过程并返回值的方法
Dec 26 PHP
迁移PHP版本到PHP7
Feb 06 PHP
PHP常用处理静态操作类
Apr 03 PHP
Laravel 5框架学习之表单验证
Apr 08 PHP
PHP数组游标实现对数组的各种操作详解
Jan 26 PHP
PHP编写daemon process详解及实例代码
Sep 30 PHP
PHP请求远程地址设置超时时间的解决方法
Oct 29 PHP
php之可变变量的实例详解
Sep 12 PHP
PHP基于phpqrcode类生成二维码的方法详解
Mar 14 PHP
PHP使用Redis队列执行定时任务实例讲解
Mar 24 PHP
php gzip压缩输出的实现方法
Apr 27 #PHP
PHP字符串的编码问题的详细介绍
Apr 27 #PHP
php正则表达式使用的详细介绍
Apr 27 #PHP
基于PHP编程注意事项的小结
Apr 27 #PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 #PHP
使用Apache的htaccess防止图片被盗链的解决方法
Apr 27 #PHP
php 模拟get_headers函数的代码示例
Apr 27 #PHP
You might like
判断PHP数组是否为空的代码
2011/09/08 PHP
codeigniter教程之多文件上传使用示例
2014/02/11 PHP
PHP实现批量生成App各种尺寸Logo
2015/03/19 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
javascript引用对象的方法代码
2007/08/13 Javascript
奇妙的js
2007/09/24 Javascript
window.location和document.location的区别分析
2008/12/23 Javascript
js图片自动切换效果处理代码
2013/05/07 Javascript
基于jQuery实现复选框是否选中进行答题提示
2015/12/10 Javascript
jquery遍历函数siblings()用法实例
2015/12/24 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
jQuery控制元素隐藏和显示
2017/03/03 Javascript
详解Vue方法与事件
2017/03/09 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
为什么使用koa2搭建微信第三方公众平台的原因
2018/05/16 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
DWR内存兼容及无法调用问题解决方案
2020/10/16 Javascript
python中随机函数random用法实例
2015/04/30 Python
Java中重定向输出流实现用文件记录程序日志
2015/06/12 Python
Python3字符串学习教程
2015/08/20 Python
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
python中异常报错处理方法汇总
2016/11/20 Python
浅析Python 条件控制语句
2020/07/15 Python
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
大学毕业后的十年规划
2014/01/07 职场文书
教师党的群众路线对照检查材料
2014/09/24 职场文书
2015年党员自评材料
2014/12/17 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
长征观后感
2015/06/09 职场文书