自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 运维:你们 JAVA 服务内存占用太高,还只增不减!告警了,快来接锅

先点赞再看,养成好习惯某天,运维老哥突然找我:“你们的某 JAVA 服务内存占用太高,告警了!GC 后也没释放,内存只增不减,是不是内存泄漏了!”然后我赶紧看了下监控,一切正常,距离上次发版好几天了,FULL GC 一次没有,YoungGC,十分钟一次,堆空闲也很充足。运维:“你们这个服务现在堆内存 used 才 800M,但这个 JAVA 进程已经占了 6G 内存了,是不是你们程序出啥内存泄露的 bug 了!”我想都没想,直接回了一句:“不可能,我们服务非常稳定,不会有这种问题!”.

2021-05-24 13:45:31 5380 14

原创 请求失败,应该重试吗?不应该吗?

theme: smartblue先点赞再看,养成好习惯前言在网络请求中,由于网络是不可靠的,所以经常会有请求失败的场景。针对这种问题,通常的做法是增加重试机制,在请求失败后重新请求,尽量保证请求的成功,从而提高服务的稳定性。重试的风险可是大多数人不愿意轻易的重试,因为往往重试会带来更大的风险。比如过多的重试,会给被调用服务造成更大的压力,放大原有的问题。如下图所示,服务 A 调用 服务 B,服务 B 根据请求数据不同,会调用 服务 C 和 服务 D。此时服务 C 出现故障,不可用了,那么服.

2021-04-25 19:01:40 709 2

原创 JDK/Dubbo/Spring 三种 SPI 机制,谁更好?

先点赞再看,养成好习惯SPI 全称为 Service Provider Interface,是一种服务发现机制。SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。正因此特性,我们可以很容易的通过 SPI 机制为我们的程序提供拓展功能。本文主要是特性 & 用法介绍,不涉及源码解析(源码都很简单,相信你一定一看就懂)SPI 有什么用?举个栗子,现在我们设计了一款全新的日志框架:super-logger。默认.

2021-04-13 09:28:30 492

原创 求你了,GC 日志打印别再瞎配置了

先点赞再看,养成好习惯生产环境上,或者其他要测试 GC 问题的环境上,一定会配置上打印GC日志的参数,便于分析 GC 相关的问题。但是可能很多人配置的都不够“完美”,要么是打印的内容过少,要么是输出到控制台,要么是一个大文件被覆盖,要么是……本文带你一步一步,配置一个完美的 GC 日志打印策略打印内容为了保留足够多的“现场证据”,最好是 GC 相关的信息打印完整。而且你的程序真的不差你GC时打印日志I/O消耗的那点性能打印基本 GC 信息打印 GC 日志的第一步,就是开启 GC 打印的参数.

2021-04-12 09:02:47 1770

原创 终于来了,IDEA 2021.1版本正式发布,完美支持WSL 2

先点赞再看,养成好习惯IntelliJ IDEA 2021.1 EAP版本已经发布了很久,就在今天,终于等到正式版的发布,这个大版本最大的更新内容,就是支持WSL 2和JAVA 16了。而且除了支持WSL 2,也支持其他形式的“ssh 远程运行”,就像clion那样,让你的java程序开发在本地,而运行在远程。赶紧来看看,2021年这个大版本有哪些更新内容吧!WSL 2的支持都说Windows 是Linux最好的发行版,可是你的IDE不支持WSL运行那又有何用呢?现在IDEA 终于支持了WS.

2021-04-08 10:25:21 2532 1

原创 给顶级开源项目 Spring Boot 贡献代码是一种什么样的体验?

先点赞再看,养成好习惯背景Spring Boot的默认日志框架一直是 Logback,支持的很好。而且针对Logback,Spring Boot还提供了一个扩展功能 - <springProfile>,这个标签可以在Logback的XML配置文件中使用,用于配合Spring的profile来区分环境,非常方便。比如你可以像下面这样,只配置一个logback-spring.xml配置文件,然后用<springProfile>来区分环境,开发环境只输出到控制台,而其他环境输出到.

2021-04-07 22:19:10 147 2

原创 别再纠结线程池大小/线程数量了,没有固定公式的

可能很多人都看到过一个线程数设置的理论:CPU 密集型的程序 - 核心数 + 1I/O 密集型的程序 - 核心数 * 2不会吧,不会吧,真的有人按照这个理论规划线程数?线程数和CPU的小测试抛开一些操作系统,计算机原理不谈,说一个基本的理论(不用纠结是否严谨,只为好理解):一个CPU核心,单位时间内只能执行一个线程的指令**那么理论上,我一个线程只需要不停的执行指令,就可以跑满一个核心的利用率。来写个死循环空跑的例子验证一下:测试环境:AMD Ryzen 5 3600, 6 - Co

2021-04-06 23:24:22 447

原创 你还在用 Logback?Log4j2 的异步性能已经无敌了,还不快试试

本文由 简悦 SimpRead 转码, 原文地址 juejin.cnLogback 算是 JAVA 里一个老牌的日志框架,从 06 年开始第一个版本,迭代至今也十几年了。不过 logback 最近一个稳定版本还停留在 2017 年,好几年都没有更新;logback 的兄弟 slf4j 最近一个稳定版也是 2017 年,有点凉凉的意思。而且 logback 的异步性能实在拉跨,功能简陋,配置又繁琐,远不及 Apache 的新一代日志框架 - Log4j2目前来看,Log4j2 就是王者,其他日志框架.

2021-03-31 18:33:41 230

原创 【可能是全网最全的】JAVA日志框架适配/冲突解决方案

theme: smartblue前言你是否遇到过配置了日志,但打印不出来的情况?你是否遇到过配置了logback,启动时却提示log4j错误的情况?像下面这样:log4j:WARN No appenders could be found for logger (org.example.App).log4j:WARN Please initialize the log4j system properly.log4j:WARN See http://logging.apache.org/log4j.

2021-03-30 07:54:25 253

原创 HTTP/2.0 到底好在哪? 说说HTTP/2中的的一些关键性能提升点

HTTP/2 是 HTTP 协议自 1999 年 HTTP 1.1 的改进版 RFC 2616 发布后的首个更新,前身是 SPDY 协议(Google),于 2015 年 2 月 17 日被批准。HTTP/2 标准于 2015 年 5 月以 RFC 7540 正式发表,多数主流浏览器已经在 2015 年底支持了该协议。目前国内外大多数网站也都已经支持了 HTTP/2,比如 Google/Stackoverflow/Reddit,国内的 淘宝 / Segmentfault / 掘金 / CSDN / 博客园

2021-03-26 07:51:59 682

原创 一个JDK线程池BUG引发的GC机制思考

问题描述前几天在帮同事排查生产一个线上偶发的线程池错误逻辑很简单,线程池执行了一个带结果的异步任务。但是最近有偶发的报错:java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@a5acd19 rejected from java.util.concurrent.ThreadP...

2019-11-25 21:27:58 473

原创 Java中重名类冲突处理机制和Jar包加载顺序

同一个ClassLoader实例加载的类不能重复(不同的class文件,同样的类名也是重复),如果强行用同一个ClassLoader实例加载同一个类,则会报错attempted duplicate class definition for {your class}java -class加载配置jar包(classes)时,会按照书写定义顺序加载class,之后重复加载的class会被忽略,只有...

2019-11-11 17:06:48 3167

原创 一个 Spring-Boot 通用启动脚本

一个 Spring-Boot 的通用启动脚本,支持启动 / 停止 / 重启 / 查看状态 / Dump 进程相关数据(JVM/OS)使用方式:基本使用$ 脚本名 [start|stop|restart|status|dump]DEBUG 模式启动$ 脚本名 [start|restart] debug#!/bin/bash# Spring-Boot 常规启动脚本,基于HotSpo...

2019-10-18 20:31:25 343

原创 一文读懂Spring事务管理器

为什么需要事务管理器如果没有事务管理器的话,我们的程序可能是这样:Connection connection = acquireConnection();try{ int updated = connection.prepareStatement().executeUpdate(); connection.commit();}catch (Exception e){ ...

2019-10-17 21:37:26 226

原创 JVM的那些常用参数以及命令

简介java启动参数共分为三类其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用调试参数打印启动参数可以查看默认参数java -XX:+Print...

2019-10-11 22:51:09 342

原创 Java 中的强引用/软引用/弱引用/虚引用以及 GC 策略

在介绍各种引用之前,先简单介绍下垃圾回收什么是垃圾回收垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。Java 语言出来之前,大家都在拼命的写 C 或者 C++ 的程序,而此时存在一个很大的矛盾,C++ 等语言创建对象要不断的去开辟空间,不用的时候又需...

2019-10-06 22:22:50 422

原创 Arthas 的高级操作 - Ognl表达式

Arthas 的一个很重要的应用场景,就是查看运行时的数据,但有时需要动态的查看数据,或者数据过多,需要动态筛选,比较复杂的规则就需要靠 OGNL 了。下面介绍一些常用的 arthas 中 ognl 的操作,测试代码如下,springboot 工程:@RequestMapping("send")public String send(HttpServletRequest request, Ht...

2019-09-27 09:37:56 8146 2

原创 聊聊Java中的内存

JVM 的内存先放一张 JVM 的内存划分图,总体上可以分为堆和非堆(粗略划分,基于 java8)那么一个 Java 进程最大占用的物理内存为:Max Memory = eden + survivor + old + String Constant Pool + Code cache + compressed class space + Metaspace + Thread stack(*...

2019-09-17 18:19:50 389 1

原创 当 Mysql - InnoDB 行锁遇到复合主键和多列索引

本文由 简悦 SimpRead 转码, 原文地址 https://segmentfault.com/a/1190000020309580背景今天在配合其他项目组做系统压测,过程中出现了偶发的死锁问题。分析代码后发现有复合主键的 update 情况,更新复合主键表时只使用了一个字段更新,同时在事务内又有对该表的 insert 操作,结果出现了偶发的死锁问题。比如表t_lock_test中有...

2019-09-15 21:08:29 805

原创 细说Http中的Keep-Alive和Java Http中的Keep-Alive机制

什么是Keep-Alive这个词看着有点熟,很多地方好像都见过。TCP的KeepAlive,Http的KeepAlive,现在就连一些前端框架都有类似KeepAlive的东西了(比如VUE.js,保持路由)。本文介绍HTTP和TCP中的KeepAlive机制,其他方面不在本文讨论范围。Http中的Keep-AliveHTTP 持久连接(HTTP persistent connection...

2019-09-15 21:01:56 4286

原创 记一次通过Arthas定位解决spring-boot中内嵌tomcat的bug问题

背景公司有个渠道系统,专门对接三方渠道使用,没有什么业务逻辑,主要是转换报文和参数校验之类的工作,起着一个承上启下的作用。最近在优化接口的响应时间,优化了代码之后,但是时间还是达不到要求;有一个诡异的100ms左右的耗时问题,在接口中打印了请求处理时间后,和调用方的响应时间还有差了100ms左右。比如程序里记录150ms,但是调用方等待时间却为250ms左右。下面记录下当时详细的定位&amp...

2019-09-15 21:00:18 2993 2

空空如也

空空如也

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

TA关注的人

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