1. http2.0 与 1.1相比:
HTTP/2采用二进制格式而非文本格式 HTTP/2是完全多路复用的,而非有序并阻塞的——只需一个连接即可实现并行 使用报头压缩,HTTP/2降低了开销 HTTP/2让服务器可以将响应主动“推送”到客户端缓存中
状态码:1xx(临时响应) 2xx(成功) 3xx(已重定向) 4xx(请求错误) 5xx(服务器错误)
200(成功) 301(永久移动) 302(临时移动)
400(错误请求) 服务器不理解请求的语法。
401(未授权) 请求要求进行身份验证。登录后,服务器可能会返回对页面的此响应。
403(已禁止) 服务器拒绝请求。
404(未找到) 服务器找不到请求的网页。
500(服务器内部错误)
503(服务不可用) 目前无法使用服务器(由于超载或进行停机维护)。通常,这只是一种暂时的状态。
2.volatie 不保证原子性自己的理解:
如果线程B读变量i发生在线程A写变量之后,那就保证了i的可见性,B读到的i一定是主存中最新的,符合happens-before规则,此时数据是一致的,不会出问题。 如果线程B读变量i发生在线程A写变量之前,A先读,B再读,此时A还没有写,那双方仍然读到的是主存中的最新值,同样保证了i的可见性。但很有可能产生数据不一致,不是原子性操作。
另外,对volatile变量的只读或只写,具有原子性;但类似于++的操作(先读后写),不具有原子性。
3.Servlet单例与多线程:
servlet单实例多线程处理原理: servlet中的init方法只有在启动(例如web容器启动,要看loadOnStartup的设置)的时候调用,也就是只初始化一次,这就是单实例。 对于用户到达Servlet的请求,Servlet容器会创建特定于这个请求的ServletRequest对象和ServletResponse对象,然后调用对应Servlet单一实例的service方法(需要同步)。service方法从ServletRequest对象获得客户请求信息,处理该请求,并通过ServletResponse对象向客户返回响应信息。
另外,Struts1是单例的,Struts2为每个请求创建一个对象实例,不存在线程安全问题。
4.Boolean占几字节
1)boolean a=true;//这个a在JVM中占4个字节即:32位。 2)boolean[] b = new boolean[10];//数组时,每一个boolean在JVM中占一个字节。 理由: 1)JAVA规范中没有定义boolean类型的大小。 2)但是:在JVM规范第2版中讲得十分清楚。我上边的结论就是从它当中取出来的。
5.黑盒测试和白盒测试
黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。 白盒测试:已知产品的内部工作过程,可以进行测试证明每种内部操作是否符合设计规格要求,所有内部成分是否经过检查