极有意思的网站,比较适合我们这些初学者,当然是对PHP有一些基础的初学者
网站主把常用的一些PHP的函数,用Python实现了一遍(或者是显示Python的自有函数),方便我们查找例子
例如:PHP常用的addslashes函数,用来对特殊字符进行转义,
该网站则显示:
http://www.php2python.com/wiki/function.addslashes/
- def addslashes(s):
- d = {'"':'\\"', "'":"\\'", "\0":"\\\0", "\\":"\\\\"}
- return ''.join(d.get(c, c) for c in s)
-
- s = "John 'Johny' Doe (a.k.a. \"Super Joe\")\\\0"
- print s
- print addslashes(s)
-
-
实现方法虽然有点不一样,但对于我们这些初学者已经了解了很多用法,比如for in,join ,dict的get用法。当然还有定义函数的def方法。
这个网站是什么呢?http://www.php2python.com,黑黑,已经加入我的收藏夹了。感谢小缘缘的推荐
司徒正美在看到老赵的博客鄙视IE6用户时,不甘寂寞,放出了一段残忍的代码,可以对IE6、7进行封杀处理。。
代码如下:
XML/HTML代码
- <!doctype html>
- <html>
- <head>
- <meta charset="utf-8"/>
- <meta content="IE=8" http-equiv="X-UA-Compatible"/>
- <meta name="keywords" content="IE6与IE7封杀器 by 司徒正美" />
- <meta name="description" content="IE6与IE7封杀器 by 司徒正美" />
- <script type="text/javascript">
- //使用setAttribute也行,值好像是固定,为1(读作"日",日得好!)
- document.createElement("li").value = 1;
- </script>
- <title>IE6与IE7封杀器 by 司徒正美</title>
- </head>
- <body>
- <h1>杀!杀!杀!</h1>
- <h2>不行请刷新页面(这是运行框的问题)</h2>
- </body>
- </html>
还有一段是可以关闭当前窗口的:
XML/HTML代码
- window.opener=null;window.open('','_self');window.close();
我的博客不能执行代码,如果你想测试,你可以到http://www.cnblogs.com/rubylouvre/archive/2010/05/18/1738370.html进行享受。
MYSQL中,如果表是MYISAM,除了主键索引外,基本上常用的就是默认的索引,而unique index应该是比较少用到的。外键索引在MYSQL4.0以下直接忽略。
查了一下资料,好象默认索引应该是称之为B*Tree索引
B*Tree索引
- B*Tree索引是最常见的索引结构,默认建立的索引就是这种类型的索引。B*Tree索引在检索高基数数据列(高基数数据列是指该列有很多不同的值)时提供了最好的性能。当取出的行数占总行数比例较小时B-Tree索引比全表检索提供了更有效的方法。但当检查的范围超过表的10%时就不能提高取回数据的性能。B-Tree索引是基于二叉树的,由分支块(branch block)和叶块(leaf block)组成。在树结构中,位于最底层底块被称为叶块,包含每个被索引列的值和行所对应的rowid。在叶节点的上面是分支块,用来导航结构,包含了索引列(关键字)范围和另一索引块的地址,如图26-1所示。
-
- 假设我们要找索引中值为80的行,从索引树的最上层入口开始,定位到大于等于50,然后往左找,找到第2个分支块,定位为75-100,最后再定位到叶块上,找到80所对应的rowid,然后根据rowid去读取数据块获取数据。如果查询条件是范围选择的,比如where column >20 and column <80,那么会先定位到第一个包含20的叶块,然后横向查找其他的叶块,直到找到包含80的块为止,不用每次都从入口进去再重新定位。
平时在MYSQL的查询中,我们也是建议,筛选条件高的、返回结果集比较整齐的,尽量放在条件的第一个,依稀记得WHERE条件中,如果是AND那么是从前往后比较,如果是OR条件,那么是从后往前比较。(记不清了。。。)
刚才又看到文章,说在使用B*Tree索引的时候千万要注意:Btree索引不存储NULL值,而在order by desc中,NULL值总是最大的,sql语句通过索引无法判断表是否存在NULL,执行计划还是走全表扫描[详见:http://rdc.taobao.com/blog/dba/html/67_oracle_fenye.html](当然,这也只是一个参考)
如果是确实这样,那么如果该字段可能会需要用到排序的时候,请尽量不要使用default NULL,而且在处理where的时候,NULL是不会被显示的。除非是条件是is NULL。
刚才测试了一下,设定了某字段允许NULL,然后插入数据,并为该字段做了索引,结果在where fields < 100 的时候,使用了该索引(当然NULL值是不显示的),但我取where fields > 0的时候,扫描方式立刻变为了全表,而且没有使用fields索引(同样不显示含 NULL值的行),where fields > 1 的时候,同样扫描全表。直到我设为fields > 2的时候,又开始使用了索引,看来,MYSQL对于索引字段做查询条件的时候还是需要斟酌的,条件不能随便乱加。
其实在程序中,如果使用INT字段(数值型字段),请尽量不要使用NULL,否则确实有可能会出现值查不到的情况。
然而,在我现在的项目中却有这种情况,要求我们把该字段设为NULL,明天我要再检查一下代码,以防止有漏掉的数据。
不看不知道一看吓一跳呀