- 博客(427)
- 资源 (13)
- 收藏
- 关注

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

原创 步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理
我们看下这个是怎么注册的,搜索RequestMappingHandlerMapping的使用,找到这个地方注入的,WebMvcAutoConfiguration,这个类在spring-boot-autoconfigure-2.2.3.RELEASE.jar这个包里先创建了RequestMappingHandlerMapping对象,再塞入拦截器等组件。
2024-06-27 17:38:40
986

原创 springmvc 全局异常处理器配置的三种方式&深入底层源码分析原理
springmvc 全局异常处理器配置的三种方式&深入底层源码分析原理,配置全局异常处理器的三种方式,实现接口HandlerExceptionResolver并配置到WebMvcConfigurer,注解@ExceptionHandler
2024-06-11 22:34:03
1445

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

原创 积木报表Excel数据量大导出慢导不出问题、大量数据导不出问题优化方案和分析解决思路(优化前一万多导出失败,优化后支持百万级跨库表导出,已开源)
原积木导出有两种导出,直接导出和大数据导出(大数据导出是做了优化去掉了一些样式之类的,性能更好)实测中发现原积木大数据导出性能:1万条数据导出耗时30秒,1.5万条耗时1.5分钟导出失败,数据超过一万条后经常导出失败,还会导致容器实例探活失败/内存撑爆重启异步+自实现导出功能优化方案导出性能:34.6万条数据一次导出耗时2.5分钟,导出时快速返回空数据文件,避免页面死等不可用,导出后的表格是在线OSS的文件URL直接每个人都可以快速下载,可随时多次下载。
2024-04-07 14:20:40
2659
6

原创 【深入日志打印】log.error(“你好{}“, “世界“, e);只有一个占位符是否会打印后面多出的参数呢?(详细跟进源码讲解调试分析)
直接在try里弄一个除以0的报错,然后打印日志,日志字符串里只设置了一个占位符,传2个参数过去,是否会打印两个参数呢?
2024-03-27 10:37:59
2159

原创 java 线上生产问题排查思路,jvm内存溢出实例重启原因排查生产实战
项目组线上生产环境不定期的发生内存爆满然后实例重启,实例发布上线后实例内存不断增长最后维持在百分之九十多,十分危险。因此我参与到了排查中,本篇博客将记录排查过程和思路。
2024-03-18 20:55:06
2130

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

原创 携程开源 基于真实请求与数据的流量回放测试平台、自动化接口测试平台AREX
官网文档这篇文章稍稍水一下,主要讲下部署过程里踩的坑,因为部署的过程主要是运维同学去处理了,我只说下踩到的坑,官方的教程是可行的。目前该项目对zuul项目的录制回放会有点问题(录制的样例会出现路由匹配符/order/**,而不是URI,批量回放会出问题),已联系携程AREX开源团队,正在处理,有进度会更新该博客。
2024-01-26 10:38:45
1594

原创 硬核实战!mysql 错误操作整个表全部数据后如何恢复?附解决过程、思路(百万行SQL,通过binlog日志恢复)
事情起因:以为某个表里的数据都是系统配置的数据,没有用户数据,一个字段需要覆盖替换为新的url链接,直接写下了update t_xxx set xxx = ‘https://xxxxxxxxx’ ,然后执行了,执行的时候IDEA还提示这是危险操作,我思考了下不危险,这个就是要全部覆盖,然后就点击了execute确认执行,于是翻车了,等我覆盖完去看效果的时候,惊奇的发现用户数据也被覆盖了,于是去看这个表里的数据,真有用户数据,但是值得高兴的是,全被覆盖了。。。。
2023-12-23 03:13:54
2006
3

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

原创 学习最新大厂付费视频时整理的万字长文+配图带你搞懂 MySQL
SQL(Structured Query Language):结构化查询语言。其实就是定义了操作所有关系型数据库的一种规则。通用语法规则SQL语句可以单行或多行书写,以分号结尾可使用空格和缩进来增强语句的可读性MySQL数据库的SQL语句不区分大小写,关键字建议使用大写-- 注释内容# 注释内容(MySQL特有)多行注释︰/* 注释内容 */触发器是与表有关的数据库对象,可以在insert、update、delete之前或之后触发并执行触发器中定义的SQL语句。
2021-07-25 18:53:35
704
5
原创 jedis+redis pipeline诡异的链接损坏、数据读取异常问题解决
在使用Redis的Pipeline功能时,由于线程安全问题导致了一系列异常现象,包括栈溢出、读取超时、未知响应、损坏链接以及数据读取错乱等。问题根源在于Redis工具类中获取Pipeline对象时使用了try-with-resources语句,导致连接在try块结束后被归还到连接池,而Pipeline仍在使用该连接,造成多线程共享同一连接,进而引发线程安全问题。修复方案是删除工具类中的pipelined方法,改为手动获取Jedis连接和Pipeline对象,并在使用完毕后显式关闭Pipeline和连接,确保
2025-05-15 17:47:57
419
原创 GZip+Base64压缩字符串在ios上解压报错问题解决(安卓、PC模拟器正常)
在Java中,使用java.util.zip.GZIPOutputStream和sun.misc.BASE64Encoder进行字符串压缩时,发现压缩后的Base64编码结果长度不是4的整数倍,导致在iOS端解压时出现错误。经过排查,发现sun.misc.BASE64Encoder存在兼容性问题。解决方案是改用java.util.Base64进行编码,确保生成的Base64字符串长度符合要求。修改后的代码使用Base64.getEncoder().encodeToString()进行编码,解决了iOS端的解
2025-05-13 16:39:07
231
原创 机器指标监控技术方案
Prometheus 是一款开源的 监控和告警工具,由 Cloud Native Computing Foundation (CNCF) 托管,专为云原生环境设计。它采用 Pull(拉取) 模式采集指标数据,并支持强大的 PromQL 查询语言,适用于 微服务、容器、中间件和基础设施 的监控。Grafana 是一款开源的 数据可视化和监控分析平台,支持多种数据源(如 Prometheus、MySQL、Elasticsearch),能够将复杂的监控数据转化为 直观的仪表盘,帮助团队快速发现和诊断问题。
2025-04-30 15:57:07
808
原创 Doris 同一个SQL,筛选时间为过去的固定数据,每次筛选出的总条数都在变问题分析解决过程
ROW_NUMBER () 函数为取当前行号,over(PARTITION by tos.order_id order by tos.create_time desc) 该表达式为根据tos.order_id分组,分组内根据tos.create_time降序排序。有多个筛选条件我们一个个试看哪个条件有问题,下单时间筛选单独筛的时候每次结果是一定的,一旦加上这个交易完成时间就每次都变化了,那证明交易完成时间这个字段的筛选是存在问题的。那问题就可能出在筛选项里,业务当时使用了两个筛选项。
2024-11-25 14:17:55
437
2
原创 mybatis plus分页查询报错Expected one result (or null) to be returned by selectOne(), but found: 10
mybatis plus分页查询报错Expected one result (or null) to be returned by selectOne(), but found: 10
2024-11-06 11:48:17
649
原创 doris创建异步物化视图(加速数据低频变更的复杂实时计算)
异步物化视图,可以把那些每次实时计算非常耗时的,而需要计算的数据变更比较低频的这些计算创建对应的异步物化视图,当相关数据变化的时候触发异步任务去更新计算结果,或者定时计算也可以。例如该处示范为计算订单的订单标识,订单标识使用bit位储存在一个整数内,每一个比特位存储了一个标识。目前已有二十余个标识了,如果实时计算在做筛选项的自动列出可选元素时就会崩,会去扫所有数据看有哪些可选值,因此弄一个异步物化视图来异步计算好结果连表查询拿到结果。查询这个异步物化视图。查看异步物化视图任务。
2024-10-22 16:32:51
565
原创 mysql/doris 计算两个时间相差n天n时n分示范
两个时间:so.create_time,so.update_time。mysql/doris 计算两个时间相差n天n时n分示范。
2024-10-10 17:53:04
874
1
原创 MySQL使用flinkcdc同步数据到doris一段时间后报错The connector is trying to read binlog starting at Struct
可在云厂商或者自己配置binlog的有效期为7天解决,例如华为云会归档binlog到obs对象存储里去,然后删除了机器里的Binlog文件,导致flink cdc这边报错。因为flink cdc监听了你配置的mysql库的binlog,在进行监听获取数据时发现你这个binlog已经没了,因此报错,然后一直重启同步任务,一直失败。解决后再次启动该同步任务,并对比两边数据量、最新几条数据,手动新增修改删除一些数据看是否正常同步过去了。我们的flink cdc任务放那跑着跑着自己报错挂了,查看报错信息如下。
2024-09-24 17:54:46
877
原创 MySQL tinyint(1)类型数据在经过flink cdc同步到doris后只有0/1问题定位与解决
随着深入核实SQL、查询条件、表数据发现,同步后的数据表里的一个status字段全是0和1,而源表中有0 1 2 3 4等多个数值,起初以为是status为内置关键词或者内置列问题,去doris官方文档里没有查到这个,随即看了下这个字段的定义,是tinyint(1),于是我查看了名字为非关键词的同类型列,也出现了这个问题,同步后全是0和1,因此可以确认,tinyint(1)这个类型的字段从mysql使用flink cdc同步到doris会有问题。同步后的表里这个字段的值只有0和1了。mysql 数据类型。
2024-09-23 15:26:22
1085
1
原创 支持异步线程自动传递上下文(例如当前请求)的工具类(支持自定义上下文传递逻辑,支持拦截所有异步操作)
当我们使用异步线程去执行一些耗时操作的时候,这些异步操作中可能需要获取当前请求等上下文信息若未做传递逻辑默认是获取不到的,因此写了一个自动传递的工具和切面,可使用工具手动调用时会自动拷贝上下文信息,加载切面后会拦截所有异步操作自动拷贝上下文信息。同时,上下文信息的加载拷贝移除逻辑也可实现接口自定义,自行扩展。异步线程上下文自动注入当前请求(默认提供)/*** 支持传递ServletRequestAttributes对象用于获取当前请求HttpServletRequest*//**
2024-09-19 16:57:45
477
原创 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
1038
原创 新版报表系统(明细报表、看板、数据大屏)方案&介绍
现有报表系统采用直连业务数据库多表关联查询方式实现,速度慢,性能差,非常多报表打开慢或者白屏,需要数十秒,导出数据时经常失败,等待时间长,无法导出数据,在多人同时导出时甚至整个报表系统崩溃。点击导出excel后可在下载中心查看到该任务正在导出,导出完成后会弹窗提示导出完成,前往下载中心点击下载报表数据Excel文件。新版报表系统采用数仓方案搭建并开发实现,性能好,报表秒开,导出稳定快速,界面美观,筛选数据方便。新版报表系统支持开发数据大屏,在双十一、618等重要活动可直接制作大屏查看活动数据。
2024-09-05 10:37:47
653
原创 数据仓库技术选型方案文档
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
3806
原创 Flink CDC MySQL数据同步到Doris表同步配置生成工具类
【代码】Flink CDC MySQL数据同步到Doris表同步配置生成工具类。
2024-08-30 13:51:06
825
原创 java maven项目如何分析循环依赖并使用maven helper插件排查排除依赖
java maven项目如何分析循环依赖并使用maven helper插件排查排除依赖
2024-08-07 14:28:37
654
原创 项目中引入RedisTemplate和Redisson时RedisTemplate无法使用zset问题(栈溢出stackOverflow)深入源码分析解决
项目中引入RedisTemplate和Redisson时RedisTemplate无法使用zset问题(栈溢出stackOverflow)深入源码分析解决
2024-08-02 11:17:58
1634
2
原创 java springboot Reflections工具扫描项目中带有某个注解的方法(类似@SpringBootApplication扫描各种注解)
java springboot Reflections工具扫描项目中带有某个注解的方法(类似@SpringBootApplication扫描各种注解)
2024-08-01 18:55:47
579
原创 MybatisPlus 不建议使用默认saveBatch/saveOrUpdateBatch,插入数据时性能差、有长事务、锁、键冲突问题(深入源码分析)
因此你可以想象到在大量数据使用这个方法执行保存或更新的时候,n条记录要执行则会查这n条记录主键ID的记录出来(如果数据的主键ID有值),查一条然后更新一条,要是一千万条那得啥时候去啊,而且开启了事务,你的更新操作是会上锁的,于是这个事务会占用大量锁资源。判断的时候会判定这个数据对象的主键ID字段是否为空或者根据这个主键ID去表里查这个数据出来看查出来的数据对象是不是空(没必要查出整行记录的,直接用count不好吗)字段1=values(字段1),字段2=values(字段2)(字段1,字段2,…
2024-07-30 16:57:01
3022
1
原创 springboot nacos的各种注解、手动操作监听配置变化(监听指定DataId/监听任何变化)
由于我写的这个是基础包-权限中需要监听某些配置,给路径白名单,方便发布后出问题能及时修复权限拦截问题,但是操作nacos时是操作项目所在nacos配置,因此无法在使用指定DataId这种方式去监听变化并实现加白逻辑,需要监听任何配置文件变化。这个是用来监听某个dataId的配置发生变化的,发生变化时执行方法,并把最新值作为参数传入。nacos提供的注解,用于注入一个配置值,使用表达式定位。这个注解是用在类上的,标明该类要注入nacos里的配置。@Value是spring提供的注解,注入值。
2024-07-18 14:51:37
2227
原创 利用位运算实现一个整数保存32、64种0/1状态,状态可修改(例如实现首次登录奖励等操作)
实际使用中我们可能经常需要存储这个用户是否领取过新手奖励、首次充值奖励等操作状态,我们不会每次都给这个用户加一个字段或者建个表保存这个0/1的状态信息,我们一般使用位运算实现,给用户设置一个状态字段(字段类型用整数、长整数都可以,字段类型有多少位就支持存储多少个状态),字段默认值是0,对状态存储的整数进行位运算,实现状态的增删改查,例如一个整数,有4字节,32个位,因此可以存储32个状态,每个状态占1个比特。接口 IBitStatus。
2024-07-17 14:59:45
294
原创 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
9453
原创 JAVA 注解搜索工具类与注解原理讲解(获取方法、类、实现接口、注解上的注解上所有的某个注解,继承的注解也支持)
JAVA 注解搜索工具类与注解原理讲解(获取方法、类、实现接口上所有的某个注解,继承的注解也支持),基于Spring的AnnotatedElementUtils工具,支持从当前类、父类、接口搜索(支持限制最大深度),支持传入搜索配置、启用缓存。可解决注解定义在注解上(A注解上定义了B注解,拿到B注解)、类上、接口上、继承的类、接口上获取不到的问题。
2024-06-19 11:46:56
741
原创 java 对象实际占用内存大小预估工具类ObjectSizeUtil
java 对象实际占用内存大小预估工具类ObjectSizeUtil ,返回对象占用预估字节数,返回字节数对应格式化后的字符串(xx Kb)依赖了lombock和hutool,项目不用这个可以去掉日志,稍微改写一下。
2024-06-18 11:04:25
685
原创 spring启动时执行一些代码的7种方式讲解&代码示范
本文全面探讨了Spring Boot启动阶段执行初始化操作的几种常见方法,包括监听事件、实现接口以及使用注解等多种策略,具体如下:监听ApplicationContext事件:通过实现ApplicationListener接口,监听ContextRefreshedEvent事件,可在Spring容器初始化完成后执行初始化逻辑。这种方式适用于需要在所有Bean加载完毕后进行全局性初始化操作的场景。
2024-06-14 15:34:48
1360
原创 Java程序排查问题利器之Btrace
BTrace是Java的安全可靠的动态跟踪工具。他的工作原理是通过 instrument + asm 来对正在运行的java程序中的class类进行动态增强,可以在不用重启的情况下监控系统运行情况,方便的获取程序运行时的数据信息,如方法参数、返回值、全局变量和堆栈信息等,并且做到最少的侵入,占用最少的系统资源。正如上面描述的一些特性,所以btrace一般是用来排查生产环境jvm问题的一款利器,使用它不用再担心应用程序的日志打的不够全,不够细,也不用为了排查问题一遍遍的重启程序。
2024-06-03 19:32:16
1025
原创 springcloud Feign调用拦截器(统一处理拷贝请求头实现透传信息、内部调用鉴权、打印feign调用)
实现接口 feign.RequestInterceptor 并注入到IOC容器即可生效。
2024-06-03 10:40:39
833
原创 Arthas火焰图分析应用性能
1、什么是火焰图火焰图(Flame Graph)是一种用于可视化性能分析的图表,最初由Brendan Gregg开发。它主要用于分析CPU使用情况和函数调用堆栈。火焰图以图形的形式展示了函数调用的层次结构和时间分布,可以帮助开发人员快速定位应用程序中的性能瓶颈和热点。在火焰图中,每个矩形代表一个函数,矩形的宽度表示该函数在采样中出现的频率或占用的CPU时间,矩形的高度表示函数的调用深度。火焰图的顶部是应用程序的入口函数,底部是最深层次的函数。
2024-05-23 16:58:36
3777
countrymmdbcountrymmdbcountrymmdb
2023-03-02
Dom4j jar.zip
2021-06-27
netty_websocket示范网页聊天项目源码
2021-03-16
springboot redis示范项目源码
2021-03-16
SpringBoot AOP各种注解、自定义注解、鉴权使用案例(免费下载)
2021-02-24
tendisplus-2.1.2-rocksdb-v5.13.4.zip
2021-01-20
dart grpc所需的dart-grpc-plugin dart-grpc-gen protoc,
2020-12-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人