• [搜索引擎]Sphinx的介绍和原理探索

    What/Sphinx是什么

    定义:Sphinx是一个全文检索引擎。

    特性:

    • 索引和性能优异
    • 易于集成SQL和XML数据源,并可使用SphinxAPI、SphinxQL或者SphinxSE搜索接口
    • 易于通过分布式搜索进行扩展
    • 高速的索引建立(在当代CPU上,峰值性能可达到10 ~ 15MB/秒)
    • 高性能的搜索 (在1.2G文本,100万条文档上进行搜索,支持高达每秒150~250次查询)

    Why/为什么使用Sphinx

    遇到的使用场景

    遇到一个类似这样的需求:用户可以通过文章标题和文章搜索到一片文章的内容,而文章的标题和文章的内容分别保存在不同的库,而且是跨机房的。

    Read more...
  • FreeCodeCamp学习知识点汇总

    这段时间在FreeCodeCamp这个平台上学习前端知识,上面的练习题都很不错,推荐大家去学习。学习了一段时间,记录下了一些知识点,在这里总结分享。

    arguments数组

    当需要使用arguments数组时,最好的方法就是转换成一个新数组。

    var args = Array.prototype.slice.call(arguments);
    

    修改字符串中的字符

    Read more...
  • 【读书笔记】代码整洁之道

    第一章 整洁代码

    赶上期限的唯一方法:始终尽可能保持代码整洁。

    整洁的代码只做好一件事。

    整本书的主旨,不要重复代码,只做一件事,表达力,小规模抽象。

    要想干得快,要想快点做完,要想轻松写代码,先让代码易读吧。

    让每次签入时,代码都比签出时干净。

    Read more...
  • 在OpenSUSE上编译安装sphinx扩展

    准备工作

    要在PHP中安装sphinx扩展,你必须先安装好sphinx,笔者使用的是中文分词,因此我安装的是coreseek。

    如何安装coreseek请看:http://www.coreseek.cn/products-install/install_on_bsd_linux/

    安装过程

    安装过程:

    1、安装libsphinclient

    Read more...
  • 【性能为王】从PHP源码剖析array_keys和array_unique

    之前在[译]更快的方式实现PHP数组去重这篇文章里讨论了使用array_flip后再调用array_keys函数替换直接调用array_unique函数实现数组去重性能较好。由于原文没有给出源码分析和测试的结果,导致给读者造成迷惑,在此说声抱歉。为了解开读者的疑惑,笔者承诺了会补上源码的分析,于是花了一些时间去研究PHP的源码,现在此补上详细的说明。

    我在github有对PHP源码更详细的注解。感兴趣的可以围观一下,给个star。PHP5.4源码注解。可以通过commit记录查看已添加的注解。

    Read more...
  • [PHP源码阅读笔记]strlen函数

    我在github有对PHP源码更详细的注解。感兴趣的可以围观一下,给个star。PHP5.4源码注解。可以通过commit记录查看已添加的注解。

    strlen函数说明。

    int strlen ( string $string )
    

    这篇文章,我们可以知道strlen函数是通过Zend Engine定义的。函数的定义可以在这里查看。

    在这里也给出函数的源码:

    Read more...
  • 【译】理解数组在PHP内部的实现(给PHP开发者的PHP源码-第四部分)

    原文:https://nikic.github.io/2012/03/28/Understanding-PHPs-internal-array-implementation.html

    欢迎来到”给PHP开发者的PHP源码”系列的第四部分,这一部分我们会谈论PHP数组在内部是如何表示和在代码库里使用的。

    为了防止你错过了之前的文章,以下是链接:

    第一部分:给PHP开发者的PHP源码-源码结构

    第二部分:理解PHP内部函数的定义

    第三部分:PHP的变量实现

    Read more...
  • 【译】PHP的变量实现(给PHP开发者的PHP源码-第三部分)

    原文:http://blog.ircmaxell.com/2012/03/phps-source-code-for-php-developers_21.html

    在”给PHP开发者的PHP源码”系列的第三篇文章,我们打算扩展上一篇文章来帮助理解PHP内部是怎么工作的。在第一篇文章,我们介绍了如何查看PHP的源码,它的代码结构是怎样的以及一些介绍给PHP开发者的C指针基础。第二篇文章介绍了函数。这一次,我们打算深入PHP最有用的结构之一:变量。

    进入ZVAL

    在PHP的核心代码中,变量被称为ZVAL。这个结构之所以那么重要是有原因的,不仅仅是因为PHP使用弱类型而C使用强类型。那么ZVAL是怎么解决这个问题的呢?要回答这个问题,我们需要认真的查看ZVAL类型的定义。要查看这个定义,让我们尝试在lxr页面的定义搜索框里搜索zval。乍一眼看去,我们似乎找不到任何有用的东西。但是有一行typedef在zend.h文件(typedef在C里面是一种定义新的数据类型的方式)。这个也许就是我们要找的东西,再继续查看。原来,这看起来是不相干的。这里并没有任何有用的东西。但为了确认一些,我们来点击_zval_struct这一行。

    struct _zval_struct {
    /* Variable information */
    zvalue_value value; /* value */
    zend_uint refcount__gc;
    zend_uchar type; /* active type */
    zend_uchar is_ref__gc;
    };
    

    Read more...
  • 【译】理解PHP内部函数的定义(给PHP开发者的PHP源码-第二部分)

    原文:https://nikic.github.io/2012/03/16/Understanding-PHPs-internal-function-definitions.html

    欢迎来到”给PHP开发者的PHP源码”系列的第二部分。

    在上一篇中,ircmaxell说明了你可以在哪里找到PHP的源码,它的基本目录结构以及简单地介绍了一些C语言(因为PHP是用C语言来写的)。如果你错过了那篇文章,在你开始读这篇文章之前也许你应该读一下它。

    在这篇文章中,我们谈论的是定位PHP内部函数的定义,以及理解它们的原理。

    如何找到函数的定义

    作为开始,让我们尝试找出strpos函数的定义。

    尝试的第一步,就是去PHP 5.4根目录然后在页面顶部的搜索框输入strpos。搜索的结果是一个很大的列表,展示了strpos在PHP源码中出现的位置。

    Read more...
  • 【译】给PHP开发者的PHP源码-第一部分-源码结构

    原文:http://blog.ircmaxell.com/2012/03/phps-source-code-for-php-developers.html

    作为一个开发者,我发现在我的日常工作中越来越多地查看PHP的源码。在为了弄清楚奇怪的边界问题和为什么某些问题应该发生的却没有发生而去理解背后究竟发生了什么事情的时候非常有用。在文档缺失、不完整或者错误的情况下也很有用。因此,我已经决定通过一系列的文章来分享我学到的知识,给予PHP开发者们足够的知识去真正阅读PHP的C语言源码。你并不需要有C语言的基础(我们会总结一些基础),但如果有的话会更有帮助。

    这是这个系列的第一篇文章。在这篇文章,我们会谈论PHP程序的基础:在哪里找到它,基本的代码结构和一些最基础的C语言概念。需要说明的是,这一系列文章的目标是获得源码的阅读理解能力。这意味着为了过一下某些点,某些概念会被简化而不是太复杂的描述。这不会给阅读造成明显的差异,但如果你想为源码做贡献,则还有更多的知识需要补充。在我做简化的时候,我会尽量指出这些简化。

    Read more...