锁屏面试题百日百刷-tomcat有哪几种connector运行模式

锁屏面试题百日百刷,每个工作日坚持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cc/#/introductionPage。已收录了每日更新的面试题的所有内容,还包含特色的解锁屏幕复习面试题、每日编程题目邮件推送等功能。让你在面试中先人一步,吊打面试官!接下来的是今日的面试题:

====Tomcat的缺省端口是多少,怎么修改?

缺省端口8080

  1. 找到Tomcat目录下的conf文件夹
  2. 进入conf文件夹里面找到server.xml文件
  3. 打开server.xml文件
  4. 在server.xml文件里面找到下列信息

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" uriEncoding="utf-8"/> port="8080"改成你想要的端口

====tomcat有哪几种Connector 运行模式(优化)?

bio:传统的Java I/O操作,同步且阻塞IO。 maxThreads="150"//Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程 数。默认值200。可以根据机器的时期性能和内存大小调整,一般可以在400-500。最大可以在800左右。 minSpareThreads="25"---Tomcat初始化时创建的线程数。默认值4。如果当前没有空闲线程,且没有超 过maxThreads,一次性创建的空闲线程数量。Tomcat初始化时创建的线程数量也由此值设置。 maxSpareThreads="75"--一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。默认 值50。一旦创建的线程超过此数值,Tomcat会关闭不再需要的线程。线程数可以大致上用 “同时在线人数* 每秒用户操作次数*系统平均操作时间” 来计算。 acceptCount="100"----指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请 求数,超过这个数的请求将不予处理。默认值10。如果当前可用线程数为0,则将请求放入处理队列中。这个 值限定了请求队列的大小,超过这个数值的请求将不予处理。 connectionTimeout="20000" --网络连接超时,默认值20000,单位:毫秒。设置为0表示永不超时, 这样设置有隐患的。通常可设置为30000毫秒。

nio:JDK1.4开始支持,同步阻塞或同步非阻塞IO。指定使用NIO模型来接受HTTP请求 protocol="org.apache.coyote.http11.Http11NioProtocol" 指定使用NIO模型来接受HTTP请 求。默认是BlockingIO,配置为protocol="HTTP/1.1" acceptorThreadCount="2" 使用NIO模型时接收线程的数目

aio(nio.2):JDK7开始支持,异步非阻塞IO。 apr:Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作, 从而大大地 提高Tomcat对静态文件的处理性能。

<!--

<Connector connectionTimeout="20000" port="8000" protocol="HTTP/1.1"

redirectPort="8443" uriEncoding="utf-8"/>

-->

<!-- protocol 启用 nio模式,(tomcat8默认使用的是nio)(apr模式利用系统级异步io) -->

<!-- minProcessors最小空闲连接线程数-->

<!-- maxProcessors最大连接线程数-->

<!-- acceptCount允许的最大连接数,应大于等于maxProcessors-->

<!-- enableLookups 如果为true,requst.getRemoteHost会执行DNS查找,反向解析ip对应域

名或主机名-->

<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"

connectionTimeout="20000"

redirectPort="8443

maxThreads=“500”

minSpareThreads=“100”

maxSpareThreads=“200”

acceptCount="200"

enableLookups="false"

/>

其他配置:

maxHttpHeaderSize="8192" http请求头信息的最大程度,超过此长度的部分不予处理。一般8K

URIEncoding="UTF-8" 指定Tomcat容器的URL编码格式。

disableUploadTimeout="true" 上传时是否使用超时机制

enableLookups="false"--是否反查域名,默认值为true。为了提高处理能力,应设置为false

compression="on" 打开压缩功能

compressionMinSize="10240" 启用压缩的输出内容大小,默认为2KB

noCompressionUserAgents="gozilla, traviata" 对于以下的浏览器,不启用压缩

compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

些资源类型需要压缩

====Tomcat有几种部署方式?

第一种:直接将 web 项目文件(一般是复制生成的war包)复制到tomcat的webapps目录中。

第二种:在本地tomcat的conf目录中,新建Catalina/localhost目录(这里要注意文件名的大小写),然后在该目录下新建一个xml文件,名字不可以随意取,要和path后 的名字一致,我这里就应该是test.xml文件,它的具体内容为:

<Context docBase="D:\work\test\web" path="/test" reloadable="true"/>

第三种:在tomcat中的conf目录下的server.xml文件中,在<Host/>节点中添加一个context,具体为:

<Context Path="/test" Docbase="C:\work\test\WebContent"  Debug="0" Privileged="True" Reloadable="True"></Context>

====tomcat容器是如何创建servlet类实例?用到了什么原理?

当容器启动时,会读取在webapps目录下所有的web应用中的web.xml文件,然后对xml文件进行解析,并读取servlet注册信息。然后,将每个应用中注册的servlet类都进行加载,并通过反射的方式实例化。(有时候也是在第一次请求时实例化)在servlet注册时加上loadOnStartup参数,如果为正数,则在一开始就实例化,web容器启动的时候做实例化处理,顺序是由小到大,正整数小的先被实例化如果不写或为负数,则第一次请求实例化。

更多面试题或学习资源可查看我主页或评论获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值