自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (2)
  • 收藏
  • 关注

原创 基于一次生产问题开展的kafka高可用测试

基于一次生产问题展开的一次kafka高可用测试,内容涵盖分区副本、__consumer_offsets分区、消费者不消费、手动调整分区副本数、生产者发送消息失败

2025-06-25 17:02:30 810

原创 内存溢出了!!!

由一次GC overhead limit exceeded异常而进行的drools源码调试及相关MAT的使用

2025-05-30 18:16:54 967

原创 浅聊Hikari连接池

Hikari连接池为什么笔druid连接池性能高?Hikari连接池中连接的新增、获取、回收细节点。

2025-05-26 15:05:19 748

原创 druid连接池中的连接是怎么获取及回收的

druid连接池中的连接获取及回收

2025-04-30 15:43:31 876

原创 当前线程被中断后如何保存数据到数据库

但是这里有一个点,就是请求三方接口是要收费的,如果一批任务过来了并且在执行,但是某个三方接口又比较耗时,这样的话如果超时取消任务后,正在执行调用的请求已经发出去了,但是我没又没有记录相应的数据,到时候2边的账就会对不上了。总结一下:1、使用feign方式调用远程接口的时候,如果当前线程被中断了,已经发送出去的请求是获取不到结果的,因为底层hystrix里面获取结果的方法中使用到了CountdownLatch,这个是会判断当前线程状态的。并没有打印“远程返回”的字眼,说明任务是之间被中断了。

2025-04-29 10:59:29 621

原创 kafka消费者“自杀”行为

原因是头天晚上有版本(我们的打包是将依赖包单独拎出来放到一个lib目录下,然后上面YFXD是个通用模块里面某个枚举类的属性,这个工具模块也被打到了lib目录),运维兄弟使用了ansible运维工具进行部署,构建打包是在第一台服务使用的jenkins,然后使用ansible对其他服务器进行包分发进行部署,分发包的时候只分发了模块本身的包,并没有将lib下的包进行分发,所以就导致了只有一台服务正常,其他服务都报错导致剔除了消费者。然后再到granfa上查看下当前的订单量,发现并不大,也就平均1.5笔每秒。

2025-04-29 10:56:32 392

原创 可能导致堆栈溢出的spring ApplicationEvent 的一些细节

从上图的调用栈对应的代码中可以看出代码里面判断了事件消息是否是ApplicationEvent类型的,我们测试的例子继承了ApplicationEvent,所以走的是if的分支,但是下面还有个else分支,从代码逻辑来看,即使事件类没有继承ApplicationEvent也会给我们包装一下,按道理也是能够正常运行的。发现确实是使用到了异步线程。2、@EventListener方法是可以有返回值的,如果有监听返回值类型的事件,spring还会进行监听该消息进行消费的,但是这个也有死循环的风险,需要小心使用。

2025-04-29 10:54:33 10098

原创 与想象不太一样的mysql死锁

比如有1~10 10条数据,事务1从1到10顺序更新,事务2从10到1倒序更新,然后事务1更新到第4条的时候(此时事务1已经有了前3条的记录的锁)事务2更新到了第3条(此时事务2已经有了后面7条数据的锁)。这时候事务在等第4条记录的锁(第4条记录已经被事务2给锁了),事务2在等第3条记录的锁(第3条记录已经被事务1给锁了),这样就导致了死锁了。基于这个思维去排查问题,发现与预想的不一样,同一时间倒是有2个线程在执行任务,并且也是对同一条数据执行,但是更新并没有批量更新,都是单条数据的更新。

2025-04-29 10:47:14 344

原创 feign调用异常信息怎么打印

从这个回调的方法中可以看出先调用了fallbackFactory.create(getExecutionException())方法,该方法就是我们自定义的第二张图里面的create方法,将异常信息以参数的形式传递进去了,并且返回了一个DemoServerFeignTest对象,再接着使用fallbackMethodMap.get(method).invoke(fallback, args)方法调用了DemoServerFeignTest对象里面的randomfail方法(即对应的降级的业务逻辑方法)。

2025-04-29 10:45:39 434

原创 es相关心得

注:fielddata缓存在堆内存中,gc回收不了,有自己的一套驱逐策略:当节点的fielddata缓存快要达到断路器的限制时,会使用lru策略进行驱逐fielddata数据,但是有可能驱逐完后,后面再次进行聚合查询时新增使用的fielddata内存总和又超过了断路器的限制,因此还是会报错。6、因为每个索引有个field的限制(默认1000),这个限制是包含了内部对象里面的对象数,所以如果索引字段变换频繁的话,尽量将内部对象给换成keyword,以减少field数(可以减少倒排索引数量,减少内存使用)。

2025-04-29 10:43:48 451

原创 ClassFinal代码混淆

注意:“加密配置文件”这一项不要将日志配置文件(logback-spring.xml)添加进去,不然启动的时候会没反应,日志也看不到。该项目已暂停更新,而且看项目的issues中有相关的包冲突问题,如果要使用,建议完整的功能测试完全后再使用。当对应的jar包不想其他人反编译看到具体内容,可以使用代码混淆工具进行处理。

2025-04-29 10:40:35 180

原创 发送邮件突发性的异常

https 证书更换导致的代码异常:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

2025-04-29 10:39:07 494

原创 kafka消费者停止消费2种方式

如果只是某台服务有问题,需要排查问题,建议可以使用stop()停止消费,将消息打到其他的没问题的服务上进行消费,等处理好后再进行start()。然后在kafka消费线程进行拉取消息的时候会判断该标志位,如果是暂停的话,就会针对消费者对应的分区不做处理:就是在创建请求的时候不会对分区做请求,以此来达到暂停消费的效果。stop与pause不一样,这个是停止消费,是将消费者的container直接移除,相当于在kafka那将该消费者移除了,是会触发kafka的rebalance的。

2025-04-29 10:37:16 640

原创 xxl-job,遇到的不一样的Address already in use错误

该点是在初始化bean后,接下来会对这些bean做一些额外的操作,就是如果bean是SmartInitializingSingleton接口的,需要额外的再执行bean的afterSingletonsInstatiated()方法。然后手动进行百度,看看有没有人遇到过该问题,发现找出来的也都是一样的,都是说端口配置的问题(配置了一个已经被使用了的端口)。发现断点再一次运行到了上面的地方,而且端口也是一样的,并且这次会执行到第二个异常的断点的地方。没办法了,只能使用大招了:打断点,调源码。

2025-04-29 10:36:18 753

原创 redis热点key监控:redis-monitor + faina

注:faina脚本统计命令的耗时时间是根据命令的上一条时间戳与当前的命令的时间戳相减来获得的,这样的话就会有误差,比如上面的截图,是在测试环境下进行监控及分析的,redis是在一个低负载的情况,命令与命令之间相隔有时间差,比如客户端每1s发送一个ping命令,但是ping命令执行只需0.1ms,这样统计出来的时间与真实的时间就会有误差。这就是为什么上面的最耗时的命令看到的都是ping命令。如上截图,关闭后会生成一个monitor0324.log的文件,该文件中即为监控期间监控到的所有命令。

2025-04-29 10:33:46 751

原创 juc线程池任务超时是怎么丢弃任务的

是因为线程被中断了(但是这里有个细节点需要注意,java中一个线程是不能强制中断另一个线程的,能够中断另一个线程使用的是打标记的方式,也就是所谓的“协作式中断”)。1、正在执行的任务:一、判断了线程是否中断状态的任务(比如有相关数据库操作的任务),这种是可以被取消的,直接判断线程如果是中断状态,是中断状态就跑一个异常来中断任务。然后“正在执行的任务”并不一定会取消,这个要看任务情况,像简单的计算处理这种是不会被取消的,像如下截图这种,运行起来超过1s后可以明显的看到任务是一直在运行的。

2025-04-29 10:30:49 413

原创 JVM大对象默认达到多大阈值直接进入老年代

面试的时候常问到垃圾回收这一块,然后面试者经常会回答到当分配的对象达到一定阈值的情况下会直接到老年代。然后用deepseek也搜索了下,回答还不一样,有的回答是并没有这个阈值(意思是只要eden区能装下,就放入到eden区),有的回答是“JVM 会根据 Eden 区的剩余空间和对象大小决定是否直接将大对象分配到 Old 区”。从上面的验证来看,在默认情况下,面试中常说的达到一定阈值后会直接分配到老年代是有一定道理的。但是从cms收集器的测试来看,又感觉是没有这个阈值,只要eden区不够,就进行垃圾回收。

2025-04-29 10:28:52 230

原创 mysql主动断开连接导致的客户端错误

使用druid连接池时,mysql 主动断开连接导致客户端报错:The last packet successfully received from the server 的解决方案

2025-04-29 10:10:26 843 1

simsun.ttc,zysong.ttf

想找个资源还需要分数,挺恶心的,想设置为0分的,还设置不了。大家想要的话,可以访问我的百度云盘,https://pan.baidu.com/s/1QwqkNYeirIS_1DvG7ekJ_A

2018-12-17

马士兵老师的java io流课程

马士兵老师讲的io流课程,非常通俗易懂,举例很形象。

2018-06-04

空空如也

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

TA关注的人

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