自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lucky_love816的博客

人生苦短,生命渺若尘埃. 我们在拥有了物质的bai同时, 也就拥有了心du灵的歌声zhi. 而吾所建之小博,非为其他,乃为品文、赏乐及交友所用. 盖以博伊人颦笑, 所作稍逊阳刚. 望公等休怪!

  • 博客(171)
  • 收藏
  • 关注

原创 链路追踪原理

随着业务需求的快速变化和技术的演进,当一个用户请求需要跨越多个线程时,形成了复杂的调用链路。当出现性能问题、错误或故障时,导致故障排查、性能优化和业务逻辑理解变得困难。本文主要论述链路追踪的原理。

2024-05-21 18:39:14 140

原创 线程池异常如何处理?

忽的一下,想到了线程池的比较重要的一个参数:ThreadFactory接口,这个接口的作用是按需创建新线程的,使用线程工厂消除了对Thread#Thread(Runnable) new Thread的强依赖,使应用程序能够使用特殊的Thread子类、优先级等。大白话就是让线程池中的线程使用我们自定义的线程,这个自定义可不是我们通过execute()或submit()传进来的自定义线程,而是Worker类中的thread变量,也就是实际运行的线程,我们看一下Worker类的构造方法。

2024-05-17 17:04:28 826

原创 API接口加密方式业务实战

在需要加密的接口上通过实现自定义注解,对方法的返回值加密。

2024-05-14 14:14:24 181

原创 服务调用中的异常处理方案

在微服务架构中,A服务调用B服务,当B服务中抛出异常时,我们的意愿是能够获取到所有的异常信息,并且可以触发服务的熔断降级。但由于全局异常处理机制的存在,会帮我们处理B服务中抛出的异常,并把HTTP的状态码设置为200,那么此时对A服务来说,对B服务抛出的异常是无感知的,仍会继续业务代码的执行,并且不会触发服务的熔断降级,可能会导致微服务系统的雪崩。注意:这里要区分业务状态码和HTTP的相应状态码,业务状态码是无法触发降级的。现在有个服务A 和服务B部分代码服务A 的代码Feign客户端的代码服务B的代码

2024-05-13 16:04:50 757

原创 如何优雅的实现接口限流?

首先限流,其实解决方案有很多,比如通过nginx配置,通过gateway网关进行限流,比如Spring Cloud GateWay整合熔断器实现限流但是以上都是全局的,如何灵活的针对某些接口进行不同级别的限流呢?

2024-05-09 20:32:30 385

原创 SpringBoot中多数据源灵活切换解决方案

本篇内容介绍了“SpringBoot中如何使用Dynamic Datasource配置多数据源”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。支持无数据源启动,支持配置懒启动数据源(3.3.2+)。支持数据库敏感配置信息 加密 ENC()。支持每个数据库独立初始化表结构schema和数据库database。

2024-04-26 18:11:35 1004 3

原创 如何解决线程池引发的future性能问题?

这个自定义拒绝策略里面其实就打印个日志没有抛出异常,也就是说不管你处理什么逻辑,但是如果不抛出异常的话呢,那么这个任务其实是没有结束的@overrideSystem.out.println("线程池有任务被拒绝了,请关注");上面两个方法就是核心了,也就是说在刚开始把task任务包装成FutureTask任务的时候,也就是new FutureTask()初始化的状态值是0,所以调用get方法的时候状态值还是0,并没有把状态值改变成1,所以对于线程池而已这个任务并没有完成,就会一直阻塞,那如何处理呢?

2024-04-16 10:09:24 296

原创 SSE高可用方案

SSE(Server-Sent Events)是一种用于实现服务器主动向客户端推送数据的技术,也被称为“事件流”(Event Stream)。它基于 HTTP 协议,利用了其长连接特性,在客户端与服务器之间建立一条持久化连接,并通过这条连接实现服务器向客户端的实时数据推送。

2024-04-07 11:29:06 904

翻译 Spring Retry重试机制

重试的使用场景比较多,比如调用远程服务时,或者feign远程调用的重试,由于网络或者服务端响应慢导致调用超时,此时可以多重试几次。用定时任务也可以实现重试的效果,但比较麻烦,用Spring Retry的话一个注解搞定所有。话不多说,先看演示。

2024-03-22 13:56:35 41

原创 Spring Cloud GateWay整合熔断器实现限流

其实网关是很强大,能做的事情很多,包含很多过滤器包括限流,具体的网关可以参考我的另外一篇博文。

2024-03-07 14:18:25 347

原创 幂等性实现方案

目前这个业务其实很常见只不过呢,很多方式去处理,比如通过数据库的唯一性、或者分布式锁的实现方案、业务代码实现乐观锁思想去实现、redis分布式结合token等方式,但是本篇博文都一一介绍到,可能有的没介绍到,会在后续继续更新的。

2024-03-06 16:08:02 362

转载 CompletableFuture在异常处理方面的一些常见问题和解决方案!

CompletableFuture是Java 8引入的一个类,位于java.util.concurrent包下。它提供了一种方便的方式来进行异步编程,尤其是在处理一系列并发任务时非常有用。CompletableFuture支持链式调用和组合多个异步任务。我们可以通过调用各种方法来注册回调函数,在任务完成时获取结果或处理异常CompletableFuture提供了强大的功能来处理异步编程中的结果和异常。然而,在处理异常时,我们需要注意一些常见的陷阱。

2024-02-26 17:55:44 241 1

原创 玩转Java8新特性

*** 整车大版本策略-有效/无效处理逻辑* @param status 有效:1 无效:0**//*** 如果参数为有效:1 ---> 该目标大版本下所有原版本策略都是有效的,可以继续* 反之无效:0 ----> 该目标大版本下所有原版本策略都是无效的,需要将策略都设置失效状态 2、策略关联的任务都设置为失效状态* @param status 有效:1 无效:0**/// 通过目标大版本号且是有效状态的获取所有的关联任务id// 批量修改任务的状态置为已失效。

2024-02-07 13:59:40 314

原创 【Elasticsearch】从入门到精通

吕老师:但是 Lucene 还是一个库,必须要懂一点搜索引擎原理的人才能用的好,所以后来又有人基于 Lucene 进行封装,写出了 Elasticsearch吕老师:类型是用来定义数据结构的,你可以认为是 MySQL 中的一张表。文档就是最终的数据了,你可以认为一个文档就是一条记录吕老师:比如一首诗,有诗题、作者、朝代、字数、诗内容等字段,那么首先,我们可以建立一个名叫 Poems 的索引,然后创建一个名叫 Poem 的类型,类型是通过 Mapping 来定义每个字段的类型。

2024-02-04 14:31:58 1243

原创 mysql锁的实际场景分析

首先判断该where的条件列是否命中索引了,注意是命中哈,也就说即使加了索引但是实际上并未命中,都是导致全表扫描,给所有的数据加上了行锁+间隙锁,相当于表锁如果命中了索引,如果更新操作未提交事务,此时记录不存在那么就会产生间隙锁,存在就行锁,也可能两个锁同时存在,如果记录存在那一定是行锁如果命中了索引,如果插入操作未提交事务,一定是行锁,不会产生间隙锁,及时事务未提交也不会影响别的事务进行更新或者插入操作。

2023-12-27 17:41:01 677

原创 自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏【权限控制】

我们在使用手机银行的时候经常能看到APP上会将银行卡的卡号中间部分给隐藏掉使用 ***** 来代替,在某些网站上查看一些业务密码时(例如签到密码等)也会使用 ***** 来隐藏掉真正的密码,那么这种方式是如何实现的呢?我们这篇文章的实现思路就基于Hutool来实现,在Hutool中提供了一个名为 DesensitizedUtil 的工具类,我们使用这个工具类来加密。

2023-12-26 11:06:22 957

转载 还在无脑使用synchronized?volitale或许能更优雅的帮到你

volatile 修饰符适用于以下场景:某个属性被多个线程共享,其中有一个线程修改了此属性,其他线程可以立即得到修改后的值。比如boolean flag ,或者监视数据变化,实现轻量级同步单纯的赋值,比如将flag的值改为true或者false,不适用于count++这样的非原子操作监视数据变化,比如检测到flag的值变为true,就退出循环等操作,当温度超过40度就报警等。

2023-12-09 18:15:23 82

原创 【CompletableFuture】批量异步任务处理

当我们在项目中遇到很多业务同时处理,如果是串行肯定是影响性能的,这时候就需要异步执行了,说道异步肯定就有很多方案了。

2023-11-07 17:11:06 312

原创 获取上下文(ApplicationContext)工具类

【代码】获取上下文(ApplicationContext)工具类。

2023-10-30 15:06:23 181

原创 获取请求头信息工具类

【代码】获取请求头信息工具类。

2023-10-12 18:20:07 113

原创 springboot实现全局事务管理

首先需要实现全局事务管理,你得知道事务的原理包括一些事务的基础概念。

2023-10-09 17:54:13 381

原创 加解密算法+压缩工具

【代码】加解密算法+压缩工具。

2023-08-03 14:14:53 210

原创 【java8】如何优雅的参数格式校验工具类

【代码】【java8】如何优雅的参数格式校验工具类。

2023-08-03 14:08:50 180

原创 【Maxwell】MySQL数据监听

我们都知道随着业务的发展,监听数据库的数据变更及时性是必须的,虽然我们可以在入库之前进行处理,但是有个问题就是事务的一致性不好掌控,而且很多业务都是微服务的,那么不在一个微服务中,可能有需要跨服务去调用,那么此时直接去监听mysql的binlog来实现数据的操作既可以实现及时性又可以和业务解耦目前市面上比较流行的就是cancel和maxwell,那么我们该如何去选型呢?这里我说下我的选型历程。

2023-05-05 14:34:34 848 1

原创 【如何优雅的实现延迟消息多次提醒】方案集合

如何利用redis去实现延迟消息,redis的性能是最好的,也是最轻量级的,本篇博客介绍了五种不同的方式

2023-04-21 15:31:34 632

原创 【拦截器、过滤器、springAop】那些不为人知的隐秘

前后端交互使用密文传输,实现aop动态密文加解密

2023-02-20 10:28:06 2953

原创 深入理解spring三级缓存解决循环依赖的设计思路

spring循环依赖解决方案的深入分析

2023-01-31 16:00:58 731

原创 【性能优化】-多线程实现百万级导出/导入到excel

百万级数据如何优化导出

2022-12-29 17:09:09 3358 4

原创 【对接三方平台如何优雅的进行数据校验-validation/valid神器】

对接各个三方系统进行数据校验

2022-12-08 17:43:17 328

原创 Json转bean-【下划线和陀螺峰格式互转】

big Json转bean,将下划线和陀螺峰互转

2022-12-05 14:17:15 1650

原创 JavaBean处理器之MapStruct

bean对象如何优雅的复制、转换

2022-07-19 14:14:39 490

原创 TransmittableThreadLocal还有人不知道的吗?

前言首先本文主要介绍ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal三者之间区别、如何使用、什么场景使用以及对原理和源码的介绍。介绍原理的时候通过最直白、最易懂的语言争取让大家了解三者之间的区别,以及日常如何把他们使用起来ThreadLocalThreadLocal解决的是每个线程可以拥有自己线程的变量实例。可以从隔离的角度解决变量线程安全的问题。举个例子用户登陆后将用户的信息保存到ThreadLocal中,ThreadLoca

2022-05-26 16:30:12 296 1

转载 浅谈设计模式-建造者模式

之前几篇博文已经解释过其他的设计模式了,这里将为大家在实际项目中如何使用建造者模式主要解决: 主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。优点:1、产品必须有共同点,范围有限制。2、如内部变化复杂,会有很多的建造类。今天,我们再来学习另外一个比较常用的创建型设计模式,Builder 模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模

2022-05-26 16:14:33 187

原创 Spring Cloud GateWay-过滤器

说起过滤器可能有不少实现方式,比如spring自带的就可以实现Spring Boot实战-配置过滤器的两种方式这篇文章说的是Spring Cloud GateWay-过滤器,因为由于微服务的兴起,现在各个项目都会采用网关进行单独的资源隔离、token校验等,而不是放在下游的业务服务进行处理Gateway 过滤器总结filter的作用和生命周期Zuul1.x 阻塞式IO 2.x 基于Netty,Spring Cloud GateWay天生就是异步非阻塞的,基于Reactor模型;一个请求–>网

2022-05-26 16:04:54 3582

翻译 隐式转换为什么会导致MySQL索引失效-深度分析

背景关于MySql索引失效的几种原因分析,之前在这篇文章中已经有过整理,本文主要来分析一下,文章中提到的:如果是数值类型,则右边无论是带引号还是不带引号都可以走索引案例CREATE TABLE t_user_demo (id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增id',name VARCHAR(20) DEFAULT NULL COMMENT '姓名',phone char(11) DEFAULT NULL COMMENT '手

2022-05-06 16:45:38 852

原创 如何真正的灵活使用springboot自定义注解进行自动装配?

各位铁子们,说道自动装配,大家可能都已经滚瓜烂熟了,自动装配经常看到或者日常开发中随处可见,但是有几个真正的是是实战过呢,我怕说的实战可不是简单按照百度或者视频上按照模板套一个哟,如果是是这样也太小看自动装配了,我指的是你为自己的项目需要而开发的可插拔式的jar或者开关性的配置类,不一定按照模板来实现,如果懂我说这句的意思就会知道如果你有时候为了实现一个自动装配的配置类按照模板来实现会创建多余的类,废话不多说,接下来大家对号入座吧基础知识了解@Import注解到底知多少?导入配置的三种类型带有@C

2022-03-08 17:05:19 397

原创 浅谈Nacos Config动态刷新原理及作用

背景由于微服务引入至今,相信大部分公司的小伙伴都已经对微服务的使用有了一定的熟练度了,那么每个项目中肯定都有属于自己的配置文件,小企业呢对于配置的规范肯定不是那么严谨,一味的在一个或者多个配置文件中添加,那么多个微服务呢?有需要重复造轮子了,这是其一,其二呢,配置文件经常需要修改,比如什么阿里云、redis、kafka等一系列的中间件会随着不通环境(测试环境、开发环境、生产环境)的不同而改变,这种情况下,总不能把每个微服务模块逐一去启动吧,先不说启动的过程中会造成服务的卡顿而使得用户体验不佳,这么多服务启

2022-02-25 10:21:24 2926

转载 Spring到底何时为使用事务注解的bean创建代理 ?

今天说这个问题之前,大家需要知道一个热知识,那就是一个类中的某个方法被赋予注解@Transactional,则无法在本类中进行调用,否则事务失效,那是因为,无法创建代理类,也就是无法使用事务特性,毕竟spring的事务是通过AOP中的代理模式进行实现的,那么问题来了?spring的bean何时被创建代理类呢,又怎么知道的呢,如果@Transactional放在类上,那就可以理解bean在进行实例化的时候就知道了,但是放在方法上呢?其实也是通过反射的方式给这个对象进行生成代理类的,接下来就重点讲解下这个问题

2022-01-11 22:58:17 716

转载 Java读取证书的两种方式

关于证书基础以及创建、查看、删除、导入、导出以及其他功能详解请参照:Java使用keytool创建CA证书Java读取证书有两种方式从文件中读取public static void main(String[] args) throws CertificateException, IOException, KeyStoreException, NoSuchAlgorithmException { /* 取出证书--从文件中取出 */ String certpath = "

2022-01-05 18:49:55 6235 1

转载 keytool命令制作CA根证书,签发二级证书

关于TLS的一些基本信息我这里就不多说了,网上一搜一大堆。这里主要说一下,在tls单向认证里,怎么用keytool命令去制作CA证书,签发二级证书。双向认证也就是照着反方向做一遍就好了。先附一张简单的步骤图,及每一步的命令keytool -certreq -alias server -keystore d:\server.keystore -storepass 123456 -file d:\server.csrkeytool -gencert -alias ca -keystore d:\ca

2022-01-05 18:46:46 2136

空空如也

空空如也

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

TA关注的人

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