- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 服务器内存报警问题定位
6、在堆栈信息中定位到了接口,生产上查询接口日志,发现有大量的这个接口请求,集合前面的分析,初步断定,因为接口请求太多,导致占用大量Http11Processor对象不能释放。5、带黄色点点得就是gc root,可以看到是一个tomcat得任务线程,点击选择Java base ->thread detail可以查看这个线程的状态堆栈信息。3、详情中可以看到object对象中加载了好多org.apache.coyote.http11.Http11Processor。2、下滑,查看可以点得详情。
2025-03-19 16:46:49
125
原创 maven多模块继承和聚合简单理解
整合模块的作用主要是为了打包方便,父项目在统一构建时,会根据子项目之间的依赖关系依次构建各个模块,例如yudao-framework模块依赖yudao-dependencies就会先构建yudao-dependencies,yudao-dependencies的相关jar被打入仓库后,再构建yudao-framework就可以使用yudao-dependencies的jar包了。在多模块开发中,父项目的打包方式是pom,因为父项目的主要作用是整合各个模块,统一管理依赖,锁定依赖,没有代码逻辑。
2024-08-02 17:38:37
341
原创 mysql大表优化分享
最近生产上有一张日志表超级大,数据几千万已经统计不出来了,2千万的时候就已经查不动了,而且每天还200w的增长着,现在空间已经占到90g,这个日志还很重要,数据不可以删,而且时不时的进行统计,因为统计的时候统计不动,最开始想的办法是一天一天的统计,刚开始很慢但是能统计出来,现在一天的数据也很难统计了。send_erro表:如果send_statistic表中发送官微消息失败,就在send_erro中记录一下发送官微的报文和错误信息,并于排查问题。text字段二:推送官微消息的报文。
2024-06-24 17:21:49
129
1
原创 RabbitMQ消费者
如上设置,有2个channel,每个channel一次获取2条消息,acknowledge-mode: manual设置消费者手动应答, RabbitMQ给每个channel推送消息后,如果有一个消息没有应答,RabbitMQ就不会再推送消息了,unacked表示推送给消费者但是没应答的消息,ready准备推送的消息,下图可以看到2个channel一共获取4个消息一直不应答,剩余3个消息就一直不推送。通过确认消息传递和跨集群复制消息的功能,您可以使用 RabbitMQ 确保您的消息是安全的。
2024-06-07 17:55:31
771
原创 mysql保存数据时间多1s问题分析
后来就分析了一下发现,其实在new Date()时,这个时间得精度是到毫秒得,我们可以通过getTime()方法拿到时间戳,时间戳得后3位代表毫秒,在网上用时间戳转换工具转换一下,发现时间戳转时间得时候,有四舍五入得情况,而我们存在mysql库中得时间一般是精确到秒的,这就导致自动四舍五入掉了,出现多一秒的情况,而时间日期格式话的时候是直接抹去毫秒的,这就导致了推送给其他系统得数据和我存得数据不一致的情况。每一次遇到的小问题,都是对技术的一次深度思考,记录一下,希望一起共勉;
2024-05-17 17:44:08
402
原创 mysql执行原理深度理解
在最开始提出的问题中就是这样,g表数主表,预估行数是5194,每一行关联3张从表的时候都需要全表扫面,就以从表500条数据算,g表每条数据都需要扫面1500条从表数据,那5194条就需要扫面5194*1500次,所以肯定很慢呀,加上索引后,g表关联3张从表只需要扫面5194*3,所以效率大大提升了。即使sp,sc,sa这3张表数据量很小,但是都是全表扫面,如果扫面的次数多了也是很费时的,这就设计到了在多表关联查询的时候,sql到底是怎么执行的。
2024-05-08 17:58:31
413
原创 JDK自带的定时任务Timer和ScheduledExecutorService详解
首先大概了解一下ExecutorService, ExecutorService其实就是是Java提供的线程池技术,也就是说,每次我们需要使用线程的时候,可以通过ExecutorService获得线程。查看ExecutorService源码,其中得方法主要是使用线程执行任务或者中断线程等,其实就是操作线程得方法,ExecutorService其实是一个接口,具体得实现使用ThreadPoolExecutor。查看源码发现,Timer中内置了一个任务队列和一个调度线程,这2个都是Timer中的内部类。
2024-04-19 18:19:33
1323
1
原创 mysql update select
有这样一个需求,就是需要刷新表中原来的数据,把描述转存成编码,就用到了update select 语句(注意:必须使用inner join)
2024-04-17 16:17:40
294
1
原创 利用数据库事务解决数据安全问题
单线程中,事务的原子性,一致性,持久性基本能保证数据的一致性,完整性,正确性,但是实际项目中,程序都是并行执行的,也就意味着事务是并行执行的,事务并行执行时,也可能会出现一些问题,也是现实工作中需要关注的问题,例如数据的幻读,脏读,非重复读,丢失修改等问题。是指在一个事务内,多次读取同一数据。除了以上隔离级别可以控制得情况外,还有一种就是丢失修改,错误覆盖得情况,T1事务和T2事务同时修改,导致数据被错误修改,这种情况可以使用乐观锁,即在更新数据得时候条件中增加版本号状态等字段。
2024-02-29 14:39:31
357
原创 代码生成器-mybatis-plus-genarator 旧版本
编写重复简单的代码对于每个程序员来说,应该是一件相当烦躁的工作,代码生成器就很好的帮助你解决了这个问题。对于不同的项目,架构多少有些不一样,针对性的生成代码就使用到了模板引擎,freemarker就是一个很不错的模板引擎,使用简单便捷。2.旧版本mybatis-plus-generator只能生成后端相关代码,前端代码不好操作,如果想使用更全面的配置,可以使用新版本代码生成器,具体参考官方文档。模板service.java.ftl。模板mapper.java.ftl。模板mapper.xml.ftl。
2024-01-31 13:20:48
563
原创 小表关联大表优化
作为一名女程序员,从事java开发多年,经验越来越多,但是记性真是越来越差了,哈哈😄所以决定以后多写微博记录下来,方便以后翻阅,也希望能够帮助到一些正在学习路上的朋友。不过这种方案也只能暂时解决问题,因为B表数据每天都在增加,一年就要增加300w,所以后面还是需要分表解决的。以上就是我工作中的一些心得,希望和大家一起分享互相学习一下,如果有高手路过,欢迎指教!
2024-01-15 14:42:48
554
原创 慢sql优化
有一次我们需要同步我们得数据给集团,一共设计3张大表,我就叫它A,B,C把,A表差不多有300w数据,B表1000w,我只需要一年得数据,那就是A表100w,B表300w,最后关联查询出来去C表查询,我是10000条查一下,处理一次,循环10000次查C表,增加索引后其实还挺快了,因为是推送数据得场景,10000条数据差不多1分钟全部处理完成,一个月30w数据1.5h处理完成。以上就是我得一些学习心得,有什么说得不对得地方,欢迎大家指教!
2024-01-10 18:08:22
490
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人