This website requires JavaScript.

树莓派Docker部署使用Openwrt

环境

  • 硬件:树莓派 4B 4G 内存
  • 系统:RaspbianOS 32 位系统

Snipaste_2021-05-15_15-57-21

Read more

《深入理解Java虚拟机》中一题引发的思考

1 - 引言

在阅读『深入理解 Java 虚拟机(第 3 版)』时看到里面的一道代码题目,书中给出了题目的解答。自己对于这个题目拓展的想了几个变式,结果有所差异,为了寻找产生差异的原因又深入了解了一番。

2 - 类初始化时机

2.1 - 原题

在『深入理解 Java 虚拟机(第 3 版)』的 7.2 章节 "类加载的时机",其代码清单 7-1 有这么一段代码:

public class SuperClass {
    static {
        System.out.println("SuperClass init!");
    }

    public static int VALUE = 1;
}

public class SubClass extends SuperClass {
    static {
        System.out.println("SubClass init!");
    }
}

public class Main {

    public static void main(String[] args) {
        System.out.println(SubClass.VALUE);
    }
}
Read more

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

前情提要:

Service 调用其他 Service 的 private 方法,@Transactional 会生效吗(上) 中证明了动态代理不会代理 private 方法的,并通过阅读源码证实了。

但是我们可以自己实现一个动态代理功能替代Spring Boot中原有的,达到动态代理 private 方法的目的。

主要流程为:

  1. 重新实现一个ProxyGenerator.generateClassFile()方法,输出带有 private 方法的代理类字节码数据
  2. 把字节码数据加载到 JVM 中,生成 Class
  3. 替代Spring Boot中默认的动态代理功能,换成我们自己的动态代理。
Read more

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