下载jquery.ui.touch-punch.min.js即可,无需做任何修改直接调用
https://github.com/furf/jquery-ui-touch-punch


data.update.lastsys.time.agopunc.commaarticle.create.bypunc.commaarticle.file.inpunc.colonjQuery

在php中尽量使用单引号,直接作为字符串使用,不进行解析,节约服务器资源
在html中尽量使用双引号且在js中尽量使用单引号,否则容易与html混淆


data.update.lastsys.time.agopunc.commaarticle.create.bypunc.commaarticle.file.inpunc.colonJavaScriptpunc.caesuraHTMLpunc.caesuraPHP

在使用ThinkPHP3.1.3多语言的时候,发现如果输入未定义的多语言参数比如?l=zn-c那么就会返回大写的变量名,这是因为官方用的stripos函数只看有没有存在而不看是否完全匹配,应该要换个方式查看是否匹配,我的方法如下:

把官方 ThinkPHP -> Extend -> Behavior -> CheckLangBehavior.class.php 中 checkLanguage 函数中的这一段

if (false === stripos(C('LANG_LIST'), $langSet)) { // 非法语言参数
    $langSet = C('DEFAULT_LANG');
}

替换为

$hasDefined = false;
foreach (explode(',', C('LANG_LIST')) as $langDefined){
    if ($langSet === $langDefined) {
        $hasDefined = true;
        break;
    }
}
if (!$hasDefined) {
    $langSet = C('DEFAULT_LANG');
}

data.update.lastsys.time.agopunc.commaarticle.create.bypunc.commaarticle.file.inpunc.colonThinkPHP

最近用了wdcp服务器管理系统,发现默认的mysql引擎是MyISAM,会引发#1071 – Specified key was too long; max key length is 1000 bytes错误。

一开始以为是MySQL默认引擎的问题,后来尝试切换默认引擎,修改/etc/my.cnf文件中default-storage-engine = INNODB,结果mysql直接起不来了…

然后发现MySQL命令show engines中并没有InnoDB…但是wdcp的phpmyadmin显示结果中是有的…呵呵…原来是我搞错了真正的MySQL的配置文件

wdcp中的配置文件目录实际上是 /www/wdlinux/etc/my.cnf

修改后重启成功了,默认也对了

这里要注意wdcp默认有优化方案是InnoDB,结果选了这个方案竟然就没了InnoDB…这不坑爹么…

找到了解决方案:

sed -i '/innodb/d' /www/wdlinux/etc/my.cnf
service mysqld restart

*注意: 这里innodb需要大小写需要和配置文件中的一致,所以如果配置文件里是
default-storage-engine = INNODB
那么这里就应该是
sed -i '/INNODB/d' /www/wdlinux/etc/my.cnf
输入这两句就好了,网上也有其他解决办法,看下来原因可能是这样的:

因为innodb_log_file_size改了这个大小之后,不能启动mysql,或者是InnoDB消失了

该页面作者写的解决方案是这样的:

1.先停止mysql服务
2.在数据库数据文件目录下删除ib_logfile0和ib_logfile1两个文件,这个两个文件的大小应该是和innodb_log_file_size设的值是一样的
3.在配置文件中设置innodb_log_file_size的值
4.重启mysql服务(2中删除的两个文件ib_logfile0和ib_logfile1会自动创建)
wdcp的目录是:/www/wdlinux/mysql-5.1.63/var
你会看到 ib_logfile0 ib_logfile1 ib_logfile2 这三个文件,你把它们移走或者删除,重启mysql,问题就解决了

网上还查到两个办法,是通过修改PowerDesigner的配置来使得创建语句自动选择InnoDB为引擎

两种方法如下:

1.点击表视图右键选择Physical Options页签选择左侧列表的type=(ISAM) -> 点击>>可将其选择到右侧列表 -> 选择右侧的 type=(ISAM) 下面会出现type=的选择列表,可以选择相应的InnoDB、MYISAM等 -> 选择完成后,可点击Preview查看相应的SQL语句

2.选择Database -> Default Physical Options -> 与上面Table处的选择相同可以多做一些操作的是选择Apply to…按钮,勾选相关的Table然后点击OK完成,比较推荐这个方法

但是我的PD里面只有ISAM木有其他选项…直接也是可以的…

所以最终的解决方案是:

1.在wdcp优化方案中选择InnoDB

2.运行命令

sed -i '/innodb/d' /www/wdlinux/etc/my.cnf
service mysqld restart

3.点击wdcp面板中mysql设置 -> 在线编辑文件 -> 修改
default-storage-engine = INNODB
最后贴一份也是网页上看到的配置方案:

1.innodb_additional_mem_pool_size
除了缓存表数据和索引外,可以为操作所需的其他内部项分配缓存来提升InnoDB的性能。这些内存就可以通过此参数来分配。推荐此参数至少设置为2MB,实际上,是需要根据项目的InnoDB表的数目相应地增加。
2.innodb_data_pool_size
此参数类似于MySQL的key_buffer参数,但特定用于InnoDB表。这个参数确定了要预留多少内存来缓存表数据和索引。与key_buffer一样,更高的设置会提升性能,可以是服务器的内存70-80%。
3.innodb_data_file_path
参数的名字和实际的用途有点出入,它不仅指定了所有InnoDB数据文件的路径,还指定了初始大小分配,最大分配以及超出起始分配界线时是否应当增加文件的大小。此参数的一般格式如下:

path-to-datafile:size-allocation[:autoextend[:max-size-allocation]]

例如,假设希望创建一个数据文件sales,初始大小为100MB,并希望在每次达到当前大小限制时,自动增加8MB(8MB是指定autoextend时的默认扩展大小)。但是,不希望此文件超过1GB,可以使用如下配置:

innodb_data_home_dir =
innodb_data_file_path = /data/sales:100M:autoextend:8M: max:1GB

如果此文件增加到预定的1G的限制,可以再增加另外一个数据文件,如下:

innodb_data_file_path = /data/sales:100M:autoextend:8M: max:1GB;innodb_data_file_path = /data2/sales2:100M:autoextend:8M: max:2GB

要注意的是,在这些示例中,inndb_data_home_dir参数开始设置为空,因为最终数据文件位于单独的位置(/data/和/data2/)。如果希望所有InnoDB数据文件都位于相同的位置,就可以使用innodb_data_home_dir来指定共同位置,然后在通过inndo_data_file_path来指定文件名即可。如果没有定义这些值,将在datadir中创建一个sales。
4.innodb_data_home_dir
此参数指定创建InnoDB表空间的路径的公共部分,默认情况下,这是MySQL的默认数据,由MySQL参数datadir指定。
5.innodb_file_io_threads
此参数指定InnoDB表可用的文件I/O线程数,MySQL开发人员建议在非Windows平台中这个参数设置为4。
6.innodb_flush_log_at_trx_commit
如果将此参数设置为1,将在每次提交事务后将日志写入磁盘。为提供性能,可以设置为0或2,但要承担在发生故障时丢失数据的风险。设置为0表示事务日志写入日志文件,而日志文件每秒刷新到磁盘一次。设置为2表示事务日志将在提交时写入日志,但日志文件每次刷新到磁盘一次。
7.innodb_log_archive
因为MySQL目前使用自己的日志文件恢复InnoDB表,此参数可设置为0。
8.innodb_log_arch_dir
MySQL目前忽略此参数,但会在未来的版本中使用。目前,应当将其设置为与innodb_log_group_home_dir相同的值。
9.innodb_log_buffer_size
此参数确定些日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据。MySQL开发人员建议设置为1-8M之间。
10.innodb_log_file_size
此参数确定数据日志文件的大小,以M为单位,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间。
11.innodb_log_files_in_group
为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3M。
12.innodb_log_group_home_dir
此参数确定日志文件组中的文件的位置,日志组中文件的个数由innodb_log_files_in_group确定,此位置设置默认为MySQL的datadir。
13.innodb_lock_wait_timeout
InnoDB有其内置的死锁检测机制,能导致未完成的事务回滚。但是,如果结合InnoDB使用MyISAM的lock tables语句或第三方事务引擎,则InnoDB无法识别死锁。为消除这种可能性,可以将innodb_lock_wait_timeout设置为一个整数值,指示MySQL在允许其他事务修改那些最终受事务回滚的数据之前要等待多长时间(秒数)。
14.skip-innodb
启用此参数能防止夹杂InnoDB表驱动程序,不使用InnoDB表时推荐此设置。


data.update.lastsys.time.agopunc.commaarticle.create.bypunc.commaarticle.file.inpunc.colonWDCP

由于PHP是弱类型语言,因此函数的输入参数类型无法确定(可以使用类型暗示,但是类型暗示无法用在诸如整型、字符串之类的标量类型上),并且对于一个函数,比如只定义了3个输入参数,PHP却在运行调用的时候输入4个或者更多的参数。因此基于这2点,注定了PHP中无法重载函数(类似Javascript语言),也无法有构造函数的重载。

由于实现函数的重载对提高开发效率很有帮助,如果能象C#或者C++那样就非常好了。事实上,PHP的确提供了一个魔术方法,mixed __call(string name, array arguments)。这个方法在php手册中也有提及,根据官方文档,称此方法可以实现函数重载。当调用对象中一个不存在的方法的时候,如果定义了__call()方法,则会调用该方法。比如下面的代码:

<?php
class A
{
     function __call($name, $args)
    {
        if ($name == 'f')
        {
            $i = count($args);
            if (method_exists($this, $f = 'f' . $i)) {
                call_user_func_array(array($this, $f), $args);
            }
        }
    }
    function f1($a1)
    {
        echo "1个参数" . $a1 . "<br/>";
    }
    function f2($a1, $a2)
    {
        echo "2个参数" . $a1 . "," . $a2 . "<br/>";
    }
    function f3($a1, $a2, $a3)
    {
          echo "3个参数" . $a1 . "," . $a2 . "," . $a3 . "<br/>";
    }
}
(new A)->f('a');
(new A)->f('a', 'b');
(new A)->f('a', 'b', 'c');
?>

另外,构造函数中获取参数可以这样写:

$a = func_get_args(); // 获取构造函数中的参数
$i = count($a);

data.update.lastsys.time.agopunc.commaarticle.create.bypunc.commaarticle.file.inpunc.colonPHP

当一个对象在css里用了float后会导致下一个对象重叠,原因是一旦float了那么它本身就不再加入原来的高度等一系列计算,如果要解决这个问题,就是在下一个对象之前加入一个用来使它进入计算的对象,也就是一个包含clear: both样式的对象,举个例子:

<div style="float: right">…</div>
<div style="clear: both">…</div>

data.update.lastsys.time.agopunc.commaarticle.create.bypunc.commaarticle.file.inpunc.colonCSS

在jQuery1.6之前的版本我们会这样写我们的代码:

<input type="checkbox" id="chk" />
<script>
// 获取是否选中
var isChecked = $('#chk').attr('checked');

// 设置选中
$('#chk').attr('checked', true);
</script>

这样写在jQuery1.6之前完全没问题,可是当我们升级到更高的版本时问题就来了。此时我们会发现返回的是checked或者是undefined,不是原来的true和false,并且checked属性在页面初始化的时候已经初始化好了,不会随着状态的改变而改变。所以如果checkbox一开始是选中的,那么返回的是checked,如果一开始没被选中,则返回的是undefined。

解决方法如下:

<input type="checkbox" id="chk" />
<script>
// 获取是否选中
var isChecked = $('#chk').prop('checked');
// 或
var isChecked = $('#chk').is(':checked');
// 设置选中
$('#chk').prop('checked', true);
</script>

分析了其中的原因,可以这样理解:
它将“属性”与“特性”做了区别,属性指的是name、id等等,特性指的是selectedIndex、tagName、nodeName等等。jQuery1.6之后可以通过attr方法去获得属性,通过prop方法去获得特性。

$('#chk').attr('tagName'); // undefined
$('#chk').prop('tagName'); // INPUT

data.update.lastsys.time.agopunc.commaarticle.create.bypunc.commaarticle.file.inpunc.colonjQuery

[]是数组,一般定义如下:

$arr = ['a', 'b'];
// 等同于
$arr = new Array();
$arr.push('a');
$arr.push('b');

{}是对象,一般定义如下:

$obj = {'name': 'way', 'sex': 'male'};

data.update.lastsys.time.agopunc.commaarticle.create.bypunc.commaarticle.file.inpunc.colonJavaScript

JS的数组并不支持非数字下标,举个例子:

var $arr = new Array();
$arr['a'] = 'aa';
alert($arr.length); // 输出0
alert($arr['a']); // 输出aa

实际上JS数组只支持数字索引,非数字索引指的是对象的属性,如果要遍历的话用如下方法:

for(var prop in $arr){
  if($arr.hasOwnProperty(prop)){
    //...
  }
}

data.update.lastsys.time.agopunc.commaarticle.create.bypunc.commaarticle.file.inpunc.colonJavaScript

数组值传递

<?php

function main() {
        $cc = array(
            'a','b'
        );
        change($cc);
        var_dump($cc);
        die;
}
function change($cc){
        $cc = array('dd');
}
main();

output:
array(2) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
}
?>

数组引用传递

<?php

function main() {
        $cc = array(
            'a','b'
        );
        change($cc);
        var_dump($cc);
        die;
}
function change(&$cc){
        $cc = array('dd');
}
main();
?>

outpout:
array(1) {
  [0]=>
  string(2) "dd"
}

类对象值传递

<?php
class pp{
        public $ss = 0;
}
function main() {
        $p = new pp();
        change($p);
        var_dump($p);
        die;
}
function change($p){
        $p->ss = 10;
}
main();
?>

output:
object(pp)#1 (1) {
  ["ss"]=>
  int(10)
}

类对象引用传递

<?php
class pp{
        public $ss = 0;
}
function main() {
        $p = new pp();
        change($p);
        var_dump($p);
        die;
}
function change(&$p){
        $p->ss = 10;
}
main();
?>

output:
object(pp)#1 (1) {
  ["ss"]=>
  int(10)
}

data.update.lastsys.time.agopunc.commaarticle.create.bypunc.commaarticle.file.inpunc.colonPHP
article.category
0.053715s