自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 收藏
  • 关注

原创 SpringBoot全局异常@ExceptionHandler无法精确匹配问题分析

这个是我的全局异常处理类,以new ThirdException(JSON.toJSONString(obj))形式抛出了这个自定义异常,不管从最底层的方法抛出上层不抛,还是从controller的入口开始都抛出,均无法精确匹配。下面分别是自定义异常和全局异常处理类,分析过程在末尾。spring-boot-starter-parent版本:2.3.12.RELEASE正在上传…重新上传取消第一次调用 exceptionLookupCache 为空,会通过getMappedMethod方法获取后再进行put

2022-12-07 23:01:09 998 1

原创 用Stream实现mysql的groupBy, sum Case when 语法

shardingsphere5.1.1报错:sytax error,stream替换实现group by ,case when 后进行一个 sum 的操作。业务上就是统计状态字段出现的次数。

2022-09-05 12:22:05 972

原创 ClassNotFoundException:com.github.pagehelper.PageInterceptor

根本原因出在缓存上,但此时通过InvalidateCaches重启ide也于事无补,如果是没引进pageHelper的jar包,则需要引入该jar的maven依赖,如果已经依赖,并且点击报错信息都能进入到相关的类,则说明类确实可以找得到,最后需要先关掉项目所在的idea窗口,...

2022-07-22 21:54:05 1743

原创 spring MVC拦截器

spring mvc 拦截器范例

2022-07-03 22:53:52 143

原创 2.x mybatisPlus使用LocalDateTime,LocalDate

可能发生的报错信息:Cause: java.lang.ClassCastException: java.sql.Timestamp cannot be cast to java.time.LocalDate;解决方案:mybatis-spring-boot-starter 升级至->2.1.1com.alibaba.druid 升级至->1.2.1mysql-connector-java 升级至->5.1.46,升级之前的版本是:mybatis-spring-

2022-04-09 20:29:30 2796

原创 redisTemplate的haskey返回false解决

没有配置相应的序列化规则,配置即可package com.falcon.design.config;import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;import org.springframework.context.

2021-12-08 22:12:06 3045

原创 布隆过滤器在redis防止缓存穿透的应用

一个微服务最优的情况就是只保存自己服务的数据,但这样会有缓存穿透的问题,解决方案有两种。缓存穿透:缓存中没有,数据库中也没有缓存击穿:缓存中没有,数据库中有一、通过保存默认值实现这个方案会导致将根本没用的数据保存到了redis缓存,造成了内存空间的极大浪费以及拖慢系统的整体性能。二、通过布隆过滤器实现基本思路就是服务第一次启动时将所有有用的数据的主键存入布隆过滤器,代码实现如下:package com.falcon.design.service;import com.f.

2021-11-26 00:36:02 347

原创 补充指定个数的特定字符,以达到一定的长度

talk is cheap, show you the code !/** * 在source前面填充指定个数的0,以达到tarLength的长度 * @param source * @param tarLen * @return */ public static String fillZero1(@NotNull String source, @NotNull Integer tarLen){ Objects.require

2021-06-26 23:28:11 151

原创 如何查看ES里的数据?

说明:整体项目架构:nginx作代理、gateway作网关、Eureka作服务的注册中心、SpringCloud作数服务、config作配置中心、Elasticsearch作悔 量/非结构化数据的存储、mysql作结构化数据存储、redis作为内存数据库、RabbitMQ作解调之消息队列中问件、zipkin做日志的链路追踪。 一般的,我们可能通过config的配置文件可以查到某个做服务所连接的ElasticSearch服务器,但是如果我们在测试或无法查询es里相关数据的时候需要通 过跟navicat一样的东

2021-05-31 22:43:04 15874

原创 如何理解三星索引?

三星索引其实是衡量一个索引是否达到最佳表现的三个维度:第一星:where后面的等值谓词,可以匹配索引列的顺序:意义在于谓索匹配的越多,索引片越窄,最终扫描的数据行也是越小。第二星:order by的排序是否和索引的顺序一致:意义在于避免进行额外的排序,增加消耗。第三星:select的字段是否都为索引列:意义在于避免每一个索引行查询,都需要去聚簇索引进行一次随机IO查询。...

2021-03-30 23:14:18 851

原创 MySQL索引骨灰级技术要点

一、索引类型有哪些?NORMAL:普通索引,作用于适合任何适合创建索引的字段上。 UNIQUE:唯一索引,其中主键索引属于特殊的唯一索引,其区别在于主键索引不允许为空,而唯一索引可以有一个空值。 FULLTEXT:全文索引,适合大字段查询的优化,但不建议使用,因为有更好的方案替代,如ES。 SPATIAL:空间索引,通过R树实现用来解决BLOB(二进制大对象)的查询效率,始于MySQL 5.7.4。二、索引方法BTREE:一般通过B+树来实现, HASH:一般只有memory存储引擎才可以

2021-03-14 00:39:47 131

原创 Invalid bound statment 终极解决大招

相信大伙用mybatis或plus的时候不会没有见过Invalid bound statment(not found)这个报错吧,意思就是mybatis没有找到xml中的方法,本人也是被这个问题困扰了三天之久,各种可能的情况都一一排查就是没有问题,包括下面几种情形:1、mapper xml文件的扫描如果使用xml配置sql,需要告诉SpringBoot扫描这些xml,常用以下两种配置方法方法一:配置文件指定扫描路径(推荐),application.yml里进行配置mybatis:mappe

2021-01-06 23:58:35 711

原创 Java中如何处理开关状态的属性字段?

或许,大家在项目的开发中经常会遇到开关状态,例如0关闭,1开启,直接在数据库也是保存为int或tinyint,这样前端后端数据库都统一了一个值,后端使用Integer去接数据库和前端,看着没有什么大毛病,但是仔细想想会有以下的弊端:一、内存占用过大Integer为4个字节共32个比特位,造成了内存资源的严重浪费。二、违背代码整洁之道逻辑判断冗余不美观,例如:if("0".equals(obj.getIsOn)){//业务代码}显然这对于一个有代码洁癖的人来说是无法忍受的,那么应

2021-01-06 23:54:33 719

原创 mybatis缓存机制

美团技术团队出品,非常不错,这里推荐给大家;https://tech.meituan.com/2018/01/19/mybatis-cache.html

2020-12-17 22:49:01 108

原创 Eureka 工作流程

1、Eureka Server 启动成功,等待服务端注册。在启动过程中如果配置了集群,集群之间定时通过 Replicate 同步注册表,每个 Eureka Server 都存在独立完整的服务注册表信息2、Eureka Client 启动时根据配置的 Eureka Server 地址去注册中心注册服务3、Eureka Client 会每 30s 向 Eureka Server 发送一次心跳请求,证明客户端服务正常4、当 Eureka Server 90s 内没有收到 Eureka Client 的

2020-12-14 22:44:33 369

原创 Svn: unexpected server error 500 ‘internal server error‘ on ‘***‘

问题现象:访问svn更新版本控制文件时,有时会发生 unconnect to the svn server,unexpected server error 500 'internal server error' on '***',根本原因:此问题发生的原因通常出现在域账户修改密码后,用户名输入错误时产生解决办法:在空目录右键鼠标,依次选择:TortoriesSVN -> settings -> 选中Saved data: 点击Authentication data后的 ...

2020-11-30 09:24:25 6651

原创 如何校验字符串类型的日期?

前后端不可避免的会有日期或者时间戳的交互传递,到底用什么类型进行传递日期好那就见仁见智了,个人还是感觉字符串用着方便,特别有了Java8开始支持的LocalDateTime、LocalDate、以及Spring的ConstraintValidator接口,字符串用起来更是得心应手。1、首先创建一个注解类package com.falcon.design.aop.annotation;import javax.validation.Constraint;import javax.validat

2020-11-05 22:38:01 1950

转载 mysql报错:Access denied for user ‘root‘@‘localhost‘ 的解决办法

如果本地的navicat客户端已经连到了mysql,但是密码又看不到,此时可以使用navicat的命令行工具执行以下语句解决该问题mysql> UPDATE user SET Password=PASSWORD('123456') where USER='root';mysql> FLUSH PRIVILEGES;如果没有客户端连接到mysql,那可能需要其他的解决方法了...

2020-10-15 00:38:17 894

原创 当消费者消费的速度无法满足接收MQ消息的速度时怎么办?

在计算机中,当消费者消费的速度无法满足接收消息的速度时,通常会通过缓存来解决这个问题,L1,L2,L3等,其根本原因在于磁盘写入的速度远远慢于内存操作的速度,虽然固态可以在一定程度上缓解这个问题,但是问题依然是存在的。在Java服务端也会存在这样的问题,通常解决思路也是一样的,废话不说 ,提码来见;package com.falcon.design.service;import com.falcon.design.attendance.domain.Message;import com.falco

2020-09-17 13:01:34 957

原创 Java枚举的高级用法之多键值的映射使用

枚举Enum单映射使用做Java的各位仁兄姐妹都知道,Java通过HashMap,以及枚举提供了方便的K-V映射功能,例如枚举单映射使用但是如果遇到多个键值映射,例如K-K-V的形式怎么办呢?可能有些人会说那还是用HashMap呗,对于需求的满足倒是可以,但是不够优雅直观,可读性不高!下面让我们一睹枚举的高级用法之多键值的映射风采。枚举Enum多键值映射使用譬如这个四合一智能门锁场景,可能其他微服务或第三方的键值映射是上面单映射那样的,但是由于历史原因或者是自身强迫症使能,总之就是对

2020-09-15 23:36:57 5066

原创 Java之List集合两种排序的性能比较

本次测试环境为JDK1.8环境下借用医学的那句话,抛开数据量谈性能都是耍流氓,本次的性能测试分为三档,即万级数据、十万级数据、百万级数据万级数据量public static void main(String[] args) { List<User> userList = new ArrayList<>(); Random rand = new Random(); for (int i = 0; i <10000 ; i++) { .

2020-09-14 20:06:24 3940

原创 Springboot @NotBlank参数校验失效汇总

有时候明明一个微服务里的@Validated 和 @NotBlank 用的好好的,但就是另一个里不能用,这时候问题是最不好排查的,下面列举了各种失效情况的汇总,供各位参考:1、版本问题springboot切换到2.3.2.RELEASE后失效,将版本换成2.2.2.RELEASE后即可使用正常。原因如下图所示,此时则需要手动加入依赖包进行支持。需要添加的依赖:<dependency> <groupId>org.hibernate.valid...

2020-08-22 00:34:10 12218 6

原创 SpringCloud启动报错:Could not locate PropertySource and the fail fast property is set, failing

报错信心如下;java.lang.IllegalStateException: Could not locate PropertySource and the fail fast property is set, failing at org.springframework.cloud.config.client.ConfigServicePropertySourceLocator.locate(ConfigServicePropertySourceLocator.java:132) at or.

2020-08-14 22:23:45 12554

原创 常量的public static final 可以去掉吗?

既然有有了这个问题,那么答案当然是肯定的,虽然idea可以通过psf快速的输出public static final,但是还是看着有点又臭又长。 那怎么可以去掉呢?那就是interface, 类似这样:很多人可能就会问了如果把Constant类都改为interface的话,那Constant类中的一些代码怎么办,因为interface不能有方法的实现,这个问题各位看官了,欢迎大家在评论区留言讨论哦!...

2020-07-30 23:00:05 402

原创 一行代码获取星期几

想必这种需求有时候由于时间的关系还是惰性的关系,一遇到就会百度了事,那就很可能出现了下面的代码 public static String getWeekOfDate(java.util.Date date) { String[] weekDays = {"7", "1", "2", "3", "4", "5", "6"}; Calendar cal = Calendar.getInstance(); cal.setTime(date);

2020-07-18 20:37:53 356

原创 es报错mapper of different type, current_type 「text」 解决

报错原文:Caused by: java.lang.IllegalArgumentException: mapper [personName] of different type, current_type [text], merged_type [keyword]Error creating bean with name 'ownerOpenRecordRepository':如果是没有接触过elasticsearch的同学可能会不知道如何入手,那么本文将从零基础入手解决该问题!首先第

2020-07-06 23:31:42 4954

原创 Spring的POST花样传参

一、使用@RequestBody注解:传输数据为JSON,此时后端既可以对象接收,又可以Map接收用对象接收:支持。如果参数是一个对象,那么对象名字不重要,重要的是对象的属性要和参数一一对应,例如:前端参数后端接收参数对象用Map接收:支持。此时既可以直接打印出paraMap,也可以通过以下方式获取每个参数。paraMap.get("personId");paraMap.get("companyId"); 前端参数后端接收二、不使用@RequestBo

2020-06-14 16:24:11 2596 1

原创 RabbitMQ消息堆积问题排查

新手遇到这样的问题估计措手不及,不知道如何下手,本文将分享配查套路步骤第一步通过nginx查看MQ server被路由到了哪台服务器ps -ef | grep nginx第二步第一步可以查到mq服务安装在了哪台服务器,这次进一步通过查看rabbitMQ进程号,ps -ef | grep rabbit查看所有的消息队列列表:rabbitmqctl list_consumers看没有消费的消息队列是否在里面 如果没在,那证明该消息队列没...

2020-06-07 19:39:40 3188 1

原创 微信公众号URL配置失败:解决controller返回字符串带引号的问题

可能有的人就奇怪了,后台返回的字符串不就是应该带有双引号的吗,难道我这几年白做开发了?其实有这个想法也无可厚非,仔细研究就会发现,字符串返回带双引号时json的标准,而在httpMessage中并不是这样的。业务场景微信公众号开发配置url后点击提交,总是提示配置失败,而将相同的代码移植到其他的微服务时,则可以配置成功,对请求成功和失败的都抓包发现:配置成功返回的echostr没有双引号,配置失败的则返回了带有双引号的字符串;由此怀疑返回的数据肯定是被切面逻辑处理了,果然在排查中发现有个

2020-06-07 00:24:09 782

原创 2020最新版idea设置默认maven

可能大家新建项目或新导入项目时都会去配置下maven,这样简直太麻烦了,某度上面都是是什么在othersetting里面设置啊,还是deploy设置的,那都是老版本上的配置项,新版本找都找不到配置项;以下是最新版idea设置默认maven的步骤;一,首先打开idea,到下面这个页面,点击Configure->setting->maven 配置即可。,如果打开没有到这个页面直接跳进了项目,那么请继续往下看第二步;二;通过下图所示取消 Reopen last project ons.

2020-05-19 01:01:42 33913 16

原创 如何给List集合的每个元素添加index序号

有这样一个需求,在excel导出报表的时候,产品经理想在首列加个序号,可能大家就会问了,直接取数据库的id不就可以吗?但是这样会有一个问题,很多时候我们从数据库捞数据出来还会对数据分组排序等一系列的业务操作,这样一来,这个id还会是我们想要的id吗?显然不是的,还有些id可能是分布式id,其长度就有10位之长,是产品经理想要的结果吗 ?显然不是。这个时候Java8的stream就闪亮登场了...

2020-05-07 21:54:20 12254 6

原创 SpringCloud项目No qualifying bean of type '×××Mapper' available:的错误解决

根本原因是mapper类没有成功注入,由于项目是从其他项目拷过来复用的,所以mybatis的basePackages没有修改还是以前的,导致找不到相应的bean进行注入操作,在springBoot 或springCloud中basePackages是通过注解@mapperScan(“”)方式扫描的,而不是以前的配置文件的方式,basePackages通常会写在application启动类上上面...

2020-04-20 22:24:05 29558

原创 JAVA中的protected的访问权限只有在本类同包类和子类吗?

官方介绍可能大家都知道,JAVA中protected权限是本类、同包类、子类。但是如果子类不在和父类不在同一个包中,那将会发生什么?子类在其他包中访问我们将父类和子类放在两个包中,如下所示:父类:package com.falcon.auth.father;/** * @Author falcon * @Date 2020/3/19 19:23 **/publ...

2020-03-19 20:02:59 4927 3

原创 抓包,两条命令足矣

windows平台:可使用抓包工具Wireshark进行抓包,1、打开Wireshark之后单击选择网卡是本地连接还是无线网卡,可在【...使用这个过滤器】后面输入端口进行过滤:例如 port 80,这个端口号是你想要抓的请求地址所对应的端口号,然后点击开始捕获,可以捕获到符合条件的所有请求,可以看到很多请求都是tcp的三次握手和四次挥手信息:2、发送需要抓包的请求,成功后点...

2020-03-16 21:13:36 2382

原创 将本地的项目上传到git仓库

1、在上传项目前,现在gitee上点击右上角的“+” 号即可创建自己全新的仓库,然后点击仓库进入后再点击 克隆/下载 按钮,并选择SSH,复制好之后下面就会用到2、在项目的根目录下,鼠标右键 git bash here,例如我已经写好了一个项目是design,则我会到design 目录下右键git base here3、然后依次在$符号后进行设置,下面name 和 email 则...

2020-02-18 17:52:19 3861

原创 查询执行的基础

一、执行一个查询的过程1、客户端发送一条查询给服务器2、服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段3、服务器端进行sql解析、预处理,再由存储引擎层提供的统计信息并使用服务器层的CBO优化器(mysql并不是任何时候都是哟红基于成本的CBO优化器,有时候也会使用基于规则的RBO优化器)生成对应的执行计划。4、MySQL根据优化器生成的执行计...

2020-01-16 22:53:42 172

原创 高性能索引

爱码僧2020-01-03 18:52:47高性能的索引策略:1、独立的列:即始终将索隐裂单独放在比较符号的一侧例如下面这条sql语句就不是独立的列:select actor_id from test.actor where actor_id + 1 = 5应当使用独立的列才可以使之走索引:select actor_id from test.actor where act...

2020-01-03 18:55:43 114

原创 精妙绝伦的设计模式:策略模式+模板模式+工厂模式

还是以经典的会员价格策略为依托场景;一、首先加入maven依赖,此依赖用于扫描并获取特定含有特定注解的类二、定义个一个自定义注解,用来定义并判断价格区间三、写一个策略接口类,用于定义获取折后价格的抽象方法四、写一个抽象类,用来实现策略接口中的方法,并且将公共的前置判断逻辑放在此抽象类中(此为模板设计模式),并定义好抽象方法calcPrice()让各自的...

2019-12-28 20:34:44 1323

原创 Idea本地maven打包,程序包不存在

有时候本地打包的时候项目没有报错,buil也可以正常通过,但就是package打包失败,报有些程序包不存在的现象!1、点击报错的路径,会索引到在哪里使用了该程序包2、ctrl + 鼠标左键,点击发现该包在rt.jar下面3、将rt.jar 复制到 jdk/jre/lib/ext 目录下,即可package打包成功!...

2019-12-07 19:34:42 3648 1

原创 spring项目忽略特定的请求

如果是springBoot项目,请移步我的上一篇文章阅读!如果不是springBoot项目的话,最简单的方式就是使用注解@WebFilter,这样就可以省去在filter类中逐一的解析!@WebFilter注解有四个参数分别是:urlPatterns、filterName、initParams、@WebInitParam中就是需要忽略的请求地址了代码清单如下: ...

2019-11-15 01:08:17 619

空空如也

空空如也

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

TA关注的人

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