jason 发布的文章

mysql - LOW_PRIORITY 降低写操作的优先级

由于 mysql 默认写操作会优先于读操作,这会造成某些更新非常频繁的字段影响了查询的速度,所以对于类似于点击次数这样的字段,可以用

LOW_PRIORITY

来降低此更新的优先级,让查询操作优先,这样会增加网站读取的速度。在 dz 和 phpwind 中有很多这样的用法。例如:

$db->query("UPDATE LOW_PRIORITY {$tablepre}threads SET views=views+1 WHERE tid='$tid'", 'UNBUFFERED');

这就是 discuz 中记录贴子点击次数的语句。

如何安装升级 powershell

在按照 laravel-china 上的环境配置教程安装好虚拟机后,使用 cd ~/Homestead && vagrant up 启动虚拟机时,启动失败,报错:

Bringing machine 'homestead-7' up with 'virtualbox' provider...
The version of powershell currently installed on this host is less than
the required minimum version. Please upgrade the installed version of
powershell to the minimum required version and run the command again.

  Installed version: 2

  Minimum required version: 3

大概意思就是当前版本的 powershell 版本过低,需要升级到 3.0 或以上版本。

找到如下教程:如何升级PowerShell - stay hungrey -cnblogs,以下为转载内容:

安装准备

1. 在安装 Windows Management Framework 3.0之前,卸载任何 Windows Management Framework 3.0 之前的版本。

要卸载早期版本的 Windows PowerShell 3.0,请在每台安装了早期版本的计算机上完成以下过程:

    在 Windows 控制面板中,单击 “卸载程序” 。   
    在 “程序和功能” 中,单击 “查看已安装的更新” 。    
    在 “卸载更新” 窗格的“Microsoft Windows” 部分中,找到标题为 “Microsoft Windows Management Framework 3.0 Beta (KB2506143)” 的更新。    
    右键单击 “Microsoft Windows Management Framework 3.0 Beta (KB2506143)” ,然后单击“卸载”。    
    在“卸载更新”对话框中,单击“是”。

请注意,您需要在卸载更新后重新启动计算机。

安装 Windows PowerShell 3.0

1. 安装 Microsoft .NET Framework 4.0 的完整安装版本 (dotNetFx40_Full_x86_x64.exe),或者,安装 Microsoft .NET Framework 4.5 的完整安装版本 (dotNetFx45_Full_x86_x64.exe)

2. 安装 Windows Management Framework 3.0的 6.1 内核版本安装文件 (Windows6.1-KB2506143-x64.msu)

完成如下过程的安装:

    双击文件 “Windows6.1-KB2506143-x64.msu” 。   
    在 “Windows 更新独立安装程序” 对话框中,当询问您是否安装更新时单击 “是” 。    
    在下载和安装更新向导中的 “请阅读许可条款” 页上,单击 “我接受” 。    
    在 “安装完成” 页上,单击 “立即重新启动” 立即重新启动计算机。(必须重新启动计算机才能使更新生效。)如果不想立即重新启动计算机,请单击“关闭”。如前文所述,在 Windows PowerShell 3.0 完全安装之前,仍需要重新启动计算机。

3. 验证Windows PowerShell 3.0 是否已安装成功。

计算机重新启动后,可以执行以下检查来验证 Windows PowerShell 3.0 是否已安装:

    依次单击 “开始”、“所有程序”、“附件” 和 “Windows PowerShell” ,然后单击 “Windows PowerShell”。   
    在 Windows PowerShell 控制台中的命令提示符下键入以下命令,然后按 ENTER:

    Get-Host | Select-Object Version

    如果 Windows PowerShell 3.0 已安装,您将看到如下所示输出:

    Version   
    -------    
    3.0

iframe 和 frame 的区别

1、frame 不能脱离 frameSet 单独使用,iframe 可以

2、frame 不能放在 body 中,否则不能正常显示

 frame 不能和 body 同时使用 iframe 可以和 body 同时使用

3、嵌套在frameSet中的iframe必需放在body中,不嵌套在frameSet中的iframe可以随意使用

4、frame的高度只能通过frameSet控制;iframe可以自己控制,不能通过frameSet控制

区别:
frame是整个页面的框架,iframe是内嵌的网页元素,也可以说是内嵌的框架,可以用它将一个HTML文档嵌入在另一个HTML中显示。最大区别是网页中嵌入 iframe 包含的内容与整个页面是一个整体,而 frame 包含的内容是独立的个体,是可以独立显示的。

另外,iframe 还可以在页面中多次显示同一内容,而不必重复这段内容的代码。

5、 iframe 可以放到表格里面。frame 则不行。

    <table> 
       <tr> 
        <td><iframe id="" src=""></iframe></td><td></td> 
       </tr> 
    </table> 

6、iframe 是活动帧, 而 frame 是非活动帧

iframe 用起来更灵活,不需要frame那么多讲究,而且放的位置也可以自己设。

iframe 是内嵌的,比较灵活,不过也有不好的地方,就是位置在不同的浏览器和分辨率下有可能不同,有时会把本来好好的页面搞得变形。

iframe 是一个网页中的子框架,两网页间是父子关系,

iframe 是一个浮动的框架,就是在你的页面里再加上一个页面。

frame 用来把页面横着或竖着切开,iframe 用来在页面中插入一个矩形的小窗口。

frame 是把网页分成多个页面的页面。它要有一个框架集页面 frameset。

转自: <iframe><frame> 区别 - ~永无止境~ - cnblogs

mysql 删除数据库中的所有的表

前言

在现实中经常碰到数据库版本改动过大,然后需要重新导一遍数据库和数据库中的数据情况。当然你可以直接把原来的数据库直接删除,重新创建一个新的,再导入数据。或者在导出表结构和数据的时候,同时插入 drop 语句。但如今只讨论不想删除原来数据库但是想要删除其中的所有的表的情况

解决方案

网上找了一个 sql,通过查询 information_schma 表,获取对应数据库的表名信息,然后用 concat() 拼接 drop 语句。最后将其查询结果复制出来,再执行一下就删掉了。

以下是查询 sql:

SELECT concat('DROP TABLE IF EXISTS ', table_name, ';') as sentence
FROM information_schema.tables
WHERE table_schema = 'your_database_name';

jquery 动态创建 form 并提交

有这样特别的需求,不需要使用 ajax,页面上也不存在这样的 form 表单,最好的方式就是通过 js 或者 jQuery 进行动态创建。

找到如下样例:

$(document).ready(function(){
    $("a.delete").click(function(event){
        action = this.getAttribute("action")
        form = $("<form></form>")
        form.attr('action',action)
        form.attr('method','post')
        input1 = $("<input type='hidden' name='input1' />")
        input1.attr('value','input1 value')
        input2 = $("<input type='text' name='textinput' value='text input' />")
        form.append(input1)
        form.append(input2)
        form.appendTo("body")
        form.css('display','none')
        form.submit()
    })
})

jquery $().each和$.each() 遍历

$().each

$().each 在 dom 处理上面用的较多。如果页面有多个 inpu 标签类型为 checkbox,对于这时用 $().each 来处理多个
checkbook,例如:

$("input[name='ch]").each(function(i){
    if($(this).attr("checked")==true)
    {
    //一些操作代码
    }
}
//回调函数是可以传递参数,i就为遍历的索引。

$.each()

遍历一个数组通常用$.each()来处理 例如:

$.each([{name:"JasonLi",email:"1207543053@qq.com"},{name:"hehe",email:"jasonli@seasidecrab,com"}],function(i,n)
{
    alert("索引:"+i+"对应值为:"+n.name);
});
//参数i为遍历索引值,n为当前的遍历对象.

实现原理

其实jQuery里的each方法是通过js里的call方法来实现的。

call 调用一个对象的一个方法,以另一个对象替换当前对象。”网上更多的解释是变换上下文环境,也有说是改变上下文this指针

经典案例:

function add(a,b){
alert(a+b);}

function sub(a,b){
alert(a-b);}

add.call(sub,3,1);

jQuery each 源码

each: function( obj, callback ) {
        var length, i = 0;

        if ( isArrayLike( obj ) ) {
            length = obj.length;
            for ( ; i < length; i++ ) {
                if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
                    break;
                }
            }
        } else {
            for ( i in obj ) {
                if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
                    break;
                }
            }
        }

        return obj;
    }