【简答题】JavaWeb必问8道简答题

1、说一说Servlet生命周期

servlet的生命周期是初始化(init)、服务(service)、销毁(destroy)

1.初始化(init):当第一次访问Servlet时调用init方法进行初始化,只初始化一次

2.服务(service):方法被调用时调用service方法进行服务,在项目启动期间可以进行多次服务

3.销毁(destory):当服务器关闭时调用destory方法进行销毁。只销毁一次

2、什么是jsp?jsp和Servlet有什么区别?

Servlet是服务器端的程序

JSP是服务器页面程序

JSP本质上就是一个Servlet,在访问jsp时,在服务器端会将jsp先转换成servlet,再将生产的servlet的结果响应给浏览器。

jsp相当于html页面中内嵌Java代码,侧重页面显示;Servlet是中书写Java代码,侧重逻辑控制;

3、Servlet接口中有哪些方法?

1.init(ServletConfig):初始化方法,第一次请求前执行,完成servlet初始化工作

2.service(ServletRequest,ServletResponse):执行方法,一次请求执行一次。

3.destroy():销毁方法,Servlet对象应该从服务中被移除的时候,容器会调用该方法进行销毁操作

4.getServletConfig():获得ServletConfig配置对象,包括初始化参数等。

5.getServletInfo():获得Servlet描述,一般没有用。

4、什么情况下调用doGet()和doPost()?

1、doGet():地址栏url方式访问、超链接访问、以及form表单中的method属性值为get方式访问,则调用doGet()方法

2、doPost():form表单中的method属性值为post方式访问,则调用doPost()方法

5、get请求和post请求有何区别

1. 表现形式:get在url中拼凑请求参数。Post请求参数在请求体中;

2. 安全性:get请求参数追加在路径上,可见不安全,post请求参数在请求体中,一般人不可见,较安全。

3. 数据大小:get提交数据有限,post无限。

6、forward和redirect的区别

1.地址栏是否改变:forward浏览器端网址不会发生变化,redirect浏览器端地址会变成;

2.是否可共享请求参数:forward是转发,属于同一个请求,request域中的数据可以传递;redirect是两次请求,request域中的数据不能传递;

3.是否可站外跳转:forward一般用于网站内部跳转,redirect可在站内跳转,也可跳转到其它网站。

7、JSP九大内置对象

1.request:请求对象

2.response:响应对象

3.session:回话对象

4.pageContext:页面上下文对象

5.application:类型是ServletContext,表示servlet上下文对象,可以在整个web项目中共享资源。

6.out  输出对象

7.page JSP网页本身

8.config Servlet的配置对象

9.exception 异常对象

8、讲解JSP中的四种作用域。

application:在当前web项目中有效

session:在当前会话中有效

request:在当前请求中有效

page:在当前页面有效

restcontroller和controller区别

1. Controller, RestController的共同点

都是用来表示Spring某个类的是否可以接收HTTP请求

2.  Controller, RestController的不同bai点

@Controller标识一个Spring类是Spring MVC controller处理器

@RestController:  a convenience annotation that does nothing more than adding the@Controller and@ResponseBody annotations。  @RestController是@Controller和@ResponseBody的结合体,两个标注合并起来的作用。

3、如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

例如:本来应该到success.jsp页面的,则其显示success.

4、如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。

5、如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

js打字机效果

<!DOCTYPE html>
<html lang=”en”>
<head>
<metacharset=”UTF-8″/>
<title>Title</title>
</head>
<body>
<divid=”text”></div>
</body>
<script>
letdivTyping = document.getElementById(‘text’)
leti = 0,
timer = 0,
str =
‘xuduowei.com用JS实现动态打字效果,setTimeout定时器知识可参看 https://www.itwenda.com/course/js/js-ji-shi-qi’
functiontyping() {
if (i <= str.length) {
divTyping.innerHTML = str.slice(0, i++) + ‘_’
//  指定时间之后执行代码
timer = setTimeout(typing, 100)
} else {
divTyping.innerHTML = str//结束打字,移除 _ 光标
//取消由 clearTimeout() 设定的定时操作
clearTimeout(timer)
}
}
typing()
</script>
</html>

vue学习篇–组件只能可以通过this.$store.state访问到状态,为什么不能在组件中直接修改state原因

在组件只能可以通过this.$store.state访问到状态,为什么不能在组件中直接修改state?
1、为了保证数据时单向流动的,只能在store中操作数据,而组件只能够使用状态,不能修改。

mutations中必须是同步操作,而在actions中可以有异步操作,
所有mutations才能操作state,如果actions中能操作state的话,数据会变得难以管理

mutations中的数据变化是可以被vue的开发工具vue-devTools观测到。 actions中的数据变化是不可以被vue的开发工具vue-devTools观测到。
所以需要在mutations中做操作。

 

2、什么时候应vuex:

多个组件共享数据,中大型项目。

 

如何在VC运行环境下不出现press any key to continue

如何在VC运行环境下不出现press any key to continue
(如何在DOS系统中不是立刻结束执行)
方法:在程序末尾加一个getch(); 注意加头文件conio.h

解析:

getch():

所在头文件:conio.h

函数用途:从控制台读取一个字符,但不显示在屏幕上

函数原型:int getch(void)

返回值:读取的字符

例如:

char ch;或int ch;

getch();或ch=getch();

用getch();会等待你按下任意键,再继续执行下面的语句;

用ch=getch();会等待你按下任意键之后,把该键字符所对应的ASCII码赋给ch,再执行下面的语句。

#include<stdio.h>
#include<math.h>
void main()
{
printf(“www.itwenda.com”);
getch();
}

stp中根桥,根端口,指定端口,备用端口分别是什么?

指定端口是交换机向所连网段转发配置BPDU的端口, 每个网段有且只能有一个指定端口。 一般情况下, 根桥的每个端口总是指定端口

根端口是非根交换机去往根桥路径最优的端口。 在一个运行STP协议的交换机上最多只有一个根端口, 但根桥上没有根端口。如果一个端口既不是指定端口也不是根端口, 则此端口为预备端口。 预备端口将被阻塞。

扩展资料:

注意事项:

交换机通电启动后,还不知道网络中有没有别人,所以认为是根桥,并把这个消息通过BPDU通告出去,每台交换机也会收到其他交换机发来的BPDU,比较一下其中的BID,即可选举出根桥。

根桥选出后,其他交换机都可以叫指定桥。指定桥不再主动发出BPDU,只会转发根桥的BPDU。根桥每间隔Hello Time(默认2秒)时间周期性发出BPDU。

stp中选举根端口时需要考虑以下哪些参数

STP中选举根端口时需要考虑以下:端口优先级、端口到达根交换机的Cost、端口槽位编号,如G0/0/1。

STP协议利用BPDU中三个Field――路径开销、网桥ID、端口优先级/端口ID来确定到根桥的最佳路径顺序:

路径开销:所有端口开销的综合为路径开销,路径开销低的端口为转发端口。网桥ID:同一个交换机上有两条链路达到根桥(如平行链路),那么最佳路径就由下面的端口优先级或端口ID决定

端口优先级/端口ID:端口优先级范围0~63,缺省值32,具有低优先级的端口将转发数据。如果端口优先级相同,端口ID则是决定因素,低端口ID将转发数据。

扩展资料

STP 端口状态

Disable – 被关闭的端口,Blocking – 初始状态或是被 STP 阻塞状态,该状态停留 Max Age,始终只能收到 BPDU,如果 Max Age 都没有收到 BPDU,就转到 Listening 状态

Listening – 收发 BPDU,以确信在传输数据帧时网络无环路,停留 Forward Delay

Learning – 收发 BPDU,学习 MAC 地址,但不转发数据帧,停留 Forward Delay

Forwarding – 除非不存在环路,并且确定它是到达根交换机的最佳路径,不然永远不会进入该状态。

 

TTL值

TTL 即 Time To Live,缓存的生存时间。TTL是一个ip协议的值。IP协议中TTL值是数据包的一个生命周期,每当经过一次路由转发时都会减一,当减到0时,数据包将会丢弃,丢弃者会发送一个ICMP数据包,通知发送者,主要用来防止出现路由环路时,数据包无限循环转发,而造成网络拥堵,这个值使用一个字节表示,也就是最大只有255,如果两个通讯者之间经过的路由超过255时,它是不能通过IP进行通讯的。

这个值还用来探测路径,数据包的TTL值从1开始,一个一个增加,直到到达对方,这样通过标识回应者,就可以知道整个传输路径了,Windows中的命令为tracert,就是使用的这种机制。

ARP设置TTL值 高速缓存是为了加快IP到MAC地址查询的速度。

TTL(Time To Live)生存时间,也就是服务器允许数据在缓存中存放的时间。该值设置的过小,数据更新的更频繁,数据在网络中的一致性就越高,但是这样增加了服务器的负担,使得名字解析时间变长,TTL越大名字解析时间就越短,但是数据在缓存中存放的时间过长,缓存中的数据可能过时,跟服务器上的数据不一致。

TTL指定数据包被路由器丢弃之前允许通过的最大网段数量,是IP数据包在网络中可以转发的最大跳数(跃点数),TTL位于IPv4包的第9个字节,是一个8 bit字段。,它告诉网络,数据包在网络中的时间是否太长而应被丢弃

由于每个路由器都至少要把TTL域减一,TTL通常表示包在被丢弃前最多能经过的路由器个数

TTL的最大值是255,推荐值是64,windows中TTL默认值保存在注册表HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 下的DefaultTTL(DWORD)中,修改设置后重启才生效。(修改可以有效防止被人推测到操作系统)

TTL值默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的默认TTL值为128,Win7系统的TTL值是64,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。

TTL(Time-To-Live)的作用是限制数据包在网络中存在的时间,防止数据包不断的在IP互联网络上循环。

作者:楊志栋
链接:https://www.jianshu.com/p/edb3ac63d1cf
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

ipv4首部长度最大值是多少?

最大值是60字节。

占4位,可表示的最大数值是15个单位(一个单位为4字节)因此IP的首部长度的最大值是60字节 区分服务: 占8位,用来获得更好的服务,在旧标准中叫做服务类型。

但实际上一直未被使用过.1998年这个字段改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下都不使用这个字段。

网际协议版本4(英语:Internet Protocol version 4,IPv4),又称互联网通信协议第四版,是网际协议开发过程中的第四个修订版本,也是此协议第一个被广泛部署的版本。

IPv4是互联网的核心,也是使用最广泛的网际协议版本,其后继版本为IPv6,直到2011年,IANA IPv4位址完全用尽时,IPv6仍处在部署的初期。

发展历史:

IPv4在IETF于1981年9月发布的 RFC 791 中被描述,此RFC替换了于1980年1月发布的 RFC 760。

IPv4是一种无连接的协议,操作在使用分组交换的链路层(如以太网)上。此协议会尽最大努力交付数据包,意即它不保证任何数据包均能送达目的地,也不保证所有数据包均按照正确的顺序无重复地到达。这些方面是由上层的传输协议(如传输控制协议)处理的。

2019年11月26日,全球所有43亿个IPv4地址已分配完毕,这意味着没有更多的IPv4地址可以分配给ISP和其他大型网络基础设施提供商。

RSTP协议的原理

RSTP (Rapid STP),传统的STP协议收敛的时间分为两部分
1. 选角色时间
2. 选角色之后的等待时间(时长为2倍的Forwarding Delay time)
2倍 Forwarding Delay time的由来:
1. 第一个Forwarding Delay Time,在网络拓扑变化时,各个桥需要重新选举Root Port和 Backup Port。如果在各桥没有选出新的Root Port和Backup Port时,将新的Root Port设置为Forwarding,这样就导致整个网络有瞬间的环路。
2. 第二个Forwarding Dealy Time,在网络拓扑变化后,各个桥都选举出了对应的 RootPort和Backup Port,并且进行了MAC地址的调整(flush某些端口上的mac地址),此时如果直接放通新的RootPort,会导致一瞬间的未知名单播泛洪,对整个网络造成冲击。所以需要保持learning状态15s,待MAC收敛后,再Forwarding RootPort。

STP的收敛主要是靠定时器维持,而RSTP不同。RSTP采用Proposal/Agree机制来实现快速的收敛。

Proposal/Agree机制:

原网络topo中,AP处于DISABLE状态,EP为Forward,但仅连接用户,不会造成环路。DP处于FORWARDING状态,RP亦处于FORWARDING状态。

新网络中,由于新的链路UP起来,网络的TOPO发生了变化。刚UP起来,双方STP状态均为BLOCK。假设最上方交换机为 “根桥” ,由于新的RP(此时还没成为RP)距离根桥的路径更短,根桥从DP向下发交换机发送一封BPDU报文, 建议 其将自己设置为 “指定交换机” ,将直连端口设置为RP。下方交换机收到建议后,将直连端口设置为RP,BLOCK自己的DP,并FORWARDING新RP,通过新RP向上方交换机发送一封Agree报文,上方交换机收到后,设置DP为FORWARDING。这样,从拓扑变化的交换机开始,一级一级向叶子节点收敛。