自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2024年年终总结与2025年展望

这些宝贵的知识将为我提供坚实的基础,使我在2025年参与B端服务的重构工作中,能够提出切实可行且具有前瞻性的建议,为项目的顺利进行和成功贡献更多的力量。在新的一年里,我将继续努力,不断提升自己的技术能力、业务能力以及综合素质,为团队项目成功贡献更多的力量,为公司创造更大的价值。这些书籍不仅为我提供了深入的技术知识,还激发了我对系统设计和数据管理的新思考。在这一年中,我经历了个人成长和职业发展的双重飞跃,感受到了前所未有的充实与满足。

2025-01-04 16:06:39 901

原创 MySQL千万表归档实践

随着项目数据量的急剧增长,为了优化性能提升产品体验感,我们决定对数据进行归档处理。归档策略为实时数据仅保留6个月,超过期限的数据将被归档至历史表中,在此过程中,我们遇到了数据库主从延迟的问题,下面将进行分析去解决暂停策略是一个临时解决方案,但它在一定程度上缓解了主从延迟问题,保证了归档操作的顺利进行。我们将继续监控数据库性能,并寻求更长期的解决方案,以确保数据的一致性和归档操作的效率。

2024-12-26 19:31:55 1413

原创 MySQL数据库报“You are not owner of thread”错误的解决方法

MySQL数据库报“You are not owner of thread”错误的解决方法

2024-12-12 16:08:45 929 2

原创 Kafka异常重试方案小记

此外,我们增加了一个Web端的手动重推功能,以便于在需要时手动触发消息的重新处理,若后续异常消息多时可以考虑自动的定时调度。为了进一步增强异常处理能力,我们可以通过自行编码,在消费异常时将相关信息写入日志,或者在消费后立即写入消息,待后续消费成功后再更新其状态。为了解决重平衡期间可能出现的消息丢失问题,我们计划引入JVM钩子,在发版时对当前工作线程池中的消息进行快照,并在后续重新推送这些消息。而在kafka中原本并无死信队列的概念,所以当需要自行封装这一层概念的时候,就可以脱离既定思维的约束,

2024-10-20 17:30:28 1684

原创 MySQL五千万大表查询优化分析实战

对于一个SQL的优化我感触比较深的是:不能仅从SQL本身去进行优化,而需要结合具体的业务进行权衡从而选择一个合适的方案进行优化,目前项目也到高速上升期,出现了很多大表,未来系统将会有更多的问题,当然这即是问题也是挑战,加油!!!

2024-10-09 13:43:29 806 1

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

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

2024-08-07 14:51:18 1837

原创 Hystrix参数踩坑

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

2024-07-19 18:01:51 1130

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

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

2024-07-05 14:24:32 4210

原创 IText生成pdf文件demo示例

itext生成pdf文件demo示例

2024-06-28 09:38:30 712

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

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

2024-06-27 14:23:44 823

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

一文搞懂Spring线程池优雅停

2024-06-21 17:13:39 1925

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

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

2024-06-15 22:37:22 2070

原创 MySQL树形表查询优化

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

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

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

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

2024-05-11 21:02:25 1171

原创 德鲁伊Druid参数踩坑之路

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

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

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

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

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

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

MySQL死锁场景与应对方案

2024-01-21 06:15:00 844

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

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

2024-01-20 06:15:00 1418

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

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

2024-01-19 06:15:00 861

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

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

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

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

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

2024-01-15 06:15:00 614

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

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

2024-01-14 06:15:00 803

原创 MySQL同步ES的几种方案

MySQL数据同步ES的几种方案

2024-01-13 06:15:00 1070

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

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

2024-01-12 06:15:00 2313

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

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

2024-01-09 06:15:00 2812 3

原创 支付回调场景方案

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

2024-01-08 06:15:00 2763

原创 @Async正确使用姿势

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

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

原创 Java内存泄漏问题分析

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

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

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

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

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

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

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

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

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

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

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

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

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

2024-01-01 06:15:00 850

原创 支付MQ消费场景改造

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

2023-12-31 06:15:00 621

原创 Spring嵌套事务异常记录

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

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

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

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

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

原创 数据库优化【一】

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

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

原创 2023-飞速成长的一年

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

2023-12-27 13:51:58 579 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 836 1

原创 Redisson依赖冲突记录

Redisson依赖冲突记录

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

原创 百万数据导出

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

2023-12-26 01:45:00 804

itext测试pdf模版

itext测试pdf模版

2024-06-28

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

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

2024-01-15

空空如也

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

TA关注的人

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