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 相关文章推荐
如何使用脚本模仿登陆过程
Nov 22 PHP
php 设计模式之 工厂模式
Dec 19 PHP
防止用户利用PHP代码DOS造成用光网络带宽
Mar 01 PHP
thinkphp实现图片上传功能分享
Mar 04 PHP
Discuz!X中SESSION机制实例详解
Sep 23 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
Sep 09 PHP
PHP进程通信基础之信号
Feb 19 PHP
PHP实现json_decode不转义中文的方法
May 20 PHP
详解PHP中mb_strpos的使用
Feb 04 PHP
PHP生成随机码的思路与方法实例探索
Apr 11 PHP
PHP抽象类与接口的区别实例详解
May 09 PHP
PHP控制循环操作的时间
Apr 01 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无限极分类实现的两种解决方法
2013/04/28 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
PHP开发注意事项总结
2015/02/04 PHP
php中memcache 基本操作实例
2015/05/17 PHP
PHP实现将MySQL重复ID二维数组重组为三维数组的方法
2016/08/01 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
JQuery遍历DOM节点的方法
2015/06/11 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
JS实现的另类手风琴效果网页内容切换代码
2015/09/08 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
node.js域名解析实现方法详解
2019/11/05 Javascript
js实现选项卡效果
2020/03/07 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
python 使用get_argument获取url query参数
2017/04/28 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
Python 格式化打印json数据方法(展开状态)
2020/02/27 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
Servlet面试题库
2015/07/18 面试题
教育孩子心得体会
2014/01/01 职场文书
公务员政审个人鉴定
2014/02/25 职场文书
公证书标准格式
2014/04/10 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
歼十出击观后感
2015/06/11 职场文书
导游词之青岛崂山
2019/12/27 职场文书
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL