自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HumorChen的博客

快速学习,mail and qq:3301633914@vip.qq.com

  • 博客(406)
  • 资源 (13)
  • 收藏
  • 关注

原创 MybatisPlus 多数据源 @DS 选择深入源码理解原理

数据源的确定,数据源的选择都已经知道了,我们看下数据源的加载,在自动配置类里有个DynamicDataSourceProvider我们点进去看其实就是个保存数据源名称和数据源包装对象的map罢了。前面我们看到拦截器是实现MethodInterceptor实现的,那拦截的是哪些方法呢,我们看源码里的自动配置类,我们去看每个框架的时候都可以从关键功能或者自动配置文件去作为入口,在里面我们可以看到有个DynamicDataSourceAnnotationAdvisor,动态数据源注解通知,我们看源码里怎么写的。

2024-07-10 14:41:12 404

原创 步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理

我们看下这个是怎么注册的,搜索RequestMappingHandlerMapping的使用,找到这个地方注入的,WebMvcAutoConfiguration,这个类在spring-boot-autoconfigure-2.2.3.RELEASE.jar这个包里先创建了RequestMappingHandlerMapping对象,再塞入拦截器等组件。

2024-06-27 17:38:40 898

原创 springmvc 全局异常处理器配置的三种方式&深入底层源码分析原理

springmvc 全局异常处理器配置的三种方式&深入底层源码分析原理,配置全局异常处理器的三种方式,实现接口HandlerExceptionResolver并配置到WebMvcConfigurer,注解@ExceptionHandler

2024-06-11 22:34:03 1126

原创 java debug断点的时候其他线程还在跑吗?断点是怎么实现的?(断点调试原理讲解)

Debug断点调试的时候其他线程全部会被挂起,Debug的时候将被断点的行字节码替换为了特殊标识,并在Debug BreakPoint管理器中保存了这行原本的代码字节码是啥,触发断点的时候会发出断点事件、挂起所有线程,实践了也确实是这样。所以在设置断点的时候,jvm做的事情,就是根据断点对应的方法和字节码的位置,找到设置断点的位置,然后把正常的字节码替换为0xca,并保存好原来的字节码用于恢复。平时我们都会使用IDE进行Java的断点调试,你是否有去思考过,为什么我打下一个断点,程序就会停下来?

2024-06-03 20:25:58 1048 1

原创 积木报表Excel数据量大导出慢导不出问题、大量数据导不出问题优化方案和分析解决思路(优化前一万多导出失败,优化后支持百万级跨库表导出,已开源)

原积木导出有两种导出,直接导出和大数据导出(大数据导出是做了优化去掉了一些样式之类的,性能更好)实测中发现原积木大数据导出性能:1万条数据导出耗时30秒,1.5万条耗时1.5分钟导出失败,数据超过一万条后经常导出失败,还会导致容器实例探活失败/内存撑爆重启异步+自实现导出功能优化方案导出性能:34.6万条数据一次导出耗时2.5分钟,导出时快速返回空数据文件,避免页面死等不可用,导出后的表格是在线OSS的文件URL直接每个人都可以快速下载,可随时多次下载。

2024-04-07 14:20:40 1313 3

原创 【深入日志打印】log.error(“你好{}“, “世界“, e);只有一个占位符是否会打印后面多出的参数呢?(详细跟进源码讲解调试分析)

直接在try里弄一个除以0的报错,然后打印日志,日志字符串里只设置了一个占位符,传2个参数过去,是否会打印两个参数呢?

2024-03-27 10:37:59 1009

原创 java 线上生产问题排查思路,jvm内存溢出实例重启原因排查生产实战

项目组线上生产环境不定期的发生内存爆满然后实例重启,实例发布上线后实例内存不断增长最后维持在百分之九十多,十分危险。因此我参与到了排查中,本篇博客将记录排查过程和思路。

2024-03-18 20:55:06 1302

原创 原创java开源项目发布maven全球中央仓库详细过程示范和遇到的问题解决办法

打包好的依赖项第一步 注册sonatype账号地址:https://issues.sonatype.org/secure/Signup!default.jspa看不懂英文的兄弟请用chrome网页翻译账号注册之后似乎还有个邮箱认证把,有的话去邮箱里打开认证通过链接。账号密码一定要记住了,保存好,并且最好是复杂的密码,后面还需要用到的。地址:https://issues.sonatype.org/secure/Dashboard.jspa去创建问题,地址:创建问题项目选择:Community

2024-02-20 11:01:58 927 2

原创 携程开源 基于真实请求与数据的流量回放测试平台、自动化接口测试平台AREX

官网文档这篇文章稍稍水一下,主要讲下部署过程里踩的坑,因为部署的过程主要是运维同学去处理了,我只说下踩到的坑,官方的教程是可行的。目前该项目对zuul项目的录制回放会有点问题(录制的样例会出现路由匹配符/order/**,而不是URI,批量回放会出问题),已联系携程AREX开源团队,正在处理,有进度会更新该博客。

2024-01-26 10:38:45 1343

原创 硬核实战!mysql 错误操作整个表全部数据后如何恢复?附解决过程、思路(百万行SQL,通过binlog日志恢复)

事情起因:以为某个表里的数据都是系统配置的数据,没有用户数据,一个字段需要覆盖替换为新的url链接,直接写下了update t_xxx set xxx = ‘https://xxxxxxxxx’ ,然后执行了,执行的时候IDEA还提示这是危险操作,我思考了下不危险,这个就是要全部覆盖,然后就点击了execute确认执行,于是翻车了,等我覆盖完去看效果的时候,惊奇的发现用户数据也被覆盖了,于是去看这个表里的数据,真有用户数据,但是值得高兴的是,全被覆盖了。。。。

2023-12-23 03:13:54 1471 2

原创 SpringCloud全套学习分目录两万字笔记(图文步骤、示范项目、附带所有项目源码git可供克隆)

SpringCloud全套学习分目录两万字笔记(图文步骤、示范项目、附带所有项目源码git可供克隆)SpringCloud初识Spring Cloud什么是微服务SpringCloud简介Spring Cloud 与Dubbo对比小结服务治理Eureka搭建步骤搭建父项目搭建Provider和Consumer项目使用RestTemplate远程调用搭建Eureka服务 eureka-serverprovider使用eureka注册服务consumer使用eureka获得服务提供者地址并调用配置讲解Eurek

2021-10-10 11:00:07 575

原创 学习最新大厂付费视频时整理的万字长文+配图带你搞懂 MySQL

SQL(Structured Query Language):结构化查询语言。其实就是定义了操作所有关系型数据库的一种规则。通用语法规则SQL语句可以单行或多行书写,以分号结尾可使用空格和缩进来增强语句的可读性MySQL数据库的SQL语句不区分大小写,关键字建议使用大写-- 注释内容# 注释内容(MySQL特有)多行注释︰/* 注释内容 */触发器是与表有关的数据库对象,可以在insert、update、delete之前或之后触发并执行触发器中定义的SQL语句。

2021-07-25 18:53:35 510 5

原创 孙子兵法与三十六计 复盘短记

听书听孙子兵法不太形象,找来一部2000年的中央电视台拍摄的电视剧《孙子兵法与三十六计》,B站有,00年的电视剧画质的确感人,可演的却很细节很真实,例如春秋时马没有马鞍,猪只有黑猪等细节都很完善。继续慢慢记,作复盘,顺便分享,总计将近两万字。第一集:上屋抽梯对敌人而言,是利用小利等方法引诱敌人上屋随后抽走梯,置之绝境轻易灭之。对友军而言,则是破釜沉舟的意思,将自己置之绝境,置之死地而后生。剧中用庞涓被魏王重用攻打楚国攻打不下,随后谋士建议去找师傅鬼谷子支招,谋士去找了鬼谷子,鬼谷子让徒弟孙宾(鬼谷子将

2021-05-05 13:05:50 4569 4

原创 战国风云之列国短记

本纪录片可在腾讯视频搜索观看巢氏燧人氏神农炎黄夏商周春秋战国秦汉三国两晋南北朝五代十国辽宋夏金元到明清民国近现代燕国燕王不行了国家衰落,寻求贤臣,信了郑则仕的鬼话让位给他,开始学神农他们种地去了,成了第一个真的让位的人,可人民不服他郑则仕,燕王儿子也不服要夺回来,得到了齐国支持,齐军以伸张正义之名打败了郑则仕统治的燕国,打赢了不给燕王子了,毁宗庙,燕王自杀,燕王之子恨死了,最后夺回来,燕昭王赏识了这位使我有洛阳二顷天,安能佩六国相印的苏秦,苏秦一直不受赏识,有人赏识了愿意去齐国做间人,离间齐国.

2021-05-05 12:27:18 617

原创 MySQL 7种Join的定义&图解&示范&结果(所有join类型)

笛卡尔(Descartes)乘积又叫直积。假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}

2024-06-26 18:31:47 843

原创 JAVA 注解搜索工具类与注解原理讲解(获取方法、类、实现接口、注解上的注解上所有的某个注解,继承的注解也支持)

JAVA 注解搜索工具类与注解原理讲解(获取方法、类、实现接口上所有的某个注解,继承的注解也支持),基于Spring的AnnotatedElementUtils工具,支持从当前类、父类、接口搜索(支持限制最大深度),支持传入搜索配置、启用缓存。可解决注解定义在注解上(A注解上定义了B注解,拿到B注解)、类上、接口上、继承的类、接口上获取不到的问题。

2024-06-19 11:46:56 444

原创 java 对象实际占用内存大小预估工具类ObjectSizeUtil

java 对象实际占用内存大小预估工具类ObjectSizeUtil ,返回对象占用预估字节数,返回字节数对应格式化后的字符串(xx Kb)依赖了lombock和hutool,项目不用这个可以去掉日志,稍微改写一下。

2024-06-18 11:04:25 330

原创 spring启动时执行一些代码的7种方式讲解&代码示范

本文全面探讨了Spring Boot启动阶段执行初始化操作的几种常见方法,包括监听事件、实现接口以及使用注解等多种策略,具体如下:监听ApplicationContext事件:通过实现ApplicationListener接口,监听ContextRefreshedEvent事件,可在Spring容器初始化完成后执行初始化逻辑。这种方式适用于需要在所有Bean加载完毕后进行全局性初始化操作的场景。

2024-06-14 15:34:48 830

原创 Java程序排查问题利器之Btrace

BTrace是Java的安全可靠的动态跟踪工具。他的工作原理是通过 instrument + asm 来对正在运行的java程序中的class类进行动态增强,可以在不用重启的情况下监控系统运行情况,方便的获取程序运行时的数据信息,如方法参数、返回值、全局变量和堆栈信息等,并且做到最少的侵入,占用最少的系统资源。正如上面描述的一些特性,所以btrace一般是用来排查生产环境jvm问题的一款利器,使用它不用再担心应用程序的日志打的不够全,不够细,也不用为了排查问题一遍遍的重启程序。

2024-06-03 19:32:16 890

原创 springcloud Feign调用拦截器(统一处理拷贝请求头实现透传信息、内部调用鉴权、打印feign调用)

实现接口 feign.RequestInterceptor 并注入到IOC容器即可生效。

2024-06-03 10:40:39 490

原创 Arthas火焰图分析应用性能

1、什么是火焰图火焰图(Flame Graph)是一种用于可视化性能分析的图表,最初由Brendan Gregg开发。它主要用于分析CPU使用情况和函数调用堆栈。火焰图以图形的形式展示了函数调用的层次结构和时间分布,可以帮助开发人员快速定位应用程序中的性能瓶颈和热点。在火焰图中,每个矩形代表一个函数,矩形的宽度表示该函数在采样中出现的频率或占用的CPU时间,矩形的高度表示函数的调用深度。火焰图的顶部是应用程序的入口函数,底部是最深层次的函数。

2024-05-23 16:58:36 1510

原创 个人收藏-Java轻量权限框架sa-token(很不错,gitee 46k star/ github16K star)

基本上你想要有的权限功能它都支持了,看完文档就会用了。

2024-05-23 15:59:44 822

原创 在线训练场killercoda推荐(arthas、k8s在线训练,国外免费的)

刚在玩火焰图,看到arthas跳去的是一个训练的网站,分享记录下,方便下次用。参考博客介绍killercoda。

2024-05-22 17:29:49 200

原创 Redis GUI桌面客户端首推Another Redis Desktop Manager(最好用)

🚀🚀🚀 更快、更好、更稳定的Redis桌面(GUI)管理客户端,兼容Windows、Mac、Linux,性能出众,轻松加载海量键值AnotherRedisDesktopManager简介地址AnotherRedisDesktopManager国内Gitee下载地址。

2024-05-22 16:59:02 476

原创 JWT 介绍、token结构、示范代码与性能测试

JWT,全称是Json Web Token, 是JSON风格轻量级的授权和身份认证规范,可实现无状态、分布式的Web应用授权;数据格式声明类型,这里是JWT签名算法,自定义我们会对头部进行base64加密(可解密),得到第一部分数据用户身份信息(注意,这里因为采用base64加密,可直接解密,因此不要存放敏感信息)tokenID:当前这个JWT的唯一标示注册声明:如token的签发时间,过期时间,签发人等这部分也会采用base64加密,得到第二部分数据。

2024-05-17 09:29:41 430

原创 maven deploy项目发布到中央仓库GPG签名失败signing failed: No secret key

maven deploy项目发布到中央仓库GPG签名失败signing failed: No secret key,在我执行命令打包项目到中央仓库时失败。gpg: signing failed: No secret key

2024-05-12 02:53:05 365

原创 jmeter 指定QPS压测接口

压测开始后qps按我的配置要求逐渐稳定到了10qps当你配置更高的qps时,会受限制于线程数、服务器每秒能接受的请求数、限制的qps、网络吞吐量等,取瓶颈最小值,可以根据实际需要不断修改参数压测。

2024-04-22 16:30:31 883

原创 MySQL 列数据跨表拷贝,一句SQL快速将表A每条记录的某些字段拷贝到表B每条记录的某些字段(A、B表通过ID等字段对应)

新建了一张表B,需要从现有的A表的拷贝一部分字段过来,他们每行有个ID字段能一 一对应,做冗余数据。UPDATE t_b INNER JOIN t_a ON t_b.id = t_a.id SET t_b.c1 = t_a.c1, t_b.c2 = t_a.c2 ;

2024-04-16 16:41:29 338

原创 nacos服务器挂了之后springboot/springcloud服务会挂吗?不会挂(顺便深入源码分析nacos配置中心客户端核心功能实现)

看源码第一步找到maven依赖展开,看看文件夹、文件名,粗略过一遍有些啥文件如果你有直接调用源码里的方法就直接通过方法进去看怎么实现的如果没有直接用某个方法,那就去看目录、相关文件逐步分析理解。

2024-04-12 10:51:12 981

原创 SpringCloud Hystrix 服务熔断、服务降级防止服务雪崩

如果达到最大并发请求数,请求会被拒绝。引发第三方重试不断调用我们接口,这个接口又会调用其他接口,在突发大流量时会引发雪崩,且雪崩积攒的重试流量会把刚滚动启动的实例(实例有探针发现持续两次不响应ping就会滚动重启实例,起一个新的,回收旧实例)又打垮,因此需要加入服务熔断、服务降级,让系统将无法消化的流量直接熔断返回报错,让服务不被阻塞住。Hystrix,英文意思是豪猪,全身是刺,刺是一种保护机制。处理调用的线程池核心线程一个,任务队列长度为10,超出的请求会被熔断打回,在执行和队列里的请求没事,正常执行。

2024-04-03 15:57:47 1202

原创 java 两个Dto对象有字段数据不一致可Objects.equals方法却返回了一致?(问题分析与结论)

可以从字节码看到,对父类做了equals比对!你可能和我一样会去对比两个类的差别,最开始的类有@FieldNameConstants注解,后面的没有,但是测试过后,这个加或不加都不影响维持现状,另一个就是base类是否在一个目录下,这个测试了仍然不影响。运行代码得到的结果,是不是有点懵,明明pageNo这个字段的值一个是1,一个是10,为啥equals还能相等呢?到此,你弄懂了为啥这两个对象equals会返回相同,解决办法是加注解声明equals方法要比较父类的equals。我也懵了啊,再去看看字节码。

2024-03-18 09:54:49 316

原创 java springmvc/springboot 项目通过HttpServletRequest对象获取请求体body工具类

【代码】java springmvc/springboot 项目通过HttpServletRequest对象获取请求体body工具类。

2024-02-27 16:41:13 1020

原创 java Excel导出依赖技术选型mark

不要使用apache poi(性能差,占用内存大,比阿里的大好几倍的内存),应该使用阿里的easyexcel(性能好,占用内存少)

2024-02-21 10:18:23 245

原创 maven项目javadoc生成文档过程乱码解决办法

打包的时候javadoc乱码。或者弄一个系统变量也可以的。修改文件编码为utf8。

2024-02-19 16:11:31 299

原创 Unable to make field private JavacProcessingEnvironment$DiscoveredPro报错解决办法

maven项目打包报错Unable to make field private com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors com.sun.tools.javac.processing.JavacProcessingEnvironment.discoveredProcs accessible: module jdk.compiler does not "opens com.sun.tools

2024-02-19 13:51:17 2545 2

原创 redis redisson报错 Unsupported protocol问题原因和解决方案

redisson没对老版本协议做兼容处理,一旦你升级版本就出现不兼容协议就这样报错了~不对老版本协议做兼容措施,有点憨八龟~

2024-02-02 11:03:49 1244

原创 java 性能最好的对象、列表深拷贝框架MapStruct(一秒拷贝百万次)

MapStruct是一款非常实用Java工具,主要用于解决对象之间的拷贝问题,比如PO/DTO/VO/QueryParam之间的转换问题。区别于BeanUtils这种通过反射,它通过编译器编译生成常规方法,将可以很大程度上提升效率。> !!!注意:在常用场景下你可以认为是深拷贝的,但是你仔细去看,其实并不是完全深拷贝的,它的拷贝和Spring BeanUtils是一个样的,那就是第一层的普通对象确实是深拷贝,如果你属性里是引用对象的(比如List),那这种字段的拷贝其实是浅拷贝的,只拷贝了引用。但是它这种

2024-01-23 16:28:18 1603

原创 Java 对象、列表常用深拷贝方式与性能测试

hutool工具类包是一个java常用工具类包,集合了非常多的工具类,但是呢要注意性能问题、锁问题,性能偏差,你翻看他的源码你会发现,老版本的里头还有ReentrantLock来锁属性,新版的撤销了这个还加了缓存,但是在高并发下一样又触发到了反射Field底层的一个synchronized锁,所以高性能系统、接口请记得压测、阅读源码查看实现方式确认方案是否可靠。BeanUtils是spring提供的一个工具类,底层通过带缓存的反射来实现的。性能高,虽然不是最高的咯,但也是非常高了。

2024-01-23 16:16:24 1107

原创 BigDecimal 0 不等于 0.00 equals问题

在执行某退款时,需要检验一下公式是否相等,避免在数据异常时执行了退款,但出现了一个问题,左边为0,右边计算后为0.00,使用BigDecimal 的equals方法去判定BigDecimal的0 和BigDecimal的0.00返回不相等!天猫前置抵扣退款结算时:质检价0!= 前置抵扣已使用金额0+本次结算前线下结算额-9200.00+本次退款金额9200.00。BigDecimal 的equals方法源码如下,在精度不一致的时候会提前返回不相等~请使用compareTo == 0来判断。

2024-01-22 11:20:54 672

原创 FastJSON 禁用循环引用检测DisableCircularReferenceDetect(“$ref“)

序列化的时候带上SerializerFeature.DisableCircularReferenceDetect特性。执行代码修改静态变量全局默认关闭,就不会再对重复引用改为"$ref":xxx了。关闭之前序列化出来的数据。

2024-01-19 14:12:53 1403

countrymmdbcountrymmdbcountrymmdb

countrymmdbcountrymmdbcountrymmdbcountrymmdbcountrymmdbcountrymmdbcountrymmdbcountrymmdbcountrymmdb

2023-03-02

我的idea设置我的idea设置

我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置我的idea设置

2023-02-24

Dom4j jar.zip

免费下载Dom4j jar.zipDom4j jar.zipDom4j jar.zipDom4j jar.zipDom4j jar.zipDom4j jar.zip

2021-06-27

ide-eval-resetter.zip

ide重置ide重置ide重置ide重置ide重置

2021-05-08

netty_websocket示范网页聊天项目源码

netty_websocket示范网页聊天项目源码netty_websocket示范网页聊天项目源码netty_websocket示范网页聊天项目源码

2021-03-16

springboot redis示范项目源码

springboot redis示范项目源码springboot redis示范项目源码springboot redis示范项目源码springboot redis示范项目源码

2021-03-16

spring security http接口鉴权使用示范项目

spring security http接口鉴权使用示范项目

2021-03-01

spring security方法鉴权使用示范项目

spring security方法鉴权使用示范项目

2021-03-01

SpringBoot AOP各种注解、自定义注解、鉴权使用案例(免费下载)

SpringBoot AOP各种注解、自定义注解、鉴权使用案例SpringBoot AOP各种注解、自定义注解、鉴权使用案例SpringBoot AOP各种注解、自定义注解、鉴权使用案例

2021-02-24

tendisplus-2.1.2-rocksdb-v5.13.4.zip

tendis单点、三主三从集群搭建后的压缩包tendis单点、三主三从集群搭建后的压缩包tendis单点、三主三从集群搭建后的压缩包tendis单点、三主三从集群搭建后的压缩包

2021-01-20

dart 2.10 linux sdk

dart 2.10 linux sdk,由于国内无法下载到所以这里下载了下来给大家免费下载

2020-12-11

dart grpc所需的dart-grpc-plugin dart-grpc-gen protoc,

bin里有bat结尾的批处理文件就是windows的,没有是linux的。bin里有bat结尾的批处理文件就是windows的

2020-12-11

Dart SDK2.10版本

Dart SDK2.10版本,去官网找半天找不到下载的,直接在这下就行了,免费Dart SDK2.10版本

2020-12-11

nacos1.4版本 github下的慢

nacos.zip github下的慢,我下成功了,免费分享给大家。

2020-12-04

kafka tar包和java操作kafka博客

kafka tar包和java操作kafka博客

2020-11-25

空空如也

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

TA关注的人

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