关于PHP在企业级开发领域的访谈 ——企业级开发,PHP准备好了吗? 转自:http://www.nowamagic.net/librarys/veda/detail/256 虽然PHP是Web应用开发中最广泛使用的环境,但它还是一度被认为无缘企业级开发. Zeev Suraski,Zend Technologies公司创始人,该公司主要关注PHP的进展 Rob Nicholson,高级技术研员, 曾为IBM编写过程序设计语言运行时 Derick Rethans,PHP开发小组成员,eZ组件的项…
EPOLL事件有两种模型: Edge Triggered (ET)  边缘触发 只有数据到来,才触发,不管缓存区中是否还有数据. Level Triggered (LT)  水平触发 只要有数据都会触发. 假如有这样一个例子: 1. 我们已经把一个用来从管道中读取数据的文件句柄(RFD)添加到epoll描述符 2. 这个时候从管道的另一端被写入了2KB的数据 3. 调用epoll_wait(2),并且它会返回RFD,说明它已经准备好读取操作 4. 然后我们读取了1KB的数据 5. 调用epoll…
Epoll是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入.和 select 相似,是高效 I/O 多路复用技术. 其实在 Linux 下设计并发网络程序,有多种模型:如典型的 Apache 模型( Process Per Connection ,简称 PPC ), TPC ( Thread PerConnection )模型,以及 select 模型和 poll 模型 为了对比Epoll 的优点,下面列举常用模型的特点: 1. PPC…
epoll的接口非常简单,总共只有三个函数: 1.int epoll_create(intsize); 生成一个 Epoll 专用的文件描述符,size用来告诉内核这个监听的数目一共有多大.这个参数不同于select()中的第一个参数,给出最大监听的fd+1的值.需要注意的是,当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽. 其实是申请一个内核…
为了使大家更加深入了解epoll模型在企业应用中的使用,下面给出一段基于epoll的服务器代码,并在代码中添加了详细注释: #include <deque> #include <map> #include <vector> #include <pthread.h> #include <semaphore.h> #include <time.h> #include <sys/time.h> #include <sys/…
默认情况下,libevent使用C库的内存管理函数在堆上分配内存.通过提供malloc.realloc和free的替代函数,可以让libevent使用其他的内存管理器.希望libevent使 用一个更高效的分配器时:或者希望libevent使用一个工具分配器,以便检查内存泄漏时,可能需要这样做. 接口 void event_set_mem_functions(void*(*malloc_fn)(size_t sz), void *(*realloc_fn)(void *ptr, size_tsz…
编写多线程程序的时候,在多个线程中同时访问同样的数据并不总是安全的. libevent的结构体在多线程下通常有三种工作方式: 1.某些结构体内在地是单线程的:同时在多个线程中使用它们总是不安全的. 2.某些结构体具有可选的锁:可以告知libevent是否需要在多个线程中使用每个对象. 3.某些结构体总是锁定的:如果libevent在支持锁的配置下运行,在多个线程中使用它们总是安全的. 为获取锁,在调用分配需要在多个线程间共享的结构体的libevent函数之前,必须告知libevent使用哪个锁函…
Libevent是一个用于编写高速可移植非阻塞IO应用的库,它的设计目标是: 可移植性:使用libevent编写的程序应该可以在libevent支持的所有平台上工作.即使没有好的方式进行非阻塞IO,libevent也应该支持一般的方式,让程序可以在受限 的环境中运行. 速度:libevent尝试使用每个平台上最高速的非阻塞IO实现,并且不引入太多的额外开销. 可扩展性:libevent被设计为程序即使需要上万个活动套接字的时候也可以良好工作. 方便:无论何时,最自然的使用libevent编写程序…
什么是敏捷开发? 敏捷开发(Agile Development)是一种以人为核心.迭代.循序渐进的开发方法. 怎么理解呢?首先,我们要理解它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发:而这种开发方式的主要驱动核心是人:它采用的是迭代式开发: 为什么说是以人为核心? 我们大部分人都学过瀑布开发模型,它是以文档为驱动的,为什么呢?因为在瀑布的整个开发过程中,要写大量的文档,把需求文档写出来后,开发人员都是根据文档进行开发的,一切以文档为…
1.ZIP文件目录遍历简介 因为ZIP压缩包文件中允许存在“../”的字符串,攻击者可以利用多个“../”在解压时改变ZIP包中某个文件的存放位置,覆盖掉应用原有的文件.如果被覆盖掉的文件是动态链接so.dex或者odex文件,轻则产生本地拒绝服务漏洞,影响应用的可用性,重则可能造成任意代码执行漏洞,危害用户的设备安全和信息安全.比如近段时间发现的“寄生兽”漏洞.海豚浏览器远程命令执行漏洞.三星默认输入法远程代码执行漏洞等都与ZIP文件目录遍历有关. 阿里聚安全的应用漏洞扫描服务,可以检测出应用…