上一页 1 ··· 4 5 6 7 8 9 10 下一页
编写PHP Extensionzhangdongjin@baidu.com目录目录... 2一、 基础知识... 41.1 PHP变量的存储... 41.1.1 zval结构... 41.1.2 引用计数... 51.1.3 zval状态... 51.1.4 zval状态切换... 61.1.5 参数传递... 91.2 HashTable结构... 91.2.1 数据结构... 101.2.2 PHP数组... 131.2.3 变量符号表... 141.3 内存和文件... 15二、 Extensions 的编写... 172.1 HelloWorld. 172.1.1 声明导出函数... Read More
posted @ 2011-09-22 17:49 绿色冰点 Views(2173) Comments(0) Diggs(1)
2011-9-21lrzsz一个方便上传下载的小工具,在xshell中,需要往我们的linux虚拟机传送文件时,直接将文件拉到终端即可,或者在终端输入命令rz,会弹出对话框选择文件,同样地,在虚拟机终端输入sz 文件名 可以发送文件到本机。在CentOS上可以简单地通过yum install lrzsz来安装.源码安装也很简单,这里略.2012-1-30Unison如果我们习惯在虚拟机上操作,我们知道在本机和虚拟机之间可以通过share folder的方式共享某个文件夹作为主机和虚拟机都可以同时操作的文件夹,但很多情况下,公司都会提供一台服务器,我们无需自己浪费大量的内存和CPU来单独开启一台 Read More
posted @ 2011-09-21 23:03 绿色冰点 Views(3396) Comments(0) Diggs(0)
在上两章里讲述了扩展模块的基本用法,相信读者已经能够构建自己的扩展模块了,接下来,我们来看看几个重要的函数:1、PHP_MINIT_FUNCTION(MyModule);当模块被Zend Engine(ZE)加载后,例如Apache启动,加载了PHP模块,ZE会对每一个扩展模块调用此函数(如果有的话),可以在该函数里进行一些初始化操作。2、PHP_RINIT_FUNCTION(MyModule);对于每一个“使用”该模块的PHP脚本请求前,都执行该函数(如果有的话),最好的例子:Session扩展模块,如果在一个PHP脚本里执行session.start(),Session模块的PHP_RIN Read More
posted @ 2011-09-21 13:40 绿色冰点 Views(2773) Comments(0) Diggs(0)
在上一章里我们介绍了如何编写自己的函数,接下来,我们开始编写一个有参数有返回值的扩展函数。因为Zend没有正式的函数调用语法检查支持,所以我们在编写扩展函数的时候必须得“小心”,也就是我们必须得严格地进行调用合法性检查。首先,我们写一个函数:#include "string.h"PHP_FUNCTION(haosoft_strcat){char* pc_arg_one = NULL;char* pc_arg_tow = NULL;long arg_one_len;long arg_tow_len;if (zend_parse_parameters(ZEND_NUM_ARGS Read More
posted @ 2011-09-21 13:39 绿色冰点 Views(1111) Comments(0) Diggs(0)
首先,我们应该选择如何去构建我们的扩展模块,有三种方式:1、External Modules:外部模块,也就是编译成共享库,用dl()函数动态加载。好处:(1)不需要重新编译PHP(2)PHP体积小,因为不需要编译进PHP缺点:(1)每次*.php脚本执行都需要用dl()去加载,效率较低(2)每次都要调用dl()2、Built-in Modules:编译进PHP好处:(1)不需要动态加载,模块在php脚本里面可以直接使用。(2)不需要将模块编译成.so共享库,因为直接编译进PHP。缺点:(1)对模块的改变都需要重新编译PHP(2)因为编译进PHP,所以PHP二进制文件较大,而且多占点内存3、T Read More
posted @ 2011-09-21 13:21 绿色冰点 Views(5716) Comments(0) Diggs(0)
原文:http://blog.sina.com.cn/s/blog_4b029ef30100nxcb.html阻塞socket和非阻塞socket读操作对于阻塞的socket,当socket的接收缓冲区中没有数据时,read调用会一直阻塞住,直到有数据到来才返回。当socket缓冲区中的数据量小于期望读取的数据量时,返回实际读取的字节数。当sockt的接收缓冲区中的数据大于期望读取的字节数时,读取期望读取的字节数,返回实际读取的长度。对于非阻塞socket而言,socket的接收缓冲区中有没有数据,read调用都会立刻返回。接收缓冲区中有数据时,与阻塞socket有数据的情况是一样的,如果接收 Read More
posted @ 2011-09-15 12:17 绿色冰点 Views(10300) Comments(0) Diggs(0)
原文链接:http://blog.vckbase.com/panic/archive/2005/03/28/4144.html在A*寻路中使用二叉堆作者:Patrick Lester(2003年4月11日更新)译者:Panic 2005年3月28日译者序: 这一篇文章,是“A* Pathfinding for Beginners.”,也就是我翻译的另一篇文章《A*寻路初探》的补充,在这篇文章里,作者再一次展现了他阐述复杂话题的非凡能力,用通俗易懂的语句清晰的解释了容易让人迷惑的问题。还是那句话,如果你看了这篇文章仍然无法领会作者的意图,那只能怪我的翻译太蹩脚了。请参考原文做进一步的理解。 这里 Read More
posted @ 2011-09-09 19:29 绿色冰点 Views(385) Comments(0) Diggs(0)
/** * 寻径算法框架 * by lxslove * e-mail:moodlxs@163.com * 用法: * 注意:编译本框架需要加上-ldl选项 * g++ -ldl src.cpp * * 地图文件格式为不同符号的矩阵,具体什么符号代表可通行,什么符号代表不可通行,由自己决定。举个例子: * ################### * # ###### ######## * # ###### ########## * # ########## * ######## # #### * ## #### ## ###### * ### # ########... Read More
posted @ 2011-09-09 19:22 绿色冰点 Views(353) Comments(0) Diggs(0)
主程序在编译时,增加-brtl -bexpall标志。(xlC)%.o:%.cpp $(CC) $(CFLAG) $(inc) -o $@ -c -brtl -bexpall $<动态库在编译时,增加-bdynamic标志(xlC)$(soobjs):$(insdir)/*.cpp $(CC) $(CFlAG) $(inc) -o $@ -G -bdynamic $< Read More
posted @ 2011-04-03 13:46 绿色冰点 Views(1059) Comments(0) Diggs(0)
原文:http://blog.csdn.net/LUOPING198410/archive/2009/07/21/4367430.aspx花了我一个星期来整理~一、Makefile的规则targets : prerequisitescommand...或是这样: targets : prerequisites ; commandcommand...targets是文件名,以空格分开,可以使用通配符。一般来说,我们的目标基本上是一个文件,但也有可能是多个文件。command是命令行,如果其不与“targetrerequisites”在一行,那么,必须以[Tab键]开头,如果和prerequisi Read More
posted @ 2011-04-02 00:41 绿色冰点 Views(2554) Comments(0) Diggs(0)
寿星万年历是我在网上见到的一份极高高精度的万年历,其采用先进的算法实现,其精度堪比刘安国教授为中国科学院国家授时中心制作的日梭万年历。但网络上只有javascript版本。于是自己将其翻译为java程序,并公布于此,方便大家使用。寿星万年历相关信息:http://www.fjptsz.com/xxj... Read More
posted @ 2010-12-18 00:40 绿色冰点 Views(7744) Comments(6) Diggs(0)
使用GCC和NASM在Linux下联合编译 今天使用nasm和gcc一起编译了一个程序先使用nasm编译一个asm文件为elf格式,汇编文件里面有全局global的_start和functionC,将来连接的时候用。其中还有extern用来表示外部C语言中的函数。我的程序的调用结构: _start(ASM)->funB(C)->funC(ASM)其中 ASM文件中:extern funB、global _start、global funCC文件中声明:void funC();函数参数的传递:使用push来传递地址,而不是数值。最后参数的清理需要caller来自己解决。 需... Read More
posted @ 2010-11-24 00:27 绿色冰点 Views(3401) Comments(0) Diggs(0)
If you have Fedora and an nVidia graphics card, chances are you’ll want to use kmod-nvidia as your graphics driver. It is closed-source, but produced by nVidia themselves and has several advantages over the default open-source drivers that are typically bundled with most distributions – for example, Read More
posted @ 2010-11-19 13:00 绿色冰点 Views(1282) Comments(0) Diggs(0)
这是一个关于Posix线程编程的专栏。作者在阐明概念的基础上,将向您详细讲述Posix线程库API。本文是第三篇将向您讲述线程同步。互斥锁尽管在Posix Thread中同样可以使用IPC的信号量机制来实现互斥锁mutex功能,但显然semphore的功能过于强大了,在Posix Thread中定义了另外一套专门用于线程同步的mutex函数。1. 创建和销毁有两种方法创建互斥锁,静态方式和动态方式。POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER来静态初始化互斥锁,方法如下: pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER Read More
posted @ 2010-09-29 20:33 绿色冰点 Views(230) Comments(0) Diggs(0)
这是Documentation/CodingStyle 的中文版,似乎没有LKD里面讲的幽默。再次fuck匈牙利命名法。“在函数名中包含函数类型(所谓的匈牙利命名法)是脑子出了问题——编译器知道那些类型而且能够检查那些类型,这样做只能把程序员弄糊涂了。难怪微软总是制造出有问题的程序。” Linux内核代码风格这是一个简短的文档,描述了linux内核的首选代码风格。代码风格是因人而异的,而且我不愿意把我的观点强加给任何人,不过这里所讲述的是我必须要维护的代码所遵守的风格,并且我也希望绝大多数其他代码也能遵守这个风格。请在写代码时至少考虑一下本文所述的风格。首先,我建议你打印一份GN... Read More
posted @ 2010-08-20 01:45 绿色冰点 Views(1842) Comments(0) Diggs(0)
上一页 1 ··· 4 5 6 7 8 9 10 下一页