面试题记录190714

博客介绍了服务器维护中HTTP协议里TIME_WAIT和CLOSE_WAIT状态的区别,若大量保持这两种状态会导致服务器异常。还阐述了SpringMVC中DispatcherServlet的加载过程,以及SQL的交差并操作、查询特定分数学生姓名和删除表中重复记录的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.http协议中time_wait和close_wait的区别

在服务器的日常维护过程中,会经常用到下面的命令:

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'    

它会显示例如下面的信息:

TIME_WAIT 814
CLOSE_WAIT 1
FIN_WAIT1 1
ESTABLISHED 634
SYN_RECV 2
LAST_ACK 1

常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭。一般不到万不得已的情况也不会去查看网络状态,如果服务器出了异常,百分之八九十都是下面两种情况:

(1)服务器保持了大量TIME_WAIT状态

(2)服务器保持了大量CLOSE_WAIT状态

因为linux分配给一个用户的文件句柄是有限的(可以参考:http://blog.youkuaiyun.com/shootyou/article/details/6579139),而TIME_WAIT和CLOSE_WAIT两种状态如果一直被保持,那么意味着对应数目的通道就一直被占着,而且是“占着茅坑不使劲”,一旦达到句柄数上限,新的请求就无法被处理了,接着就是大量Too Many Open Files异常,tomcat崩溃。。。

 

2.SpringMvc中DispatcherServlet的加载过程

在使用 SpringMVC 进行 Web 开发时,通常在 web.xml 中配置的 Servlet  都是 org.springframework.web.servlet.DispatcherServlet

(1)Tomcat调用DispatcherServlet 的构造函数

(2)FrameworkServlet 的构造函数

(3)调用HttpServletBean 中的 init()

(4)初始化Web应用上下文

(5)创建Web应用上下文

 

3.sql交差并

intersectexceptunion

 

4.sql:查询每门课程分数大于80的学生姓名

SELECT s.name FROM student s GROUP BY s.name Having MIN(s.score)>=80

 

5.sql:删除表中除自动主键以外所有数据都相同的重复(只保留一条)记录

delete from test where id not in (select * from ((select min(id) from test group by co1,co2)) tmp);

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值