专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

异步Servlet都不懂,谈何WebFlux?

  我们日常使用的SpringMVC,基本上都不是异步Servlet,而学习WebFlux,异步Servlet是基础,因此还是花点时间来和大家聊一聊什么是异步Servlet,这有助于大家理解我们为什么需要WebFlux。1。什么是异步Servlet
  先来说说什么是非异步Servlet。
  在Servlet3。0之前,Servlet采用ThreadPerRequest的方式处理Http请求,即每一次请求都是由某一个线程从头到尾负责处理。
  如果一个请求需要进行IO操作,比如访问数据库、调用第三方服务接口等,那么其所对应的线程将同步地等待IO操作完成,而IO操作是非常慢的,所以此时的线程并不能及时地释放回线程池以供后续使用,如果并发量很大的话,那肯定会造性能问题。
  传统的MVC框架如SpringMVC也无法摆脱Servlet的桎梏,原因很简单,他们都是基于Servlet来实现的。如SpringMVC中大家所熟知的DispatcherServlet(如果大家对于SpringMVC的原理不太理解,可以查看松哥之前的系列文章SpringMVC源码解读系列,20篇干货完美收官!)。
  为了解决这一问题,Servlet3。0中引入了异步Servlet,然后在Servlet3。1中又引入了非阻塞IO来进一步增强异步处理的性能。
  在正式开整WebFlux之前,我们先来了解下异步Servlet的一些基本玩法。2。版本关系
  我们要先看看Servlet和Tomcat之间的对应关系,毕竟异步Servlet这种事,用错了Tomcat版本可能就不支持了。
  下图来自Tomcat官网(http:tomcat。apache。orgwhichversion。html):
  从上图我们可以看出,Servlet3。0对应的Tomcat版本是7。0。x,Servlet3。1对应的Tomcat版本是8。0。x。
  换句话说,如果我们要使用异步Servlet,Tomcat至少要7。0以上的版本;如果你还想体验一把非阻塞IO,那么Tomcat至少要8。0以上。
  接下来的案例小伙伴们记得选好自己本地的Tomcat版本。3。基本玩法
  先来看一个大家熟悉的同步Servlet:WebServlet(urlPatternssync)publicclassSyncServletextendsHttpServlet{OverrideprotectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,response);}OverrideprotectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{longstartSystem。currentTimeMillis();printLog(request,response);System。out。println(总耗时:(System。currentTimeMillis()start));}privatevoidprintLog(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{try{Thread。sleep(3000);}catch(InterruptedExceptione){e。printStackTrace();}response。getWriter()。write(ok);}}
  这个Servlet大家再熟悉不过了。
  前端请求到达后,我们调用printLog方法做一些处理,同时把doGet方法执行耗时打印出来。
  在printLog中,我们先休息3s,然后给前端返回一个字符串给前端。
  前端发送请求,最终doGet方法中耗时3001毫秒。
  这是我们大家熟知的同步Servlet。在整个请求处理过程中,请求会一直占用Servlet线程,直到一个请求处理完毕这个线程才会被释放。
  接下来我们对其稍微进行改造,使之变为一个异步Servlet。
  有人可能会说,异步有何难?直接把printLog方法扔到子线程里边去执行不就行了?但是这样会有另外一个问题,子线程里边没有办法通过HttpServletResponse直接返回数据,所以我们一定需要Servlet的异步支持,有了异步支持,才可以在子线程中返回数据。
  我们来看改造后的代码:WebServlet(urlPatternsasync,asyncSupportedtrue)publicclassAsyncServletextendsHttpServlet{OverrideprotectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,response);}OverrideprotectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{longstartSystem。currentTimeMillis();AsyncContextasyncContextrequest。startAsync();CompletableFuture。runAsync(()printLog(asyncContext,asyncContext。getRequest(),asyncContext。getResponse()));System。out。println(总耗时:(System。currentTimeMillis()start));}privatevoidprintLog(AsyncContextasyncContext,ServletRequestrequest,ServletResponseresponse){try{Thread。sleep(3000);response。getWriter()。write(ok);asyncContext。complete();}catch(InterruptedExceptionIOExceptione){e。printStackTrace();}}}
  这里的改造主要有如下几方面:WebServlet注解上添加asyncSupported属性,开启异步支持。调用request。startAsync();方法开启异步上下文。通过JDK8中的CompletableFuture。runAsync方法来启动一个子线程(当然也可以自己new一个子线程)。调用printLog方法时的request和response重新构造,直接从asyncContext中获取,注意,这点是【关键】。在printLog方法中,方法执行完成后,调用asyncContext。complete()方法通知异步上下文请求处理完毕。
  经过上面的改造之后,现在的控制台打印出来的总耗时几乎可以忽略不计了。
  也就是说,有了异步Servlet之后,后台Servlet的线程会被及时释放,释放之后又可以去接收新的请求,进而提高应用的并发能力。
  第一次接触异步Servlet的小伙伴可能会有一个误解,以为用了异步Servlet后,前端的响应就会加快。这个怎么说呢?后台的并发能力提高了,前端的响应速度自然会提高,但是我们一两个简单的请求是很难看出这种提高的。4。小结
  好啦,今天就和大家分享一下异步Servlet,作为WebFlux的一个前奏。至此,我们的WebFlux前奏已经更新了五篇了,即将进入WebFlux的殿堂。
  原文链接:https:mp。weixin。qq。comszgrPg9DM9OkPMs8XIPiMA

鱿鱼游戏黄仁昊是历届冠军,为何会穷到交不起房租?跟弟弟有关鱿鱼游戏中的黄仁昊,扮演的是面具领头人的身份,作为游戏的其中一位观赏者,黄仁昊比任何人都要严厉冷酷,决不允许游戏出现任何的差错,即便是弟弟的出现,黄仁昊也会毫不留情地对他开枪,到底鱿鱼游戏碰糖游戏,曹尚佑为何着急淘汰队友?跟成奇勋有关曹尚佑在鱿鱼游戏中算是最聪明的一位参赛者,有着高学历的他,在面对各种游戏之前都会冷静分析,而且曹尚佑的判断非常准确,跟他在一起的队友确实太幸运,可有个问题倒是让人疑惑不解,按理说跟鱿鱼游戏被选中不意外,老头与成奇勋其实是父子?有3个铁证成奇勋是鱿鱼游戏中最幸运的男子,不仅得到了主办者的青睐,甚至还成了游戏的赢家,获得了456亿的奖金,然而这一切当真是碰巧吗?老头跟成奇勋之间到底是什么关系,为何成奇勋的善心能轻松获鱿鱼游戏曹尚佑是最大的威胁,老头干嘛不把成奇勋送到最后?鱿鱼游戏中的成奇勋之所以能走到最后,是因为他的命中有贵人,如果不是阿里在关键时刻拉了他一把,说不定在第一局木头人中,成奇勋就已经被淘汰掉了。还有最关键的弹珠游戏,如果不是老头的故意鱿鱼游戏地铁站的神秘男人是谁,他是怎么知道欠债人资料的?每一个来参加鱿鱼游戏的选手,都是通过地铁上跟陌生男子的小游戏进来的,他们就像是被选中一般,神秘男子断定此人肯定会来参加游戏,这才选择利用小钱勾引,可地铁里的神秘男人到底是谁,他又是鱿鱼游戏黄仁昊为何会成为负责人?对老头态度暗示其目的不单纯整部鱿鱼游戏只有短短的9集,以至于很多细节都没交代清楚,比如黄仁昊,他是以往参赛的冠军,为何赢了比赛没有回归到现实生活中,反而会成为游戏的负责人?他留下来的目的是什么,难道当真因为鱿鱼游戏面具人是怎么被选中的?他们跟参赛者一样,都是游戏人看过鱿鱼游戏的观众肯定都很好奇,除了456位参赛者之外,那些穿着红衣服的面具人又是怎么来的?神秘组织的招聘宗旨又是什么?其实红衣人跟那些参赛者一样,都是VIP眼中的马,也就是所谓的鱿鱼游戏456人失踪,为何警察和家人不找他们?原因有两点剧中猫头鹰老头举办的鱿鱼游戏已经多年了,而且每一次参赛的人数都非常多,就好比最新一期,就有456人参加,虽说参加游戏的时间只有7天,但好歹是456个活生生的人凭空消失了,为何警察和鱿鱼游戏令人头皮发麻的细节,装尸体的礼物盒背后含义太讽刺鱿鱼游戏中有很多令人头皮发麻的细节,富有童年趣味的游戏场景,却在淘汰者的鲜血侵染下变得惊悚不已,还有要人性命的123木头人等等,其中最可怕的莫过于装尸体的礼物盒,但凡礼物盒一出场,孔刘有多狡猾?没档期也要拍鱿鱼游戏,只为扇老板耳光鱿鱼游戏之所以那么火,就是因为每一集的剧情都很紧凑,能一眼抓住观众的眼球,关键还有颜值派的加盟,比如地铁中的神秘男子,就是由孔刘扮演的,他的戏份不多,而且总是出现在地铁上,而他也是鱿鱼游戏主办方并非一个人,3个细节证明老头并非终极BOSS很多人都认为老头是决定鱿鱼游戏的幕后大BOSS,就连成奇勋都没想到,自己一直以来最信任的人,竟是个十恶不赦的大恶魔,他想杀了老头为其他参赛者报仇,可惜没等到那个机会,老头先一步去世
多人模式预览版光环无限国庆期间面向全体玩家开放测试微软343工作室已经向Xbox上的所有玩家提供了光环无限(HaloInfinite)的下一个多人模式游戏预览版。343说,本周末的技术预览测试版本现在可以通过XboxInsider原神1。2版单体爆发绝对强势的女人,凝光应该如何培养原神1。2版本当中的凝光应该怎么培养?其实1。2版本当中增加了许多的新内容,角色方面也有一定程度的调整,凝光是属于此版本当中最强势的人物,因此她的玩法有了一些改变。凝光的定位是输出斗罗大陆昊天锤的历任主人,统统都是巅峰强者,第一唐三都忌惮众所周知,在武魂殿中每个人都会拥有武魂,但是每个人在觉醒武魂的时候都是不一样的,而大陆之中最强的器武魂就是昊天锤了,今天就带大家去了解一下拥有昊天锤的几位强者。首先就是唐三,斗罗大精灵梦叶罗丽灵公主如果要救辛灵,那王默就不得不牺牲自己在精灵梦叶罗丽中,冰公主现在已经把齐娜,舒言,建鹏全部都用冰封住了,这个时候大雪已经即将要覆盖整个人类世界了,现在因为王默正在火领主的地盘,所以,她还没有赶到人类世界进行解救同伴,使命召唤手游地图场景还原端游,CODM对狙玩法也有内味了前不久,使命召唤手游国服宣布了周杰伦代言,作为硬核的枪战游戏原本关心国服12月开测的玩家就已经超过5000万了,这次还把这样的巨星请来,想必正式公测之后CODM热度肯定又要爆表。也假面骑士黑沃兹说亚极陀六位一体,网友身体控制怎么分配?在假面骑士中,新的一集里曝光的信息也是非常的多。在上一集出现了大金表之后,他告诉庄吾必须得拥有六个重要的骑士表,才能提升他的实力,在之后g3部队也受到了异类骑士亚极陀的攻击,这也使假面骑士王小明到来只为了时王光宗耀祖卡?网友这真要上天啊在假面骑士中,很多人对于王小明都非常关注,那么,你们知不知道王小明到底有没有时王卡呢?第一个猜测就是王小明的时王卡牌现在还并没有出现,从decade的剧情中看,在这一个剧场版中,王至尊可爱小萝莉,谁是你心中的心头好?网友血槽已空相信有很多人都非常喜欢看动漫吧,而今天要给大家介绍一部非常受欢迎的动漫天使降临到我身边,这部动漫是很多猛男必看的,因为里面的每一位姑娘都像是天使,出场形象也都是非常可爱的,下面留给斗罗大陆小舞为何不吃相思断肠红?3点原因揭晓,网友神伏笔相信很多小伙伴都知道,小舞作为斗罗大陆的女主角,一直都是大家关注的中心,而大家一直非常好奇的是,为什么在史莱克其余人都食用完唐三带回的仙草后,小舞却没有食用呢?毕竟其他人在食用完仙斗罗大陆唐三晋升50级,吸收魂环后大变样,网友心动了相信熟悉斗罗大陆的小伙伴都知道,在魂师赛结局之后,因为发生了很多事情,所以史莱克七怪就决定分开去修炼了,而在这五年期间,大家的修炼速度都是非常快的,其中最优秀的应该就是唐三了。他在斗罗大陆获得魂环的方式,猎杀魂兽最低阶,这一种堪称王者相信很多熟悉斗罗大陆的小伙伴都知道,在这个以实力为尊的世界上,魂师都在努力提升魂力,而每提升十级都需要获得一个魂环,但是获得魂环的方式又有很多种,每一种的效果都不一样,下面就带大家
友情链接:快好知快生活快百科快传网中准网文好找聚热点快软件