首页 / 标签TAG / SPRINGFORALL

# java

围绕 java 的技术文章与经验分享。

共 1044 篇文章

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

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

分布式锁框架:Lock4j

最近项目中使用到了 Lock4j 的分布式锁组件,小编今天就带大家学习一下该框架,以及如何在我们项目中进行集成使用。 一、简介 Lock4j 是一个分布式锁组件,它提供了多种不同的支持以满足不同性能和环境的需求;它基于 Spring AOP ,支持 RedisTemplate 、 Redisson 、 Zookeeper 作为底层。 二、开源地址…

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

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

源码|ThreadLocal的实现原理

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

消灭 Java 代码的“坏味道”

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

Spring AI:在你的Spring应用中使用生成式AI

过去一年里,ChatGPT 和 Google Bard 这样的东西出现,为大众带来了生成式人工智能,似乎每个人都在梦想和计划如何在他们的项目甚至日常生活中利用人工智能。 如果您是 Spring 开发人员,您可能想知道如何在 Spring 应用程序中实现生成式 AI。如果是这样,那么接下来这个视频一定适合您。 A BiliBili video 该视频介绍了…

Spring Boot 2.x 到 3.2 的升级指南

Spring Framework 是一种流行的开源企业级框架,用于创建在 Java Virtual Machine (JVM) 上运行的独立、生产级应用程序。而Spring Boot 是一个工具,可以让使用 Spring 框架更快、更轻松地开发 Web 应用程序和微服务。随着 Spring Boot 的不断发展,开发人员必须跟上最新的升级和变化。…