Java

一次线上JVM调优实践,FullGC40次/天到10天一次的优化过程

问题前一段时间,线上服务器的 FullGC 非常频繁,平均一天40多次,而且隔几天就有服务器自动重启了,这表明服务器的状态已经非常不正常了,得到这么好的机会,当然要主动请求进行调优了。首先服务器的配置非常一般(2核4G),总共4台服务器集群。每台服务器的 FullGC 次数和时间基本差不多。其中 JVM 几个核心的启动参数为:

Java循环:for、foreach与stream性能对比

性能比较如果数据在1万以内的话,for循环效率高于foreach和stream;如果数据量在10万的时候,stream效率最高,其次是foreach,最后是for。 另外需要注意的是如果数据达到100万的话,parallelStream异步并行处理效率最高,高于foreach和for。 在效率方面,stream().forEach、forEach 和 parallelStream...

Java中“100=100”为true,而"1000=1000"为false?

1. 自动装箱与缓存机制在 Java 中,整数值在 -128 到 127 之间时,Integer 类会缓存这些值。即在这个范围内的整数会共享同一个对象实例。因此,当两个整数在该范围内进行比较时(如 100 == 100),返回的是 true,因为它们指向的是相同的缓存对象。

微服务开发时,接口不能对外暴

一. 网关+白名单此方案需要在缓存中维护一套接口白名单,请求到达网关处,先判断白名单缓存中是否存在,存在则放行,反之则拦截。该方案的好处是,对业务代码零侵入,只需要维护好白名单列表即可; 不足之处在于,白名单的维护是一个持续性投入的工作,在很多公司,业务开发无法直接触及到...

Spring File Storag简单使用

1234567

高并发系统设计

如何理解高并发系统所谓设计高并发系统,就是设计一个系统,保证它整体可用的同时,能够处理很高的并发用户请求,能够承受很大的流量冲击。 1....

CountDownLatch详解

从源码的角度来分析下它的工作原理1、谁来决定公交车上的座位数?公交车上的座位数是由汽车制造商决定的,在 CountDownLatch 中也会存在这样一个值...

try-catch-finally

结论 return的执行优先级高于finally的执行优先级,但是return语句执行完毕之后并不会马上结束函数,而是将结果保存到栈帧中的局部变量表中,然后继续执行finally块中的语句; 如果finally块中包含return语句,则不会对try块中要返回的值进行保护,而是直接跳到finally语句中执行,并最后在finally语句中返回,返回值是在finally块中改变之后的值;

Consumer 接口

接口的参数进行验签处理

背景需要与第三方对接接口。在对方的接口中存在几个异步通知,为了接口的安全性,需要对接口的参数进行验签处理。为了方便大家对异步通知返回参数的处理,要将该验签功能进行统一封装,到时候大家只需要关注自己的业务逻辑即可。 方案1