文末
逆水行舟不进则退,所以大家要有危机意识。
同样是干到35岁,普通人写业务代码划水,榜样们深度学习拓宽视野晋升管理。
这也是为什么大家都说35岁是程序员的门槛,很多人迈不过去,其实各行各业都是这样都会有个坎,公司永远都缺的高级人才,只用这样才能在大风大浪过后,依然闪耀不被公司淘汰不被社会淘汰。
为了帮助大家更好温习重点知识、更高效的准备面试,特别整理了《前端工程师核心知识笔记》电子稿文件。
内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。
269页《前端大厂面试宝典》
包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。
前端面试题汇总
它只有一个onStartup方法,方法只有一个参数就是ServletContext,这个ServletContext由Tomcat创建好后提供给SpringMVC,SpringMVC在启动过程中调用这个onStartup方法,在这个方法内完成自身的创建和初始化,还要把Servlet和Filter等注册到ServletContext里。
这些工作都是SpringMVC要做的,而不是我们要做的,所以SpringMVC肯定已经实现了这个接口,我们查看下类型信息,如下图02:
我们发现了一个看着很重要的类,就是:
AbstractAnnotationConfigDispatcherServletInitializer
可惜这个类是抽象的,肯定是不能直接用的,但是它里面已经包含了刚刚上面提到的所有完整的启动逻辑过程。
如果你对SSM很熟悉或Spring的官方文档看的很熟悉的话,你一定知道这个类是怎么用的。是的,我们需要定义一个类来继承它即可。
先看下官方文档上给的用法,如下图03:
继承之后,我们需要提供三方面信息,一个是用于注册到根容器中的类,一个是用于注册到Servlet容器中的类,一个是核心Servlet的映射URL。
注意,这里说的容器指的是Spring的ApplicationContext这个容器,其中根容器和Servlet容器是父子关系,且在SpringMVC中核心Servlet映射的URL必须是“/”。
下面给出一个我在几年前为公司搭建框架时的代码,如下图04:
这就是以编程的方式来完成SpringMVC的启动。我们自己定义的这个类就是前文提到的“感兴趣”的类。
这个类是不用(或不能)向Spring容器注册的,因为这个类是感兴趣的类,所以Tomcat会从jar包里把它找出来,这样SpringMVC就拿到了我们定义的这个类。
其实最主要的是这时候根本还没有Spring容器呢,哈哈,因为Spring容器就是在这个类里才创建出来的,有点意思吧。
其实这个类里包含的内容非常多,我们都可以使用写代码的方式来进行配置。下面举几个示例。
比如对核心Servlet的一些定制化设置,如下图05:
比如可以加进去一些自己需要的过滤器,如下图06:
比如可以对文件上传进行一些配置,如下图07:
当然,还可以介入到Spring容器的初始化过程中,进行一些额外的操作,如激活特定的Profile等,如下图08:
启动过程中做的事情
其实前面已经说了一些了,这里再来个完整版的,主要包括的事情有:
1、创建根容器。
2、然后把根容器放入ServletContext中。
3、接着创建Servlet容器。
4、然后使用Servlet容器去创建核心Servlet。
5、接着把核心Servlet注册到ServletContext中。
6、接着再注册一些过滤器。
下面我们使用几张图把这些内容一个个展示一下,需要详细了解的可以去看看对应的源码。
创建根容器,可以看到是基于注解的容器类,如下图09:
将根容器放入ServletContext中,因为ServletContext在应用运行期间一直存在,所以根容器是一个全局性的,也一直存在,如下图10:
创建Servlet容器,容器类也是基于注解的,和根容器类是一样的,如下图11:
使用Servlet容器去创建核心Servlet,如下图12:
算法刷题
大厂面试还是很注重算法题的,尤其是字节跳动,算法是问的比较多的,关于算法,推荐《LeetCode》和《算法的乐趣》,这两本我也有电子版,字节跳动、阿里、美团等大厂面试题(含答案+解析)、学习笔记、Xmind思维导图均可以分享给大家学习。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
写在最后
最后,对所以做Java的朋友提几点建议,也是我的个人心得:
-
疯狂编程
-
学习效果可视化
-
写博客
-
阅读优秀代码
-
心态调整