- 博客(85)
- 资源 (2)
- 收藏
- 关注

原创 (七)SpringCloud+Security+Oauth2--oauth2客户端公用配置抽离
在前面的文章我们是了解到传统的分布式架构在鉴权时,是通过Gateway网关来对接口请求进行统一的客户端鉴权,这种好处就是在代码编写时,只要不经过网关我们在测试接口的不需要token就能快速反问接口,这种在平时开发时是比较遍历,但是一旦资源服务器的端口暴露,就相当于全部的接口裸露在外面,是比较危险的但是每个资源服务的oauth2客户端配置是比较类似的,我们可以抽离出一个公用的组件,对外提供一个资源服务器注解即可,让对应的资源服务器变成oauth2的客户端,这样极大的提高了资源服务器的安全性代码目录
2022-12-06 15:17:00
510

原创 (四)Spring Security Oauth2.0 源码分析--客户端端鉴权(token校验)
在上篇文章我们分析了token的获取过程,那么拿到token后,将token放在请求头中进行资源的访问,客户端是如如何对token进行解析的呢,本文带你走进token校验的源码解析,基本流程如下所示请求被FilterChainProxy拦截到(ps:通过前面的文章查看其底层原理),通过作为权限校验的入口进行token校验三 认证服务器根据token鉴权1 首先进入BasicAuthenticationFilter,对clientId进行校验(这里不做分析 参考上篇文章)2、然后进入Che
2022-12-06 10:02:13
3055

原创 (二)SpringCloud+Security+Oauth2 微服务初步集成
本文主要好介绍了SpringCloud+Security+Oauth2 的初步集成,项目源码地址oauth2.0集成案例,以下案例主要是核心源码的解释,案例源码请查看案例源码 oauth认证中心 oauth客户端 注册中心和配置中心 公用组件Oauth2提供了适配器类来作为认证授权服务的配置,其中有三个方法源码如下:配置详解:配置详解:配置类上贴注解开启授权服务配置,继承实现配置的增强配置客户端详情配置默认会去找数据库中的 名字为 表中的数据作为客户端详情的配置,见 JdbcClientD
2022-12-05 16:32:58
2039

原创 自定义springboot组件--统一封装http客户端实现
http是第三方接口调用的常用工具,该组件通过对常见的http客户端工具进行统一的整合,参考了feign的上下文和springmvc的拦截器等相关设计思路,设计了相应的Context用于对请求上下文的相关配置进行统一的配置,避免客户端配置混乱配置,保证了项目的统一配置,并内置了相应拦截器,用于客户端自定义相关的业务逻辑,比如通过模仿feign的拦截器,解决了feig三方接口调用时无token的尴尬..........
2022-07-25 15:49:16
1284
3

原创 自定义springboot组件--基于nacos和spring-cloud-loadbalancer实现灰度发布
灰度发布也叫金丝雀发布,起源是,矿井工人发现,金丝雀对瓦斯气体很敏感,矿工会在下井之前,先放一只金丝雀到井中,如果金丝雀不叫了,就代表瓦斯浓度高.在灰度发布开始后,先启动一个新版本应用,但是并不直接将流量切过来,而是测试人员对新版本进行线上测试,启动的这个新版本应用,就是我们的金丝雀。如果没有问题,那么可以将少量的用户流量导入到新版本上,然后再对新版本做运行状态观察,收集各种运行时数据,如果此时对新旧版本做各种数据对比,就是所谓的A/B测试。当确认新版本运行良好后,再逐步将更多的流量导入到新版本上,在此
2022-06-24 10:42:58
2953
5

原创 自定义springboot组件--基于模板模式对原生springboot的rabbitmq组件进行扩展
在我们的日常开发中,消息中间件已经成为了java研发工程师的一项必备技能,本文主要是基于对springboot原生组件的扩展开发,基于模板设计模式和静态代理模式,简化了队列路由的绑定,交由公共模板进行统一的绑定,并在公用模板中保证了消息的幂等性和消息的可靠性投递,将这些类似的代码抽离出来,让开发者只专注于业务逻辑的开发.整体实现思路:将静态代理器和初始器交由spring容器管理将初始化容器交给spring容器管理2.4 申明公用基础属性2.5定义sprin
2022-06-22 16:18:42
759

原创 自定义springboot组件--基于redisson实现分布式锁
基于Redisson实现分布式锁,自定义springboot组件抽离核心代码实现跌低耦合分布式锁
2022-06-16 14:55:05
433

原创 springboot自定义组件--自定义防重放防篡改组件实现对外提供第三方api安全策略
在日常开发中我们会向第三提供api接口,所以必须暴露到外网,并提供了具体请求地址和请求参数,为了防止被第别有用心之人获取到真实请求参数后再次发起请求获取信息,需要采取很多安全机制;.........
2022-06-13 18:01:57
1240
4

原创 自定义springboot组件--excel导入(自定义参数解析器)
日常开发中,我们经常用到excel的导入,由于excel导入的的步骤相似度较大,本文基于自定义参数解析器实现对excel导入基本操作的抽离,在项目中快速实现excel的基本导入功能.自定义参数解析器需要实现 HandlerMethodArgumentResolver 接口,我们先来看看该接口:这个接口中就两个方法:下文中的excle导入组件基于easyexcel实现抽象一个list监听器,在里面定义一个获得数据和获取数据校验失败的结果集执行结果:...
2022-06-02 14:22:48
1094

原创 扩展springboot内置异常拦截器--自定义全局异常处理组件
一 背景日常开发中,我们通常基于@ControllerAdivce和springboot的ErrorController对代码中抛出的异常进行统一的拦截,返回统一的格式,但是随着业务的持续迭代升级,对不同场景下的异常业务有不同的处理,比如有点异常需要国际化,有的异常需要消息通知,如果都同一拦截处理不同的异常会导致改拦截体中的方法越来越多.本文针对上述场景基于策略模式,构造者模式等实现对异常处理统一封装,并作为springboot的自定义starter二 整体实现思路将异常的处理统一抽象成Exce
2022-05-30 15:13:43
696
原创 PKI-01 PKI概述
PKI (Public Key Infrastructure,公钥基础设施)是一种用于管理数字证书和公钥加密的框架。它是组织和发不用于加密、身份验证、数字签名和其他加密任务的密钥和证书系统。
2024-12-20 09:19:34
351
原创 彻底告别BeanUtils.copyProperties (),MapStruct使用教程
MapStruct也支持在映射前后做一些自定义操作,类似Spring的AOP中的切面此时我们需要创建自定义处理方法,创建一个抽象类ProductRoundMapper,通过@BeforeMapping注解自定义映射前操作,通过@AfterMapping注解自定义映射后操作})//映射前当price
2023-11-03 10:06:29
657
原创 15 【Vue-Router】
完整的导航解析流程导航被触发。在失活的组件里调用守卫。调用全局的beforeEach守卫。在重用的组件里调用守卫 (2.2+)。在路由配置里调用。解析异步路由组件。在被激活的组件里调用。调用全局的守卫 (2.5+)。导航被确认。调用全局的afterEach钩子。触发 DOM 更新。调用守卫中传给 next 的回调函数,创建好的组件实例会作为回调函数的参数传入。
2023-06-09 13:43:32
887
1
原创 13 【代理配置 插槽】
如多个组件的布局使用相似模板,只是具体内容不同,那么我们可以使用这种插槽方式封装成一个通用组件,在其他组件使用的时候只需要传对应的内容到对应名字的插槽即可,不需要将该模板在每个组件重新写一遍,减少代码冗余,大大提高开发效率。的组件指定的位置留一个坑,如果在外部,使用其组件包裹某内容(可以是任何模板代码,也可以是HTML,还可以是组件),则该内容就会被分发到。表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的。:关于样式,既可以写在父组件中,解析后放入子组件插槽;
2023-06-07 16:56:41
873
原创 14 【Vuex】
概念:专门在Vue中实现集中式状态(数据)管理的一个Vue插件,对Vue应用中多个组件的共享状态进行集中式的管理(读/写),也是一种组件间通信的方式,且适用于任意组件间通信。概念:当state中的数据需要经过加工后再使用时,可以使用getters加工。使用时,若需要传递参数需要:在模板中绑定事件时传递好参数,否则参数是事件对象。备注:若没有网络请求或其他业务逻辑,组件中也可以越过actions,即不写。为了解决不同模块命名冲突的问题,将不同模块的。开启命名空间后,组件中调用commit。
2023-06-07 16:56:36
765
原创 11 【组件通信】
使用于场景:子组件给父组件传递数据on与on与on与emit$emit绑定一个自定义事件event,当这个这个语句被执行到的时候,就会将参数arg传递给父组件,父组件通过@event监听并接收参数。可以实现任意组件的通信的方法有两个:事件总线 和 Vuex,事件总线难维护数据但轻量,Vux维护数据方便但比较重量。和具有响应性且可以双向通信,无响应性且只能单向通信(父传子)props/emit,方法比较基础,适合只有父子组件通信的方法,若想跨层级通信需要中间组件做转发,比较麻烦。
2023-06-06 11:17:03
326
原创 12 【nextTick 过渡与动画】
Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。包括以下工具:1、在 CSS 过渡和动画中自动应用 class;2、配合使用第三方 CSS 动画库,如 Animate.css;3、在过渡钩子函数中使用 JavaScript 直接操作 DOM;4、配合使用第三方 JavaScript 动画库,如 Velocity.js。作用:Vue封装的在插入、更新或移除DOM元素时,在合适的时候给元素添加样式类名。写法:元素进入的样式:v-enter:进入的起点。
2023-06-06 11:16:18
287
原创 10 【组件编码流程 组件自定义事件 全局事件总线】
data() {return {msg:'你好啊!',},methods: {console.log('App收到了学生名:',name,params)
2023-06-05 17:34:10
515
原创 09 【CLI 初始化脚手架 Vue零碎的一些知识】
1如果下载缓慢请配置npm淘宝镜像npm config set registry http://registry.npm.taobao.org2全局安装 @vue/cli npm install -g @vue/cli3切换到创建项目的目录,使用命令创建项目vue create xxx4选择使用vue的版本5启动项目npm run serve6打包项目npm run build7暂停项目 Ctrl+C。
2023-06-05 11:35:22
519
原创 08 【生命周期 组件】
beforeCreate(创建前):数据检测getter和setter和初始化事件还未开始,此时data的响应式追踪、event/watcher 都还没有被设置,也就是说不能访问到datacomputedwatchmethods上面的方法和数据create(创建后):实例创建完成,实例上配置的 options 包括datacomputedwatchmethods等都配置完成,但是此时渲染得节点还未挂载到 DOM,所以不能访问到$el属性。beforeMount(挂载前)
2023-06-05 10:02:57
566
原创 06 【Vue数据监视 v-model双向绑定】
Vue会见识data中所有层次的数据如何检测对象中的数据?通过setter实现监视,且要在new Vue是传入要检测的数据.对象中后追加的属性,Vue默认不做响应式处理或如何监测数组中的数据?通过包裹数组更新元素的方法实现,本质就是做了两件事:调用原生对应的方法对数组进行更新重新解析模板,进而更新页面在Vue修改数组中的某个元素一定要用如下方法:Vue.set()或vm.$set()Vue.set()和vm.$set()不能给vm 或 vm的根数据对象 添加属性!!!
2023-06-02 10:09:45
436
原创 05 【绑定样式 条件渲染 列表渲染】
最好使用每条数据的唯一标识作为key, 比如id、手机号、身份证号、学号等唯一值如果不存在对数据的逆序添加、逆序删除等破坏顺序操作,仅用于渲染列表用于展示,使用index作为key是没有问题的。
2023-06-02 09:50:16
558
原创 03 【数据代理 事件处理】
了解数据代理需要js的一些知识:Object.defineProperty(),属性标志,属性描述符,getter,setter。。。
2023-06-01 10:17:01
633
原创 02 【el和data的两种写法 MVVM模型】
有2种写法创建Vue实例对象的时候配置el属性先创建Vue实例,随后再通过vm.$mount(‘#root’)指定el的值有2种写法
2023-06-01 10:16:19
959
原创 01 【Vue简介 初识Vue 模板语法和数据绑定】
Vue 是一套用来动态构建用户界面的渐进式JavaScript框架○构建用户界面:把数据通过某种办法变成用户界面○渐进式:Vue可以自底向上逐层的应用,简单应用只需要一个轻量小巧的核心库,复杂应用可以引入各式各样的Vue插件作者:尤雨溪。
2023-06-01 10:13:11
727
原创 11【Sass语法介绍-导入】
在 CSS 中我们可以通过 @import 来导入一个样式文件,Sass 扩展了 CSS 的 @import 规则,使得可以导入 CSS 后缀的样式文件和 Scss 后缀的样式文件,并且提供了对 mixin 、函数和变量的访问。与 CSS 的 @import 不同的是, CSS 使用 @import 导入文件是在页面渲染的时候发起多个 http 请求来获取文件内容,而 Sass 的导入 @import 是在编译时获取文件内容导入的。
2023-04-28 10:43:25
1081
原创 10 【Sass语法介绍-继承】
在我们编写样式的时候,很多情况下我们几个不同的类会有相同的样式代码,同时这几个类又有其自己的样式代码,这使我们就可以通过 Sass 提供的继承@extend 来实现。本节内容我们将讲解 Sass 继承的语法以及继承的多重延伸等等,在 Sass 中继承也是非常好用的功能之一,所以你要重点熟悉 @extend 的用法,下面我们一起来学习它。继承,我们也叫做代码重用,在 Sass 中支持对样式进行继承。color: red;
2023-04-28 10:42:39
1141
原创 09 【Sass语法介绍-函数指令】
在之前的章节我们学习过 Sass 提供的各种各样的函数,那么如果我们需要自定定义函数来使用就需要用到函数指令 @function了。本节内容我们来学习 Sass 函数指令的语法和使用,在 Sass 中自定义函数是必须要掌握的!// 定义函数// 使用函数.p {font: a();回忆一下,上面的代码在之前的章节中也出现过,这就是函数指令,定义好一个函数后我们就可以使用了,下面我们开始详细讲解函数指令。函数指令是通过 @function 来定义。
2023-04-28 10:40:41
897
原创 08 【Sass语法介绍-混合指令】
混合指令在 Sass 中也是一个比较常用的指令,在前面我们讲解的内容中有编写过混合指令 @mixin ,本节我们将详细讲解混合指令 @mixin 的语法包括定义混合指令和引用混合指令等等,混合指令同样非常好用,我们一起来学习它吧。混合指令的出现使你可以定义在样式表中重复使用的样式,这可以使你免去编写过多重复的样式,而且在混合指令 @mixin 中你也可以做一些逻辑处理。混合指令是一个很好用的指令,它将帮你更合理的维护样式代码,学会这种方式写起样式来也很便利,下面我们开始详细的讲解它。混合指令的定义是。
2023-04-28 10:40:08
948
原创 07 【Sass语法介绍-控制指令】
Sass 为我们提供了很多控制指令,使得我们可以更高效的来控制样式的输出,或者在函数中进行逻辑控制。本节内容我们就来讲解什么是 Sass 控制指令?它能用来做什么?它将使你更方便的编写 Sass。@if 指令@each 指令@for 指令@while 指令如果你熟悉其他的编程语言或者你熟悉 javascript ,看见上面这四种是不是很熟悉,它们在 Sass 中也是用来做条件判断和循环的,下面我们就看一下它们如何在 Sass 中应用。
2023-04-28 10:39:24
991
原创 06 【Sass语法介绍-函数】
Sass 中的函数,这在 Sass 中是比较强大的一个功能,同时使用场景和语法也比较多,所以本节内容篇幅较长,但你一定要好好学习, Sass 函数很重要!在 Sass 中函数中几乎可以用到前面你学的所有章节的内容,所以说函数包括万象同时功能也非常强大,本节我们将详细讲解 Sass 中各种函数的功能和用法。函数是一段可以被另外的程序或代码调用的“子程序”,一个函数由称为函数体的一系列代码语句组成,并且函数也可以接收值,在大多数语言中函数都是这样的,Sass 中的函数也是一样。字符串函数数字函数。
2023-04-28 10:38:25
856
原创 05 【Sass语法介绍-插值】
在很多编程器语言中都有插值这个概念,在 Sass 样式表的任何地方几乎都可以使用插值,你可以将这些包裹在 #{} 中来使用,所以记住在 Sass 中使用插值的方式是#{},本节我们一起来看一下插值在 Sass 中的使用场景以及它的语法插值也就是可以在特定的区域插入一段表达式或者插入一个变量,以此来实现内容动态变换的需求。类似 es6 中的插值表达,插值几乎可以用在任何地方。。在选择器中使用在属性名中使用在属性值中使用在注释中使用。
2023-04-27 17:06:15
612
原创 04 【Sass语法介绍-运算】
运算是一种通过已知量可能的组合,获得新的量的行为。Sass 中也为我们提供了各种各样的运算,以便我们更好的处理样式代码。本节我们将学习 Sass 中的数字运算、关系运算、除法运算、颜色运算、字符串运算等等…运算从我们小时候就开始学习了,那在 Sass 中的运算是什么呢?在我们写样式的时候,很多场景我们是需要用到计算的,而一般我们都是通过 javascript 来计算,CSS3 中也提供了用于运算的函数 calc() ,可能在工作中你使用过这个函数用来计算长度值,能用到的地方也非常有限。
2023-04-27 16:56:58
546
原创 03 【Sass语法介绍-嵌套】
在企业的实际项目开发中,Sass 的嵌套可以说是非常非常有用的,它可以让你的 CSS 代码易于管理和维护,看起来也比较清晰,这也是 Sass 中很基础的一个知识点,首先掌握这个至关重要!在此章节我们将学习 Sass 嵌套中的嵌套规则、属性嵌套、父选择器和占位符选择器。Sass 嵌套式一个很基础也很简单的语法,关键在于要多多练习使用!
2023-04-27 16:23:54
824
原创 02 【Sass语法介绍-变量】
Sass 为 CSS 引入了变量这一功能,在实际项目中使用最普遍的除了 Sass 嵌套 就是 Sass 变量了,你可以把 CSS 的某个属性值定义为变量,然后在项目中任何需要它的地方来使用它。本节主要讲解 Sass 变量的主要语法:变量的声明、引用、作用域等,同时还会讲解在实际项目中一般是如何来维护 Sass 变量的。Sass 简介中提到 Sass是 CSS的扩展语言,变量是 CSS的扩展功能。举个例子,假如我们项目中很多地方要设置一个字体颜色为红色,那么我们完全可以把这个颜色抽出来作为一个变量。
2023-04-27 15:16:44
982
原创 01 【Sass的安装使用】
什么是css预处理技术CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行编码工作。通俗的说,“CSS 预处理器用一种专门的编程语言,进行 Web 页面样式设计,然后再编译成正常的 CSS 文件,以供项目使用。
2023-04-27 15:15:31
2295
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人