JAVA 十一月 17, 2024

Maven 配置中的仓库和镜像

文章字数 6.4k 阅读约需 6 mins.

Maven 中,仓库(Repository)是指存放 pomjar 等文件的地方,分为本地仓库和远程仓库。

本地仓库(Local Repository)

本地仓库是 Maven 在本地文件系统中的...

查看全文

JAVA 十月 13, 2024

Java 正则表达式的灾难性回溯

文章字数 9.7k 阅读约需 9 mins.

新建一个 Backtracking.java 文件,内容如下:

public class Backtracking {
    public static void main(String[] args) {
        System.out.println(System.getProperty("java.version"));
        System.out.println("The first regex evaluation will never end in JDK <= 9:&...
查看全文

JAVA 九月 08, 2024

【转】掌握 Java 反射机制

文章字数 10k 阅读约需 10 mins.

原文地址:https://wyiyi.github.io/amber/2024/09/01/Reflection/

Java 反射机制允许程序在运行时取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。

反射机制常用的类

  • java.lang.Class:代表类和接口,提供了获取类信息的方法。
  • java.lang.reflect.Constructor:代表类的构造函数。
  • java.lang.reflect.Field:代表类的成员变量。
  • java.lang.reflect.Method:...
查看全文

JAVA 七月 28, 2024

Maven 实用技巧

文章字数 15k 阅读约需 13 mins.

Maven Wrapper 借鉴了 Gradle Wrapper 的思想,可以在工程源码中提交 Wrapper 的脚本和配置,之后在工程目录中使用 mvnwmvnw.cmd 命令代替 mvn 命令,从而保证了各个开发及持续集成环境在构建时使用的 Maven 版本是一致的。

Maven Wrapper 最主要的是下面三个文件,可以使用 mvn wrapper:wrapper -Dtype=only-script(或 -Dtype=script) 命令生成,也可直接从其他工程复制:

├── ....
查看全文

JAVA 七月 07, 2024

【转】Java 8 In Action Lambda

文章字数 5.6k 阅读约需 5 mins.

原文地址:https://wyiyi.github.io/amber/

在优化代码的过程中,通过使用Java 8 lambda表达式,减少代码量,提高代码可读性。

Lambda 表达式可以理解为一种匿名函数,它没有名称,但有参数列表、函数体、返回类型,并且可能还有一个可能抛出的异常列表。Lambda 表达式可以作为参数传递给方法,也可以存储在变量中。与匿名内部类相比,Lambda 表达式更加简洁。

从一个例子入手:写一个比较苹果的重量的逻辑:

  • 传统方式:
Comparator<Apple...
查看全文

JAVA 二月 03, 2024

基于 MyBatis 拦截器机制实现一个敏感数据处理组件

文章字数 22k 阅读约需 20 mins.

MyBatis 作为一个流行的持久层框架,提供了拦截器 Interceptor 机制,允许开发者在 SQL 执行过程中插入自定义逻辑。本文将深入探讨 MyBatis 拦截器的用法和使用场景,并以处理敏感数据场景为例实现了一个自定义拦截器。

MyBatis 官网中 Interceptor 的介绍:

MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:

  • Executor (update, query, flushStatements...
查看全文

JAVA 十二月 24, 2023

离线环境下 Maven 编译打包

文章字数 2.8k 阅读约需 3 mins.

某些离线场景下我们可能无法连接 Maven 中央库或其他内网私服,又想通过 Maven 对源码进行编译打包。

本文给出了在离线环境下使用 Maven 编译打包的方案。

假设目标环境已经安装好了 JDK 和 Maven,并且将要编译的源码工程 demo-project 放置在了 /maven-offline/build 路径下。

先在联网环境成功执行一次编译,保证使用的 Maven 本地缓存仓库(默认路径 ~/.m2/repository)中包含了编译所需的依赖。

将本地缓存仓库目录 repository...

查看全文

JAVA 十二月 03, 2023

MyBatis-Plus 中的 IService 和 BaseMapper

文章字数 5.3k 阅读约需 5 mins.

原文地址:https://wyiyi.github.io/amber/2023/12/01/mybatis-plus/

MyBatis-Plus 作为一个优秀的 ORM 框架,致力于简化和提高 Java 应用程序对数据库访问的效率。

在使用的过程中,发现 MyBatis-Plus 提供了 BaseMapper 和 IService 两个核心接口,但有些相似之处:它们如何使用及使用场景分别是什么?

BaseMapper 接口是 MyBatis-Plus 提供的通用 Mapper 接口,它继承自...

查看全文

JAVA 十一月 19, 2023

【转】由 System.gc() 频繁引起 Full GC 的问题排查

文章字数 4.8k 阅读约需 4 mins.

原文地址:https://mp.weixin.qq.com/s/IHMHP9b-k0XwKPE1KjpLoQ

早上服务频繁出现 Full GC 报警(由于昨晚下掉了 -XX:+DisableExplicitGC 参数,其实会有 Full GC 产生已经在意料之中,但属实没想到会触发的这么频繁),

这里 JVM 总共运行了 4531.278 s,可以看到差不多半分钟一次 Full GC,单次 Full GC 大概耗时 1.5s。

根据经验可以判断出是由于 System.gc() 被调用引起的,但...

查看全文

JAVA 十月 07, 2023

【转】查看依赖树的利器

文章字数 1.8k 阅读约需 2 mins.

原文地址:https://wyiyi.github.io/amber/2023/10/01/Dependency%20Tree/

依赖树(Dependency Tree)工具,可以查看和分析项目的依赖关系。

本文将介绍 maven 和 gradle 两种构建如何查看依赖树。

  1. 命令行工具来查看项目的依赖树,执行命令:

     mvn dependency:tree
     gradle dependencies
  2. 对于大型项目,可以将输出结果保存到文件中:

     mvn dependency:tree >...
查看全文
加载更多
0%