线程池 1、什么是线程池? 管理线程,避免增加创建线程和销毁线程的资源消耗:线程也是一个对象,创建一个对象要类加载,销毁一个对象要走GC垃圾回收流程,都是有资源开销的。 提高响应速度:对比普通的做法,是重新创建一个线程执行,要慢很多。 重复利用:线程用完再放回池子,可以达到重复利用的效果,节省资源。 ...
10. Spring AI + RAG @目录10. Spring AI + RAGRAG概念向量:文本向量化向量数据库匹配检索SearchRequest接入ChatClientRetrievalAugmentationAdvisor最后: RAG 检索增强生成(Retrieval-augmente ...
ThreadLocal是什么?thread是线程,local是本地的意思字面意思是线程本地。其实更通俗的理解是给每个线程设置一个缓存。这个缓存用来存储当前线程在未来的业务逻辑中需要执行到的变量。我们先来看怎么用: 首先创建全局变量ThreadLocal,各自启动一个线程任务:线程任务将变量设置到缓存 ...
7. Spring AI 对话记忆 + 结构化输出 @目录7. Spring AI 对话记忆 + 结构化输出对话记忆PromptChatMemoryAdvisor配置聊天记录最大存储数量配置多用户隔离记忆原理源码$数据库存储对话记忆Redis存储多层次记忆架构 痛点结构化输出基础类型:Pojo类型: ...
MVC 一、Spring MVC的工作流程 客户端向服务端发送一次请求,这个请求会先到前端控制器DispacherServlet DispacherServlet接收到请求后会调用HandlerMapping处理器映射器——该请求由哪个Controller来处理 DispacherServlet调用 ...
1 面试题复盘 如何理解多线程,如何处理并发,线程池有哪些核心参数? Java加锁有哪几种锁? synchronized原理是什么?为什么可重入?如何获取对象的锁? JVM对原生锁做了哪些优化? 什么是锁清除和锁粗化? 乐观锁是什么?synchronized与乐观锁什么区别? volatile有什么 ...
一、有哪些依赖注入方式? 构造方法注入:通过调用类的构造方法,推荐用于强依赖(没有依赖对象就没法工作)。这也是官方推荐的注入方式。好处:依赖不可变(final修饰)、更安全。 @Component public class UserService { private final UserDao us ...
原文出处:[https://www.huaguoniang.top/archives/spring-boot-mail] 先知 邮箱的一些基本概念: 发送邮件 STMP协议: Simple Mail Transfer Protocol ,简单邮箱传输协议,用于发送邮件的协议。 基于TCP,保证可靠性 ...
目录1、背景2、需求3、思路4、实现步骤4.1 搭建一个简单的工程4.1.1 引入依赖4.1.2 编写Freemarker工具类4.1.3 编写pdf工具类4.1.4 增加一个模板4.1.5 增加一个控制层4.1.6 运行4.2 功能完善4.2.1 生成的pdf需要支持中文4.2.1.1 程序中引入 ...
近日,慧都科技正式与国际知名的企业级Java Web开发平台供应商Vaadin达成合作伙伴关系。双方的合作,不仅补强了慧都在前端与应用开发领域的能力,更标志着慧都在软件工程数字化方案版图上的进一步扩展与深化,也为中国企业构建现代化应用开发注入了新动能。 ...
slf4j 的前世今生 Log4J、Log4J2和LogBack的历史故事 使用过Log4J和LogBack的同学肯定能发现,这两个框架的设计理念极为相似,使用方法也如出一辙。其实这个两个框架的作者都是一个人,Ceki Gülcü,俄罗斯程序员。 Log4J 最初是基于Java开发的日志框架,发展一 ...
121. 买卖股票的最佳时机 题目 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润 ...
题⽬描述 把只包含质因⼦ 2 、 3 和 5 的数称作丑数( Ugly Number )。例如 6 、 8 都是丑数,但 14 不是,因为它包含质因⼦ 7 。 习惯上我们把 1 当做是第⼀个丑数。求按从⼩到⼤的顺序的第 N 个丑数。 如果 n = 9 , 返回 10 。注意事项:我们可以认为 1 也 ...
第3篇:SqlSession的创建与生命周期 1. 学习目标确认 1.0 第2篇思考题解答 在深入学习SqlSession之前,让我们先回顾并解答第2篇中提出的思考题,这将帮助我们更好地理解SqlSession在整个架构中的作用。 思考题1:为什么MyBatis要设计如此复杂的配置系统? 答案要点: ...
什么是内部类 内部类是一个定义在另一个类内部的类。 内部类可分为四种: 1. 成员内部类: 定义在另一个类内部,且没有使用static修饰,且可以访问外部类所有的成员。要创建内部类的实例必须先存在外部类的实例。 public class Outer { String name; class Inne ...
《阿里巴巴Java开发手册》编程规约->OOP规约 其中有一条,强制要求所有覆写方法添加 @Override 注解。 这是一项非常重要的编码规范。它主要有以下几个核心目的和好处: 1. 编译时检查覆写是否正确 @Override 注解会让编译器检查该方法是否确实成功覆写了父类(或接口)中的方法 ...
一 重要知识点 在Spring框架中,AnnotationUtils.findAnnotation()和AnnotatedElementUtils.findMergedAnnotation()是两种不同的注解查找方式,主要区别如下: 1. AnnotationUtils.findAnnotation ...
当 Excel 表格中包含化学式、统计脚注或科学数据时,往往需要使用下标来表示。但是,Microsoft Excel 自带的下标功能操作比较繁琐,而且也不支持批量应用,手动操作通常需要花费大量的时间。 基于此,本篇指南将介绍如何借助Spire.XLS使用 Java 实现轻松在 Excel 中插入下标... ...
题⽬描述 输⼊⼀个正整数数组,把数组⾥所有数字拼接起来排成⼀个数,打印能拼接出的所有数字中最⼩的⼀个。例如输⼊数组 {3,32,321} ,则打印出这三个数字能排成的最⼩数字为 321323 。 示例1 输⼊:[3,32,321] 返回值:"321323" 思路及解答 自定义排序(推荐解法) 这道题 ...
X-SpringBoot —— 一个轻量级的 Java 快速开发平台,用于快速构建中小型 API、RESTful API 项目,代码简洁,架构清晰,能快速开发项目并交付(接私活神器)。 ...