服务器说的“路、通道、线程”是什么意思?
首先你要明白一点:路、核、线程三者的区别。
路:独立的CPU的个数。
核:单个CPU的物理核心(也叫真实核心)数量。
线程:程序中顺序控制流程的数量。
举个例子,双路四核八线程服务器指的就是该服务器有2个独立的CPU,每个CPU有2个物理核心(2x2=4核),每个核心拥有2条线程(4x2=8线程)。个人PC平台上很少出现“路”这个术语,以前奔腾时代英特尔公司面向桌面级用户倒是做过一些高端的双CPU平台,就是说一块主板上装了两个独立的CPU,和现在的双核CPU不是一个概念。多核CPU是由于后期技术发展后,芯片集成度越来越高,可以把多个物理核心集成在一个CPU上。打个比喻(虽然不恰当),如果把双路看做一对健康的双胞胎的话,那么双核就是一对连体双胞胎。
而所谓的四核八线程(注意:这里没有“路”定义)就是说,一颗独立的CPU上的真实核心数量为4,但是通过超线程技术又模拟出4个核心,看上去像8个核心了,但有4个是模拟出来的,不是真实的,以此类推。这就是所谓的超线程,目前是英特尔公司独有的技术。
至于“几通道”,它指的是服务器进行资源共享操作时的信道数量,它表现的是服务器的网络共享通信那一块的性能,和上面的三个术语面向的对象不同,他们仨表现的是服务器的数据处理那一块的性能,数量越高,服务器多任务处理能力越强。当然,这四个家伙一起展现了一台服务器的综合性能。
服务器为什么叫服务器,因为它要提供服务,而服务器上要软件才能提供服务
应用程序的意思是什么?不就是软件喽,而应用程序服务器就是软件服务端所在的服务器
比如QQ
---------------------
A发信息给B的过程
A---QQ应用程序服务器---B
QQ不是有个会员聊天记录吗?
那么就用到数据库服务器了,在A发信息给B的过程中,就加入了应用程序服务器把信息存入数据库服务器
哎。。。。讲不明白,只可意会,不可言传(主要本人表达能力有限)
1、说一说Servlet的生命周期
答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javaxservletServlet接口的
init,service和destroy方法表达。 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣
运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁
,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
2、JAVA SERVLET API中forward() 与redirect()的区别?
答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并
重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用
forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用
sendRedirect()方法。
3、Servlet的基本架构
答:
public class ServletName extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
}
为什么要使用
servlet
servlet
可以很好地替代公共网关接口(Common
Gateway
Interface,CGI)脚本。通常
CGI
脚本是用
Perl
或者
C
语言编写的,它们总是和特定的服务器平台紧密相关。
而
servlet
是用
Java
编写的,所以它们一开
始就是平台无关的。这样,Java
编写一次就可以在任何平台运行(write
once,run
anywhere)的承诺就同
样可以在服务器上实现了。servlet
还有一些
CGI
脚本所不具备的独特优点:
■servlet
是持久的。servlet
只需
Web
服务器加载一次,而且可以在不同请求之间保持服务(例如一
次数据库连接)。与之相反,CGI
脚本是短暂的、瞬态的。每一次对
CGI
脚本的请求,都会使
Web
服务器加
载并执行该脚本。一旦这个
CGI
脚本运行结束,它就会被从内存中清除,然后将结果返回到客户端。
CGI
脚本的每一次使用,都会造成程序初始化过程(例如连接数据库)的重复执行。
■servlet
是与平台无关的。如前所述,
servlet
是用
Java
编写的,它自然也继承了
Java
的平台无关
性。
■servlet
是可扩展的。
由于
servlet
是用
Java
编写的,
它就具备了
Java
所能带来的所有优点。
Java
是健壮的、面向对象的编程语言,它很容易扩展以适应你的需求。servlet
自然也具备了这些特征。
■servlet
是安全的。从外界调用一个
servlet
的惟一方法就是通过
Web
服务器。这提供了高水平的
安全性保障,尤其是在你的
Web
服务器有防火墙保护的时候。
■setvlet
可以在多种多样的客户机上使用。由于
servlet
是用
Java
编写的,所以你可以很方便地在
HTML
中使用它们,就像你使用
applet
一样。在本书中您将看到这一点。
6
、
什么是
servlet
servlet
可以被认为是服务器端的
applet。servlet
被
Web
服务器加载和执行,就如同
applet
被浏览器加
载和执行一样。servlet
从客户端(通过
Web
服务器)接收请求,执行某种作业,然后返回结果。
使用
servlet
的基本流程如下:
·客户端(很可能是
Web
浏览器)通过
HTTP
提出请求。
·Web
服务器接收该请求并将其发给
servlet。如果这个
servlet
尚未被加载,Web
服务器将把它加载
到
Java
虚拟机并且执行它。
·servlet
将接收该
HTTP
请求并执行某种处理。
·servlet
将向
Web
服务器返回应答。
·Web
服务器将从
servlet
收到的应答发送给客户端。
由于
servlet
是在服务器上执行,通常与
applet
相关的安全性的问题并不需实现。servlet
使相当数
量的不可能或者至少是很难由
applet
实现的功能的实现成为可能。与现有系统通过
CORBA,RMI,socket
和本地(native)调用的通信就是其中的一些例子。另外,一定要注意:Web
浏览器并不直接和
servlet
通
信,
servlet
是由
Web
服务器加载和执行的。
这意味着如果你的
Web
服务器有防火墙保护,
那么你的
servlet
也将得到防火墙的保护。
7
、
什么是
servlet
链?
与
UNIX
和
DOS
命令中的管道类似,你也可以将多个
servlet
以特定顺序链接起来。
在
servlet
链中,一个
servlet
的输出被当作下一个
servlet
的输入,而链中最后一个
servlet
的输出被返回到浏览器。
servlet
链接提供了将一个
servlet
的输出重定向为另一个
servlet
的输入的能力。这样,你就可以划分
工作,从而使用一系列
servlet
来实现它。另外,你还可以将
servlet
组织在一起以提供新的功能。
这需要看你的客户机的应用是什么方式了。
基本思路有二:
1、如果是http访问的,可以在服务器上装一个代理服务器软件;
2、如果是tcp方式的,可以在服务器上装一个IP端口转发软件;
以上方式的原理都是把服务器当作一个路由器,这样两个网络可以保持互相的独立性。
-----------------------------------
呵呵,放松,一切都会好起来的!
0条评论