
tomcat
文章平均质量分 79
const伐伐
这个作者很懒,什么都没留下…
展开
-
面试经典问题:同步、异步、阻塞、非阻塞的区别
阻塞、非阻塞阻塞/非阻塞是指应用程序的用户进程/线程调用C库提供的方法,或者系统调用的时候,会导致用户进程进入sleep状态。为什么会进入sleep状态呢?原因是此进程的当前条件不满足,操作系统主动切换进程到另一个进程来使用cpu了。这就是一个阻塞方法。而非阻塞方法就是调用该方法,永远不会发生当进程cpu时间片未用完时,把我们的进程切换掉这种情况。同步、异步对于同步、异步,要区分其使用场景在IO模型中在《unix网络编程》书中写到,UNIX 系统下的 I/O 模型有 5 种:同步阻塞 I/原创 2020-12-09 11:35:18 · 2112 阅读 · 0 评论 -
源码分析tomcat BIO NIO NIO2 的 Read Request Headers及Read Request Body 为 Non Blocking/Blocking状态原因
先看两张tomcat官方的图图1:对比BIO(tomcat7及之前默认连接器线程模型) 和 NIO(tomcat8及以后默认的连接器线程模型)图2:对比NIO和NIO2分析BIO NIO NIO2的Read Request HeadersBIO的Read Request Headers是阻塞的,是因为其没有poller这个I/O多路复用机制,而是直接拿线程池的线程去获取请求行,所以其是阻塞的,因为此时请求数据可能还在进行网卡到操作系统内核缓冲区的传输。NIO的Read Request原创 2020-12-04 23:44:44 · 624 阅读 · 0 评论 -
spring boot actuator management tomcat创建过程解析
当我加入了spring-boot-starter-actuator依赖,启用actuator之后,在application.properties中配置management.port=22223这样spring boot就自动创建了一个tomcat,并将其connector绑定到了此端口上于是我们可以看到一个springboot应用创建了两个嵌入式tomcat容器这一行配置是如何生效的呢...原创 2020-03-03 09:06:28 · 1303 阅读 · 0 评论 -
自定义spring boot嵌入式web容器属性
方法1:直接在application.properties中进行配置server.port=9090方法2:通过代码硬编码的方式进行配置代码参考:https://gitee.com/constfafa/spring_springboot_learning/tree/master/springboot-embedded-tomcat@Configurationpublic class...原创 2020-02-26 14:54:08 · 538 阅读 · 0 评论 -
spring boot中嵌入式web容器是如何初始化及启动的
基于spring boot 1.4.2版本,其tomcat版本通过mvn dependency:tree来查看代码参考:https://gitee.com/constfafa/spring_springboot_learning/tree/master/springboot-embedded-tomcat系统启动 调用SpringApplication.run方法org.spr...原创 2020-02-26 14:04:22 · 610 阅读 · 0 评论 -
Callable、CompletionStage、DeferredResult、异步servlet使用对比
异步处理Restful请求有两个方案方案1:使用Callable异步处理Rest服务方案2:使用DeferredResult异步处理Rest服务Callable异步处理同步处理的问题tomcat thread有数量限制的,再有请求进来,就没办法处理了异步处理tomcat主线程调用一个副线程,副线程去执行具体逻辑,当副线程整个的处理逻辑完成之后,主线程再过来把结果返回回去,在副线程处理整个业务逻辑的过程中,主线程是可以空闲出来,可以处理其他请求的,使用这种方式服务器的吞吐量会得到很大的提升代原创 2020-09-23 14:11:43 · 847 阅读 · 0 评论