【原】PHP扩展开发利器之PHP-CPP库官方中文文档

【原】PHP扩展开发利器之PHP-CPP库官方中文文档

这段时间对PHP扩展开发比较热衷,起初先趟了一遍(半遍吧)用Zend引擎来开发扩展的方式(http://www.walu.cc/phpbook/preface.md),可是问题来了。正如PHP官方所说的那样,”Zend的好处就是定义了很多宏,可惜坏处是宏真是太多了”。未知的东西是可怕的,也是困难的。所以相对比较起来,这个用纯C++的库来说(PHP-CPP),对于C++开发者真是轻车熟路。 翻译内容目前托管到了GitHub上,后续会陆续更新到本博,对PHP-CPP扩展感兴趣或者对于翻译感兴趣的朋友,请多指正~ GitHub https://github.com/GenialX/PHP-CPP-documentation 文章来源:胡旭个人博客 => PHP扩展开发利器之PHP-CPP库官方中文文档 转载请注明出处,违者必究!

【原】powerline插件安装之vim篇(Mac)

【原】powerline插件安装之vim篇(Mac)

powerline是vim的状态栏插件,同时也提供状态栏和提示窗口功能给其他一些应用,包括zsh,bash,tmux,IPython,Awesome,i3 和 Qtile。这篇文字只谈vim上的安装。 环境与工具 系统:OS X EI Capitan version 10.11.5 终端:terminal vim :v7.4.1914 xcode: 7.3.1(xcode的版本过低会影响一些依赖库的安装,我在6.5的情况下安装一些软件会出些问题,避免麻烦升级下。) python:3.5.1   源码: python: https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xz vim: https://github.com/vim/vim/archive/v7.4.1949.tar.gz

【摘】tmux安装、操作与配置

tmux是一个优秀的终端复用软件,类似GNU Screen,但来自于OpenBSD,采用BSD授权。使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机;当然其功能远不止于此。 安装 可以使用Ports安装tmux,位置在/usr/ports/sysutils/tmux/;tmux仅有一个依赖包libevent,位于/usr/ports/devel/libevent/。 安装完成后输入命令tmux即可打开软件,界面十分简单,类似一个下方带有状态栏的终端控制台;但根据tmux的定义,在开启了tmux服务器后,会首先创建一个会话,而这个会话则会首先创建一个窗口,其中仅包含一个面板;也就是说,这里看到的所谓终端控制台应该称作tmux的一个面板,虽然其使用方法与终端控制台完全相同。 tmux使用C/S模型构建,主要包括以下单元模块: server 服务器。输入tmux命令时就开启了一个服务器。 session 会话。一个服务器可以包含多个会话。 window 窗口。一个会话可以包含多个窗口。 pane 面板。一个窗口可以包含多个面板。

【摘】MySQL中的varchar与char字段类型的区别

文章1: char与varchar的区别 char (13)长度固定, 如’www.jb51.net’ 存储需要空间 12个字符 varchar(13) 可变长 如’www.jb51.net’ 需要存储空间 13字符,   从上面可以看得出来char 长度是固定的,不管你存储的数据是多少他都会都固定的长度。而varchar则处可变长度但他要在总长度上加1字符,这个用来存储位置。所以实际应用中用户可以根据自己的数据类型来做。   再看看char,与varchar在速度上的区别吧。

【译】PHP扩展开发入门PHP-CPP篇(未完待续)

在你使用PHP来解决一些事情的时候,可能会考虑亲手开发一个PHP扩展。以下是我能想到的驱使我开发PHP扩展的几点理由: 扩展PHP的功能在某些非常特殊的使用场景(比如数学,统计和几何等等)。 相比于用纯PHP代码实现,提高PHP的性能和效率。 利用自身之前掌握的另一种编程语言(对我来说是C++)来进行快速的开发。 当谈论到选择建立PHP扩展的工具时,我们自然会想到两个不同的方法: 使用更接近PHP语法的工具,比如Zephir。 使用更接近C/C++语法的工具,比如下文会提到的PHP-CPP。

【原】Vim使用技巧之只有用了才会懂“最好的IDE是Vim”

【原】Vim使用技巧之只有用了才会懂“最好的IDE是Vim”

半年前,我还在诸如Eclipse、ZendStudio等IDE里徘徊。然而,这半年对于Vim的使用,我不得不说,Vim的效率是更高的。代价是需要时间来配置属于你自己的Vim。 此篇文字,不会人云亦云。当然,很抱歉也不是个教程(水平不够)。只写下迄今为止对于Vim+tmux的使用感受,以及展示vim的使用技巧(至于如何入门vim请自行google)。

【摘】花生壳内网端口映射原理详解

关于如何建立服务器的解答: 一.花生壳的作用 首先,我们先来了解一下花生壳的到底有什么作用。因为ADSL每次拨号上网所获得的IP地址每次都是不同的,花生壳起到的作用就是方便用户访问我们的服务器(只需要输入域名便可),而不用每次都输入IP地址那么麻烦(因为我们也不可能每次重新拨号上网后,又去告诉用户现在的服务器的IP地址什么)。 例如,我们的花生壳护照下有一个域名www.oray.net ,那么只要在电脑上用该护照登陆了花生壳客户端。当别人输入www.oray.net的时候,会自动解析到那台电脑所在的网络的公网IP地址。 也就是说,具体的服务器,是要我们自己去设置完成的。而不同的上网方式,建立服务器的方式是不同的,下面介绍两种常见上网方法的服务器的建立。(这两个上网方法主要区别在于用来做服务器的计算机,能否得到公网的IP地址)。

【原】拆分集合为两个和相等的子集合问题(动态规划)

题意 问题描述:将1到N的连续整数组成的集合划分为两个子集合,且保证每个集合的数字和相等。例如,对于N=4,对应的集合{1,2,3,4},能被划分为{1,4}、{2,3}两个集合,使得1+4=2+3,且划分方案只有此一种。编程实现给定任一正整数N(1<=N<=39),输出其符合题意的划分方案数。 样例输入1:3 样例输出1:1    (可划分为{1,2}、{3}) 样例输入2:4 样例输出2:1    (可划分为{1,3}、{2,4}) 样例输入3:7 样例输出3:4    (可划分为{1,6,7}、{2,3,4,5},或{1,2,4,7}、{3,5,6},或{1,3,4,6}、{2,5,7},或{1,2,5,6}、{3,4,7}) 思路 根据动态规划思想,可以得到状态转移方程如下:

【原】关于“如何开发PHP扩展”的学习小结

近期,工作上的业务并不是很忙。做了大半年的业务逻辑,尽管在PHP编码习惯和技巧上有所进步,初步熟悉了在高并发下Redis和Memcache缓存的使用和注意事项。但,应该借此闲暇时间探索下PHP底层的一些原理。这样,才是会有质的提升,写出更好的代码。 正如那句话“PHP取得成功的一个主要原因之一是她拥有大量的可用扩展”,那就从PHP扩展入手了解下。

【摘】解密微博红包:架构、防刷、监控和资源调度

编者按 与传统意义上的红包相比,近两年火起来的“红包”,似乎才是如今春节的一大重头戏。历经上千年时代传承与变迁,春节发红包早已成为历史沉淀的文化习俗,融入了民族的血脉。按照各家公布的数据,除夕全天微信用户红包总发送量达到10.1亿次,摇一摇互动量达到110亿次,红包峰值发送量为8.1亿次/分钟。而支付宝的红包收发总量达到2.4亿次,参与人数达到6.83亿人次,红包总金额40亿元,峰值为8.83亿次/分钟。春晚直播期间讨论春晚的微博达到5191万条,网友互动量达到1.15亿,网友抢微博红包的总次数超过8亿次。

【编】Memcache内存管理之查看所有key方法

今天在做一个Memcache的session测试,但是在测试的过程中,发现Memcache没有一个比较简单的方法可以直接象redis那样keys *列出所有的Session key,并根据key get对应的session内容,于是,我开始查找资料,翻出来的大部分是一些memcache常用命令等,但是对列出key的办法,讲解却不多,于是来到google,找到了一个国外的资料