MySql文件切割工具

最近在对一个Mysql服务器数据进行数据备份后,发现利用mysqldump备份的sql文件体积过大,导入到其它服务器上的时候很容易出现错误。就想到把sql文件切割成一个个的小文件。网上找了一写工具,发现并不好用,最典型的是把sql文件的结构和内容分开,由于我这个mysql服务器备份的sql文件包涵的数据库并不是一个,所以出现了最终被切割的内容不知道导入到那个数据库。根据这种这种情况,自己开发了一个简单的sql切割的工具,主要功能是按照sql文件中数据库的多少,把sql文件切割成相应的文件,下面是下载的链接
SQL文件切割工具V1.0.0 Beta

…阅读更多>>

Python和Javascript的闭包比较

同为脚本语言,python和Javascript具有相似的变量作用域,不像php,函数的内部的所有变量和外部都是隔绝的,也就是说,函数要想处理其外部的数据,必须使用参数把需要处理的数据传递进来(使用global关键词这里不讨论),而python和Javascript不同,如果在函数声明变量,它会逐级网上查找,直到返回着个值或者未定义。
那么这样说,python的闭包应该很简单了,像javascript一样,我们编写类似的代码:

def func1():
        a = 1
        def func2():
                a = a + 1
                return a
        return func2
re=func1()
print re()
print re()

…阅读更多>>

Python中用socket发送HTTP请求,数据接收不完整的问题

由于工作的需求,需要用python做一个类似网络爬虫的采集器。虽然Python的urllib模块提供更加方便简洁操作,但是涉及到一些底层的需求,如手动设定User-Agent,Referer等,所以选择了直接用socket进行设计。当然,这样的话,需要对HTTP协议比较熟悉,HTTP协议这里就不做讲解了。整个python的代码如下:

#!/usr/bin env python
import socket
host="www.baidu.com"
se=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
se.connect((host,80))
se.send("GET / HTTP/1.1\n")
se.send("Accept:text/html,application/xhtml+xml,*/*;q=0.8\n")
#se.send("Accept-Encoding:gzip,deflate,sdch\n")
se.send("Accept-Language:zh-CN,zh;q=0.8,en;q=0.6\n")
se.send("Cache-Control:max-age=0\n")
se.send("Connection:keep-alive\n")
se.send("Host:"+host+"\r\n")
se.send("Referer:http://www.baidu.com/\n")
se.send("user-agent: Googlebot\n\n")
print se.recv(1024)

…阅读更多>>

python中os.path.isfile()和os.path.isdir()均返回false的问题

今天在写一个linux下自动备份指定目录下的所有目录的脚本时,遇到了一个问题,由于我是需要备份目录,所以,需要判断扫描的文件是否为目录,当我用os.path.isdir()来判断的时候,发现所有文件均返回false,刚开始以为是系统兼容性问题,进一步测试,发现用os.path.isfile(),这些文件还是返回false,这肯定就是程序写的有问题了,代码如下:

#!/usr/bin/env python
# a python script to auto backup a directory's file by Hito
import os
Directory=raw_input("Please enter directory you want to backup:")   
dirs=os.listdir(Directory)
for filename in dirs:
    if os.path.isdir(filename):
        os.system("tar czvf "+filename+".tar.gz "+filename)

…阅读更多>>

PHP和Javascript的观察者模式对比

观察者模式(有时又被称为发布/订阅模式)是软件设计模式的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。—-维基百科

概念的东西本身就不好理解,我试图通过现实中的例子来说清楚这个观察者模式。我们知道,世界上最伟大的爱,莫过于母爱,母亲关心你的一切,你吃饱了吗,穿暖了吗,找到女朋友了吗…如果把天下的母亲归为一类,儿女归为一类,我们知道母亲是时刻关注着儿女的变化的,从观察者模式的角度来讲,母亲是观察者,观察着儿女们的一举一动,一切需求,儿女就是被观察者,他们的一切需求母亲都可以获知。那么,我们来做这样一个例子:

…阅读更多>>

Javascript中for循环为多个对象添加事件的问题

前一段时间在编写一个JS代码时遇到了这样的问题,在同一个父元素下有很多相同的li元素,我需要遍历这些元素,并给每个li元素都添加一个click时间,以显示当前li元素所在父元素的顺序。代码是这样的:

<ul>
<li>0</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<script>
var list=document.getElementsByTagName("li");
for (var i=0;i<list.length;i++){
    list[i].onclick=function(){alert(i)};
}
</script>

执行结果比较有意思,当我点击不同的li的时候,每次弹窗出来都是6!
这里就有两个问题,第一个问题是为什么最终的效果不是点击哪个,弹出相应的数字?第二个问题是,弹出的数字为什么是6,而不是5或者其它的数字呢?

...阅读更多>>