网络编程基础:HTTP、Java 与线程的深入解析
1. HTTP基础知识与CGI
HTTP具有向下兼容性,以确保转换顺利进行。HTTP主要规定了对象的传输,但对于发送的数据如何到达应用程序,HTTP并未定义相关机制。长期以来,由NCSA开发的通用网关接口(Common Gateway Interface,CGI)是通过HTTP服务器访问程序的唯一途径。
使用CGI的Web服务器通常有一个名为CGI - BIN的目录,其中常包含Perl脚本或小型C程序。当客户端向这些程序的URI发送请求时,Web服务器会创建一个新进程,并为该进程提供请求的所有数据和一些环境变量。如果程序的输出写入标准输出(stdout),则会作为响应发送回客户端。
CGI的优点在于应用进程与服务器进程分离,CGI程序可以用任何语言编写,且不会导致服务器崩溃,也没有可能因服务器版本不同而改变的专有API。然而,CGI存在一个巨大的缺点,即资源消耗大。每个请求都需要创建一个新进程,启动时需要初始化,执行后还需销毁,这期间会给操作系统带来负担,因为进程切换在计算时间上成本较高。
例如,一个热门服务器的主要应用通过CGI启动,该应用在无负载系统上执行需要五秒。如果一分钟内有一千个请求涌入,服务器将不堪重负。
为了解决CGI的问题,FastCGI应运而生。其主要优点是每个应用只需启动一次进程,该进程在Web服务器运行期间一直存活。此外,FastCGI使用全双工连接传递请求变量,相比CGI通过环境变量和管道传递数据,不仅有速度优势,还能让应用在与Web服务器不同的计算机上运行。
2. Java语言的发展与应用
Java语言在1996年因可嵌
订阅专栏 解锁全文
720



被折叠的 条评论
为什么被折叠?



