<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[汪云飞记录本]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wiselyman</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wiselyman]]></copyright><item><title><![CDATA[Spring Boot 2.x实战51 - Spring Web MVC 23 - 异步请求（Servlet 3.0 异步返回-Callable）]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/106216075</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/106216075</guid><author>wiselyman</author><pubDate>Thu, 04 Mar 2021 10:26:22 +0800</pubDate><description><![CDATA[5. 异步请求
当一个web请求到达了Servlet容器时，Servlet线程将被阻碍直至处理执行完成。这种阻碍称为同步，我们需要通过一些方式来降低Servlet容器的负载。
5.1 Servlet 3.0 异步返回
Spring MVC支持Servlet 3.0提供的异步支持，它将web请求的处理放在另外一个线程中。我们由另外的线程来处理耗时的任务，而让Servlet线程被释放去处理另外的web请求，而不是阻碍Servlet线程。此时的返回（response）还是打开的，当处理完成后，将处理结果返回给客户]]></description><category></category></item><item><title><![CDATA[Spring Data 魔法实现的原理（以Spring Data JPA为例）]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107480207</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107480207</guid><author>wiselyman</author><pubDate>Tue, 02 Mar 2021 09:25:13 +0800</pubDate><description><![CDATA[在Spring Data中，Spring Data提供了两大魔法：

通过继承Repository接口获得数据库操作的常用方法
通过方法名即可进行推导查询

我们下面将以Spring Data JPA为例深入理解这两大魔法的实现（下面的类都没有写包名，在Intellij IDEA下双击SHIFT，将类名复制进去可便捷查找）：
1、Repository接口如何获得常用的数据库操作方法
在Spring Data JPA中我们将我们的实体Repository继承了JpaRepository接口便能获得大量的数据库]]></description><category></category></item><item><title><![CDATA[基于K8S的Kafka全家桶安装(Kafka、Kafka Connect、 Schema Registry、KsqlDB)]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/109045524</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/109045524</guid><author>wiselyman</author><pubDate>Tue, 13 Oct 2020 10:16:47 +0800</pubDate><description><![CDATA[本文基于K8s集群安装了Kafka、Kafka Connect、 Schema Registry、KsqlDB
1. 安装Operator Lifecycle Manager


下载文件
https://github.com/operator-framework/operator-lifecycle-manager/releases/download/0.16.1/crds.yaml
https://github.com/operator-framework/operator-lifecycle-mana]]></description><category></category></item><item><title><![CDATA[Spring Security学习路径（含认证、授权、OAuth2.0与Reactive Spring Security）]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107911211</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107911211</guid><author>wiselyman</author><pubDate>Mon, 10 Aug 2020 13:42:52 +0800</pubDate><description><![CDATA[基础

Spring Boot 2.x实战77 - Spring Security 1 - Spring Boot下的Spring Security（自动配置）与Web安全配置
Spring Boot 2.x实战78 - Spring Security 2 - Spring Security的认证（Authentication）
Spring Boot 2.x实战79 - Spring Security 3 - Spring Security的授权（Authorization）之Web路径安全
Spring]]></description><category></category></item><item><title><![CDATA[Spring Boot响应式编程学习路径(包含函数式编程,Reactor,WebFlux,Reactive Elasticsearch、MongoDb、R2DBC、Spring Security)]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107603689</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107603689</guid><author>wiselyman</author><pubDate>Mon, 27 Jul 2020 08:29:17 +0800</pubDate><description><![CDATA[Spring Boot响应式编程学习路径：
1. 基础

Spring Boot 2.x实战1 - 函数式编程1 - Lambda表达式与方法引用
Spring Boot 2.x实战2 - 函数式编程2 - Stream API

2. 核心

Spring Boot 2.x实战86 - 响应式编程1 - Project Reactor
Spring Boot 2.x实战87 - 响应式编程2 - Spring WebFlux（类WebMVC注解式控制器、函数式端点、WebFlux的配置）
Spring B]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战97 - 事件驱动6 - RSocket]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107458346</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107458346</guid><author>wiselyman</author><pubDate>Mon, 20 Jul 2020 10:37:40 +0800</pubDate><description><![CDATA[5.RSocket
RSocket是一个使用在字节流传输（TCP/Websocket）之上的二进制点对点通讯协议；它主要用在分布式应用上，用来替换如HTTP这种通讯协议。
RSocket提供四种交互模型：

request/response：请求返回一条流数据（Mono&lt;T&gt;）；
request/stream：请求返回多条流数据（Flux&lt;T&gt;）；
fire-and-forget：请求不返回数据（Mono&lt;Void&gt;）；
channel：双向流数据通讯（Flux&lt;R]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战96 - 事件驱动5 - Websocket之Reactive Websocket]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107375469</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107375469</guid><author>wiselyman</author><pubDate>Thu, 16 Jul 2020 09:10:14 +0800</pubDate><description><![CDATA[4.2 Reactive Websocket
在这一小节，我们对响应式的Websocket进行简单的演示。
4.2.1 新建应用
新建应用，信息如下：
Group：top.wisely
Artifact：learning-websocket-reactive
Dependencies：Spring Reactive Web 、Lombok
build.gradle文件中的依赖如下：
dependencies {
	implementation 'org.springframework.boot:spring]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战95 - 事件驱动4 - Websocket之STOMP Websocket]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107352885</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107352885</guid><author>wiselyman</author><pubDate>Wed, 15 Jul 2020 09:39:44 +0800</pubDate><description><![CDATA[4.Websocket
在HTTP协议下，我们可以通过Websocket进行服务端和客户端进行全工通讯，即客户端和服务端都可通过通道直接向彼此发送数据。当我们使用STOMP的时候，应用作为所有连接客户端的消息代理，当然我们使用支持STOMP协议的第三方消息代理如RabbitMQ来负责。
4.1  STOMP Websocket
我们可以在Websockets之上使用STOMP（Simple/Streaming Text Oriented Message Protocol）协议进行交互。
4.1.1 新建应用]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战94 - 事件驱动3 - Kafka与Kafka Streams]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107330572</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107330572</guid><author>wiselyman</author><pubDate>Tue, 14 Jul 2020 09:15:44 +0800</pubDate><description><![CDATA[3.Kafka
Apache Kafka以Topic为导向，提供消息中间件的功能。一个类型的数据称之为一个Topic。
3.1 安装Kafka
使用docker compose安装Apache Kafka。
stack.yml
version: '3.1'

services:
  zookeeper:
    image: wurstmeister/zookeeper
    restart: always

  kafka:
    image:  wurstmeister/kafka
    port]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战93 - 事件驱动2 - RabbitMQ]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107310145</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107310145</guid><author>wiselyman</author><pubDate>Mon, 13 Jul 2020 09:20:44 +0800</pubDate><description><![CDATA[2.RabbitMQ
这节演示RabbitMQ支持的AMQP协议，理解AMQP需要了解下面三个概念：
当发布者发送的消息和消息的routing key到RabbitMQ中间件时：

exchange：基于消息的routing key，将消息路由到一个或多个的queue；
binding： binding是设置queue绑定到exchange的连接；
queue：消息队列

exchange主要有下面的类型：

Default：将消息路由到名称为routing key的queue，所有的queue都会自动绑定]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战92 - 事件驱动1 - JMS]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107223106</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107223106</guid><author>wiselyman</author><pubDate>Thu, 09 Jul 2020 10:55:59 +0800</pubDate><description><![CDATA[事件驱动开发是一种异步的、用来开发高扩展应用、分布式的架构。它涉及到事件的产生、处理和消费。了解事件驱动首先要了解下面四个概念：

Message/Event：消息或事件，需要产生、处理和消费的数据；
Publisher/Producer：消息的发布者或生产者；
Subsriber/Consumer：消息的订阅者或消费者；
Message Broker：消息代理或消息中间件，是发布者和订阅者另外的第三方；通过消息代理了来转发消息，发布者和订阅者无需知道彼此的存在。

1.JMS
Spring支持Active]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战91 - 响应式编程6 - 响应式安全控制（Reactive Spring Security）]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107196875</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107196875</guid><author>wiselyman</author><pubDate>Wed, 08 Jul 2020 08:35:16 +0800</pubDate><description><![CDATA[5. Reactive Spring Security
5.1 Reactive Spring Security原理
Spring MVC的Security是通过Servlet的Filter实现的，而WebFlux的响应式Security是基于WebFilter实现的，由一些列的WebFilter形成的过滤器链。


认证
Spring WebFlux下的响应式安全和Spring MVC下的安全认证机制也是有概念对应的：




Spring WebFlux Security
Spring Web MVC ]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战90 - 响应式编程5 - Reactive 关系型数据库（R2DBC）]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107173150</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107173150</guid><author>wiselyman</author><pubDate>Tue, 07 Jul 2020 08:36:15 +0800</pubDate><description><![CDATA[4. Reactive关系型数据库-R2DBC
与关系型数据库进行交互的JDBC不具备与数据库异步交互的能力，R2DBC（Reactive Relational Database Connectivity）将响应式编程API带给关系型SQL数据库。
Spring Data R2DBC为此提供支持，同样Spring Boot也提供了starter：spring-boot-starter-data-r2dbc和自动配置：spring-boot-actuator-autoconfigure-r2dbc。
在本书编]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战89 - 响应式编程4 - Reactive NoSQL之Reactive MongoDB]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107149803</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107149803</guid><author>wiselyman</author><pubDate>Mon, 06 Jul 2020 09:20:55 +0800</pubDate><description><![CDATA[3.2 响应式MongoDB
在这一节我们在演示一下响应式MongoDB的应用，首先我们先安装MongoDB。
3.2.1 MongoDB安装
使用docker compose安装MongoDb。
stack.yml
version: '3.1'

services:

  mongo:
    image: mongo
    restart: always
    ports:
      - 27017:27017
    environment:
      MONGO_INITDB_ROOT_US]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战88 - 响应式编程3 - Reactive NoSQL之Reactive ElasticSearch]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107098901</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107098901</guid><author>wiselyman</author><pubDate>Fri, 03 Jul 2020 09:35:57 +0800</pubDate><description><![CDATA[3. Reactive NoSQL
上面我们的Repository是非响应式的，而响应式编程要求全栈技术都是响应式，所以这节我们讨论响应式的Spring Data。目前Spring Data支持的响应式的NoSQL有：

MongoDB：使用spring-boot-starter-data-mongodb-reactive依赖；
Redis：使用spring-boot-starter-data-redis-reactive依赖；
Cassandra：使用spring-boot-starter-data-ca]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战87 - 响应式编程2 - Spring WebFlux（类WebMVC注解式控制器、函数式端点、WebFlux的配置）]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107076309</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107076309</guid><author>wiselyman</author><pubDate>Thu, 02 Jul 2020 08:07:07 +0800</pubDate><description><![CDATA[2. Spring WebFlux
新建应用，信息如下：
Group：top.wisely
Artifact：learning-webflux
Dependencies：Spring Reactive Web、Lombok
build.gradle文件中的依赖如下：
dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-webflux'
   compileOnly 'org.projectlombok:]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战86 - 响应式编程1 - Project Reactor]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107059332</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107059332</guid><author>wiselyman</author><pubDate>Wed, 01 Jul 2020 11:17:55 +0800</pubDate><description><![CDATA[Spring 5.x的最大的更新是将响应式编程作为头等的支持，响应式开发将极大的提升应用系统的性能。响应式应用是完全异步和非阻碍的，需要应用的每个环节都是异步非阻碍的，所以Spring对响应式编程进行了全角度的支持：

Web：Spring WebFlux和WebFlux.fn
数据库： Reactive Spring Data
安全：Reactive Spring Security
客户端：WebClient

Spring 的响应式编程是以Project Reactor为基石的，它用来构建基于JVM R]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战85 - Spring Security 9 - OAuth 2.0之Client]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107033647</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107033647</guid><author>wiselyman</author><pubDate>Tue, 30 Jun 2020 09:29:46 +0800</pubDate><description><![CDATA[OAuth 2.0是安全授权的工业标准协议，我们了解它需要理解下面的专用术语：



交互参与方：

Client：需要访问Resource Sever受保护资源的应用；
Resource Owner ：终端用户，Client通过终端用户进行不同类型的授权（Grant Type）；
Authorization Server：提供访问授权的应用，Client使用某种Grant Type向Authorization Server获取Access Token；
Resource Sever：包含受保护资源的应用，]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战84 - Spring Security 8 - OAuth 2.0之Resource Server（基于JWT）]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/107017518</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/107017518</guid><author>wiselyman</author><pubDate>Mon, 29 Jun 2020 11:59:39 +0800</pubDate><description><![CDATA[OAuth 2.0是安全授权的工业标准协议，我们了解它需要理解下面的专用术语：



交互参与方：

Client：需要访问Resource Sever受保护资源的应用；
Resource Owner ：终端用户，Client通过终端用户进行不同类型的授权（Grant Type）；
Authorization Server：提供访问授权的应用，Client使用某种Grant Type向Authorization Server获取Access Token；
Resource Sever：包含受保护资源的应用，]]></description><category></category></item><item><title><![CDATA[Spring Boot 2.x实战83 - Spring Security 7 -OAuth 2.0之Authorization Server（基于JWT）]]></title><link>https://blog.youkuaiyun.com/wiselyman/article/details/106991782</link><guid>https://blog.youkuaiyun.com/wiselyman/article/details/106991782</guid><author>wiselyman</author><pubDate>Sun, 28 Jun 2020 08:38:31 +0800</pubDate><description><![CDATA[3 OAuth 2.0
OAuth 2.0是安全授权的工业标准协议，我们了解它需要理解下面的专用术语：



交互参与方：

Client：需要访问Resource Sever受保护资源的应用；
Resource Owner ：终端用户，Client通过终端用户进行不同类型的授权（Grant Type）；
Authorization Server：提供访问授权的应用，Client使用某种Grant Type向Authorization Server获取Access Token；
Resource Sever]]></description><category></category></item></channel></rss>