一、Servlet技术
1、什么是servlet
Sun公司定制的一种扩展web服务器端的组件规范(服务器端的Java应用程序)。具有独立于平台和协议的特性,可以生成动态的web页面,担当客户端请求与服务器端响应的中间层。
2、与CGI区别
Servlet与CGI的区别在于服务器的进程中,servlet是通过多线程的方式运行service方法,一个servlet实例可以服务于多个请求,一般不会被销毁。CGI对每个请求都产生新的进程,服务完成后就销毁,所以CGI效率低于servlet。
3、servlet什么时候被实例化
如果没设置loadOnStartup,则在第一次被调用时实例化(servlet被实例化后,tomcat会调用init()方法初始化这个对象)
设置loadOnStartup分三种情况:
(1)loadOnStartup < 0
负数的情况下,web容器启动的时候不会做实例化,第一次被调用的时候被实例化
(2)loadOnStartup > 0
web容器启动的时候做实例化,顺序是有小到大,正整数越小的先被实例化
(3)loadOnStartup = 0
web容器启动的时候做实例化,相当于最大正整数,web启动时,最后被初始化
4、servlet声明周期
加载servlet:tomcat第一次访问servlet的时候,tomcat会负责创建servlet实例;
初始化:servlet实例化后,tomcat会调用init()方法初始化该实例化对象;
处理请求:当浏览器访问servlet的时候,servlet会调用service()方法处理请求:
销毁:当tomcat停止或servlet从tomcat删除的时候,会自动调用destroy()方法,让该实例释放占用的资源。一个servlet若长时间不被使用,也会被tomcat自动删除;
卸载:servlet调用完destroy()方法后,等待垃圾回收。若有需要再次使用该servlet,会重新调用init()方法进行初始化。
5、相关博文链接
https://www.cnblogs.com/disneyland/p/4692339.html servlet什么时候被实例化
https://blog.csdn.net/u012129558/article/details/52329543
https://blog.csdn.net/heyanfeng22/article/details/45898661 servlet的单例理解
二、字符串
1、String、StringBuffer和StringBuilder的区别
相关博文链接:
http://www.cnblogs.com/Wilange/p/7570633.html
http://www.cnblogs.com/Wilange/p/7572125.html
2、String str = new String("abc")和String str2 = "abc"这两句代码执行后分别会创建几个对象?
相关博文链接:
https://blog.csdn.net/zmx1026/article/details/46054903
三、java的集合框架
1.相关博客链接
https://www.cnblogs.com/leskang/p/6029780.html LinkedList的底层数据结构
https://blog.csdn.net/zhanglh046/article/details/52882994 HashMap的底层数据结构
https://blog.csdn.net/dou_yuan/article/details/77675872 HashMap的底层数据结构
https://blog.csdn.net/anxpp/article/details/51234835 HashMap的底层数据结构
https://www.cnblogs.com/KingIceMou/p/6976574.html(HashMap扩容)
https://blog.csdn.net/aichuanwendang/article/details/53317351(HashMap扩容JDK1.8相比JDK1.7改进)