首页 / 技术专题CATEGORY / SPRINGFORALL

Java

在这个技术方向,积累扎实的知识与实践。

共 547 篇文章

工程师的灵魂拷问:你的密钥安全吗?

背景介绍:密钥管理 提问:你密钥存在哪儿? 对这一问的回答基本可概括为2类: a. 本地加解密: 密钥保存在某些介质(如配置文件、数据库,也可以是某个远程服务器)中,用户在需要进行加密/签名时,从这些介质拉取密钥(可能拉取的只是密钥密文,需要再解密出密钥明文),然后本地进行加密/签名。 b. 服务器加解密:…

Mybatis Plus的条件构造器 QueryWrapper & UpdateWrapper

简介 前面我们在学习 Java Spring Boot Mybatis-Plus 的简单使用的时候,是否发现我们在构造查询的时候,基本都是简单的 where 语句的查询,而且也不能去选择字段输出,没关系,Mybatis-Plus 为我们准备了应对方案,那就是 Wrapper 构造器。 总的来说,常用的条件构造器有两类,一类是用于查询的条件构造器-…

Java API设计实战指南:打造稳健、用户友好的API

介绍 应用程序编程接口(API)在现代软件开发中扮演着至关重要的角色,它们实现了不同系统之间的通信与交互。Java作为其中最流行的编程语言之一,为API开发提供了一个强大而灵活的平台。本文将深入探讨在Java中设计有效API的原则,并着重介绍RESTful设计原则、版本控制策略以及文档实践。 Java中的RESTful API原则…

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

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

源码|ThreadLocal的实现原理

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

消灭 Java 代码的“坏味道”

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

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

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

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

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

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

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