使用MyBatis自定义插件实现不侵入业务的公共参数自动追加

背景 后台业务开发的过程中,往往会遇到这种场景:需要记录每条记录产生时间、修改时间、修改人及添加人,在查询时查询出来。 以往的做法通常是手动在每个业务逻辑里耦合上这么一块代码,也有更优雅一点的做法是写一个拦截器,然后在Mybatis拦截器中为实体对象中的公共参数进行赋值,但最终依然需要在业务SQL上手动添加上这几个参数,很多开源后台项目都有类似做法。…

hello hello 发布于 2024-01-02

源码|ThreadLocal的实现原理

ThreadLocal也叫“线程本地变量”、“线程局部变量”: 其作用域覆盖线程,而不是某个具体任务; 其“自然”的生命周期与线程的生命周期“相同”(但在JDK实现中比线程的生命周期更短,减少了内存泄漏的可能)。 ThreadLocal代表了一种 线程与任务剥离 的思想,从而达到 线程封闭…

hello hello 发布于 2024-01-02

消灭 Java 代码的“坏味道”

让代码性能更高 需要 Map 的主键和取值时,应该迭代 entrySet() 当循环中只需要 Map 的主键时,迭代 keySet() 是正确的。但是,当需要主键和取值时,迭代 entrySet() 才是更高效的做法,比先迭代 keySet() 后再去 get 取值性能更佳。 反例: Map<String, String> map = ...; for…

hello hello 发布于 2024-01-02

Java微服务框架选择:Micronaut vs Spring Boot

深入研究微服务世界的 Java 开发人员经常发现自己面临着在两个著名框架之间做出选择:Micronaut 和 Spring Boot。 这两个框架都为构建微服务提供了强大的解决方案,但每个框架都有自己的优点和缺点。 在本文中,我们将探讨与 Spring Boot 相比使用 Micronaut 的一些潜在缺点,强调根据项目的特定需求调整您的选择的重要性。 #…

hello hello 发布于 2023-12-28

Java 21中关于Locale区域设置的变化

当我们要尝试解决本地化问题时,首先要验证就是JVM使用的区域设置( Locale )是哪个。在Java 21中,弄清楚JVM使用的是哪个区域设置( Locale ),这项任务变得更加容易了。 # 查看当前配置 在Java 21中,我们可以通过使用 -X:showSettings 来查看 locale 和 tzdata ,开发者可以通过…

hello hello 发布于 2023-12-28

YAML中多行字符串的配置方法

有时候我们会在配置文件中配置一段文字说明,这种时候通常会出现两种需求: 文字中可能出现段落,希望在配置中按段落方式编写,显示打印的时候也能出现段落换行。 文字很长,为方便编辑,可能在配置文件中分段写,但是显示的时候不喜欢出现配置中的段落换行。 简单的说,就是: 配置与显示,都严格按段落展示 配置按段落,显示不需要按段落 假设,我们需要配置这样一段文字: I…

hello hello 发布于 2023-12-22

必知必会Java命令:JPS

最近想着把工作中使用过的java命令都梳理一下,方便日后查阅。虽然这类文章很多,但自己梳理总结后,还是会有一些新的收获。这也是这篇笔记的由来。 今天先聊聊 jps 命令。 命令概述⭐ jps 命令是JDK提供的一个工具,用于查看目标系统上的Java进程基本信息(进程ID, 启动类,启动参数等)。命令在JDK安装目录的bin目录下,比如在我的window下…

hello hello 发布于 2023-12-11

Quartz 核心原理之架构及基本元素介绍

1 什么是Quartz Quartz是一个作业调度框架,它可以与J2EE和J2SE应用相结合,也可以单独使用。它能够创建多个甚至数万个jobs这样复杂的程序,jobs可以做成标准的java组件或EJBS。Quartz很容易上手,创建一个任务仅需实现Job接口,该接口只有一个方法void execute(JobExecutionContext…

hello hello 发布于 2023-12-07

Java 21中的两个值得关注的Bug修复

在Java 21中,除了推出很多新特性之外,一些Bug修复,也需要注意一下。因为这些改变可能在升级的时候,造成影响。 # Double.toString() 和 Float.toString() 的精度问题修复 比如:对于 Double.String(1e23) : 在Java 19后,输出内容为: 1.0E23 在Java 18中,输出内容为:…

hello hello 发布于 2023-12-05

Netty(十二) 常见面试题总结

1. 请简单描述一下 Reactor 模型在 Netty 中的应用。 在Netty-Server 中一般使用的是 Reactor 的 多线程 池模型,而Netty-Client 中一般使用的是 Reactor 单线程池模型。具体来说,NioEventLoopGroup 充当着线程池。每一个 NioEventLoopGroup 中都包含了多个…

hello hello 发布于 2023-11-29
上一页 下一页