代码改变世界

随笔档案-2011年07月

MySQL索引背后的数据结构及算法原理

2011-07-10 23:40 by T2噬菌体, 94907 阅读, 收藏, 编辑
摘要: 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为四个部分。第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。第二部分结合MySQL数据库中MyISAM和InnoDB数据存储引擎中索引的架构实现讨论聚集索引、非聚集索引及覆盖索引等话题。第三部分根据上面的理论基础,讨论MySQL中高性能使用索引的策略。 阅读全文

在SeaJS中实现html模板文件的加载(Temod介绍)

2011-07-01 15:58 by T2噬菌体, 16881 阅读, 收藏, 编辑
摘要: 在几天前的一篇文章中,我介绍了JavaScript的模块化加载框架SeaJS。目前SeaJS支持js和css的模块化加载。在实际应用中,可能会遇到需要加载html页面模板文件的场景,例如我接触的某些应用使用Template Toolkit(以下简称TT)写页面模板,然后由js载入TT模板后渲染输出,在这种纯JavaScript渲染的Web架构中,需要将tt文件(或其它格式html模板文件)作为模块载入。由于JavaScript不支持类似于php heredoc那样的长字符串写法,所以手工做这种转换会比较纠结,而且还要处理特殊字符转义、html压缩等繁琐事情,当模板文件比较多时全手工实现费时费力还容易出错。所以我写了一个小工具temod,temod可以将html或tt等页面模板文件编译成符合CommonJS规范的module,这样任何实现了CommonJS规范的模块加载框架(如SeaJS)就可以将编译好的文件作为普通模板加载进来。 阅读全文
点击右上角即可分享
微信分享提示