以图明志

Web设计理念

IE浏览器与IE内核浏览器有什么区别

navigator.userAgent
很多人一谈到浏览器就会想到 Internet Explorer,我们简称它为IE。确实在生活中用到最多的就是这个浏览器了,很多人只用这个浏览器,甚至有些人在意识里只有这个浏览器。但是Internet Explorer只是浏览器里的一个。也许是因为IE的市场太过于广阔,或许是因为网页提供商已经习惯IE的标准进行制作网页,甚至一些网站还必须使用IE才能识别。

互联网时代

浏览器内核及渲染过程介绍

不同浏览器内核引擎区别
浏览器可以分为两部分,shell+内核。其中shell的种类相对比较多,内核则比较少。Shell是指浏览器的外壳:例如菜单,工具栏等。主要是提供给用户界面操作,参数设置等等。它是调用内核来实现各种功能的。内核才是浏览器的核心。内核是基于标记语言显示内容的程序或模块。内核又可以分成两部分:渲染引擎(layout engineer或者Rendering Engine)和JS引擎。

Android

Andriod内核的简单分析

系统架构与内核分析
随着嵌入式技术的发展,智能手机的运行速度和所集成的功能获得了极大提升。借着这股东风,Google主导的开放手机联盟OHA (0Den Handset Alliance)顺势在2008年推出了Android移动终端平台。Android是一个开放、自由的移动终端平台。它的发布,打破了诺基亚Symbian操作系统和微软WindOWs Mobile操作系统在智能手机平台上的垄断地位。同时,其平台化的优势也大大丰富各种手持式设备软件的功能。

互联网时代

目前主流浏览器的内核

了解主流浏览器都是用什么内核的
浏览器最重要或者说核心的部分是“Rendering Engine”,可大概译为“解释引擎”,不过我们一般习惯将之称为“浏览器内核”。负责对网页语法的解释(如HTML、JavaScript)并渲染(显示)网页。所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。

PHP服务器脚本

[专题] PHP内核探索:新垃圾回收机制说明

PHP5.3中出现了新的GC
在5.2及更早版本的PHP中,没有专门的垃圾回收器GC(Garbage Collection),引擎在判断一个变量空间是否能够被释放的时候是依据这个变量的zval的refcount的值,如果refcount为0,那么变量的空间可以被释放,否则就不释放,这是一种非常简单的GC实现。然而在这种简单的GC实现方案中,出现了意想不到的变量内存泄漏情况。

PHP服务器脚本

[专题] PHP内核探索:变量的引用与计数规则

引用、计数与写时复制
在引擎内部,一个PHP的变量是保存在“zval”结构中,此结构包含了变量的类型和值信息。此结构还有另外两个字段信息,一个是"is_ref"(此字段在5.3.2版本中是is_ref__gc),此字段是一个布尔值,用来标识变量是否是一个引用,通过这个字段,PHP引擎能够区分一般的变量和引用变量。

PHP服务器脚本

[专题] PHP内核探索:zend_execute的具体执行过程

解释器最终执行op的函数是zend_execute
解释器引擎最终执行op的函数是zend_execute,实际上zend_execute是一个函数指针,在引擎初始化的时候zend_execute默认指向了execute,这个execute定义在{PHPSRC}/Zend/zend_vm_execute.h。此函数的参数为op_array,这是一个指向zend_op_array的指针,op_array是在编译过程中生成。

PHP服务器脚本

[专题] PHP内核探索:代码的加密与解密

可以避免直接分发源代码
PHP语言作为脚本语言的一种,由于不需要进行编译,所以通常PHP程序的分发都是直接发布源代码。 对于一些开源软件来说,这并没有什么问题,因为它本来就希望有更多的人阅读代码,希望有更多的人参与进来, 而对于商业代码来说,这却是一个不太好的消息,不管是从商业秘密,还是从对公司产权的保护来说却是一个问题, 基于此,从而引出了对PHP代码的加密和解密的议题。

PHP服务器脚本

[专题] PHP内核探索:中间代码opcode的执行

词法分析,语法分析,编译生成中间代码
假如我们现在使用的是CLI模式,直接在SAPI/cli/php_cli.c文件中找到main函数, 默认情况下PHP的CLI模式的行为模式为PHP_MODE_STANDARD。 此行为模式中PHP内核会调用php_execute_script(&file_handle TSRMLS_CC);来执行PHP文件。 顺着这条执行的线路,可以看到一个PHP文件在经过词法分析,语法分析,编译后生成中间代码的过程。

PHP服务器脚本

[专题] PHP内核探索:虚拟机的语法分析

Bison是一种通用目的的分析器生成器
Bison是一种通用目的的分析器生成器。它将LALR(1)上下文无关文法的描述转化成分析该文法的C程序。 使用它可以生成解释器,编译器,协议实现等多种程序。 Bison向上兼容Yacc,所有书写正确的Yacc语法都应该可以不加修改地在Bison下工作。 它不但与Yacc兼容还具有许多Yacc不具备的特性。

PHP服务器脚本

[专题] PHP内核探索:虚拟机的词法解析

将PHP指令转变成C语言指令
语言从广义上来讲是人们进行沟通交流的各种表达符号。每种语言都有专属于自己的符号,表达方式和规则。 就编程语言来说,它也是由特定的符号,特定的表达方式和规则组成。 语言的作用是沟通,不管是自然语言,还是编程语言,它们的区别在于自然语言是人与人之间沟通的工具, 而编程语言是人与机器之间的沟通渠道。

PHP服务器脚本

[专题] PHP内核探索:Zend虚拟机

执行中间代码等各个部分统称为Zend虚拟机
通过前面的学习,我们了解到一个PHP文件在服务器端的执行过程包括以下两个大的过程:递给php程序需要执行的文件, php程序完成基本的准备工作后启动PHP及Zend引擎, 加载注册的扩展模块。初始化完成后读取脚本文件,Zend引擎对脚本文件进行词法分析,语法分析。然后编译成opcode执行。

PHP服务器脚本

[专题] PHP内核探索:资源resource类型

资源类型的实现并不复杂
C语言中stdio的文件描述符(file descriptor)是与每个打开的文件相匹配的一个变量,它实际上十一个FILE类型的指针,它将在程序与硬件交互通讯时使用。我们可以使用fopen函数来打开一个文件获取句柄,之后只需把这个句柄传递给feof()、fread()、fwrite()、fclose()之类的函数,便可以对这个文件进行后续操作了。

PHP服务器脚本

[专题] PHP内核探索:继承与实现接口

implements 与 extends
在定义一个类时往往会使其继承某个父类或者实现某个接口,在扩展中实现这个功能非常方便。下面我先给出PHP语言中的代码。这里的ZEND_ABSTRACT_ME()宏函数比较特殊,它会声明一个abstract public类型的函数,这个函数不需要我们实现,因此也就不需要相应的ZEND_METHOD(i_myinterface,hello){...}的实现。

PHP服务器脚本

[专题] PHP内核探索:定义接口

声明一个类似虚函数的东西
定义一个接口还是很方便的,我先给出一个PHP语言中的形式。我们使用ZEND_ABSTRACT_ME()宏函数来为这个接口添加函数,它的作用是声明一个类似虚函数的东西,不用实现。也就是说我们不用为其添加ZEND_METHOD(i_myinterface,hello){...}的实现。

PHP服务器脚本

[专题] PHP内核探索:命名空间

命名空间是一种特殊的作用域
在维基百科中,对命名空间的定义是: 命名空间(英语:Namespace)表示标识符(identifier)的上下文(context)。一个标识符可在多个命名空间中定义, 它在不同命名空间中的含义是互不相干的。在编程语言中,命名空间是一种特殊的作用域,它包含了处于该作用域内的标识符, 且本身也用一个标识符来表示,这样便将一系列在逻辑上相关的标识符用一个标识符组织了起来。
1 / 6 首页 < Prev 1 2 3 4 5 Next > 尾页 页码: