当前位置: 首页 > news >正文

鞍山公司做网站韩国的小游戏网站

鞍山公司做网站,韩国的小游戏网站,郑州网站建设 seo,wordpress建字段响应式编程 1.WebFlux2.比较 MVC 和 WebFlux2.1 工作方式2.2 Spring MVC 与 Spring WebFlux 的区别2.3 使用 WebFlux 的好处 3.Mono 和 Flux3.1 Mono 和 Flux 是什么3.2 Mono 和 Flux 的区别 4.开发 WebFlux 的流程4.1 注解式开发流程4.2 响应式开发流程 5.用注解式开发实现 He… 响应式编程 1.WebFlux2.比较 MVC 和 WebFlux2.1 工作方式2.2 Spring MVC 与 Spring WebFlux 的区别2.3 使用 WebFlux 的好处 3.Mono 和 Flux3.1 Mono 和 Flux 是什么3.2 Mono 和 Flux 的区别 4.开发 WebFlux 的流程4.1 注解式开发流程4.2 响应式开发流程 5.用注解式开发实现 Hello World5.1 配置 WebFlux 依赖5.2 编写控制器 6.用响应式开发方式开发 WebFlux6.1 编写处理器类 Handler6.2 编写路由器类 Router 1.WebFlux WebFlux 是从 Spring Framework 5.0 开始引入响应式 Web 框架的。与 Spring MVC 不同WebFlux 不需要 ServletAPI在完全异步且无阻塞并通过 Reactor 项目实现 Reactive Streams 规范。 WebFlux 可以在资源有限的情况下提高 系统的吞吐量和伸缩性不是提高性能。这意味着在资源相同的情况下WebFlux 可以处理更多的请求不是业务。 WebFlux 除支持 RESTful Web 服务外还可以用于提供动态 HTML 内容。 2.比较 MVC 和 WebFlux Spring MVC 采用命令式编程的方式代码被一句一句地执行便于开发者理解与调试代码。WebFlux 则是基于异步响应式编程。 2.1 工作方式 MVC主线程接收到请求request→ 准备数据 → 返回数据。整个过程是单线程阻塞的用户会感觉等待时间长是因为在结果处理好之后才返回数据给浏览器。因此如果请求很多则吞吐量就上不去。WebFlux主线程接收到请求 → 立刻返回数据与的数的组合Mono 或 Flux不是结果 → 开启一个新 Work 线程去做实际的数据准备工作进行真正的业务操作 → Work 线程完成工作 → 返给用户真实数据结果。这种方式给人的感觉是响应时间很短因为返回的是不变的常数它不随用户数量的增加而变化。 2.2 Spring MVC 与 Spring WebFlux 的区别 对比项 Spring MVC Spring WebFlux 地址路由映射Controller、RequestMapping 等标准的 Spring MVC 注解1Router Functions提供一套函数式风格的 API用于创建 Router、Handler 和 Filter 2Controller、RequestMapping 等标准的 Spring MVC 注解数据流Servlet APIReactive Streams一种支持背压backpressure的异步数据流处理标准主流实现有 RxJava 和 Reactor。Spring WebFlux 默认集成的是 Reactor容器Tomcat、Jetty、UndertowNetty、Tomcat、Jetty、UndertowI/O 模型同步阻塞的 I/O 模型异步非阻塞的 I/O 模型吞吐性能低高业务处理性能一样一样支持数据库NoSQL、SQL支持 NoSQL不支持 MySQL 等关系型数据库请求和响应HttpServletRequest 和 HttpServletResponseServerRequest 和 ServerResponse 2.3 使用 WebFlux 的好处 下面以餐厅 “叫号” 来比喻阻塞式开发与 WebFlux。 假设 “海底捞” 没有叫号机前台服务员店里有 200 个餐台供客人进餐如果此时来了 201 个客人那么最后一个客人就直接被拒绝服务了。 而现在有叫号机来了 200 个客人正在用餐后面再来 100 个客人叫号机马上给后面的 100 个客人每人一个排队号。这样服务就不阻塞了每个人都立马得到反馈。来再多的人也能立马给排号但是进餐依然是阻塞的。 回到程序。我们假设服务器最大线程资源数为 200 个当前遇到 200个非常耗时的请求如果再来 1 个请求时阻塞式程序就已经处理不了拒绝服务了。 而对于 WebFlux则可以做到立即响应告诉用户等着然后将收到的请求转发给 Work 线程去处理。WebFlux 只会对 Work 线程形成阻塞如果再来请求也可以处理。其主要应用场景是在业务处理较耗时的场景中减少服务器资源的占用提高并发处理速度。 对 WebFlux 的一个简单的理解就是你来了我立马应答你但是服务需要等待而不是你来了没人理你咨询服务半天也回复不了。 结论MVC 能满足的场景就不需要改用 WebFlux。WebFlux 和 MVC 可以混合使用。如果开发 I/O 密集型服务则可以选择用 WebFlux 实现。 如果在 pom.xml 文件中同时引用了 spring-boot-starter-web 和 spring-boot-starter-webflux 依赖则优先会使用 spring-boot-starter-web。这时控制台输出的启动日志会提示 “Tomcat started on port(s): 8080 (http) with context path”而使用 WebFlux 会提示 “Netty started onport(s): 8080”。 3.Mono 和 Flux 3.1 Mono 和 Flux 是什么 Mono 和 Flux 是 Reactor 中的两个基本概念。 Mono 和 Flux 属于 事件发布者为消费者提供订阅接口。当有事件发生时Mono 或 Flux 会回调消费者的相应方法然后通知消费者相应的事件。这也是响应式编程模型。Mono 和 Flux 用于处理异步数据流它不像 MVC 中那样直接返回 String/List而是将异步数据流包装成 Mono 或 Flux 对象。 3.2 Mono 和 Flux 的区别 Flux 可以发送很多 item并且这些 item 可以经过若干算子operators后才被订阅。Mono 只能发送一个 item。 Mono 主要用于返回单个数据。Flux 用于返回多个数据。如果要根据 id 查询某个 User 对象则返回的肯定是单个 User那么需要将其包装成 MonoUser。若需要获取所有 User这是一个集合则需要将这个集合包装成 FluxUser。这里的单个数据并不是指一个数据而是指封装好的一个对象。多个数据就是多个对象。 Mono 表示包含 0 或 1 个元素的异步序列。在该序列中可以包含 3 种不同类型的消息通知正常的包含元素的消息、序列结束的消息、序列出错的消息。当消息通知正常的包含元素的消息、序列结束的消息、序列出错的消息产生时订阅者中有对应的方法 onNext()、onComplete()、onError() 被调用。 Flux 表示的是包含 0 到 N 个元素的异步序列在该序列中可以包含与 Mono 相同的 3 种类型的消息通知。 Flux 和 Mono 之间可以进行转换。对一个 Flux 序列进行计数操作时得到的结果是 MonoLong 对象。把多个 Mono 序列合并在一起得到的是一个 Flux 对象。 4.开发 WebFlux 的流程 4.1 注解式开发流程 WebFlux 是响应式框架其中使用的 注解式开发方式 只是 Spring 团队为了更好地迁移而提的。和 MVC 开发模式一样地址映射也是通过 RequestMapping 提供的用 Controller 或 RestController 来代替 Handler 类。 4.2 响应式开发流程 1创建 Handler 类。这里的 Handler 类相当于 Spring MVC 的 Controller 层中的方法体。在响应式编程中请求和响应不再是 HttpServletRequest 和 HttpServletResponse而是变成了 ServerRequest 和 ServerResponse。 2配置 RouterFunction。RouterFunction 和注解 RequestMapping 相似都用于提供 URL 路径。RouterFunction 的格式也是固定的第 1 个参数代表 路径第 2 个参数代表 方法合起来代表将 URL 映射到方法。 5.用注解式开发实现 Hello World 5.1 配置 WebFlux 依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-webflux/artifactId /dependency5.2 编写控制器 用注解式开发 WebFlux 应用程序与 MVC 的开发方式是一样的。通过注解 RestController 标注控制器类通过注解 GetMapping 指定映射路径。 package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Mono;RestController public class HelloWorldController {GetMapping(/helloworld)public MonoString helloworld(){return Mono.just(This is WebFlux demo);} }启动工程后控制台中输出如下 可以看到WebFlux 默认使用的是 Netty 服务器而不是 MVC 模式下的 Tomcat 服务器。 6.用响应式开发方式开发 WebFlux 6.1 编写处理器类 Handler Handler 相当于 MVC 中的 Controller。用于提供实现功能的方法。 package com.example.demo;import org.springframework.http.MediaType; import org.springframework.stereotype.Component; import org.springframework.web.reactive.function.server.ServerRequest; import org.springframework.web.reactive.function.server.ServerResponse; import reactor.core.publisher.Mono;Component public class HelloWorldHandler {public MonoServerResponse sayHelloWorld(ServerRequest serverRequest) {return ServerResponse.ok().contentType(MediaType.TEXT_PLAIN).body(Mono.just(This is WebFlux demo), String.class);} }6.2 编写路由器类 Router package com.example.demo;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.reactive.function.server.RouterFunction; import org.springframework.web.reactive.function.server.ServerResponse;import static org.springframework.web.reactive.function.server.RequestPredicates.GET; import static org.springframework.web.reactive.function.server.RouterFunctions.route;Configuration public class Router {Autowiredprivate HelloWorldHandler helloWorldHandler;Beanpublic RouterFunctionServerResponse getString(){return route(GET(/helloworld),req-helloWorldHandler.sayHelloWorld(req));} }上述代码中通过 return route(GET(/helloworld),req-helloWorldHandler.sayHelloWorld(req)); 来指定路由包含 HTTP 方法和对应的功能方法。
http://www.w-s-a.com/news/809097/

相关文章:

  • 合肥企业制作网站wordpress创建网站
  • 织梦网站开发兼职wordpress 中间截取缩略图
  • 南通制作网站旅游搭建网站
  • 专业做商铺的网站个人网页html模板完整代码
  • 什么网站做美食最好最专业关键词推广是什么意思
  • 自助建设网站软件网站导航网站可以做吗
  • 网站模板放哪长沙网站优化分析
  • 泉州网站建设价钱网站模板素材
  • 南通网站托管js建设网站外网
  • 成都企业网站公司wordpress内页模板
  • 58同城建网站怎么做wordpress评论显示数字ip
  • 免费制作论坛网站模板免费下载北京网站制作长沙
  • 旅游网网站建设网站如何自己做seo
  • 如何验证网站所有权做二手家具回收哪个网站好
  • 做哪种网站赚钱项目开发流程
  • 网站建设和网站网络推广网站建设软件定制
  • 站长工具网址查询全球云邮登陆网站
  • 宁波 住房和建设局网站网上发帖推广
  • 平面设计在线网站工业设计公司有哪些
  • 福州网站设计外包公司网站做的比较好
  • 如何设计网站首页网站开发综合技能实训心得体会
  • 用织梦做的网站好用吗w网站链接如何做脚注
  • 东莞做网站公司在哪哪里有网站培训的
  • 做宣传 为什么要做网站那重庆网站建设公司在线联系
  • 网站设计制作售价多少钱制作图片的软件是
  • 网站验证码目录简单带数据库的网站模版
  • 制作网站用c#做前台网站建设专题的意义
  • 广西建设职业技术学院教育网站牡丹区建设局网站
  • 网站后台怎么用ftp打开上海外贸进出口有限公司
  • 淘宝建设网站的意义大学生做那个视频网站