java
文章平均质量分 73
Mr1ght
这个作者很懒,什么都没留下…
展开
-
获取java类中的注释
获取java类、方法、字段的注释转载 2022-10-25 10:40:37 · 3119 阅读 · 0 评论 -
Spring MVC 概念模型 : 接口 RequestCondition
Spring MVC 概念模型 : 接口 RequestCondition转载 2022-07-28 16:10:26 · 207 阅读 · 0 评论 -
自己实现一个枚举validation校验器
平时我们在进行接口校验的时候,我们会使用@Validation相关注解来帮助我们简化代码。其常用的注解其实已经能满足很大一部分需求,但是在进行枚举字段的接口校验的时候没有相关字段,尤其在我们不是使用枚举的name()方法来传递的时候,枚举的校验就需要很多类似的大段的方法来进行校验。而validation本身是提供了扩展的方法的,因此在次基础上实现了一个对枚举进行校验的注解。...原创 2022-07-25 21:11:12 · 591 阅读 · 0 评论 -
使用LambdaQuery()有感-通过函数式接口获取字段名称
平时使用mybatis-plus的时候,觉得那种通过函数式接口来获取字段名称的方式很新颖,有很多地方也可以用到,于是查看了mybatis-plus的部分代码,然后查阅网上资料实现了这个工具类原创 2022-05-17 10:10:57 · 10639 阅读 · 3 评论 -
EasyExcel校验数据抛异常需要使用ExcelAnalysisException
使用Excel导入数据的时候,避免不了校验数据这个过程,在使用EasyExcel进行数据校验的时候,在AnalysisEventListener中抛异常要使用ExcelAnalysisException而不是自己定义的运行时异常,EasyExcel会捕捉所有的非ExcelAnalysisException异常并封装成ExcelAnalysisException抛出,如下。 private void onException(AnalysisContext analysisContext, Except原创 2022-02-10 14:16:39 · 3900 阅读 · 0 评论 -
dubbo重试(retry)导致事务重复执行提交
1.背景公司有个模块最近有新需求,因此有些地方需要改动,而测试同学在测的过程中发现有个地方报了错让我看看,于是我看了一下报错日志,是因为数据库有重复数据,初步推断应该是在写接口导致的数据写入多条。2.排查过程 我先是把重复数据手动删除,然后尝试复现同事的操作。发现在编辑的时候,接口返回时长特别慢,导致了报错。然后数据库多了一条重复数据,最开始的想法是,是不是在界面的操作中出现了重复点击这个问题,于是我本地连接测试数据库进行调试。 我在controller层和service层都打上了断点,然后重新原创 2022-02-08 16:33:37 · 1506 阅读 · 0 评论 -
函数式接口的妙用
函数式接口代替策略模式,少写子类,快速开发原创 2022-01-17 11:26:46 · 2558 阅读 · 0 评论 -
运行时泛型获取
今天看到了FastJeson的TypeReference,便学习了一下泛型的类型擦除和如何获取泛型的类型,因此记录此文原创 2022-01-12 17:41:25 · 511 阅读 · 0 评论 -
spring-boot连接测试环境redis-cluster报 ndoe xxxx is unknown to cluster
一. 背景有一天,同事在进行测试环境项目启动时,发现项目启动不了了,看了一下日志,发现是redis连接不上,测试又特别着急要测试即将上线的项目,因此我快速的开始了bug的解决。我们项目使用的是redis-cluster,一共部署了6个redis,其中四台是master,两台slave,情况如下。二. 问题解决2.1 百度遇到这个问题后第一时间想到的是百度,但是发现搜索了很久都没有一篇与这个问题相似的文章。于是没有办法,只能自己一点点慢慢追踪bug了。2.2 查看服务器集群信息根据提示信息,我原创 2021-08-30 14:46:52 · 782 阅读 · 0 评论 -
sentinel基础配置
sentinel官网:https://sentinelguard.io/zh-cn/docs一.依赖 <!--sentinel--><dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><!--sen原创 2021-08-11 16:09:33 · 641 阅读 · 0 评论 -
String之常量池小结
1、String 常量池为了减少在JVM中创建的字符串的数量,字符串类维护了一个字符串池,每当代码创建字符串常量时,JVM会首先检查字符串常量池。如果字符串已经存在池中,就返回池中的实例引用。如果字符串不在池中,就会实例化一个字符串并放到池中。Note:常量池在java用于保存在编译期已确定的,已编译的class文件中的一份数据。它包括了关于类,方法,接口等中的常量,也包括字符串常量,如String s = "java"这种申明方式。2、True OR False首先得看下 几个对象???相信很多转载 2021-08-11 16:05:30 · 362 阅读 · 0 评论 -
visualVM安装插件,无法连接到visualVM 插件中心
1、打开网址:https://visualvm.github.io/pluginscenters.html2、在右侧选择JDK版本3、选择之后会打开相应的插件中心4、复制CatalogURL5、打开visualVM,工具->插件->设置,然后把刚才的网址粘贴进去。转载 2021-07-15 10:14:37 · 615 阅读 · 2 评论 -
Spring Security OAuth2.0 token生成与刷新机制源码阅读
一.介绍Spring Security Oauth2是目前市面上非常流行的实现了OAuth2.0协议的权限框架。本文会介绍其是如何获取token以及刷新token的。二.AbstractEndPointSpring Security OAuth2的获取token、校验token等接口均配置在EndPoint中的AuthorizationEndpoint主要是第三方授权模式中的 获取code的流程接口 http://localhost:xxxx/auth/oauth/authorizeToke原创 2021-07-09 11:45:47 · 2490 阅读 · 0 评论 -
google guava
目前Google Guava在实际应用中非常广泛,本篇博客将以博主对Guava使用的认识以及在项目中的经验来给大家分享!正如标题所言,学习使用Google Guava可以让你快乐编程,写出优雅的JAVA代码!以面向对象思想处理字符串:Joiner/Splitter/CharMatcherJDK提供的String还不够好么?也许还不够友好,至少让我们用起来还不够爽,还得操心!举个栗子,比如String提供的split方法,我们得关心空字符串吧,还得考虑返回的结果中存在null元素吧,只提供了前后tr转载 2021-07-01 17:36:17 · 153 阅读 · 0 评论 -
dubbo在service层抛出自定义异常捕获到的却是RunTimeException的问题
此篇仅针对使用dubbo远程调用近日在service层抛出自定义异常,全局异常捕获一直捕获不到,打了几次断点发现频繁跳到dubbo的ExceptionFilter类中进行解读后才发现问题的所在,下面是源码。@Activate(group = Constants.PROVIDER)public class ExceptionFilter implements Filter {private final Logger logger;public ExceptionFilter() { th转载 2021-07-01 17:32:07 · 812 阅读 · 0 评论 -
TransmittableThreadLocal详解
1、简介TransmittableThreadLocal 是Alibaba开源的、用于解决 “在使用线程池等会缓存线程的组件情况下传递ThreadLocal” 问题的 InheritableThreadLocal 扩展。若希望 TransmittableThreadLocal 在线程池与主线程间传递,需配合 TtlRunnable 和 TtlCallable 使用。2、使用场景下面是几个典型场景例子。分布式跟踪系统应用容器或上层框架跨应用代码给下层SDK传递信息日志收集记录系统上下文3、源转载 2021-07-01 13:43:27 · 20965 阅读 · 0 评论 -
InheritableThreadLocal详解
1、简介在上一篇 ThreadLocal详解 中,我们详细介绍了ThreadLocal原理及设计,从源码层面上分析了ThreadLocal。但由于ThreadLocal设计之初就是为了绑定当前线程,如果希望当前线程的ThreadLocal能够被子线程使用,实现方式就会相当困难(需要用户自己在代码中传递)。在此背景下,InheritableThreadLocal应运而生。Inheritable thread-local variables are used in preference to ordina转载 2021-07-01 13:42:44 · 479 阅读 · 0 评论 -
ThreadLocal详解
1、简介ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。2、Spring中应用Spring使用ThreadLo转载 2021-07-01 13:41:55 · 89 阅读 · 0 评论 -
spring解决循环依赖
高频面试题:Spring 如何解决循环依赖?在关于Spring的面试中,我们经常会被问到一个问题:Spring是如何解决循环依赖的问题的。这个问题算是关于Spring的一个高频面试题,因为如果不刻意研读,相信即使读过源码,面试者也不一定能够一下子思考出个中奥秘。本文主要针对这个问题,从源码的角度对其实现原理进行讲解。1. 过程演示关于Spring bean的创建,其本质上还是一个对象的创建,既然是对象,读者朋友一定要明白一点就是,一个完整的对象包含两部分:当前对象实例化和对象属性的实例化。在Sp转载 2021-06-25 16:35:11 · 97 阅读 · 0 评论 -
升级分布式锁
[redis lua 中keys1] 和argv[1] 的理解KEYS[1] 用来表示在redis 中用作键值的参数占位,主要用來传递在redis 中用作keyz值的参数。ARGV[1] 用来表示在redis 中用作参数的占位,主要用来传递在redis中用做 value值的参数。从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改:EX second :设置键的过期时间为 second 秒。 SET key value EX second 效果等同于 SETEX k转载 2021-06-25 15:54:27 · 174 阅读 · 0 评论 -
java利用iText写pdf并上传阿里云OSS并下载
iText是用于生成pdf的一个类库,通过它可以生成pdf或者将XML , HTML转换城pdf模版;阿里云的oss对象存储存储的类型比较多了,可以存储音频 图片 pdf excel 等资源,oss本质上来说是写api,在这次介绍中会将一些相关api写出来方便有需求的同学直接在开发使用。首先将pdf模版贴出来iText 和 阿里云OSS 的坐标: <dependency> <groupId>com.itextpdf</groupId>转载 2021-06-25 10:44:50 · 1886 阅读 · 1 评论 -
高并发下-Zuul参数调优
What is Zuul?官方介绍:Zuul is the front door for all requests from devices and web sites to the backend of the Netflix streaming application.As an edge service application, Zuul is built to enable dynamic routing, monitoring, resiliency and security. It a转载 2021-06-24 11:34:34 · 1455 阅读 · 0 评论 -
service本类中方法调用另一个方法事务不生效&AOP日志service不生成问题
[问题]Spring的声明式事务,我想就不用多介绍了吧,一句话“自从用了Spring AOP啊,事务管理真轻松啊,真轻松;事务管理代码没有了,脑不酸了,手不痛了,一口气全配上了事务;轻量级,测试起来也简单,嘿!”。不管从哪个角度看,轻量级声明式事务都是一件解放生产力的大好事。所以,我们“一直用它”。不过,最近的一个项目里,却碰到了一个事务管理上的问题:有一个服务类,其一个声明了事务的方法,里面做了三次插入SQL操作,但是在后面出错回滚时,却发现前面插入成功了,也是说,这个声明了事务的方法,实际上并没有真转载 2021-06-24 11:28:25 · 816 阅读 · 0 评论