- 浏览: 506920 次
- 性别:
- 来自: 大连->北京
最新评论
-
春天好:
写的很不错 推荐一个免费好用的云端爬虫开发平台不需要安装环境, ...
web爬虫 -
cpu88:
网络爬虫爬来爬去,网上信息可以瞬间扩散,但是也意味着,没有人愿 ...
web爬虫 -
biaoming:
牛。。学习了。。
MongoDB 关于索引的建议 -
biaoming:
楼主用mongo好早啊。
MongoDB 优化 -
biaoming:
好教程,学习了。。。
MongoDB 优化
文章列表
经常需要把几个字符串进行连接。
1.使用join方法。
largeString = ''.join(pieces)
2.用格式化字符串的方法。
largeString = '%s%s something %s yet more' % (small1, small2, small3)
一般来说,字符串处理都需要空格
有三个方法处理来处理字符串,lstrip,rstrip,strip。
x = ' hej '
print '|', x.lstrip( ), '|', x.rstrip( ), '|', x.strip( ), '|'
| hej | hej | hej |
编程中经常需要对齐字符串:left,right,center
print '|', 'hej'.ljust(20), '|', 'hej'.rjust(20), '|', 'hej'.center(20), '|'
| hej | hej | hej |
要判断一个对象是否是字符串可以使用如下方法
def isAsString(anobj)
return isinstance(anobj,basestring)
字符和ASCII或Unicode码的转换
1.可以使用ord和chr内置函数
print ord('a')
97
print chr(97)
a
2.ord也支持Unicode码。反之使用unichr
print ord(u'\u2020')
8224
print repr(unichr(8224))
u'\u2020'
1.把字符串转为list
str="fengxuelianyi"
strList=list(str)
2.不需要创建list,可以直接使用for循环
for c in thestring:
do_something_with(c)
3.也可以使用for子句
results = [do_something_with(c) for c in thestring]
4.也可以使用map函数
results = map(do_something, thestring)
在语句生命周期的下一步就是把一个SQL查询放入一个可执行的计划中。这个步骤有许多子步骤:解析,预处理并且优化。在这个过程中任意一点抛出错误(比如语法错误)。在这我们不会列出MySQL内部机制。因此我们可以更自由的说一些别的,如单独的描述其中的一些步骤,虽然它们可能有效地全部或者部分的组合在一起。我们的目标就是帮助你理解MySQL执行语句的过程,这样能写出更好的语句。
解析和预处理
开始MySQL解析器会把一个语句分成一些token,并创建一个“解析树”。解析器使用MySQL语法来解释和校验这个语句。它必须确保这些token有效并且顺序正确,还有它会检查一些如字符串双引号没有结束的 ...
在解析一个查询之前,如果缓存开启,MySQL要检查它的缓存。这个操作是一个区分大小写的hash查找。在缓存中,如果两个相似的查询哪怕是一个单字节不一样,也不回匹配,并且这个查询就会到下一个阶段。
如果MySQL在查询缓存中找到一个匹配,在返回已经缓存的查询语句之前,必须要校验权限。因为MySQL已经存储了已缓存语句表的信息。所以这一步是可行的,就不需要解析查询语句。如果权限OK,MySQL从缓存中获取结果,并且发送给客户端,跳过了其他语句执行的过程了。这个查询语句就不被解析,优化或者执行。
在下一章会详细说到。
- 2009-12-01 09:58
- 浏览 1214
- 评论(0)
MySQL 客户端/服务端 协议
虽然你不必明白MySQL客户端/服务端的协议的细节,但是你必须明白在更高一层它的工作方式。协议是半双工的。意思就是在任意的时间内,MySQL服务端既可以发送或者接受消息,但是不能同时。也意味着 ...
- 2009-12-01 01:25
- 浏览 1957
- 评论(0)
如果你想从MySQL服务器获得很高的性能,建议你花费一定的时间学习MySQL是如何优化的以及语句的执行过程。一旦你理解了这些,大部分语句优化都是从基本概念中得到解决方案,并且语句优化变为一个逻辑过程。
如下的图说明了MySQL执行语句的过程。
下面的就把流程说下
客户端发送一个SQL语句到服务器。
服务器要检查缓存。如果找到缓存,就会从缓存中返回结果。如果没找到,就到下一步。
服务器解析,预处理并且优化SQL到一个语句执行计划中。
语句执行引擎通过调用存储引擎API执行这个语句计划。
服务器发送结果到客户端。
每个步骤都有额外的复杂度,我们会在以后的章节进行介绍。 ...
- 2009-11-30 00:36
- 浏览 1049
- 评论(0)
分解JOIN查询
许多高性能的网站都分解了JOIN查询。你可以用查询多张单独的表的方法来替代多表JOIN查询,并且之后在应用程序执行这个JOIN.举个例子,
mysql> SELECT * FROM tag
-> JOIN tag_post ON tag_post.tag_id=tag.id
-> JOIN post ON tag_post.post_id=post.id
-> WHERE tag.tag='mysql'
你可以使用如下语句替换
mysql> SELECT * FROM tag WHERE tag='mysql';
mys ...
- 2009-11-29 11:54
- 浏览 1864
- 评论(0)
拆分一个查询语句
另一个分解查询的方法是分步解决。本质上来说是相同的,但是不一样的是,运行较小的数据块,这样会影响较少的行。
在没有比删除旧数据更好的例子了。删除旧数据需要删除大量的数据,并且如果用一个大语句那么做的话会导致长时间锁定太多的行,写满了事物日志,独占的资源,并且阻塞了一些语句。拆分这个DELETE语句并且使用数量合适的删除语句可以提高性能,并且当一个语句被复制也会降低复制的延迟。举个例子。。
mysql> DELETE FROM messages WHERE created < DATE_SUB(NOW( ),INTERVAL 3 MONTH) ...
- 2009-11-28 23:17
- 浏览 1530
- 评论(0)
当开始优化有问题的查询语句的时候,你的目标是找到一个合适的方法来得到期望的结果-但是并不是一定要从MySQL返回相同的结果集。有的时候可以把查询语句转换成另一种方式来获得更好的性能。如果那样优化带来了效果的提 ...
- 2009-11-28 01:32
- 浏览 1550
- 评论(0)
之所以叫高级,是因为比普通的选择控件多了一点点功能。。。
好久没有写表现层的东东了。项目经常会用选取时间范围的东东,所以就花了点儿时间写了一个jQuery的插件。。闲话少说 上图。。。
此组件的适用范围如下:
1.日期范围的查询报表。
2.可以作为表单提交。
实际使用截图
现有版本更新为0.3
版本更新信息如下:
0.2v:
1.增加国际化功能 2.增加隐藏表单方便提交 3.修复CSS下拉菜单位置的BUG
03v:
1.增加自定义排序
2.增加日期的选中
3.代码的重构
代码在附件中 下 ...
运算符
运算符对一个或两个值(也可能是变量),进行一个运算并且返回一个值。让我们看看一个使用运算符的例子,主要是为了明白运算符的概念。
>>> 1 + 2
3
上面的代码有四点要说明
+是个运算符
运算符是个加法运算
输入的值为1和2(输入值也可以叫做操作数)
结果是3
在运算中你可以把1,2直接替换为变量。在运算中也可以把结果存放在变量中。例子如下
>>> var a = 1;
>>> var b = 2;
>>> a + 1
2
>> ...
- 2009-10-12 21:41
- 浏览 1380
- 评论(0)