本文只探讨纯粹的函数,并不包含方法.对于方法,会放到类.对象中一起研究. 想讲清楚在zend vm中,函数如何被正确的编译成op指令.如何发生参数传递.如何模拟调用栈.如何切换作用域等等,的确是一个很大范畴的话题.但为了弄明白php的原理,必须要攻克它. 对函数的研究,大致可以分成两块.第一块是函数体的编译,主要涉及到如何将函数转化成zend_op指令.第二块是研究函数的调用,涉及到函数调用语句的编译,以及函数如何被执行等topic.这里先来看看函数如何被编译,我们下一篇再讲函数的调用. 函数的…
本章开始研究php中函数的调用和执行,先来看函数调用语句是如何被编译的. 我们前面的章节弄明白了函数体会被编译生成哪些zend_op指令,本章会研究函数调用语句会生成哪些zend_op指,等后面的章节再根据这些op指令,来剖析php运行时的细节. 源码依然取自php5.3.29. 函数调用 回顾之前用的php代码示例: <?php function foo($arg1) { print($arg1); } $bar = 'hello php'; foo($bar); 在函数编译一章里已经分析过,…
让代码分布式运行是所有分布式计算框架需要解决的最基本的问题. Spark是大数据领域中相当火热的计算框架,在大数据分析领域有一统江湖的趋势,网上对于Spark源码分析的文章有很多,但是介绍Spark如何处理代码分布式执行问题的资料少之又少,这也是我撰写文本的目的. Spark运行在JVM之上,任务的执行依赖序列化及类加载机制,因此本文会重点围绕这两个主题介绍Spark对代码分布式执行的处理.本文假设读者对Spark.Java.Scala有一定的了解,代码示例基于Scala,Spark源码基于2.…
老李推荐:第5章7节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 循环获取并执行事件 - runMonkeyCycles   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200. Monkey启动之后需要在整个MonkeyRunner的测试生命周期中提供服务,也就是说,一旦我们调用monkeyrunner命令来执行指定…
到目前为止,我们接触过的重点术语,总结一下: Java体系的技术被划分为三大块: JavaSE:标准版 JavaEE:企业版 JavaME:微型版 安装JDK之后: JDK:java开发工具箱 JRE: java运行环境 JVM:java虚拟机 Java零基础教程视频 030-Java的加载与执行原理剖析 对Java的加载与执行的理解(理论比较重要) java程序从编写到最终运行经历了哪些过程? java程序非常重要的两个阶段: 编译阶段 运行阶段 注意:java程序员直接编写的java代码(普…
老李推荐:第5章3节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 启动脚本   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-84505200. 本节我们先看下Monkey是怎么启动起来的.在今后分析到MonkeyRunner的原理的时候我们会看到客户端是通过ADB往Android目标测试机器发送一个”monkey -port 1…
深入php内核,从底层c语言剖析php实现原理 非常好的电子书:http://www.cunmou.com/phpbook/preface.md   这是它的目录: PHP的生命周期 让我们从SAPI开始 PHP的启动与终止 PHP的生命周期 线程安全 小结 PHP变量在内核中的实现 变量的类型 变量的值 创建PHP变量 变量的存储方式 变量的检索 类型转换 小结 内存管理 内存管理 引用计数 总结 配置编译环境 编译前的准备 PHP编译前的config配置 Unix/Linux平台下的编译 在…
深入剖析Linux IO原理和几种零拷贝机制的实现 来源 https://zhuanlan.zhihu.com/p/83398714 零壹技术栈      公众号[零壹技术栈] 前言 零拷贝(Zero-copy)技术指在计算机执行操作时,CPU 不需要先将数据从一个内存区域复制到另一个内存区域,从而可以减少上下文切换以及 CPU 的拷贝时间.它的作用是在数据报从网络设备到用户程序空间传递的过程中,减少数据拷贝次数,减少系统调用,实现 CPU 的零参与,彻底消除 CPU 在这方面的负载.实现零拷贝…
聊聊redis执行lua原理 从一次面试场景说起   "看你简历上写的精通redis" "额,还可以啦" "那你说说redis执行lua脚本的原理" "这个,这个,不就是那么执行的吗,eval 一段lua脚本就行了" "好的,了解了,今天面试先到这个吧,后续有消息会通知你" "好的,祝您生活愉快" 面试场景纯属娱乐,但这个面试题确实是笔者真实遇到过的,今天我们就来看看redis执行lua…
深入剖析Sgementation fault原理 前言 我们在日常的编程当中,我们很容易遇到的一个程序崩溃的错误就是segmentation fault,在本篇文章当中将主要分析段错误发生的原因! Sgementation fault发生的原因 发生Sgementation fault的直接原因是,程序收到一个来自内核的SIGSEGV信号,如果是你的程序导致的内核给进程发送这个信号的话,那么就是你的程序正在读或者写一个没有分配的页面或者你没有读或者写的权限.这个信号的来源有两个: 程序的非法访问…