自定义博客皮肤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. 而吾所建之小博,非为其他,乃为品文、赏乐及交友所用. 盖以博伊人颦笑, 所作稍逊阳刚. 望公等休怪!

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

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

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

2024-04-16 10:09:24 279

原创 SSE高可用方案

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

2024-04-07 11:29:06 854

转载 Spring Retry重试机制

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

2024-03-22 13:56:35 32

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

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

2024-03-07 14:18:25 332

原创 幂等性实现方案

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

2024-03-06 16:08:02 355

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

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

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

原创 玩转Java8新特性

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

2024-02-07 13:59:40 312

原创 【Elasticsearch】从入门到精通

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

2024-02-04 14:31:58 1217

原创 mysql锁的实际场景分析

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

2023-12-27 17:41:01 674

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

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

2023-12-26 11:06:22 928

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

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

2023-12-09 18:15:23 74

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

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

2023-11-07 17:11:06 244

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

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

2023-10-30 15:06:23 170

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

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

2023-10-12 18:20:07 100

原创 springboot实现全局事务管理

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

2023-10-09 17:54:13 320

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

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

2023-08-03 14:14:53 204

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

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

2023-08-03 14:08:50 157

原创 【Maxwell】MySQL数据监听

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

2023-05-05 14:34:34 835 1

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

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

2023-04-21 15:31:34 605

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

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

2023-02-20 10:28:06 2947

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

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

2023-01-31 16:00:58 728

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

百万级数据如何优化导出

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

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

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

2022-12-08 17:43:17 324

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

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

2022-12-05 14:17:15 1597

原创 JavaBean处理器之MapStruct

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

2022-07-19 14:14:39 487

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

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

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

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

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

2022-05-26 16:14:33 184

原创 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 3498

翻译 隐式转换为什么会导致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 833

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

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

2022-03-08 17:05:19 386

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

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

2022-02-25 10:21:24 2898

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

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

2022-01-11 22:58:17 702

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

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

2022-01-05 18:49:55 6178 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 2105

转载 微服务服务调用-RestTemplate通过@LoadBalaced和不加@LoadBalaced的RestTemplate的区别?

RestTemplate通过@LoadBalaced注解集成Ribbon前言接触过微服务的可能知道在RestTemplate上添加@LoadBalaced即可具备服务发现与负载均衡的能力,但是其中的原理是什么?我曾带着这样的疑问开始了一波学习。疑问疑问:为什么RestTemplate上加一个@LoadBalaced注解即具备服务发现与负载均衡的能力?为什么通过@Qualifier就能注入具有负载均衡能力的RestTemplate?首先先说第二个问题:当存在两个RestTemplate时,

2021-12-27 21:03:10 588

转载 java实现根据csr生成证书_服务器开发程序员必须搞清HTTPS通讯之证书

构建HTTPS网站获取证书和密钥对自签名证书当浏览器发现证书是自签名的,会提示用户是否信任该证书。一般企业内部应用可以选择自签名证书生成私钥对和CSRCSR用来请求证书,其中包含了服务器的密钥对,CA机构收到请求后会验证CSR请求的签名。openssl req -newkey rsa:1024 -nodes -keyout my_key.pem -out mykey_csr.pem提示输入中最重要的是输入域名信息:Common Name。生成自签名证书就是模拟CA机构对盲目签名:

2021-12-17 14:19:32 1102

原创 Https通信原理一探究竟

简介HTTPHTTP协议即超文本传送协议(Hypertext Transfer Protocol ),是一个基于请求与响应,无状态的,应用层的协议;使用端口为80HTTPShttps相当于http+ssl/tls协议;https默认使用的端口为443。HTTPS简单来说就是一个加强版的HTTP,运行在SSL(Secure Socket Layer)或者TLS(TLS:Transport Layer Security)层上。SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密特点:内

2021-12-16 17:51:28 666

原创 如何优雅的实现跨域方式呢?

如今很多项目中都会需要解决一个问题就是跨域问题,其实这个问题很多小公司觉得没什么,直接使用后台代码进行解决了,如此粗糙,或者稍微高级点就是让前端是实现,那么你问过了前端的想法了吗?现在都是微服务架构了,在架构设计初期,这块就需要设计好,其实无论是后端还是前端还是运维都需要去了解,因为谁都可以去实现就看谁设计的方式带来的性能更加明显了,不说了,进入正题吧~首先大家需要去了解何为跨域,跨域如何产生的,请看网络与代理技术常规后台操作如何做呢?请看springboot前后端交互-跨域解决方案使用nginx

2021-12-15 14:55:06 1485

原创 Limit分页原理-如何优化?

limit分页原理当我们翻到最后几页时,查询的sql通常是:select * from table where column=xxx order by xxx limit 1000000,20。查询非常慢。但是我们查看前几页的时候,速度并不慢。这是因为limit的偏移量太大导致的。MySql使用limit时的原理是(用上面的例子举例):MySql将查询出1000020条记录。然后舍掉前面的1000000条记录。返回剩下的20条记录。问题:对于有大数据量的mysql表来说,使用LIMIT分页存在

2021-12-15 14:32:04 1541

原创 java日志框架如何选型?

对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,基于日志的业务逻辑统计分析等都离不日志。java领域存在多种日志框架,目前常用的日志框架包括Log4j 1,Log4j 2,Commons Logging,Slf4j,Logback,Jul日志框架类别Log4j Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。 Log4j是几种Java日志框架之一Log4j 2 Apache Log4j 2是apach

2021-12-10 18:23:39 1003

空空如也

空空如也

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

TA关注的人

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