自定义博客皮肤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

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

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

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

2024-07-10 14:41:12 703

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

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

2024-06-27 17:38:40 939

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

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

2024-06-11 22:34:03 1245

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

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

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

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

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

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

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

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

2024-03-27 10:37:59 1349

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

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

2024-03-18 20:55:06 1709

原创 原创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 980 2

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

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

2024-01-26 10:38:45 1422

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

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

2023-12-23 03:13:54 1650 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 600

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

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

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

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

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

2021-05-05 13:05:50 5033 4

原创 战国风云之列国短记

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

2021-05-05 12:27:18 639

原创 支持异步线程自动传递上下文(例如当前请求)的工具类(支持自定义上下文传递逻辑,支持拦截所有异步操作)

当我们使用异步线程去执行一些耗时操作的时候,这些异步操作中可能需要获取当前请求等上下文信息若未做传递逻辑默认是获取不到的,因此写了一个自动传递的工具和切面,可使用工具手动调用时会自动拷贝上下文信息,加载切面后会拦截所有异步操作自动拷贝上下文信息。同时,上下文信息的加载拷贝移除逻辑也可实现接口自定义,自行扩展。异步线程上下文自动注入当前请求(默认提供)/*** 支持传递ServletRequestAttributes对象用于获取当前请求HttpServletRequest*//**

2024-09-19 16:57:45 172

原创 Doris使用mysql语法查询时只保留group by分组并order by排序出来的每个分组第一条记录的方法

查询结果可以看到,mysql自动帮我们每个分组只保留分组中第一条数据,而排序是等分组、where筛选完了才排序的,并不会对分组排序再取第一条。假设有个登录记录表叫 test.t_login_log,同步到doris后表名叫 ods_test_login_log。因为前面根据user_id分过组了,每个组内只有一条记录行号为1。那在MySQL中你需要先按你要排序的字段排序完,再去分组就能得到你想要的了。在标记录行序号的时候可以选择根据字段分区,根据字段排序。手动建了个模拟表并写入数据。

2024-09-12 15:17:55 279

原创 新版报表系统(明细报表、看板、数据大屏)方案&介绍

现有报表系统采用直连业务数据库多表关联查询方式实现,速度慢,性能差,非常多报表打开慢或者白屏,需要数十秒,导出数据时经常失败,等待时间长,无法导出数据,在多人同时导出时甚至整个报表系统崩溃。点击导出excel后可在下载中心查看到该任务正在导出,导出完成后会弹窗提示导出完成,前往下载中心点击下载报表数据Excel文件。新版报表系统采用数仓方案搭建并开发实现,性能好,报表秒开,导出稳定快速,界面美观,筛选数据方便。新版报表系统支持开发数据大屏,在双十一、618等重要活动可直接制作大屏查看活动数据。

2024-09-05 10:37:47 408

原创 数据仓库技术选型方案文档

Flink CDC 是 Flink 的子项目,是 Flink 的一组原连接器,用于 CDC 从不同数据库接收/更改数据,Flink CDC 将 Debezium 集成为引擎,异步或数据更改,因此 Flink CDC 可以充分使用和发挥 Debezium 的能力,并且可以无缝对接 Flink 使用其 SQL API 和 DataStream API 的能力,最终写入各种数据源。它基本能够满足各种数据分析类的场景,并且随着数据体量的增大,它与Spark、Impala、Kylin对比,优势也会变得越为明显。

2024-09-03 18:20:32 3084

原创 Flink CDC MySQL数据同步到Doris表同步配置生成工具类

【代码】Flink CDC MySQL数据同步到Doris表同步配置生成工具类。

2024-08-30 13:51:06 522

原创 java maven项目如何分析循环依赖并使用maven helper插件排查排除依赖

java maven项目如何分析循环依赖并使用maven helper插件排查排除依赖

2024-08-07 14:28:37 275

原创 项目中引入RedisTemplate和Redisson时RedisTemplate无法使用zset问题(栈溢出stackOverflow)深入源码分析解决

项目中引入RedisTemplate和Redisson时RedisTemplate无法使用zset问题(栈溢出stackOverflow)深入源码分析解决

2024-08-02 11:17:58 1041

原创 java springboot Reflections工具扫描项目中带有某个注解的方法(类似@SpringBootApplication扫描各种注解)

java springboot Reflections工具扫描项目中带有某个注解的方法(类似@SpringBootApplication扫描各种注解)

2024-08-01 18:55:47 350

原创 MybatisPlus 不建议使用默认saveBatch/saveOrUpdateBatch,插入数据时性能差、有长事务、锁、键冲突问题(深入源码分析)

因此你可以想象到在大量数据使用这个方法执行保存或更新的时候,n条记录要执行则会查这n条记录主键ID的记录出来(如果数据的主键ID有值),查一条然后更新一条,要是一千万条那得啥时候去啊,而且开启了事务,你的更新操作是会上锁的,于是这个事务会占用大量锁资源。判断的时候会判定这个数据对象的主键ID字段是否为空或者根据这个主键ID去表里查这个数据出来看查出来的数据对象是不是空(没必要查出整行记录的,直接用count不好吗)字段1=values(字段1),字段2=values(字段2)(字段1,字段2,…

2024-07-30 16:57:01 951

原创 Java开发工具、插件备忘录

Java开发工具、插件备忘录

2024-07-19 10:46:07 670

原创 springboot nacos的各种注解、手动操作监听配置变化(监听指定DataId/监听任何变化)

由于我写的这个是基础包-权限中需要监听某些配置,给路径白名单,方便发布后出问题能及时修复权限拦截问题,但是操作nacos时是操作项目所在nacos配置,因此无法在使用指定DataId这种方式去监听变化并实现加白逻辑,需要监听任何配置文件变化。这个是用来监听某个dataId的配置发生变化的,发生变化时执行方法,并把最新值作为参数传入。nacos提供的注解,用于注入一个配置值,使用表达式定位。这个注解是用在类上的,标明该类要注入nacos里的配置。@Value是spring提供的注解,注入值。

2024-07-18 14:51:37 1165

原创 利用位运算实现一个整数保存32、64种0/1状态,状态可修改(例如实现首次登录奖励等操作)

实际使用中我们可能经常需要存储这个用户是否领取过新手奖励、首次充值奖励等操作状态,我们不会每次都给这个用户加一个字段或者建个表保存这个0/1的状态信息,我们一般使用位运算实现,给用户设置一个状态字段(字段类型用整数、长整数都可以,字段类型有多少位就支持存储多少个状态),字段默认值是0,对状态存储的整数进行位运算,实现状态的增删改查,例如一个整数,有4字节,32个位,因此可以存储32个状态,每个状态占1个比特。接口 IBitStatus。

2024-07-17 14:59:45 202

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

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

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

2024-06-19 11:46:56 551

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

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

2024-06-18 11:04:25 428

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

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

2024-06-14 15:34:48 1031

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

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

2024-06-03 19:32:16 927

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

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

2024-06-03 10:40:39 642

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

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

2024-05-23 16:58:36 2568

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

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

2024-05-23 15:59:44 879

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

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

2024-05-22 17:29:49 345

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

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

2024-05-22 16:59:02 572

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

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

2024-05-17 09:29:41 863

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

原创 jmeter 指定QPS压测接口

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

2024-04-22 16:30:31 1126

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

flink cdc 可执行包 同步mysql到doris工具

flink cdc 可执行包 同步mysql到doris工具,搭配文档教程,和同步示范文档。

2024-08-16

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关注的人

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