自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL删除重复记录并且只保留最新一条

在开发过程中,因为某些问题可能会导致同一条数据在表中重复出现,此时我们需要申请权限走SQL去修复,下面介绍下具体修复流程。

2024-08-07 14:51:18 1082

原创 Hystrix参数踩坑

先来看两个本次我们项目当中出现的异常(出异常时系统未配置hystrix参数)

2024-07-19 18:01:51 1063

原创 使用Mybatis批量插入大量数据的实践

在项目开发过程中,我们经常会有批量插入的需求,例如:定时统计任务但是受限于MySQL中参数限制,5.7版本默认值为4M,这显然不太符合我们的需求,当然我们也可以通过修改此值来适应我们业务,今天分享在不修改此值的情况下,如何在客户端优雅的处理此场景现在整个世界都变优雅了!

2024-07-05 14:24:32 2638

原创 IText生成pdf文件demo示例

itext生成pdf文件demo示例

2024-06-28 09:38:30 623

原创 IDEA使用Apidocx插件在RAP生成接口文档

IDEA使用Apidocx插件在RAP生成接口文档

2024-06-27 14:23:44 678

原创 Kakfa发版丢消息事件分析

一文搞懂Spring线程池优雅停

2024-06-21 17:13:39 1878

原创 Mybatis-Plus多种批量插入方案对比

这里先留下一张saveBatch的SQL日志截图,这里的日志是一个insert into语句,下面带了一千条数据(MP默认一千条一个批次),使用Mybatis Log插件查看还是单条的SQL。再来看看此时控制台的SQL,与方案二的SQL有着明显的区别,这里是将批次插入的数据拼接在同一条SQL中,对于MySQL处理来说,这是真的批量新增。因很早就听闻过mybatis-plus的[伪]批量新增的问题,很快锁定问题并进行修复,下面细节描述多种批量新增方案的具体性能表现。方案一:传统for循环。

2024-06-15 22:37:22 1680

原创 MySQL树形表查询优化

这种方案挺常见,在数据量少的时候可以采用,但是量一旦大了以后呢,性能变差 且 通过Mybatis拼接完SQL以后可能会超长(而通过多线程分批后聚合编码又较为复杂)因为其他方案本质都是通过 IN 来查询数据,虽然还可以进一步对 IN 方案进行优化(例如:业务上多线程分批IN,EXISTS等),但还是略逊一筹。但这种方式也有个弊端,那就是有的项目上还没用上MySQL8.0,那该如何处理呢?请接着看第四个通用方案。一个代理可以有很多子代理,然后子代理又有子代理,业务要求父代理能看到所有子代理的数据。

2024-05-12 23:27:37 771 1

原创 日报表定时任务优化历程

报表是一个很常见的需求,在项目中后期往往会需要加多种维度的一些统计信息,今天就来谈谈上线近10个月后的一次报表优化优化之路(从一天报表跑需要五分钟,优化至秒级)思考:报表任务里都是一些MySQL查询 以及 内存循环对比,且门店统计那块是嵌套循环查询,订单的查询时间也有点长。以上流程跑当日耗时大约在4-5分钟,乍一看其实并不慢,但此时距离上线已有九月有余,乍一算这个任务得跑20+小时。心好累,心好累,执行超时,立马查看mysql连接 以及 德鲁伊连接池 的超时参数,果然…不管了,能跑就行,先上线再优化。

2024-05-11 21:02:25 1118

原创 德鲁伊参数踩坑之路

2024/04/16日,业务反馈某个定时统计的数据未出来,大清早排查定位是其统计任务跑批失败,下面给一段伪代码。心好累,心好累,执行超时,立马查看mysql连接 以及 德鲁伊连接池 的超时参数,果然......因此业务是历史遗留的,本着解决问题的思路先将此参数修改大一下,赶紧搞定就下班回家洗洗睡了。其实在这段排查过程中,踩了好几个坑,也被好几个坑给阻碍排查的进度,下面列举下。到这真相大白,赶紧将testOnBorrow改回true,先将问题解决。修改后打补丁继续执行,又又又失败了..........

2024-04-19 14:55:21 548 1

原创 大事务问题场景与应对之策

大事务问题场景与应对之策

2024-01-22 06:15:00 626 2

原创 MySQL死锁场景与应对方案

MySQL死锁场景与应对方案

2024-01-21 06:15:00 794

原创 分库分表实战场景分析

这是一次不一样的分库分表场景分析

2024-01-20 06:15:00 1363

原创 数据库表合并场景实践

在实际场景中,我们见的比较多的是表拆分,正好遇到一个需要表合并的需求,下面来分析分析

2024-01-19 06:15:00 772

原创 MySQL深分页问题四种方案解析

深分页问题在实际项目中很常见,当数据量大以后,分页会非常的慢,下面将介绍四种方案来助你解决

2024-01-16 06:15:00 2956 3

原创 分布式事务场景问题实践

分享微服务项目中一个容易被忽略的分布式事务问题

2024-01-15 06:15:00 579

原创 高并发场景下底层账务优化方案

在秒杀等场景中,经常会需要对库存、商家冻结资金做一些修改,而并发一旦上来后会导致这个修改动作频繁超时及失败,下面将以问答形式分享解决方案

2024-01-14 06:15:00 752

原创 MySQL同步ES的几种方案

MySQL数据同步ES的几种方案

2024-01-13 06:15:00 1025

原创 一次线程池队列参数所引发的血案

上述web线程池与业务线程池配置冲突问题 以及 优化方案希望对你有帮助。

2024-01-12 06:15:00 2280

原创 关于订单超时后用户却已支付的解决方案

一般我们下的一些订单,比如电商平台、外卖平台的都是有超时时间的,默认一般15或者30分钟,那么超时未支付订单会被自动取消,那么如果刚好有人在关闭订单的时候去支付成功了,或者说支付平台延迟了一下,你取消了订单,这时候支付成功的回调通知过来了,那怎么办呢?但是也有的三方支付的快捷支付,不支持绝对超时时间,以具体银行超时时间为准,不予配置,这个场景在关闭业务系统超时订单时,可以手动调用一次关单接口,根据关单结果再去决定是否关闭业务系统的订单。取消了都能去支付成功再把订单状态翻转回来的话,那就太恐怖了。

2024-01-09 06:15:00 1949 2

原创 支付回调场景方案

在现有支付体系下,项目想使用支付功能,都需要对接类似于支付宝 微信 聚合支付这种第三方公司,那我们系统如何知道用户是否真的付款了呢?

2024-01-08 06:15:00 2457

原创 @Async正确使用姿势

@Async注解可以使被修饰的方法成为异步方法,简单且方便,这篇文章将教你正确去使用它,避免默认线程池所引发的生产事故

2024-01-07 06:15:00 1414 1

原创 Java内存泄漏问题分析

内存泄漏也是一个老八股文了,下面来看看实际项目中内存泄漏的场景分析

2024-01-06 06:15:00 2741 2

原创 @Scheduled定时任务毛刺现状与改进

从根本上解决@Scheduled使用Cron表达式带来的毛刺问题

2024-01-05 06:15:00 936 1

原创 码农第三定律-时间总是不够的【三】

正因为各种不完美的存在,人不完美,环境不完美,所以项目进度一定会被各种因为干扰,时间不够是大概率的事件,是常规现象,时间够用才是特殊情况。接受时间和资源的矛盾,从项目已开始就要有充分的准备,赶早不敢晚,为后续各种不完美预留好缓冲空间。

2024-01-03 06:15:00 1015 1

原创 码农第二定律-缺陷总是会有的【二】

出现缺陷是正常的,但是总是重复出现同样类型的缺陷是有问题的。

2024-01-02 06:15:00 905 1

原创 码农第一定律-需求总是会变的【一】

无论是抱怨还是指责,都不利于事情的解决。接受现实,互相理解,需求不是需求人员自己的事情,而是项目组一起的事,是项目成败的关键,积极学习和了解业务知识,项目组成员一起完善需求,对需求的理解和认识达成一致。对于需求中的假设条件,优先顺序,版本范围,预期效果等,是经大家一起确认的,如果后续有变化,不再是某个人的原因,而是项目组需要共同面对的

2024-01-01 06:15:00 817

原创 支付MQ消费场景改造

一个亿级MQ消费程序的业务优化改造场景

2023-12-31 06:15:00 594

原创 Spring嵌套事务异常记录

Spring事务嵌套引发的事故---Transaction rolled back because it has been marked as rollback-only

2023-12-30 06:15:00 552 1

原创 前端查询业务场景SQL优化

真实业务场景SQL优化案例分析

2023-12-29 06:15:00 2054 1

原创 数据库优化【一】

数据库最大连接数,各应用最大的连接数,cpu和io的消耗 数据块的指标 需要统一,团队所有开发都需要清楚认识并落实。目前生产几百张表,有的表数据量达到了千万,导致数据库压力非常大,一些查询非常慢。团队人数较多,目前未对SQL有统一的规范,故开启了这次讨论会,谈谈大家的看法。7、定期检查数据的增量 查询访问量,对数据过大的表进行分区分表或PG库改造。15、对于一些需要实时查看的数据,可以先缓存,然后通过通知更新数据。17、查询数据比较大的时候,可以先做统计使用大数据和es进行查询。

2023-12-28 06:30:00 521 1

原创 2023-飞速成长的一年

在这短短的一年里,我的成长飞速迸发,深感行业前辈们经典著作的引领与时常交流的小伙伴们的启发对我的发展产生了积极的推动作用。感激这段时光里得到的指引与支持,让我更加坚定地走在成长的道路上。

2023-12-27 13:51:58 510 1

原创 记一次Feign使用问题

然而现在对方要求的是 application/x-www-form-urlencoded, 但是我们习惯使然,这里还是会使用对象传输,最终会去找到springencode这个类去进行编码(这是在feign拦截器之前的动作)平常我们使用post一般都是如下,而这编码器就会按json去编码,请求头为application/json,如果对面也是需要接受json,这是没问题的。前言:调第三方使用post,要求 Content-Type配置为 application/x-www-form-urlencoded。

2023-12-27 06:15:00 769 1

原创 Redisson依赖冲突记录

Redisson依赖冲突记录

2023-12-26 13:46:01 1317 2

原创 百万数据导出

而当数据较多时,导出又会时常出现OOM,甚至引发雪崩连锁效应,不巧的是我们前段时间正在生产经历这种问题:单月百万左右订单,微服务架构,导出订单这个功能正巧落在订单服务,然后因此次导出导致OOM,继而出现雪崩,依赖的服务相继“跪下”了,现场情况大致如下。一般建议将应用服务器和文件服务器分开,应用服务器需要更多的内存资源或者CPU资源,而文件服务器需要更多的磁盘资源。可以采用分页,也可以采用 断点续传,本质都是可以减少内存占用(mysql占用内存 加载到jvm中占用特别大)5. 如果是异步,用户怎么拿到数据。

2023-12-26 01:45:00 761

原创 MQ顺序消息-项目场景优化

RocketMQ顺序消息优化

2023-12-25 14:51:30 534 3

原创 Druid德鲁伊参数调优实战

德鲁伊参数调优实战

2023-12-25 08:45:04 544

原创 Java线程池阻塞问题场景分析

这里的解题思路其实是指定任务执行的超时时间,其他场景:rpc中的连接超时、读超时时间、尝试获取锁的最大等待时间等等的配置和这都是一个意思(如果一个任务有较多的子流程,可以挨个控制每个子流程的最大执行时间,从而让整个任务的最大执行时间可控)了解 stop 和 interrupt的小伙伴就知道了,中断仅是给线程一个标记,且线程完全可以不搭理这个标记依旧“我行我素”,那么上面的问题答案就出来了,没办法去中断一个任务的执行,除非线程任务有做相应的处理。阻塞的线程 如何释放,此场景如何优化。

2023-12-24 14:44:20 1025

原创 存储优化-位图

思路:将目前所有的权限码进行递增编号(以写入时间),每个用户的权限set则改造成位图,下标为1的则代表拥有此权限。目前生产上最大的权限set中有1000多个url,占用20Kb左右的内存,这部分数据目前都存储在redis中。因为种种历史原因,本系统没有使用标准的rbac模型,演变到如今 用户->权限set(内部存储的是url)二:将目前在redis中存储的 用户->权限set 存储到mysql表中,不做加载,每次穿透库使用。有误判问题,存在的一定存在,不存在的也可能存在,且不支持删除---不符合需求。

2023-12-22 15:16:37 441 2

原创 Java最优文件压缩方案

使用三种方式各压缩160.7M文件:结果(第一种:4045左右 第二种:4000左右 第三种:3196左右)使用三种方式各压缩三个文件:结果(第一种:8538左右 第二种:4530左右 第三种:6744左右)三个文件:分别为160.7M 156.1M 32.6M(前两个为dmg文件,最后一个为jar包)优点:并行(每次拷贝4096字节到进程,然后写入各自工作线程的私有临时文件,最终合并结果)缺点:读取/写入需要cpu介入工作(此数据搬运工作由cpu主持),且会有上下文切换开销。M1 Pro(10+16核)

2023-12-22 14:32:32 710

itext测试pdf模版

itext测试pdf模版

2024-06-28

数据库表合并场景实践测试SQL

数据库表合并场景实践测试SQL

2024-01-15

空空如也

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

TA关注的人

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