共计 3004 个字符,预计需要花费 8 分钟才能阅读完成。
锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题 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 容器启动的时候做实例化解决,程序是由小到大,正整数小的先被实例化,如果不写或为正数,则第一次申请实例化。
更多面试题或学习资源可查看我主页或评论获取