采用Servlet 技术的背景(通用网关,进程和线程介绍)

客户端请求,服务器端提供信息     

大家在网吧或者家里通过本地机(客户端)上网,比如我们搜索一个查询,打开一个邮件,请求所得到而显现在我们面前的数据都是从服务器端得到的。服务器是一个设备,它可以根据网络上的不同的客户端所提交的请求提供不同的信息。那么要实现数据在 Web 上传输,最开始的时候是通过编写 CGI (Common Gateway Interface)通用网关接口程序来实现的。

Common Gateway Interface(CGI——通用网关接口)

通用网关接口其实就是一个服务器方接口程序,这套接口描述了Web服务器与同一计算机的软件通信方式。是一个外部网关程序和诸如HTTP这样的信息服务器之间的接口标准.。就是一座桥,把网页和服务器中的执行程序连接起来,它把HTML上接受的指令传递给服务器,再把服务器执行的结果返回给HTML页面。

Web服务器寻找的普通HTML文档是静态的,不会改变的文件,然而一个CGI程序是实时执行的,以便输出动态信息。最简单的例子,计数器,也可以通过CGI程序来完成一个动态的交互。

CGI的缺点:

利用CGI根据用户请求生成动态主页是一种传统的方法,但是CGI一个很明显的缺点就是:CGI是根据浏览器端的http请求激活响应进程,每一个请求对应一个进程。当同时有很多请求时,程序挤占系统资源,造成效率低下

那么,什么是进程,为什么进程挤占系统资源?这个时候就要提到线程技术了。

程序,进程和线程的区别

当电脑中病毒时,很多时候会按下 Ctrl + Alt + Del 去查看有没有异样的 .exe 文件。

点击结束一个进程将终止一个程序的运行,那么所谓的进程其实就是一个程序的一次执行过程。在Windows95中,就是一个.exe文件的执行过程。

程序是一组指令的有序集合,是静态的

进程则是一组指令序列在处理机上的一次执行过程,是动态的。进程具有动态,并行,独立,异步等特性;一个进程由创建而产生,由调度而进入执行,在资源不能满足时挂起,由撤消而消亡。因此,一个进程是有生命的,且唯一的对应于一个 .exe 文件。

那么线程是什么,和进程有什么关系?

线程(Thread)是进程中某一个单一顺序的控制流,也被称为轻量进程(light-weight processes),它是一个程序的最小执行单元,可以理解为是进程中的实体。

一个进程可以拥有多个线程,一个线程必须要有一个父进程。线程不拥有系统资源,只有运行必须的一些数据结构;它与父进程的其它线程共享该进程所拥有的全部资源。线程是对CPU单元的独立占有的最小单位,每个线程共享进程的数据,在每个进程被创建的时候只有一个主线程。线程可以创建和撤消线程,从而实现程序的并发执行。一般,线程具有就绪、阻塞和运行三种基本状态。

线程的优点就在于:使同一个程序能有几个并行执行的路径,提高了执行速度;线程需要的系统开销比进程要小

总结三者,再来看CGI通用网关

总结下来,那么就很清楚知道当我们用CGI 通用网关借口来实现数据在Web上的传递时,对于客户端的每一个请求必须开启一个新实例的进程,可想而知它的速度和效率!

为了避免这种损耗,解决这个问题,我们就引入了采用多线程来代替进程的技术——Java 方向的 Servlet 技术。

在后面的文章里,我将继续讨论Servlet 技术。

 

 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值