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

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

Read More

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

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

Read More

PHP框架模式1:管道模式

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

Read More

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

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

Read More

PHP7的异常与错误处理机制

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

Read More

Git merge fast-forward/–no–off/–squah的区别

fast-forward 未添加任何参数使用git merge合并分支时即为fast-forward模式,这种模式不是在被合并分支上显示被合并的分支,只保留单条分支记录。在合并时间,GIT直接将HEAD指针指向合并分支的头,完成合并,这是一种”快进"方式的合并。 在这种情况下,删除分支,则分支丢失,只在被合并分支上看到commit提交信息,但并不知...

Read More

Git合并多次Commit

在使用Git时,经常会碰到需要美化提交的场景,虽然多数是出于错误的测试开发流程,或者错误的GIT管理流程,但放任一些临时或者随意的commit就会污染Git History,为后续的代码管理代理不便。 合并多次提交,只需要使用git rebase就可以 示例: commit e1a7dfa9dfea8e63ad079dba37c61d8e80ffbe1b A...

Read More