This website requires JavaScript.

Service 调用其他 Service 的 private 方法,@Transactional 会生效吗(上)

省流大师:

  1. 一个 Service 调用其他 Service 的 private 方法,@Transactional 会生效吗

  2. 正常流程不能生效

  3. 经过一番操作,达到理论上可以

本文基于 Spring Boot 2.3.3.RELEASE、JDK1.8 版本,使用 Lombok 插件

Read more

打造优雅的 Windows 开发环境

使用 Scoop 管理安装包

Scoop 安装和配置

https://scoop.sh/

PowerShell 执行

# 权限允许
Set-ExecutionPolicy RemoteSigned -scope CurrentUser

# 执行安装脚本
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get
Read more

惨遭 DruidDataSource 和 Mybatis 暗算,导致 OOM

先遭DruidDataSource袭击

事发

一个平凡的工作日,我像往常一样完成产品提出的需求的业务代码,突然收到了监控平台发出的告警信息。本以为又是一些业务上的 bug 导致的报错,一看报错发现日志写着java.lang.OutOfMemoryError: Java heap space

接着我远程到那台服务器上,但是卡的不行。于是我就用top命令查了一下 cpu 信息,占用都快要到 99%了。再看看 GC 的日志发现程序一直在 Full GC,怪不得 cpu 占用这么高。

这里就推测是有内存泄漏的问题导致 GC 无法回收内存导致OOM。为了先不影响业务,就先让运维把这个服务重启一下,果然重启后服务就正常了。

Read more

聊聊开发中幂等性问题

幂等 (idempotence) 的概念

幂等的数学概念

幂等是源于一种数学概念。其主要有两个定义

如果在一元运算中,x 为某集合中的任意数,如果满足 f(x) = f(f(x)) ,那么该 f 运算具有幂等性,比如绝对值运算 abs(a) = abs(abs(a)) 就是幂等性函数。

如果在二元运算中,x 为某集合中的任意数,如果满足 f(x,x) = x,前提是 f 运算的两个参数均为 x,那么我们称 f 运算也有幂等性,比如求大值函数 max(x,x) = x 就是幂等性函数。

Read more

Spring Boot+SQL+JPA 实战悲观锁和乐观锁

最近在公司的业务上遇到了并发的问题,并且还是很常见的并发问题,算是低级的失误了。由于公司业务相对比较复杂且不适合公开,在此用一个很常见的业务来还原一下场景,同时介绍悲观锁和乐观锁是如何解决这类并发问题的。

公司业务就是最常见的“订单+账户”问题,在解决完公司问题后,转头一想,我的博客项目 Fame 中也有同样的问题(虽然访问量根本完全不需要考虑并发问题。..),那我就拿这个来举例好了。

Read more