深入理解PHP opcode优化

1.概述 PHP(本文所述案例PHP版本均为7.1.3)作为一门动态脚本语言,其在zend虚拟机执行过程为:读入脚本程序字符串,经由词法分析器将其转换为单词符号,接着语法分析器从中发现语法结构后生成抽象语法树,再经静态编译器生成opcode,最后经解释器模拟机器指令来执行每一条opcode。 在上述整个环节中,生成的opcode可以应用编译优化技术如死代码删除、条件常量传播、函数内联等各种优化来精简opcode,达到提高代码的执行性能的目的。 PHP扩展opcache,针对生成的opcode基于共享内存支持了缓存优化。在此基础上又加入了opcode的静态编译优化。这里所述优化通常采用优化器(Optimizer)来管理,编译原理中,…

Read More

Java元编程及其应用

首先,我们且不说元编程是什么,他能做什么.我们先来谈谈生产力. 同样是实现一个投票系统,一个是python程序员,基于django-framework,用了半小时就搭建了一个完整系统,另外一个是标准的SSM(Spring-SpringMVC-Mybatis)Java程序员,用了半天,才把环境刚刚搭好. 可以说,社区内,成功的web框架中基本没有不强依赖元编程技术的,框架做的工作越多,应用编写就越轻松. 那什么是元编程 元编程是写出编写代码的代码 试想以下,如果那些原本需要我们手动编写的代码,可以自动生成,我们是不是又更多的时间来做更加有意义的事情?有些框架之所以开发效率高,…

Read More

异步网络模型

异步网络模型 异步网络模型在服务开发中应用非常广泛,相关资料和开源库也非常多。项目中,使用现成的轮子提高了开发效率,除了能使用轮子,还是有必要了解一下轮子的内部构造。 这篇文章从最基础的5种I/O模型切入,到I/O事件处理模型,再到并发模式,最后以Swoole开源库来做具体分析,逐步深入。文中提到的模型都是一些通用的模型,在《linux高性能服务器编程》中也都有涉及。文章不涉及模型的实现细节,最重要的是去理解各个模型的工作模式以及其优缺点。 文中涉及接口调用的部分,都是指Linux系统的接口调用。 共分为5部分: I/O模型…

Read More

有赞新交易之设计以及背后的思考

背景:成长的烦恼 在开始下面的话题之前,我们先看一看有赞原有的核心交易架构。 初步看去,这套架构方案似乎看不出什么问题。事实情况也这样,我们做这套交易方案支持了百万级笔数的交易规模,取得了很不错的成果。 在2016年,公司经历了飞速的成长, 整体团队人员扩张了数倍, 公司整体业务线从单一的微商城电商交易型态扩张到支持多个垂直行业。交易团队也碰到了很多尴尬的情况: 垂直行业接入交易很困难,交易团队对于业务团队的支撑响应速度赶不上业务的迭代速度,最后垂直行业被迫自己完全重做了一套针对垂直业务的交易系统。比如:商业化服务订购,收营,批发等业务。浪费了公司宝贵的技术资源。 交易团队的新同学,上手交易核心的开发非常困难,在没有完合弄懂整套系统之间,…

Read More

有赞Android客户端网络架构演进

Android客户端网络请求是每一个应用都不可或缺的模块,其设计的好坏直接影响应用的性能和代码稳定性、扩展性。Android网络请求最开始官方只提供了最基础的方法,开发者必须在此基础上进行二次封装,这样就要求开发者对Http请求协议、缓存、JSON转换、错误处理以及线程切换等都比较熟悉,稳定性、可扩展性和可维护性都是比较大的挑战。 目前Android主流的网络请求都是基于Square公司开发的OkHttp,该框架也得到了Google官方的认可,OkHttp对网络请求做了大量的封装和优化,极大降低了开发者的使用成本,同时兼备稳定性和可扩展性。目前有赞Android客户端也是采用OkHttp进行网络请求,在OkHttp框架的基础上做了大量的封装和优化,减小业务逻辑与框架的耦合性的同时,也极大降低了业务方的使用成本。 1. 现在的网络请求 先以Get请求为例,代码如下: private…

Read More