自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(740)
  • 收藏
  • 关注

原创 初识 SpringMVC,运行配置第一个Spring MVC 程序

MVC 是一种软件架构模式(是一种软件架构设计思想,不仅仅是Java开发中用到,其它语言也需要用到),它将应用分为三块。M: Model (模型)V:View (视图)C:Controller (控制器)应用为什么要被分为三块,优点是什么?低耦合,扩展能力增强代码复用性增强代码可维护性增强高内聚,让程序员更加专注业务的开发。Model :负责业务处理及数据的收集View:负责数据的展示。

2024-09-25 17:26:07 547

原创 深入理解 @PatchMapping 注解在 Java Spring 中的作用

使用 @PatchMapping 注解可以方便地指定处理该类型请求的方法,使我们能够针对部分更新的场景进行精确的处理。在上面的示例代码中,我们定义了一个 UserController 类,使用 @PatchMapping 注解来处理部分更新用户信息的请求。@PatchMapping vs. @PostMapping:@PatchMapping 用于更新资源的部分内容,而 @PostMapping 用于创建新的资源。注解的使用方式:这些注解都是通过在处理方法上添加特定的注解来映射请求。

2024-09-25 17:09:25 256

原创 Spring WebFlux 框架的架构与传统 Spring MVC 有什么区别?

的关键区别在于响应式编程(异步处理)与阻塞式i/o模型。这种差异导致了架构上的关键差异:异步处理和事件循环模型;基于函数式接口的处理程序;简化的异常处理机制;较高的吞吐量和可扩展性。Spring WebFlux 是一个基于响应式编程的框架,而传统的 Spring MVC 框架基于阻塞式 I/O 模型。这种根本性的区别导致了两者在架构和概念上的关键差异。Spring WebFlux 框架基于响应式编程,提供了更高的吞吐量、更好的可扩展性和更简单的异常处理,使其成为构建现代高性能 Web 应用程序的理想选择。

2024-09-25 17:07:28 240

原创 通过RestTemplate请求第三方服务(API)

如果你要将返回的json字符串转为实体类,可以使用ObjectMapper。另外因为GET请求方式参数是拼接在地址上的,我暂时还没有查到如何使用这种方式传header参数。使用getForEntity请求不仅可以获取对象,还可以获取http状态码、请求头等详细信息。如果你不需要请求头中的信息,使用getForObject可以获取对象。补上之前的没有header参数的请求方法//准备更新库存请求的Url。Http GET请求。

2024-09-25 14:52:10 114

原创 Spring响应式编程之Reactor操作符

操作符并不是响应式流规范的一部分,但为了改进响应式代码的可读性并降低开发成本,Reactor 库中的 API 提供了一组丰富的操作符,这些操作符为响应式流规范提供了最大的附加值。then:在当前Mono或Flux完成后执行另一个Mono或Flux;thenReturn:在当前Mono或Flux完成后返回一个指定的值;just:创建一个包含单个元素的Mono或多个元素的Flux;zipWith:将两个Mono的值组合成一个新的Mono;zip:将多个Flux的元素组合成一个Flux;

2024-09-24 20:29:10 209

原创 ​JetLinks使用Project Reactor作为响应式编程框架​

比如:避免在响应式操作符中直接业务逻辑, 正确的做法是将业务逻辑抽离为独立的函数(方法),然后使用响应式来进行组合。需要对流中的数据进行操作时,都应该使用操作符来处理,根据。reactor中引入了上下文,在一个流中,可共享此上下文。提供了强大的API,简化多线程和异步编程开发,降低了对数据各种处理方式的复杂度。为了防止工作线程被阻塞导致服务崩溃,在一个请求的流中,禁止执行存在阻塞(如执行。响应式只是一个编程模型,并不能直接提高系统的并发处理能力。操作符(API),就可以很好的使用响应式编程了。

2024-09-24 20:17:35 520

原创 使用@WebFluxTest和WebTestClient进行 Spring Boot Webflux 测试

学习使用注解和来对控制器进行单元测试,该测试用于通过测试 webflux 端点。

2024-09-24 19:43:30 194

原创 Spring WebFlux 教程

术语“响应式”是指围绕响应变化而构建的编程模型。它是基于发布者-订阅者模式(观察者模式)构建的。在响应式编程中,我们请求资源并开始执行其他事情。当数据可用时,我们会收到通知以及回调函数的数据通知。在回调函数中,我们根据应用程序/用户需求处理响应。要记住的重要一件事是背压。在非阻塞代码中,控制事件的速率变得很重要,这样快速生成器就不会淹没其目的地。响应式 Web 编程非常适合具有流数据的应用程序以及使用该数据并将其流传输给用户的客户端。这对开发传统的 CRUD 应用程序不是很好。

2024-09-24 19:42:15 960

原创 ​JetLinks使用reactor​编辑作为响应式编程框架​

的工作线程, 为了防止工作线程被阻塞导致服务崩溃,在一个请求的流中,禁止执行存在阻塞(如执行。响应式只是一个编程模型,并不能直接提高系统的并发处理能力. 通常与netty(提供了强大的API,简化了对数据各种处理方式的复杂度,如果你已经大量使用了。调试不易,异常栈难跟踪,对开发人员有更高的要求.API,就可以很好的使用响应式编程了.数据流中的数据对数据进行处理.在响应式中,大部分情况是禁止使用。中编写大量的逻辑代码,推荐参考。),才会执行构造好的逻辑.(0-1个数据的流). 摒弃。

2024-09-24 09:18:47 393

原创 2、Spring响应式编程之Reactor核心组件

某种程度上可以把 Mono 看作是 Flux 的一种特例,而两者之间也可以进行相互的转换和融合。如果你有两个 Mono 对象,那么把它们合并起来就能获取一个 Flux 对象。除此之外,把一个 Flux 转换成 Mono 对象也有很多办法,例如对一个 Flux 对象中所包含的元素进行计数操作就能得到一个 Mono 对象。Reactor 框架提供了两个核心组件来发布数据,分别是 Flux 和 Mono 组件。表示0到N个元素的异步序列,可以是有限的或无限的。Flux和Mono组件。

2024-09-23 17:58:30 129

原创 在Reactor的Mono和Flux

collectMap是Flux特有的操作符或方法。flatMap既可用于Mono也可用于Flux,但用法和上下文可能有所不同。是一个模拟概念,不是Reactor直接提供的操作符。请注意,在响应式编程中,尽量避免使用block()来同步获取结果,因为这可能会阻塞线程并降低程序的响应性和可扩展性。相反,应该尽量保持异步和非阻塞的流处理。

2024-09-23 17:57:14 252

原创 一直在用SpringMVC?不妨认识下SpringWebflux

是spring在5.0版本后提供的一套响应式编程风格的web开发框架。这个框架包含了和spring mvc,它可以运行在Netty、Undertow以及3.1版本以上的Serlvet容器上。你可以在项目中同时使用和,或者只用其中一个来开发web应用。所谓响应式,举个例子,当调用一个api获取数据时,无需阻塞等待数据返回,而是当有数据返回时会进行告知。可见响应式是非阻塞的,意味着调用方法后,CPU可以去做别的事情,当接收到数据响应时CPU再回来处理,这种方式提高了系统的吞吐量。

2024-09-23 17:55:12 695

原创 万字长文详解Spring WebFlux

Reactor遵循Reactive Streams规范,反应式流(Reactive Streams)是一种处理异步数据流的标准和规范,它定义了一套API,旨在以非阻塞的方式处理数据流的发布与订阅,从而实现流的背压(Backpressure)管理。在WebFlux中,它可以处理传统的同步请求和异步的响应式请求。成为Spring WebFlux中进行响应式网络调用的首选工具,既支持高性能的非阻塞IO操作,又提供了丰富的API和灵活的错误处理机制,非常适合在现代的响应式微服务架构中使用。

2024-09-23 17:42:39 715

原创 Flux 和 Mono 对象的基本使用

对象的含义及简单使用,并学会了 subscribe() 方法的使用。如果没有调用 subscribe() 方法,前面的代码实际上没有真正的执行。因为,不管是 Flux 对象还是 Mono 对象,不调用它的 subscribe() 方法,是不会真正执行的。而下面我们指定了 4 个,所以全都打印出来了,说明这个参数的作用就是指定可以通过执行的数量。这两个对象也是 Reactor 核心的对象,基本上所有的操作都是围绕着两个对象扩展的。到目前为止,执行上面的代码是没有任何输出的。

2024-09-23 17:40:50 154

原创 Spring Boot WebFlux框架响应式编程数据实时更新

Spring WebFlux 提供了函数式端点和路由定义的方式,通过编程的方式定义路由和处理器函数,而不是依赖注解驱动的控制器。EventSource 是 HTML5 的一部分,它是一种用于接收服务器发送的事件流的 API。实时数据处理:对于需要实时处理数据流的应用,例如实时分析、实时监控等,响应式编程模型能够有效地处理数据流,并且具有良好的可伸缩性。大数据处理:对于大规模数据处理和分析的场景,响应式编程模型可以处理复杂的数据流,并且能够轻松应对数据的变化和处理需求。适用于表示多个元素的异步序列。

2024-09-23 16:56:29 739

原创 WebFlux 详解

WebFlux 提供了一种现代且高效的方式来构建非阻塞的、响应式的 Web 应用程序。通过响应式编程模型,WebFlux 能够有效地处理大量并发请求,提高应用程序的性能和可扩展性。

2024-09-23 16:50:36 409

原创 什么是webFlux

在Web容器的选择上,Spring WebFlux既支持像Tomcat,Jetty这样的的传统容器(前提是支持Servlet 3.1 Non-Blocking IO API),又支持像Netty,Undertow那样的异步容器。左侧是传统的基于Servlet的Spring Web MVC框架,右侧是5.0版本新引入的基于Reactive Streams的Spring WebFlux框架,从上到下依次是Router Functions,WebFlux,Reactive Streams三个新组件。

2024-09-23 16:46:48 220

原创 Spring Boot集成webflux快速入门Demo

Spring WebFlux是一个异步非阻塞式的WEB框架,它能够充分利用多核CPU的硬件资源去处理大量的并发请求,而Spring MVC是构建于Servlet API之上,使用的是同步阻塞式I/O模型,即每一个请求对应一个线程去处理。

2024-09-23 16:44:33 1210

原创 Nacos 本地单机版部署步骤和使用

先了解下 Spring Cloud Eureka 是基于 Netflix Eureka (Netflix 是 Java 实现的服务治理(Eureka)包括服务注册、服务发现和服务检测监控等。那 Nacos 致力于发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及。简而言之,Nacos 包含了微服务的配置管理 + 服务的注册、发现等监控。微服务也包括了 Spring Cloud 的微服务实现。

2024-09-23 16:29:51 1085

原创 Nacos部署问题: User limit of inotify watches reached

nacos 1.4.2部署的时候发现一个错误:找到网络上的解决方案:

2024-09-23 15:30:42 183

原创 用docker启动一个nacos 2

以上是基于 Nacos 2.0.0 版本的 Docker 启动指南。如果你需要使用其他版本或有其他特定配置需求,建议查看 Nacos 的官方文档或 DockerHub 页面以获取更详细的信息。这里,`MODE=standalone` 表示 Nacos 以单机模式运行,`-p 8848:8848` 表示将容器的 8848。在浏览器中访问 `http://localhost:8848/nacos`,默认的用户名和密码都是 `nacos`。到宿主机的 8848 端口。3. 访问 Nacos。

2024-09-23 10:43:11 267

原创 Spring响应式编程之Reactor背压机制

在生产-发布模式下,由于事件处理平台大小有限制,生产者和消费者存在处理速度的差异,生产者不能持续不断的发布数据并推送,即流量控制问题。适用于消费者处理能力波动较大,需要动态调整处理速率的场景。背压机制简单理解,通过一种反馈机制来告知生产者当前消费者的处理能力,生产者动态调整数据生成的速率,确保消费者能够处理生产者产生的数据。丢弃(dropping):丢弃超出消费者处理能力的数据,只保留最新的数据或最重要的数据。最新(lastest):只保留最新的数据,丢弃旧的数据,确保消费者始终处理最新的数据。

2024-09-20 15:08:22 187

原创 WebFlux入门详解

N ()的数据序列。是一个用于 JVM 的完全非阻塞的响应式编程框架,具备高效的需求管理,可以很好的处理 “backpressure”。nest 方法的第二个参数就是 RouterFunction 实例了,每一个 RouterFunction 实例通过 RouterFunctions.route 方法来构建,它的第一个参数就是请求的 URL 地址(注意这个时候配置的地址都是有一个共同的前缀),第二个参数我们通过方法引用的方式配置了一个 HandlerFunction,这个就是当前请求的处理器了。

2024-09-20 14:32:03 1016

原创 WebFlux 的简要介绍

在传统的同步阻塞模型中,每个客户端连接通常都会分配一个线程来处理,如果某个连接的请求在处理过程中需要等待外部资源(比如数据库查询结果),那么这个线程就会被阻塞,无法处理其他连接的请求,但在异步非阻塞模型中,当某个连接的请求需要等待外部资源时,系统不会阻塞线程,而是将这个请求交给一个异步任务或者回调函数处理,并立即释放线程。这样,系统就可以在等待资源的同时继续处理其他连接的请求。Controller中的处理方法是同步执行的,每个请求都会占用一个Servlet线程,如果线程阻塞,那么整个请求处理链也会被阻塞。

2024-09-20 14:26:32 743

原创 Spring WebFlux:响应式编程

在响应式编程领域,尤其是在使用Spring WebFlux和Reactor框架时,Mono和Flux是两个核心的响应式类型,它们都是Reactor库提供的对Reactive Streams规范的实现。WebFlux采用函数式编程范式,利用Lambda表达式简化了编程模型,路由和请求处理采用函数式编程的方式进行定义,这与传统的基于注解的控制器方法截然不同。Flux 表示0到N个元素的异步序列,Mono 表示0或1个元素的异步结果,两者都支持背压策略,能够智能调整数据生产速度以匹配消费者的处理能力。

2024-09-20 14:07:22 1087

原创 Spring学习(六):WebFlux

SpringWebflux 使用注解编程模型方式,和之前 SpringMVC 使用相似的,只需要把相关依赖配置到项目中,SpringBoot自动配置相关运行容器,默认情况下使用 Netty服务器。Flux对象实现发布者,返回 N 个元素;Webflux 是一种异步非阻塞的框架,异步非阻塞的框架在 Servlet3.1 以后才支持,核心是基于Reactor的相关 API 实现的。Flux 和 Mono 都是数据流的发布者,使用 Flux 和 Mono 都可以发出三种数据信号:元素值,错误信号,完成信号。

2024-09-20 13:51:56 432

原创 WebFlux响应式框架快速入门

Servlet3.1支持了异步、非阻塞通信,因此,也可以选择使用Tomcat等容器,走Servlet API,但是,必须要使用WebFlux的框架代码。它是基于注释的编程模型的另一种选择,但在其他方面运行在相同的Reactive Core基础上。“Reactive”是WebFlux的核心目标,它是指,应用对变化(负载的变化、外部服务可用性的变化等)做出即时响应,使得应用保持正常。实际,高并发下,BIO高并发的响应时间会变长,而WebFlux的平均响应时间相对稳定,效果如同缩短了响应时间。

2024-09-20 11:20:46 526

原创 只会SpringMVC了!Spring又官宣了一个更牛逼的替代框架!

可见响应式是非阻塞的,意味着调用方法后,CPU可以去做别的事情,当接收到数据响应时CPU再回来处理,这种方式提高了系统的吞吐量。webmvc是一个Servlet应用,实现是阻塞式IO,其维护一个线程池来处理每一个用户请求,也就是当Servlet容器启动时,就会创建比如10个线程出来,因此系统吞吐量的瓶颈在于有限的连接数和阻塞的请求处理过程。使用Springboot构建一个webflux应用,默认就是使用Netty,因为Netty本身就是非阻塞式的实现。而是提高了并发处理请求的能力,即提高了系统吞吐量。

2024-09-20 11:05:53 640

原创 nohup不输出日志

默认日志输出到了nohup.out文件中,程序跑起来也就没再管, 过了大约一周,发现硬盘空间不够了,于是查找原因,发现这个nohup.out文件已经到了70G了,导致硬 盘空间不足了。最近使用nohup创建了一个。只输出错误信息到日志文件。

2024-09-20 10:57:08 404

原创 什么是 Reactive

上游生产数据,生产完成后通过管道将数据传到下游,下游消费数据,当下游消费速度小于上游数据生产速度时,数据在管道中积压会对上游形成一个压力,这就是 BackpressureBackpressure 会出现在有 Buffer 上限的系统中,当出现 Buffer 溢出的时候,就会有 Backpressure,对于 Backpressure,它的应对措施只有一个:丢弃新事件。在 Java 9 Flow 中,按相同的思路实现上述处理流程,当初始变量的值变化,最后结果的值也同步发生变化,这就是响应式编程。

2024-09-20 10:26:01 1487

原创 SpringWebmvc和SpringWebflux

struts2,springmvc等都是基于Servlet API与Servlet容器基础之上运行的,在Servlet3.1之后才有了异步非阻塞的支持。而WebFlux是一个典型非阻塞异步的框架,它的核心是基于。

2024-09-20 10:21:58 770

原创 WebFlux 和 Spring MVC 是 Spring Framework 中处理 Web 请求的两种方式。

总的来说,WebFlux 更适合处理高并发、高负载、非阻塞 I/O 操作的场景,而 Spring MVC 更适合传统的同步请求响应场景。选择使用哪种方式取决于项目的需求和性能要求。

2024-09-20 10:19:16 192

原创 java Web技术的演进:从 Servlet、SpringMVC到 WebFlux

随着互联网技术的快速发展,Web 应用程序在处理海量用户访问和大数据时面临着巨大的挑战。在这个过程中,Java Web 开发技术经历了从 Servlet 到 Spring MVC 再到 WebFlux 的演变。在这篇文章中,我们将探讨这三个技术的发展历程、痛点及解决方案,以及它们如何帮助开发者在不断变化的互联网世界中构建更高效、可扩展和响应式的 Web 应用程序。让我们从 Servlet 的诞生开始,追溯 Java Web 开发技术的发展脉络。

2024-09-20 10:11:19 933

原创 Java Web 开发技术的演进:从 Servlet、Spring MVC 到 WebFlux 及其竞品分析

在这篇文章中,我们将探讨这三个技术的发展历程、痛点及解决方案,以及它们如何帮助开发者在不断变化的互联网世界中构建更高效、可扩展和响应式的 Web 应用程序。它是一个基于 Java 的 Web 应用程序框架,可以认为是servlet框架,提供了一套简化 Web 开发的工具和约定。每个新技术的出现都旨在解决上一个技术的痛点,并为开发者提供更好的工具和实践。总之,WebFlux 更适合处理高并发、数据流处理和微服务架构的场景,但对于一些简单的应用程序,传统的 Spring MVC 可能仍然是一个不错的选择。

2024-09-20 10:03:15 1197

原创 Spring WebFlux

举一个简单例子:假设只有一个线程池,请求来的时候,线程池处理,需要读取数据库IO,这个IO是 NIO非阻塞IO,那么就将请求数据写入数据库连接,直接返回。之后数据库返回数据,这个链接的Selector会有Read事件准备就绪,这时候,再通过这个线程池去读取数据处理(相当于回调),这时候用的线程和之前不一定是同一个线程。相当于通过另外的线程池(当然也可以通过原有线程池,反正就是要用和请求不一样的线程,才能实现回调,而不是当次就阻塞等待),封装了阻塞JDBC IO。这样A也不用阻塞,可以处理其他请求。

2024-09-20 09:50:48 412

原创 一款完整开源的物联网基础平台

JetLinks,是一个基于Java8,Spring Boot 2.x ,WebFlux,Netty,Vert.x,Reactor的那个多种技术开发的企业级物联网平台。其功能丰富强大,不仅可以支持统一物模型管理,还可以对灵活接入不同厂家不同协议等设备,实现实时数据处理,设备告警,消息通知,数据转发。启动成功后可以访问环境进行各种操作:地址: http://localhost:9000, 用户名:admin,密码:admin。完成JetLinks服务的启动,然后启动UI。3、非docker环境启动。

2024-09-20 09:45:06 161

原创 Spring WebFlux--浅谈Mono和Flux

Spring WebFlux 是一个异步非阻塞式 IO 模型,通过少量的容器线程就可以支撑大量的并发访问,所以 Spring WebFlux 可以有效提升系统的吞吐量和伸缩性,特别是在一些 IO 密集型应用中,例如微服务网关 Spring Cloud Gateway 就使用了 WebFlux,这样可以有效提升网管对下游服务的吞吐量。功能:传入一个生产者,即创建Mono的方式,每次消费都会新建一个Mono实例,而just消费多少次都只有一个实例。执行代码,将打印除零异常,并且不会执行消费。

2024-09-19 15:32:15 402

原创 Reactor (1)Mono和Flux进行响应式编程介绍

在该序列中可以包含三种不同类型的消息通知:正常的包含元素的消息、序列结束的消息和序列出错的消息。​ Reactor是Spring中的一个子项目是一个基于java的响应式编程框架,此框架是 Pivotal 公司(开发 Spring 等技术的公司)开发的,实现了 Reactive Programming(反应式编程即响应式编程) 思想,符合 Reactive Streams 规范(Reactive Streams 是由 Netflix、TypeSafe、Pivotal 等公司发起的)的一项技术。

2024-09-19 15:27:06 610

原创 Mono和Flux的用法详解

序列的产生是通过调用所提供的 SynchronousSink 对象的 next(),complete()和 error(Throwable)方法来完成的。window 操作符的作用类似于 buffer,所不同的是 window 操作符是把当前流中的元素收集到另外的 Flux 序列中,因此返回值类型是 Flux。创建一个不包含任何元素,只发布结束消息的序列,在响应式编程中,流的传递是基于元素的,empty表示没有任何元素,所以不会进行后续传递,需要用switchIfEmpty等处理。

2024-09-19 15:21:36 635

原创 快速上手WebFlux

WebFlux 应用中,所有数据都应该以Mono、Flux的形式表示,这样才能带来最好的性能和高吞吐量。Mono和Flux 这两种数据模型是WebFlux的核心,本片入门教程只是简单的展示了WebFlux项目的搭建编写,要学好WebFlux 还需要掌握Reactor(Mono、Flux),其实Reactor 和 Stream 的很多操作都有类似功能,如果你对Java8Stream非常熟悉的话,学习Reactor应该是也是件容易的事情,如果还不掌握Stream 建议先去学好Stream。

2024-09-19 14:57:07 427

docker 批量保存镜像到本地脚本

docker 批量保存镜像到本地脚本

2024-09-03

docker 批量保存镜像到本地脚本

docker 批量保存镜像到本地脚本

2024-09-03

docker安装mysql镜像

docker安装mysql镜像

2024-04-07

repidscada资源包

repidscada资源包

2023-11-18

锦州热电厂设备管理系统的设计与实现.caj

锦州热电厂设备管理系统的设计与实现.caj

2022-10-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除