摘要: 关于如何建立索引,及哪些情况适合使用索引,哪些情况不适合使用索引,各种书籍资料有很多。但是最重要的原则是:实际测试。实践是检验真理的唯一标准。建立索引的时候,应进行如下测试:1 explain select语句,看看是否有使用到索引。2 运行update和insert操作,看看建立索引的负效应是否在可接受范围。3 务必在接近生产环境的数据规模下进行索引性能的测试。第三点尤为重要。因为在最近的项目优... 阅读全文
posted @ 2009-08-26 23:20 rethink 阅读(543) 评论(0) 推荐(0) 编辑
摘要: 说明:以下是在读小骆驼书《Perl 语言入门》第十二章 目录操作 中“链接与文件”一节(P189-193)中的读书笔记。 目录是一种由系统管理的特殊文件,它基本上是一份列表。每份文件都会存储在一个编好号的inode里,我们可以把它想象成磁盘上的门牌号码。ls -l命令,硬链接的数量会显示在权限标记的右边。每个目录都会有 . 这个项目,它会指回目录本身的inode。所以任何目... 阅读全文
posted @ 2009-08-26 23:16 rethink 阅读(419) 评论(0) 推荐(0) 编辑
摘要: 检查apache的error log和mysql slow query log,可以及时的发现问题。但在开发和运营的过程中,如果没有意识到有错误发生,我们往往不会主动的查看log的习惯,而且每天查看log也不现实。但是不明显的错误不表示没有错误,潜在的问题往往是最严重的问题。因此写个log监控程序很有必要。#!/bin/shADDRESS='email1@domain.com email2@dom... 阅读全文
posted @ 2009-08-26 23:14 rethink 阅读(498) 评论(0) 推荐(0) 编辑
摘要: 在目前的项目中,因为涉及到一些较复杂的统计功能,我在某个表中添加了三个字段:nums1,nums2,nums3这三个字段分别为table1,table2,table3中相关的有效记录行数。添加这三个字段的原因如下:原因1: 在页面显示中,如果没有这三个字段,单纯靠sql来生成显示列表的话,需要关联三个表,这三个表都是记录较多的表,关联起来效率很低。原因2: 在网站的前台,有了这三个字段,可以减少对... 阅读全文
posted @ 2009-08-26 23:09 rethink 阅读(306) 评论(0) 推荐(0) 编辑
摘要: “PHP程序员,特别是从php4,甚至是PHP3中成长起来的程序员,很多都不习惯使用抛出异常这种错误处理方式。虽然php5引入了异常处理机制,但是很多php程序员还是没有真正的掌握并使用它。网站完全开放的特性,决定了网站比任何传统软件都更希望做到“系统看起来永远都是能够正常工作的”,所以采用正确的程序错误处理方式尤为重要。理论上来说,如果设计足够完美,开发人员足... 阅读全文
posted @ 2009-08-26 23:05 rethink 阅读(377) 评论(0) 推荐(1) 编辑
摘要: 由于web程序和一般的软件开发不同,自动化测试的效率和必要性一直较低,因此人工测试一直是web项目的最主要测试手段。但这并不表示web项目就不需要进行自动化测试。对于web项目而言,自动化测试可以分为单元测试和功能测试。功能测试主要针对具体页面进行测试,个人觉得意义不大,因为既然是针对具体页面进行测试,采用人工测试的方式更为直接,高效,且灵活。当然如果针对某些页面进行的压力测试还是很有必要的。因此... 阅读全文
posted @ 2009-08-26 23:03 rethink 阅读(796) 评论(1) 推荐(0) 编辑
摘要: 在项目初期,项目组长一般都会建立TOP RISK LIST(风险清单),随着项目的推进,有些风险已经避免,或者发生转移,也有可能遇到新的风险。较悲观的情况是,你意识到了风险在哪儿,且传达了足够的风险警告,但由于开发人员水平的限制,或者没有考虑到所有可能的情况,最终问题还是如期而至了。在最近的项目中,就发生了类似的情况。最后决定在问题代码块,引入“风险控制”机制。基本的策略是... 阅读全文
posted @ 2009-08-26 22:58 rethink 阅读(304) 评论(0) 推荐(0) 编辑
摘要: PHP中,如果需要获取远程数据,经常使用fsockopen,或者PEAR的HTTP_REQUEST扩展。一般情况下不会有问题,但是如果程序中含有session_start()的话,会产生微妙的影响,比如无法取得远程服务器的503错误。对应的办法是在程序使用完$_SESSION之后,增加session_write_close()即可。原因未深入调查。 阅读全文
posted @ 2009-08-26 22:49 rethink 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 有不少web项目经理同时兼任架构师的角色,包括我。一般而言,我们指的架构,多指技术上的架构,硬件上的架构。最近在豆瓣上看书评时,看到一个概念:web项目,从不同的角度,可以分为三种架构:业务架构,信息架构,技术架构。业务架构以赚钱为中心,信息架构以用户为中心,技术架构以稳定为中心。架构的目标,是要建立一个坚实的、经得起时间考验的体系。过度强调哪一方,都会不同程度的对整体造成影响。最近做项目总结的时... 阅读全文
posted @ 2009-08-26 22:48 rethink 阅读(899) 评论(6) 推荐(1) 编辑
摘要: 决定从CSDN搬到博客园了。希望是最后一次搬家。也希望在这边能和更多的朋友交流。更希望博客园不会像csdn的blog系统一样让我失望。 阅读全文
posted @ 2009-08-26 22:30 rethink 阅读(124) 评论(2) 推荐(0) 编辑