1、SpringMVC中拦截器和过滤器的区别
1)过滤器Filter是位于Servlet的规范,拦截器Interceptor是SpringMVC的;
2)所有请求都经过过滤器Filter,而只有SpringMVC框架中的请求才会经过拦截器;
3)过滤器只能获取request和response,拦截器可以拿到方法上的注解、方法名和所属类,颗粒度比较细,拦截器可以用来实现接口鉴权;
4)过滤器Filter只有doFilter方法,拦截器有三个回调方法:Controller层前、Controller层后和全部完成后;
2、核心线程5,最大线程10,线程队列设置100,来了8个任务,线程池怎么工作
创建5个核心线程进行领取5个任务,剩余任务进入队列,等核心线程空出来之后再去领取下个任务进行,并不会创建额外的线程
3、SpringBoot中内置Tomcat容器吗?
SpringBoot中内置Tomcat容器;
SpringBoot 启动,创建 AnnotationConfigServletWebServerApplicationContext
它去容器里找 ServletWebServerFactory 类型的 Bean
Tomcat 存在时,自动配置类 ServletWebServerFactoryAutoConfiguration 会注入 TomcatServletWebServerFactory
调用 getWebServer() → new Tomcat() → 设置端口、Connector → tomcat.start()
关键点:Tomcat 此时是跑在你的 JVM 进程内部的一个线程(默认叫 http-nio-8080-exec-N),而不是独立进程。所以你 main 方法一结束,Tomcat 也就没了。
4. SpringBoot 命令行启动
1.先 mvn package 打成 fat jar,再用 java -jar 直接启动,因为 SpringBoot 内嵌了
Tomcat。
-
生产上用 nohup 或 systemd 托管,配置后台运行、开机自启和故障自动重启。
-
环境参数用 --spring.profiles.active=prod 指定;JVM 参数必须放在 -jar 之前。
5.MySQL完成分页查询的SQL语句,比如我要查询第100-200条数据
SELECT * FROM 表名 ORDER BY id LIMIT 101 OFFSET 99;