=====先声明一下,以下内容都是从互联网中总结而得来的===== 先解析反向代理服务器的概念,反向代理服务器又称为 WEB 加速服务器,它位于 WEB 服务器的前端,充当Web服务器的内容缓存器。如图 反向代理服务器是针对 WEB 服务器设置的,后台 WEB 服务器对互联网用户是透明的,用户只能看到反向代理服务器的地址,不清楚后台 WEB 服务器是如何组织架构的。当互联网用户请求 WEB 服务时,DNS 将请求的域名解析为反向代理服务器的 IP 地址,这样 URL 请求将被发送到反向代理服务器,由反向代理服务器负责处理用户的请求与应答、与后台 WEB 服务器交互。利用反向代理服务器减轻了后台 WEB 服务器的负载,提高了访问速度,同时避免了因用户直接与 WEB 服务器通信带来的安全隐患。
在《Compiler Construction Principles and Practice》一书中讲了两种语言运行时环境:完全静态运行时环境和基于栈的运行时环境。 完全静态运行时环境是最简单的运行时环境类别,其所有的数据都是静态的,且在程序执行期间内存中的数据都是固定的,这种运行时环境没有指针和动态内存分配,并且也不支持函数递归调用,这类语言的一个标准例子就是FORTRAN77。在完全静态运行时环境中,所有的变量,不论全局和局部的变量,都是静态分配的,我们可以通过固定的地址来直接访问到这些变量。 基于栈的运行时环境是我们常见的语言运行时环境,如C,C++等语言就是基于栈的运行时环境。允许递归调用并且在递归调用过程中要重新分配局部变量,不能静态分配活动记录(Activation Record)。一般在内存中,数据的组织如下: 代码区域是程序的执行指令,是不允许修改的,接下来就是全局和静态数据区,然后就是栈和堆。栈是向下生长的(向地址空间减少的方向),而堆是向上生长的(向地址空间增加的方向)。在内存分配中的一个重要单元为过程活动记录(procedure activation record),它包含了过程或函数被调用时内存分配的局部数据,一个活动记录一般包含下面几个部分: 其实活动记录就是函数调用时被压入栈的数据总称,首先被压入栈的是函数或过程的参数,接着是返回地址,然后在函数执行过程中分配的局部数据等等。涉及函数调用还有一个指向当前活动记录的指针,称为框架指针(frame pointer)或fp,通常fp保存在寄存器中,而每个活动记录中,在bookkeeping information区域(薄记信息),都会有一个值(称为Control Link)指向上一个活动记录,即调用当前函数的函数活动记录,使整个执行流程中的活动记录呈现链状形式。
费了点周折,空间终于开通了,还麻烦了夏MM不少。最近项目很忙,都没有什么时间来看书,等项目忙完这段时间后,就开始将前段时间买的那堆书好好看了。以后就在这里写技术总结了,等到积累到一定数量的文章,再去和别人交換链接吧。