- 博客(63)
- 收藏
- 关注
原创 基于springSecurity的双token机制(accesToken,refreshToken)以及如何刷新token
核心功能概要: 通过加密算法创建一个用户:1.代码整体结构: 2.所需依赖: 3.UserDetailServiceImpl拦截用户登陆:4.所需工具类4.1ApplicationContextUtils: 4.2JwtUtils:4.3ResponseResult4.4ResponseStatus4.5RsaUtils:4.6.SecurityContextUtil5.SecurityConfig:6.LoginSuccessHandler登陆成功处理器:7.RequestAuthenticationFi
2024-06-14 14:16:51
1641
原创 springboot源码refreshContext精细化阅读
注:该流程图表达了在refreshContext的过程中主要方法的展示以及重点类的标注。
2023-10-25 17:40:19
212
原创 springboot源码解读
一、源码SpringApplication.class主流程,其中重点在刷新应用上下文refreshContext(context).二、源码步骤剖析(持续更新...)
2023-03-30 15:49:48
1172
原创 基于数据库实现分布式锁
前面文章提到实现分布式锁有3种方式,一是基于数据库,二是基于Redis,三是基于Zoomkeeper,前面的文章已经详细介绍过基于Redis实现分布式锁的方法。本文将简单介绍基于数据库的实现方式。二、利用update修改STATUS字段进行获取锁以及释放锁。
2022-08-25 17:03:16
2766
转载 使用 Reactor 进行反应式编程(转)
反应式编程来源于数据流和变化的传播,意味着由底层的执行模型负责通过数据流来自动传播变化。比如求值一个简单的表达式c=a+b,当a或者b的值发生变化时,传统的编程范式需要对a+b进行重新计算来得到c的值。如果使用反应式编程,当a或者b的值发生变化时,c的值会自动更新。反应式编程最早由.NET平台上的ReactiveExtensions(Rx)库来实现。后来迁移到Java平台之后就产生了著名的RxJava库,并产生了很多其他编程语言上的对应实现。...
2022-07-27 17:17:47
300
原创 Docker安装Seata实现分布式事务(注册中心nacos)
一、下载镜像二、启动容器三、将容器中的配置拷贝到/usr/local/seata四、修改/usr/local/seata/resources下配置文件application.yml内容五、将原来容器停止并删除六、重新启动镜像注意:nacos上同样需要配置相同的配置文件......
2022-06-13 11:02:46
576
原创 SpringBoot集成elasticsearch实战
一、添加elasticsearch依赖二、配置elasticsearch地址三、编写配置类配置访问对象RestHighLevelClient四、elasticsearch基本操作(索引创建,文档增删改查,文档批量新增,精确查询、匹配查询)
2022-06-09 11:02:17
552
转载 Springboot整合ShardingSphere实现分库分表
一、ShardingJDBC 简介1.什么是ShardingJDBCShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成,我们只关注 Sharding-JDBC即可.官方地址:https://shardingsphere.apache.org/document/current/cn/overview/Sharding-JDBC定位为轻量级
2022-04-28 15:53:36
5730
1
原创 K8s(Kubernetes)的安装部署
一. Kubernetes 系统简介 首先,k8s是一个全新的基于容器技术的分布式架构领先方案。Kubernetes(k8s)是Google开源的容器集群管理系统(内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。 Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均...
2022-03-30 11:26:23
1540
原创 SpringBoot项目容器(docker)部署
一、修改docker.service,使其暴露2375端口使用命令: vi /lib/systemd/system/docker.service在ExecStart=*******后加入如下内容:-H tcp://0.0.0.0:2375 -H unix://var/run/docker.socksystemctl daemon-reloadsystemctl restart docker二、netstat -tulp查看端口情况三、添加依赖
2022-03-28 16:35:24
4180
原创 SpringBoot整合Druid
Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Spring Boot 2.0 以上默认使用 Hikari 数据源,可以说 Hikari 与 Dri
2022-03-23 15:49:24
1459
转载 vue设置token过期路由
login.vue 代码 methods: { // 登录 handleLogin() { this.$axios.post('/api/Login',{ username: this.loginForm.username, password: this.loginForm.password }).then(res => { if(res.data.code != 0) re
2022-03-23 11:05:08
504
原创 SpringBoot整合Redis实现分布式锁
一、什么是分布式锁?在多线程程序中,不予许多个线程同时操作某个变量或者同时执行某一代码块,我们就需要用锁来实现。在Java中,可以用synchronized或Lock接口的实现类来实现。那么什么是分布式锁呢?当我们的应用通过分布式部署,每个应用部署在不同的机器上,但是我们要保证这些不同机器上的同一方法在同一时间不能被多个线程执行,这时候就要用到分布式锁。二、实现分布式锁的几种方式1.基于数据库实现分布式锁2.基于Redis实现分布式锁3.基于zoomkeeper分布式锁有很多种实现方
2022-03-22 09:27:35
3811
转载 Java并发编程:volatile关键字解析
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volati.
2022-03-16 18:28:46
134
原创 服务器启动jar包服务
nohup java -jar -Dspring.config.location=./bootstrap.yaml dispart-user-0.0.1-SNAPSHOT.jar &
2022-03-08 18:01:24
708
原创 Nginx配置
#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024;}http { include mime.types; defau.
2022-03-08 18:00:40
123
原创 Springboot整合JwtHelper实现非对称加密
一、生成公私钥对提供两种方法,一种基于命令行中的Keytool工具生成,一种是基于SpringSecurity中的KeyPairGenerator类生成,现实现第二种方式:// 加密算法 private static final String KEY_ALGORITHM = "RSA";// 公钥key private static final String PUB_KEY="publicKey";// 私钥key private static fin
2022-03-02 11:17:57
1198
原创 Vue配置生产环境静态资源文件大小
//webpack配置 configureWebpack: { //关闭 webpack 的性能提示 performance: { hints:false }, //或者 //警告 webpack 的性能提示 performance: { hints:'warning', //入口起点的最大体积 maxEntrypointSize: 50000000, //生成文...
2022-03-01 09:20:36
302
原创 vue跨域配置
//配置跨域 devServer: { port:8080, open:true, proxy: { '/api': { //ws: true, //是否启用websockets changeOrigin: true, //开启代理: 在本地会创建一个虚拟服务端,然后发送请求数据,并且同时接收请求数据,这样客户端和服务端进行数据的交互就不会有跨域问题 target: 'http://localhost:8089...
2022-01-10 14:09:54
948
原创 vue配置全局守卫
//路由拦截,拦截全部路由,每次操作路由都是被拦截进行判断router.beforeEach((to,from,next)=>{ const token=localStorage.getItem("token") //筛选需要传token的路由,匹配route里面需要登录的路径,如果匹配到就是true if( to.matched.some(record=>record.meta.requiresAuth) ){ //根据token是否有跳转 if(tok.
2022-01-06 17:20:17
644
原创 vuex状态管理配置
import Vue from 'vue'import Vuex from 'vuex'Vue.use(Vuex)export default new Vuex.Store({ state: { token:localStorage.getItem("token") }, //同步修改state里面的值 mutations: { SET_TOKEN:(state,token)=>{ state.token=token } }, .
2022-01-06 11:12:56
297
原创 SpringBoot整合SpringCloudAlibabaSentinel
一、介绍随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助您保障微服务的稳定性。2、与Hystrix、resilience4j对比Hystrix具有以下功能:线程池隔离/信号量隔离 Sentinel 不支持线程池隔离;信号量隔离对应 Sentinel 中的线程数限流。 熔断器 Sentinel 支持按平均响应时间、异常比率、异常数来进行熔断降级。 Comman
2021-12-24 15:50:03
1044
2
原创 logback配置文件---logback.xml详解
一、添加maven依赖 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <dependency>
2021-12-23 16:08:28
13385
转载 Docker图形化工具使用
一.Docker图形化工具 docker 图形页面管理工具常用的有三种,DockerUI ,Portainer ,Shipyard 。DockerUI 是 Portainer 的前身,这三个工具通过docker api来获取管理的资源信息。平时我们常常对着shell对着这些命令行客户端,审美会很疲劳,如果有漂亮的图形化界面可以直观查看docker资源信息,也是非常方便的。今天我们就搭建单机版的三种常用图形页面管理工具。这三种图形化管理工具以Portainer最为受欢迎。二.DockerU...
2021-12-23 09:05:56
1113
原创 SpringSecurity实战细节记录
一、关于密码加密 一般情况下选择Base64或者MD5加密,其中SpringSecurity中有BCryptPasswordEncoder类供密码加密,三者加密选择优先级如下: BCryptPasswordEncoder>MD5>Base64注:spring security中的BCryptPasswordEncoder方法采用SHA-256+随机盐+密钥对密码进行加密。SHA系列是Hash算法,不是加密算法,使用加密算法意味着可以解密(这个与编码/解码一样),但是采用Ha...
2021-12-20 17:29:32
386
原创 Java生成二维码的几种实现方式(基于Spring Boot)
本文将基于Spring Boot介绍两种生成二维码的实现方式,一种是基于Google开发工具包,另一种是基于Hutool来实现;为了方便理解二维码的实际应用场景,举一些例子!(1)进销存系统 想必大家都听说过,其系统中的商品二维码承载了许多重要、核心的关键信息,比如商品编码、商品名称、规格、型号、单位、作用/使用说明等信息;操作者可以借助硬件设备,如“扫码枪”,通过扫描该二维码后将该商品录入到商品库中;(2)再比如溯源系统中的产品,用户可以通过微信等APP中的扫一扫,扫描贴在产品上的二...
2021-12-16 12:10:56
29736
11
转载 Spring AOP——Spring 中面向切面编程
一、AOP——另一种编程思想1.1 什么是 AOPAOP (Aspect Orient Programming),直译过来就是 面向切面编程。AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。面向对象编程将程序抽象成各个层次的对象,而面向切面编程是将程序抽象成各个切面。从《Spring实战(第4版)》图书中扒了一张图:从该图可以很形象地看出,所谓切面,相当于应用对象间的横切点,我们可以将其单独抽象为单独的模块。1.2 为什么需要 AOP想象下面的场景,开发中在多个模块间有
2021-12-15 11:16:08
100
转载 函数式接口@FunctionInterface
java8提倡函数式编程,因而新增了一个函数式接口。函数式接口保证了函数式编程,同时也保证了能够兼容以前的java版本。1.1 定义在java8中,满足下面任意一个条件的接口都是函数式接口:1、被@FunctionInterface注释的接口,满足@FunctionInterface注释的约束。 2、没有被@FunctionInterface注释的接口,但是满足@FunctionInterface注释的约束1.2 @FunctionInterface注释的约束1、接口有且只能有一个抽象方
2021-12-13 17:48:49
1318
转载 Lambda实战(多练习)
这篇文章找不到可以使用的可以看看这个:https://www.cnblogs.com/shenlanzhizun/p/6027042.htmlimport org.junit.Test;import java.math.BigDecimal;import java.time.LocalDate;import java.util.*;import java.util.stream.Collectors;import java.util.stream.Stream;/*** @auther .
2021-12-13 17:27:59
140
原创 SpringBoot整合Redis实战
一、安装Redis 安装环境:centOS7、docker 1、在docker仓库里查看Redis版本 2、下载最新版本docker pull redis:latest3、查看镜像docker images4、启动Redisdocker run -itd --name redis-test -p 6379:6379 redis5、查看Redis镜像docker ps6、启动Redis客户端命令行docker ex...
2021-12-10 17:17:16
1397
1
原创 Spring之消息队列RabbitMQ详解
一、RabbitMQ介绍RabbitMQ是一个由erlang开发的AMQP的开源实现Message消息,消息是不具名的,它由消息头和消息体组成。消息体是不透明的,而消息头则由一系列的可选属性组成,这些属性包括routing-key(路由键)、priority(相对于其他消息的优先权)、delivery-mode(指出该消息可能需要持久性存储)等。Publisher消息的生产者,也是一个向交换器发布消息的客户端应用程序。Exchange交换器,用来接收生产者发送的消息并将这些消息路由给服
2021-12-10 09:45:50
1102
转载 Docker是什么?有什么用?
定义我们知道,软件依赖的环境大致包括: • 配置文件 • 代码 • tomcat • JDK • 操作系统 Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,然后很容易地发布和应用到任意平台中。核心docker有3大核心:镜像、容器、仓库。鲸鱼是操作系统。要交付的应用程序是各种货物,要将各种形状和尺寸不同的货物放到大鲸鱼上,得考虑每件货物怎么安放(应用程序配套的环境),还
2021-12-08 09:03:04
32021
4
原创 InputStream 、 InputStreamReader和BufferedReader(out同理)
一、InputStream 、 InputStreamReader和BufferedReader的区别InputStream :是所有字节输入流的超类,一般使用它的子类:FileInputStream等,它能输出字节流; InputStreamReader :是字节流与字符流之间的桥梁,能将字节流输出为字符流,并且能为字节流指定字符集,可输出一个个的字符; BufferedReader :提供通用的缓冲方式文本读取,readLine读取一个文本行, 从字符输入流中读取文本,缓冲各个字符,从而提供字符
2021-12-07 14:45:19
1085
原创 synchronized关键字的使用
一、什么是synchronized关键字synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象; 3. 修饰一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象; 4. 修饰一个类,其作用的范围是...
2021-12-07 14:25:02
388
原创 SpringCloudFeign讲解
一、什么是Feign Feign是一种声明式、模板化的HTTP客户端(仅在Application Client中使用)。声明式调用是指,就像调用本地方法一样调用远程方法,无需感知操作远程http请求。 Spring Cloud的声明式调用, 可以做到使用 HTTP请求远程服务时能就像调用本地方法一样的体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。Feign的应用,让Spring Cloud微服务调用像Dubbo一样,Application Client直接通过接口方法调用A...
2021-12-06 17:45:20
2233
原创 SpringCloudGateWay+SpringCloudAlibabaNacos讲解
SpringCloud官方地址Spring Cloud一.添加Nacos依赖:
2021-11-26 15:16:27
464
原创 springboot项目集成Spring cloud alibaba nacos入门
一.什么是Nacos Nacos(官方网站:nacos.io)是一个易于使用的平台,专为动态服务发现和配置以及服务管理而设计。它可以帮助您轻松构建云原生应用程序和微服务平台。服务是纳科斯的一等公民。Nacos支持几乎所有类型的服务,例如Dubbo / gRPC服务,Spring Cloud RESTFul服务或Kubernetes服务。Nacos提供四个主要功能。 服务发现和服务运行状况检查 Nacos 使服务可以轻松注册自身,并通过 DNS 或 HTTP 接口发现其他服务。Nac..
2021-11-22 15:39:04
1086
3
原创 Springboot项目集成SpringSecurity入门
Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展了多年了,但是使用的并不多,安全管理这个领域,一直是 Shiro 的天下。相对于 Shiro,在 SSM/SSH 中整合 Spring Security 都是比较麻烦的操作,所以,Spring Security 虽然功能比 Shiro 强大,但是使用反而没有 Shiro 多(Shiro 虽然功能没有 Spring Security 多...
2021-11-12 16:35:05
350
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人