zephir中引用赋值和参数的传引用实现

近期在修改一些Phalcon的底层实现时,发现zephir并未提供引用赋值和参数的传引用特性,导致某些特定场景的代码无法实施,例如循环调用中要求不能抛出异常,只能用一个最外层的handle来存储循环中异常或错误,这就要求必须使用参数的传引用特性,所以只能通过一些变通方法来变通实现。 引用赋值 使用&进行引用赋值,编译时会引发异常并提醒你官方并不支持引...

Read More

Jenkins增量部署 指定文件夹指定文件部署

1 出发点 使用Jenkins部署代码的办法,一种是打包,一种是连接目标服务器拉取代码,虽然实际操作中会一些差别, 例如打包后上传与下载的区别,但大体就是这两种。 对于打包方法而言,通常是打全量包,或者是指定文件与文件拉取代码打包。但是有时候在非严格的版本控制下,需要增量部署, 或者动态地指定文件夹,动态地指定文件拉取部署;就像瓦力那样,但是又不想更换瓦力。...

Read More

RabbitMQ面试题汇总

1 为什么要使用MQ?MQ和Redis模拟消息队列相比有什么优点? 为什么要使用MQ 解耦,系统与系统之间的耦合。 异步,非必要的业务逻辑可以以异步方式运行,加快响应速度 消峰,减少并发 对比Redis消息队列 消息消费的可靠性 Redis没有相应的机制保证消息的消费,当消费者消费失败的时候,消息体丢失,需要手动处理, 例如用数据库、File等进行存储,以保...

Read More

PHP框架模式1:管道模式

计算机领域内管道模式其本质大体和现实领域的管道系统相同:栽荷从从抽象的管道的一端流入,经过一系列的处理,最终从管道的另一端流出。 管道模式的形式有很多种,常见的有: 进程间管道,通常用于兄弟进程、亲缘进程、父子进程及子进程之间的通讯; 凹型管道,用于客户端与服务端的业务流程处理及通讯; 直线型管道,用于客户端或服务端的一般流程性业务处理; 直线型的管道模式又...

Read More

AC自动机-多模匹配算法C++实现

AC自动机(Aho-Corasick automation), 是一种常用的多模匹配算法,常用于查找一组关键词在某一篇文章是否存在,以及单个词组出现的频率. 基础知识 AC自动机可以认为是TrieTree结构+KMP算法. TrieTree 即字典树,又叫单词查找树或键树,是一种树状机构,属于哈希树的变种。 TrieTree常被用于统计和排序大量字符串(不仅...

Read More

Redis面试题汇总

1 请说出你对Redis的认识,Redis有哪些优缺点? Redis是一个使用C语言编写,开源的高性能非关系型数据库。 Redis有5种数据存储类型,健的类型只能是字符串,值的类型可以是:字符串、列表、集合、散列表、有序集合。 Redis的数据存储在内存之中,所以读写速度非常快,每秒可以处理超过10万次数据读写操作。 优点 读写性能优异,读速度可达11000...

Read More

PHP7的异常与错误处理机制

回顾PHP5,Error与Exception相互独立,对于致命错误而言,并不能通过set_error_handler()来捕获,这样致命错误就会直接打印出来,即使通过设置错误级别显示http级的友好错误,这样对用户也并不友好。 例如在使用PHP5开发接口时,并不希望在遇到致命错误时直接中断接口响应,或将程序内部错误展示给用户,通常的做法只能在PHP接口的上一...

Read More