reactive

gateway欺人太甚!

戏子无情 提交于 2020-08-15 18:09:09
需求: 通过gateway来转义请求参数中的html标签的“<”、“>”等,来防止xss攻击 版本: springbootVersion:2.1.6RELASE springCloudGatewayVersion:2.1.2RELASE 因为gateway版本不同所以获取请求参数的方式也不同,这个版本的gateway是通过webflux来处理参数的,什么是 webflux 请点击查看,这里就不过多赘述了 对于gateway的过滤器有很多种实现方式,根据具体的业务需求来选定最便捷、最简单的处理方式 这里是我自定义gatewayfilter过滤器代码实现: 此代码只处理了两种contentType是:application/json和application/json;charset=UTF-8 对于contentType是multipart/form-data没有处理这是缺陷,如有好的处理方式请留言,大家一起学习一起进步 import lombok.extern.slf4j.Slf4j; import org.owasp.esapi.ESAPI; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter

ribbon-loadbalancer 负载均衡单独使用

て烟熏妆下的殇ゞ 提交于 2020-08-15 16:33:00
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.mycompany.ribbon.test ; import com.google.common.collect.Lists ; import com.netflix.client.DefaultLoadBalancerRetryHandler ; import com.netflix.client.RetryHandler ; import com.netflix.loadbalancer.* ; import com.netflix.loadbalancer.reactive.LoadBalancerCommand ; import com.netflix.loadbalancer.reactive.ServerOperation ; import rx.Observable ; import java.net.HttpURLConnection ; import java.net.URL ;

vue3.0体验卡

梦想的初衷 提交于 2020-08-15 12:16:55
前言 vue3.0 Rc (候选发布版本)已经于 7月18 上线,离正式版本发布已经不远了,鉴于此,本人就通过@ vue/composition-api 这个 Vue Composition API 来事先体验下3.0的新特性,为以后能快速上手新版本做准备。 准备工作 下载与引入 下载体验版api npm i @vue / composition - api 引入与使用 1. 在main . js中要引入全部的api import VueCompositionApi from '@vue/composition-api' Vue . use ( VueCompositionApi ) 2. 在页面中按需引入api import { 需要使用的api } from '@vue/composition-api' tips: main.js 和局部页面都需要引入,不能只在页面中引入。 开发与使用 reactive和toRefs reactive 创建响应式数据, toRefs 把普通数据转换成响应式数据 < template > < div class = " home " > < span > {{name}} </ span > < span > {{num}} </ span > < button @click = " btn " > 按钮 </ button > < button

【译文】【前端架构鉴赏 01】:Angular 架构模式与最佳实践

自作多情 提交于 2020-08-14 01:17:30
本文原文: Angular Architecture Patterns and Best Practices (that help to scale) 译者序 这是作为译者我想说的话,并非原文中的内容。 我猜此时此刻你心里的疑问一定是:为什么是 Angular,不是 React,不是 Vue,不是 Flux,不是 Redux ? 因为你已经对它们太熟悉了。 我个人作为开发者而言最希望是能够汲取到“圈外”的“营养”,这样才能给我的成长带来帮助。 我想对各位也是一样。 你不用担心因为不会 Angular 而看不懂这一些列文章,它们基本上谈论的是应用架构——关于设计、组织、抽象,很少会落到具体的实现,即使有,连蒙带猜也能推测出一二。这也能从侧面说明我衷心想推荐这些佳作的原因:通过大段大段的代码阐述很容易;难的是几乎不用代码来跨越语言的说明更高层次的东西,比如 Martin Fowler, Uncle Bob Martin 他们的文章就能如此。 我不评价框架的流行和好坏,我只是把一切呈现在各位的眼前。它们并非和 Flux,Vuex 大相径庭,反而你们会看到它们的影子,但更多的是不一样的东西。我在里面看到了更好的职责划分和抽象。 在文中我会以引用的格式和“译者注”开头穿插一些我的个人备注和带给我启发性的问题,你可以理解为文章的“评论音轨”,但其中问题我不会给予回答。你也可以忽略这些评论

SpringBoot2 | SpringBoot启动流程源码分析(一)

前提是你 提交于 2020-08-13 19:17:00
SpringBoot2 | SpringBoot启动流程源码分析(一) SpringBoot2 | SpringBoot启动流程源码分析(二) SpringBoot2 | @SpringBootApplication注解 自动化配置流程源码分析(三) SpringBoot2 | SpringBoot Environment源码分析(四) SpringBoot2 | SpringBoot自定义AutoConfiguration | SpringBoot自定义starter(五) SpringBoot2 | SpringBoot监听器源码分析 | 自定义ApplicationListener(六) SpringBoot2 | 条件注解@ConditionalOnBean原理源码深度解析(七) SpringBoot2 | Spring AOP 原理源码深度剖析(八) SpringBoot2 | SpingBoot FilterRegistrationBean 注册组件 | FilterChain 责任链源码分析(九) SpringBoot2 | BeanDefinition 注册核心类 ImportBeanDefinitionRegistrar (十) SpringBoot2 | Spring 核心扩展接口 | 核心扩展方法总结(十一) 概述:

【译文】【前端架构鉴赏 02】:可拓展 Angular 2 架构

故事扮演 提交于 2020-08-12 05:12:59
李熠:【译文】【前端架构鉴赏 01】:Angular 架构模式与最佳实践 ​ zhuanlan.zhihu.com 原文 https:// blog.strongbrew.io/A-sc alable-angular2-architecture/ 序 这篇文章或许看上去仅和 Angular2 开发者相关,但我相信它也适用于其它的框架。这只是一份关于编写具有可拓展性和可维护性单页面应用的指南。需要指出的非常重要的是,这并不是达成目标的唯一方式,但是对我个人而言它们在不少的场景中都行之有效 编写可拓展性的单页面应用 许多开发者在编写大型的具有可拓展性和可维护性的单页面应用时都遇到困难。导致在开发早期就留下了技术债,修复 bug 时举步维艰,编写测试和创建复用代码时也踌躇不前 最大的一个挑战是:在一个拧巴的基础之上拓展现有逻辑和编写新的功能 对于那些能允许你用100种不同方式设计一个应用,没有结构和封装可言,一切东西都紧紧的耦合在一起的旧时框架,单页面应用是全新的概念 大部分时候在项目的开发的初始阶段都希望快速迭代。但是经过一些开发者,几轮功能迭代和重构之后,代码变得越来越难以维护。它开始看上去像意大利面了。虽然目前框架成熟了很多,但重要的是你编写的软件架构也要与时俱进 2016 年的单页面应用(甚至更早之前) 为了解释这篇文章谈到的架构,有必要回顾一下2016年的web应用长什么样子

精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用

痴心易碎 提交于 2020-08-11 17:59:21
一、什么是 RestTemplate? RestTemplate 是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(例如JDK HttpURLConnection,Apache HttpComponents,okHttp等)基础封装了更加简单易用的模板方法API。也就是说RestTemplate是一个封装,底层的实现还是java应用开发中常用的一些HTTP客户端。但是相对于直接使用底层的HTTP客户端库,它的操作更加方便、快捷,能很大程度上提升我们的开发效率。 RestTemplate 作为spring-web项目的一部分,在Spring 3.0版本开始被引入。RestTemplate类通过为HTTP方法(例如GET,POST,PUT,DELETE等)提供重载的方法,提供了一种非常方便的方法访问基于HTTP的Web服务。如果你的Web服务API基于标准的RESTful风格设计,使用效果将更加的完美。 根据Spring官方文档及源码中的介绍,RestTemplate在将来的版本中它可能会被弃用,因为他们已在Spring 5中引入了WebClient作为非阻塞式Reactive HTTP客户端。但是RestTemplate目前在Spring 社区内还是很多项目的“重度依赖”,比如说Spring Cloud。另外,RestTemplate说白了是一个客户端API封装

Rx.NET响应式编程

落花浮王杯 提交于 2020-08-11 13:50:54
响应式编程 Rx.NET 了解下 1. 引言 An API for asynchronous programming with observable streams. ReactiveX is a combination of the best ideas from the Observer pattern, the Iterator pattern, and functional programming . ReactiveX 使用可观察数据流进行异步编程的API。 ReactiveX结合了观察者模式、迭代器模式和函数式编程的精华 。 关于Reactive(本文统一译作响应式),有一个 The Reactive Manifesto 【响应式宣言】: 响应式系统(Reactive System)具备以下特质:即时响应性(Responsive)、回弹性(Resilient)、弹性(Elastic)以及消息驱动(Message Driven)。 很显然开发一个响应式系统,并不简单。 那本文就来讲一讲如何基于Rx.NET进行响应式编程,进而开发更加灵活、松耦合、可伸缩的响应式系统。 2. 编程范式 在开始之前呢,我们有必要了解下几种编程范式:命令式编程、声明式编程、函数式编程和响应式编程。 命令式编程 :命令式编程的主要思想是关注计算机执行的步骤,即一步一步告诉计算机先做什么再做什么。

用vue3.0.1如何搭建仿京东的电商H5项目呢?本文实战教你

倾然丶 夕夏残阳落幕 提交于 2020-08-11 03:50:34
前言 就在前段时间,vue官方发布了3.0.0-beta.1 版本,趁着五一假期有时间,就把之前的一个电商商城的项目,用最新的 Composition API 拿来改造一下! 👉GitHub地址请访问🔗: github.com/GitHubGanKa… 项目介绍 vue-jd-h5 是一个电商H5页面前端项目,基于Vue 3.0.0-beta.1 + Vant 实现,主要包括首页、分类页面、我的页面、购物车等。 📖本地线下代码vue2.6在分支 demo 中,使用mockjs数据进行开发,效果图请点击🔗 这里 ❌️master分支是线上生产环境代码,因为部分后台接口已经挂了😫,不建议使用! 📌 本项目还有很多不足之处,如果有想为此做贡献的伙伴,也欢迎给我们提出PR或者issue ; 🔑 本项目是免费开源的,如果有伙伴想要在次基础上进行二次开发,可以clone或者fork整个仓库,如果能帮助到您,我将感到非常高兴,如果您觉得这个项目不错还请给个start! 🙏 除了本项目,我结合多年开发经验整理出2020最新企业级实战视频教程 包括 Vue3.0/Js/ES6/TS/React/node等,想学的可进扣扣裙 519293536 免费获取,小白勿进哦! 搭建步骤 首先,选择一个文件,将代码clone到本地(需要先fork代码到你自己的仓库,别用我的这个链接): git clone

404 error with swagger-ui and spring webflux

有些话、适合烂在心里 提交于 2020-08-10 22:09:26
问题 I am developping REST services with Spring Webflux and I want to produce documentation with Swagger2 for my API with. I discovered that Webflux is only supported with Swagger2 version 3.0.0 snapshot. Here's my configuration : java 11 maven 3 My SwaggerConfiguration bean looks like this import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders