阐述Servlet和CGI的区别。
CGI的不足之处:。
需要为每个请求启动一个操作CGI程序的系统进程,如果请求频繁,这将会带来很大的开销。
需要为每个请求加载和运行一个CGI程序,这将带来很大的开销。
需要重复编写处理网络协议的代码以及编码,这些工作都是非常耗时的。
Servlet的优点:。
只需要启动一个操作系统进程以及加载一个JVM,大大降低了系统的开销。
如果多个请求需要做同样处理的时候,这时候只需要加载一个类,这也大大降低了开销。
所有动态加载的类可以实现对网络协议以及请求解码的共享,大大降低了工作量。
Servlet能直接和Web服务器交互,而普通的CGI程序不能,Servlet还能在各个程序之间共享数据,使数据库连接池之类的功能很容易实现。
补充:SunMicrosystems公司在1996年发布Servlet技术就是为了和CGI进行竞争,Servlet是一个特殊的Java程序,一个基于Java的Web应用通常包含一个或多个Servlet类,Servlet不能够自行创建并执行,它是在Servlet容器中运行的,容器将用户的请求传递给Servlet程序,并将Servlet的响应回传给用户,通常一个Servlet会关联一个或多个JSP页面,以前CGI经常因为性能开销上的问题被诟病,然而FastCGI早就已经解决了CGI效率上的问题,所以面试的时候大可不必信口开河的诟病CGI,事实上有很多你熟悉的网站都使用了CGI技术。
where查询语句中避免使用**,=或<>**操作符,搜索引擎会执行全表扫描而不执行创建的索引。
where查询语句中避免使用or来连接条件查询数据,也会导致搜索引擎执行全表扫描而不执行创建的索引,例如:selectid,namefromuserwhereage=18orage=25可以修改为selectid,namefromuserwhereage=18unionallselectid,namefromuserwhereage=25。
**in和notin也避免使用,也将导致全表扫描,例如:selectid,namefromuserwhereagein(18,19,20)**如果是连续的则可以考虑使用betweenand,例如:selectid,namefromuserwhereagebetween18and20。
like语句导致全表扫描,例如:selectid,namefromuserwherenamelike‘%微信%’。
wehre查询语句中避免使用参数,也会全表扫描,SQL在运行时才会进行局部变量的解析,优化程序不能将访问计划的选择推迟到运行时,它必须在编译时进行选择,如果编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项,如下面语句将进行全表扫描:selectid,[email protected]:selectid,namefromuserwith(index(索引名))[email protected]
where查询语句避免使用表达式,也会导致查询的时候放弃使用索引导致全表扫描,例selectid,namefromuserwhereage/2=10**可以更改为**selectid,namefromuserwhereage=102*。
where查询语句避免使用函数操作,也会导致查询的时候放弃使用索引导致全表扫描,例如:selectid,namefromuserwheresubstring(name,1,3)=’abc’可以改为selectid,namefromuserwherenamelike‘abc%’。
不要使用select*fromuser查询,要用具体的字段名,不要返回任何用不到的字段。
不要使用游标,大家都知道游标的效率非常差。

避免出现大实务业务,会降低系统的并发能力。
1.课程上传:如果您有不错的原创课程,请到个人中心上传,进行审核免费帮你发布宣传
2.学习资源、资料等大部分都是由会员用户上传,非盈利仅供个人私下学习与交流!不可商用,版权归原作者所有,本站邮箱:[email protected]!
3.本站作为网络服务提供者,对非法转载,盗版行为的发生不具备充分的监控能力(但我们会在发布之前尽最大努力来核实这些信息),站内提供的所有可下载资源,本站保证未做任何负面改动,我们以交流学习为目的,只作为购买原版的参考
4.推荐:只需¥128 充值开通(终身VIP会员)就可以终身免费下载学习全部资源,非常超值!【点击立即开通】学习更多名师讲座内容