MySQL性能优化的最佳20+条经验
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。
目录
1. 为查询缓存优化你的查询
2. EXPLAIN 你的 SELECT 查询
3. 当只要一行数据时使用 LIMIT 1
4. 为搜索字段建索引
5. 在Join表的时候使用相当类型的例,并将其索引
6. 千万不要 ORDER BY RAND()
7. 避免 SELECT *
8. 永远为每张表设置一个ID
9. 使用 ENUM 而不是 VARCHAR
10. 从 PROCEDURE ANALYSE() 取得建议
11. 尽可能的使用 NOT NULL
12. Prepared Statements
...
编程语言汽车
以前酷壳发布过《操作系统航空公司》戏谑了一下如果操作系统是航空公司会怎么样的一种情况。现在,我们来YY一下编程语言,如果编程语言是汽车,又会怎么样?
Ada 这是一辆坦克。一个很厚重但很丑的坦克,从不会崩溃。如果你告诉别人你正在驾驶Ada,别人会狂笑不已。但是,你会开着一辆跑车去打战吗?[from Amit Dubey]
汇编语言 只是一个祼露在外的引擎。你不得不自己去造车,并向其提供汽油,但你在驾车时要小心,因为他会像一只从地狱放出来的蝙蝠一样。其实,对于汇编语言,你自己才是车。[From “Subterfug” off digg.com:]
Basic 是一辆很简单的车,对于一些短途的交通比如去一些超市商店,他是很有用的。以前这是一个对初学者很流行的车,然而,近来它蜕变成脚本,而更新的车型被抛光以应对长途旅程,但那也只是新瓶装旧酒。[from Przemyslaw Wrzos]
C 是一辆赛车,它的速度是令人难以想象的快,可惜的是它每50公里就会损毁一次。
Cobol &nb ...
Eclipse 和 Vim
以前,neo和发布过如何在vim中得到你最喜爱的IDE特性,这是一篇在vim中装一些插件而让Vim拥有IDE的功能,比如代码自动提示等功能。当然,目前,可能强大最好用的IDE就是Eclipse和,而最强大的编辑器又是Vim了,可不可以让这两个东西合二为一呢。没有问题,开源社区的创造力永远不会让你低估。
在Vim中拥有Eclipse的功能,在Eclipse里有Vim的功能,那么eclim是你的选择了。http://eclim.org/ 相关的中文文档。使用eclim,你可以在vim中有Eclipse的功能,也可以在Eclipse中嵌入Vim编辑器。很酷。
还有一个工具是Vrapper,这个工具是在Eclipse中使用Vim,你只需要在Eclipse的工具栏上点一下那个gvim的按钮就可以了。
http://vrapper.sourceforge.net/home/
(全文完)
IE6/IE7 0day 漏洞
昨天(2009年11月21日),Symantec发布了IE的一个0day安全漏洞的消息。关于这个消息,截止本文发布时,在中文社区里还没有报导。这是一个关于IE6/IE7处理CSS时的一个漏洞(关于IE和CSS的BUG)。如果你目前还在使用IE6/IE7,那你现在可能是你升级的时候了,当然,有很多人说IE8是没有问题的,但我个人还是建议在补丁出来之前先使用Firefox或Chrome。
根据Symantec的的报告,他们在第一时间内测试了那个“Exploit Code”(攻击代码),根据测试结果表时,那个JavaScript的攻击代码并不是100%的可靠,而且很不可靠,但安全专家相信,100%完全可靠的“攻击代码”将会马上出现。这意味着,这段攻击代码会马上如潮水一样地放在各个有恶意的网站上,然后,所有的IE6/IE7的,打开JavaScript的用户都会被危及。
目前,这段攻击代码,虽然很不可靠,但已经被证明在IE6/IE7的 Windows XP SP3上是可靠的,目前还没有相关报告说明有多少台电脑中招了,但我相信,在过去的这个周末,一定有一些人在拼命地在改善这段攻击代码, ...
正则表达式生成器
对正则表达式很头疼,是不是?每次看到都觉得像看天书似的,别说让人自己整一个出来了。下面这个网站可以帮你生成正则表达式,而且还可以根据不同的语言生成不同的代码示例,很强大。
http://www.txt2re.com/index.php3
打开上面那个网页,你会看到有三步。
第一步,输出你想匹配的一个文本示例,然后点“Show Machted”,于是进入第二点。
第二步,当你看到那花花绿绿的界面是不要头大(那个配色也太可怕了),那是这个会把你的这个字串每个字符都拆出来,并把单词分隔。于是,你可以点击那些花绿格子间的链接来组织你的正规表达式。,比如:c表示任意字符,还有什么int,day,string之流的东西。(相当ugly的界面)在这一步,你一点要点点什么,不然不会进入第三步。
第三步,选择一个编程语言,然后你可以看到相关的代码示例。语言支持:Perl PHP Python Java Javascript ColdFusion C&nbs ...
几个有趣的404错误页面
Windows的经典蓝屏http://www.nerdiphythesoul.com/404.htmlhttp://huml.org/404.shtml
IE经典的404错误(但却又不一样)http://www.homestarrunner.com/systemisdown.html
出错的时候不忘让你学习学习HTTP的返回码http://www.notonebit.com/s
漫画式的出错(这样的方法可能会很多)http://www.homestarrunner.com/thisisntgoingtowork
废话!当然是文件找不到!http://www.itchyrobot.com/404
ASCII码拼成的404http://10e.org/404.htmlhttp://www.zhangshuodesign.com/404.html
出错了,那就玩个游戏吧http://atomicbombshell.com/error-page/http://www.loadeddice.co.uk/errors/404.phphttp://s8.hk/error/page404.html ...
C语言和sh脚本的杂交代码
在网上看到了一个把 C语言和bash杂并起来的例子,这个示子如下所示。在下面这个例子中,我们把脚本用#if 0这个预编译给起来,这样就不会让其编译到C语言中了。
#if 0
echo "Hello from bash!"
exit
#endif
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
puts("Hello from C!");
return EXIT_SUCCESS;
}
下面,让我看看如果来使用这样的程序:
$ sh test.sh.c
Hello from bash!
$ gcc test.sh.c -o test
$ ./test
Hello from C!
你甚至还可以做一个自我编译,并自我运行的源代码。如下所示:
#if 0
file=`mktemp`
gcc -o $file $0
$file
rm $file
exit
#endif
#include <stdlib.h>
#include <std ...
9个最常见IE的Bug及其fix
Internet Explorer – Web程序员的毒药。在IE上开发时间中有超过60%的时间是花在和IE的bug进行搏斗,让你的开发生产率严重下降。下面是一个教程,告诉你9个IE上最常见的BUG以及如何解决它们。
目录
1. 居中布局
2. 楼梯式的效果
3. float元件的两倍空白
4. 无法设置微型高度
5. 跨出边界
6. Fixing the Broken Box Model
7. 设置min-height和min-width
8. Float 布局错误行为 Misbehaving
9. 在list项目门的空行
结论
1. 居中布局
创建一个CSS定义把一个元素放到中间的位置,可能是每一个Web开发人员都会做的事情。最简单的做法是为你的元素增加一个margin: auto; ,然而 IE 6.0 会出现很多奇怪的行为。让我们来看一个例子。
#container{
border: solid 1px #000;
background: #777;
width: 400 ...
在上班的时候浏览不相干网页
相信大家在上班的时候都要去浏览很多与工作无关的网页,但总是害怕被同事尤其是老板看到,所以,你总是会有个“老板键”什么的。当有人从你身边经过的时候,你会很快速地切换你的桌面屏幕,让人看到你还在干与工作有关的事情了。
现在,一个具有创意的天才解决方案出来了——为什么不把这些与工作无关的网站的样子都变成和工作相关呢?这里有一个示例,真让人拍案叫绝。不知道大家知不知道一个叫http://www.fmylife.com/的网站?这个网站上都是一些“令人难堪”的小笑话,很多是荤的笑话,而有另一个网站是:http://fml.madsravn.dk/——这个网站就是fmylife的翻版,唯一不同的是,它把fmylife.com伪装成了一个Java 2 Platform SE v1.42的技术文档(请注意这个文档中的函数解释的内容),于是你就可以在上班的时候大胆地浏览fmylife.com上的内容了,因为那看起来就像在看Java的API文档。呵呵。
超强:Unix道德经(英文版)
主页:http://mercury.ccil.org/~cowan/upc/
这是一个人主页,博主说,这是一个“黑客式”版本的 Dao De Ching (字面理解是”way power classic”,道路权力名著).他并对中文其实并不懂。他只是为Jonathan Star的 逐字翻译 而工作,其使用了在线的中文一个词典 zhongwen.com对《道德经》一字一字地翻译。
他对《道德经》并不是很懂,除了知道那是中文,而且知道这是一个相当老的,而且,2500年前的那些是非常喜欢的一个作品,正如 Ursula K. LeGuin 在 她的版本中所说的一样。作者说《道德经》是对道德,政治和宗教信仰做了很多的解释。到了今天,还有人在读这本书,说明了这本书的不朽,美妙和意味深长。
下面是《道德经》的 81 个章节 ,作者并没有完全写完(或者说是hack完),你可以点击链接查看其中的内容。
01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18
19 20 21 22 23 24 25 26 2728 29 30 31 32 3 ...
程序语言性能比拼
下面这个网页,你可以比较各种程序语言的性能:
http://shootout.alioth.debian.org/u64/index.php
这个页面,安装的是x64 Ubuntu,CPU是Intel® Q6600® 单核。这个网页支持的语言很多,什么C,C++,Java,python,PHP,Erlang,C#,Ruby,……,还有最新的G0语言。
在主页上,你可以选择一个语言。比如,我们选择Google的Go语言——Go 6g8g,然后,点击Show按钮,于是,你会看到下面这个界面:
在这个界面上方,你可以选择两种语言,我们选择的是,上面的是Go 6g8g,而下面是的GNU C,于是下面的图表,是这两个语言各种参数和算法的比较图表。
在这个图表中,其实就是“Go的性能” 除以 “C的性能”,所以,
如果柱状图是大于1的(也就是基线以上的)则说明Go的性能不如C。
如果柱状图小于1的(也就是基线以下的),说明Go的性能超过了C。
再往下,是用来做比较的算法的图表,如下所示。在这个表中,我们可以看到很多算法 ...
Go语言更名Issue 9?
Go语言出了一个Issue,这个Issue的链接在这里:http://code.google.com/p/go/issues/detail?id=9 ,这个Issue的编号是9描述是:
I have already used the name for *MY* programming language
意思是,已经有人使用了这go作为其语言的命名了。报告者叫fmccabe,他说到:
我已经从事于我的一个编程语言,而且都10年了。并且都有很多论文发表了。我非常感激你们Google如果把这个名字修改一下,因为我是不会修改我的语言的名字的!
于是,开始了回贴:
1楼跟贴说,“给个链接看看”
fmccabe在2楼说:“我出版了本书在lulu.com上”。
3楼的说,“是的,你的语言叫“Go!”,你的书在:http://www.lulu.com/content/paperback-book/lets-go/641689”
4楼说:“三楼你是对的,LZ的语言是‘Let’s Go!’或‘Go!’,Google的叫‘go’,根本就不同啊。”
LZ不同意在5楼说:“是的,我的语 ...
Go语言源码的一个改动
2009年11月11日,光棍节,Google发布了Go语言,马上,就有网友在http://code.google.com/p/go/上找到了一个Go语言包文件操作源码/src/pkg/os/file.go文件的一个最新改动。这个改动的作者就是那个大名鼎鼎的Unix之父Ken Thompson(看看人家,都这么老了,还在写程序,佩服佩服,真是顶级程序员啊——《程序员的八个级别》),而这个改动的Log Message如下所示(把屏抓下来,以免以后某日被放到墙外或是google.com数据丢失或是Google公司倒闭)
Spell it with an “e”
这是一个很著名的典故,要知道这个典故,你需要知道两件事,一个是Ken Thompson的经典语录,一个是Unix的系统调用。
关于Ken Thompson的经典语录,你可以在wikipdia上的Ken Thompson词条中找到,这个事情是这样的。
Ken Thompson was once asked what he would do differently if he were redesigning the ...
Go 语言:Google 的新编程语言
Google 今天发布了自制的编程语言,叫做Go,官方网站如下:
http://golang.org/
主要参与者名单繁星满天:
Ken Thompson (Unix之父之一…好拗口)
Rob Pike (Unix团队成员, 著书《 The Practice of Programming 》and《 The Unix Programming Environment》)
等等
Logo图标 (一只 Gopher, 金花鼠,作者 Renée French)
为什么Google要做自己的编程语言呢?
快,安全,处理并发 (其余的讲义在此)
似乎Google内部官方编程语言之战在即… C, C++, Java, Python, JavaScript, and now Go and Zimbu(by VIM 的作者)
Go programming language Tech Talk
恐怖的C++语言
Linus曾经(2007年9月)在新闻组gmane.comp.version-control.git里和一个微软的工程师(Dmitry Kakurin)争执过用C还是用C++,当时的那个微软的工程师主要是在做Git的Windows版,但他却发现Git的源码居然是C语言写的,而不是C++,于是他(Dmitry Kakurin)在Linux社区里发贴表示对Linux的不满,语言很直接:
Pure C as opposed to C++. No idea why. Please don’t talk about portability, it’s BS. (纯C写的,而不是C++,不知道为什么,请别告诉我是为了移植性,这完全是胡扯。)
Linux之父Linus Torvalds马上跟贴,在贴子中,Linus言辞很直接,直接表明C++是一个很恐怖的语言,他在贴子中说:
*YOU* are full of bullshit. C++ is a horrible language. It’s made more horrible by the fact that a lot of s ...
Firefox插件WebMail Notifier
当你的邮箱有新邮件时,WebMail Notifier此插件会自动提醒你。
支持:gmail, yahoo, hotmail, daum, naver, empas, nate等。
版本
1.5.3
兼容版本
Firefox: 1.5 – 3.7a1pre
已更新
2009 年 10 月 8 日
开发者
Byungwook Kang
主页
http://webmailnotifier.mozdev.org/
评分
评分 4 超过了 5 星 728 条意见
下载次数
3,239,874
查看:https://addons.mozilla.org/zh-CN/firefox/addon/4490
橡皮鸭程序调试法
下面,让我来为你介绍一个程序调试大法——“橡皮鸭程序调试法”,这个方法在调试界是很出众的,实施起来相当方便和简易,几乎可以随时随地地实验,几乎不需要借助任何的软件和硬件的支持,你甚至可以把你的程序打印出来,在纸面上进行调试。
那么,为什么这个方法要叫做橡皮鸭呢?因为橡皮鸭子是西方人在泡澡时最喜欢玩的一个小玩具,所以,这个东西应该家家户户都必备的。因为,这个方法由西方人发明,所以,就被取名为“橡皮鸭”了。
好了,话不多说,下面是整个调试方法的流程。
找一个橡皮鸭子。你可以去借,去偷,去抢,去买,自己制作……反正你要搞到一个橡皮鸭子。
把这个橡皮鸭子放在你跟前。标准做法是放在你的桌子上,电脑显示器边,或是键盘边,反正是你的跟前,面朝你。
然后,打开你的源代码。不管是电脑里的还是打印出来的。
对着那只橡皮鸭子,把你写下的所有代码,一行一行地,精心地,向这只橡皮鸭子解释清楚。记住,这是解释,你需要解释出你的想法,思路,观点。不然,那只能算是表述,而不是解释。
当你在向这只始终保持沉默的橡皮鸭子解释的过程中,你会发现你的想法,观点,或思路和实际的代码相偏离了,于是你也就找到了代码中 ...
别的程序员是怎么读你的简历的
下面这个图片来源国外,是一个关于程序员面试时的简历,被人事部门和程序员本身评审的角度不同的图片。当然,这是一个从国外面试的视角制作的图片,不过,可以看出,其中很多东西都是和国内是相同的。让我们通过这个图片也来了解一下自身吧。
下面是我对其做的翻译,翻译水平有限,请大家指正。
人事部门是这样阅读简历的
(+15分)如果简历中说到了和工作职位相符的技能超过5次以上。
(+8分)如果简历中说到了和工作职位相符的技能3次到5次。
(+4分)如果简历中说到了和工作职位相符的技能1次到2次。
(+4分)Cover Letter(“求职信”或“自荐信”)提到了招聘人员。
(+2分)简历中有Cover Letter(求职信)。
(-10分)没有提到和职位描述相关的技能。
(-15分)没有受过大专教育。
程序员是这样阅读简历的
(+15分)曾经因为好玩而写过操作系统或编译器。
(+12分)简历被LaTeX编译过。
(+11分)为开源软件贡献过代码。
(+9分)上学的时候曾经写过操作系统或编译器。
(+8分)有一个BLOG分享技术知识。
(+8分)编程/机器人/工程俱 ...
给我一个序列号
下面这个链接是CodeSmith官网网站论坛上的一个贴子。http://community.codesmithtools.com/forums/p/10000/37140.aspx。在这个贴子里,某位大哥问CodeSmith要一个序列号,一个叫Blake Niemyjski的人,可能是CodeSmith这家公司的客服人说回答到,如果要序列号,需要找他们的销售人员。
而这位老哥却说,“我要的是一个被破解的序列号,我手上有很多CodeSmith 5.0版的序列号,都可以使用,而你们把软件升级到了5.1,那些序列号都无法使用了”。客服人员无奈下,只得给出了下面的序列号:
CS50P-0NLY4-1D10T-W0ULD-TRYT0-45KU5-TH15Q
当然,这个序列号并不行,而老哥没有发现这序列号中的端倪,继续问,后面,很多“热心网友”们都来帮忙,给了一些如下的序列号:
BL4K3-WH47K-1ND0F-700LI-57H1S-1DI07-4NYWY
W3LLH-4S7H3-P3NNY-DR0PP-3D4UY-37U45-5WIP3
UKINT-RYTH1-51FUH-AVAV ...
把ASCII图转成图片
我们都知道有很多软件帮我们把图片转成ASCII码图,这里这个工具是帮我们把ASCII图转成漂亮的图片。这个开源的软件是一个用Java写成的一个命令行的工具。对于这个工具的目的,我个人以为如下:
其一,可以把别人的ASCII图转成图片,于是更好看一些。
其二,你可以使用ASCII码画图,而不需要使用图片编辑器。
其三,因为是命令行,所以,你完全可以以脚本或程序的方法来作图了。
这个工具软件叫ditaa,其网址是:http://ditaa.sourceforge.net/。
这个小工具支持一些语法定义,可以帮你更好地产生图片,如下所示:
圆角矩形
/--+
| |
+--/
定义颜色
Color codes
/-------------+-------------\
|cRED RED |cBLU BLU |
+-------------+-------------+
|cGRE GRE |cPNK PNK |
+-------------+---------- ...