
日常开发组
文章平均质量分 74
Lucas-han
记录日常BUG,记录心得,记录学习
展开
-
出现OutOfMemory的8种案例
1 Java堆空间发生频率:5颗星造成原因:无法在Java堆中分配对象吞吐量增加应用程序无意间保存了对象引用,对象无法被GC回收应用程序过度使用finalizer。finalizer对象不能立刻被GC回收。finalizer由结束队列服务的守护线程调用,有时finalizer线程处理能力无法跟上结束队列的增长解决方案:单位对应:GB -> G,g; MB -> M,m; KB -> K,k使用 -Xmx 增加堆大小修复应用程序中的内存泄露2 GC开销超过限原创 2021-07-29 22:12:56 · 223 阅读 · 0 评论 -
注解实现重复请求过滤
前言:很多时候我们都需要在接口上对重复请求进行拦截,就比如下单接口,如果前端未做重复点击处理,有可能在很快的情况下,请求了多次,那么很有可能落入数据库中的就是2条或多条记录了,生产上也就出现了本不应该出现的脏数据了。再比如一些重要的查询接口,如果被黑客盯到,使用脚本或其他攻击方式刷你的接口,那么很有可能会因为巨量的请求无法全部处理,而导致消息积压,最后导致宕机,在微服务架构中,也可能因为这一处被攻破,而导致整个集群出现雪崩。过滤重复请求,也成为了我们从业人员必须要考虑的事情,这样,我们代码的健壮以及安原创 2021-07-27 16:57:59 · 925 阅读 · 0 评论 -
避免空指针的方法
什么是空指针?避免空指针是一个老生常谈的问题,在这篇帖子中,介绍一下之前总结的几种方法。当一个变量的值为 null 时,在 Java 里面表示一个不存在的空对象,没有实际内容,没有给它分配内存,null 也是对象成员变量的默认值。所以,一个对象如果没有进行初始化操作,这时候,如果你调用这个对象的方法或者变量,就会出现空指针异常。空指针是运行时异常,编译时无法被察觉到。Object obj = null;String Str = obj.toString();上述代码就会发生空指针的现象解决之道原创 2021-07-26 21:19:14 · 954 阅读 · 0 评论 -
几种索引失效的原因
索引失效的原因今天上海台风,认认真真的收拾了下家里,又做了个香香的饭,也没剩太多时间,就简简单单的把总结的索引失效的原因分享给大家。本篇是前提是建立在Oracle基础上,当然部分情况MySQL也适用。没有查询条件,或查询条件没有建立索引查询数量是大表的大部分,应该在30%以上组合索引中,在查询条件上没有使用引导列索引本身失效查询条件使用函数在索引列上,或对索引列进行计算,包括 + - * /对小表查询提示不使用索引(这个应该是Oracle才有)CBD计算索引花费过大的情况(CBD也应该原创 2021-07-25 22:54:48 · 245 阅读 · 0 评论 -
Java重发机制的实现
前言:在上一篇文章 用rabbitmq实现消息重发功能 中,使用了外部的rabbitmq来实现了消息重发的功能,但是使用rabbitmq来实现并不适用于所有的场景,在这篇文章中,我再扩展两种仅用java本身就能实现的方法。Retryer@Retryable实现过程:RetryerRetryer是谷歌 Guava 库下的工具,用 Retryer可以封装成util类,只需要几行代码,就能完成一个很简单的重试功能了。首先是导包<dependency> <grou原创 2021-07-23 16:32:44 · 1533 阅读 · 1 评论 -
用rabbitmq实现消息重发的功能
前言:在开发工作中,有很多时候会遇到要把数据同步给其他部门或三方的场景,这个时候光写一个同步接口是不太稳定的,因为有很多因素会导致同步接口运行失败或未运行,比如调接口之前的代码出现了bug,异常被throws或被catch,没有往下走。再比如对方接收代码出现问题,或者网络问题,接口没通,同步失败。遇到上面同步失败的情况,就会影响到业务的正常使用了,本文只讨论第二种调用失败的情况(第一种情况可以把同步代码封装起来,提供一个接口出来用于手动调用hhhh,很笨但是很救命的办法),所以必须要加入重发机制,来让程原创 2021-07-22 15:42:10 · 4377 阅读 · 2 评论