国产化Word处理控件Spire.Doc教程:用Java实现TXT文本与Word互转的完整教程
纯文本(.txt)文件因简洁通用被广泛使用,但无法支持字体、表格、图片等格式;而 Word(.docx)文件虽具备丰富的排版能力,却难以直接用于文本分析、索引等场景。本文将详细介绍如何通过 Spire.Doc for Java(一款轻量级 Word 处理库),快速实现 TXT 文本文件与 Word 的双向转换。
Spire.Doc for Java下载  ...
C#转java的最好利器easy-query就是efcore4j sqlsugar4j freesql4j
C#转java的最好利器easy-query就是efcore4j sqlsugar4j freesql4j
背景
随着信创或者其他一系列面向领导编程导致部分使用C#的公司转型java,java下EfCore、SqlSugar 、FreeSql的竞品或者替代品就是easy-query
本章节我将介绍隐式分区分组在实际中如何使用
并且带来秒杀全世界ORM的独特功能隐式Group又叫GroupJoin可以无缝合 ...
Springboot 常见面试题汇总
SpringBoot基础
什么是 Spring Boot?
SpringBoot是一个简化 Spring 应用程序开发的框架,它的主要目标是减少 Spring 应用程序的配置和开发复杂性,使我们能够更快地构建、测试和部署 Spring 应用。简单来说,它通过提供默认配置、自动化配置和嵌入式服务器等功能,简化了传统Spring 应用的繁琐配置过程。有人将一些依赖关系 ...
keycloak~标准的国际化设计
在 Keycloak 中,国际化设置和默认语言的配置主要涉及以下几个方面:
1. Keycloak 配置
在 Keycloak 的管理控制台中,你可以通过以下步骤设置默认语言:
登录到 Keycloak 管理控制台。
选择你的 Realm。
转到 Realm 设置(Realm Settings)。
在 国际化(Internationalization)选项卡中,可以设置默认语言。
如果没有明 ...
剑指offer-35、数组中的逆序对
题⽬描述
在数组中的两个数字,如果前⾯⼀个数字⼤于后⾯的数字,则这两个数字组成⼀个逆序对。输⼊⼀个数组,求出这个数组中的逆序对的总数。
输⼊⼀个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007
示例 1:
输⼊: [7,5,6,4]
输出: 5
限制:0 <= 数组⻓度 <= 50000
思路及解 ...
统一管理第三方包的依赖包版本号
起因
在java项目中,我在maven的pom.xml中引用了io.github.officiallysingh:spring-boot-starter-spark:1.3包,然后这个包里又有org.apache.spark:spark-core_2.13:3.5.5包的引用,而在spark-core_2.13包中又引用了org.apache.avro:avro-mapred:1.11.4包,这个包的版本0.10.0修改为0.9.0,我们如何实现呢?
推荐方法
通过 ...
聚合系统设计-批付交易中的“双批次ID设计(or双批次号设计)” // 双批次ID设计:在复杂业务场景下构建清晰、可维护的应用系统
本文将聚焦于聚合支付系统商户API批量付款场景,深入剖析双批次ID设计方案如何从程序设计合理性和系统性能优化两个核心维度带来显著优势。通过双批次ID设计,实现在复杂业务场景下构建清晰、可维护的应用系统。
1. 业务场景与核心挑战
聚合支付系统的商户批付API接口,业务场景通常是这样的----->商户侧系统通过调用API接口 ...
剑指offer-34、第⼀次出现的字符
题目描述
在⼀个字符串( 0<=字符串⻓度<=10000 ,全部由字⺟组成)中找到第⼀个只出现⼀次的字符,并返回它的位置, 如果没有则返回 -1 (需要区分⼤⼩写).(从 0 开始计数)
示例1
输⼊:"google"
返回:4
思路及解答
暴力遍历(不推荐)
通过双重循环检查每个字符是否只出现一次。
public class Solution {
public int ...
Jenkins Share Library教程 —— 开发入门
写在前面
今日心情有点小丧,但总体问题不大,有一些突然来的活,还没整完,明天再继续搞把。
有难度吗?
有一些把,我觉得还是要做一些自己不擅长的工作,才会有成长的吧,为什么?
用我们测试同学的话术,就是提升“自己”的“测试覆盖率”,即解决问题的能力,核心就是会了就是赚了!
学习目标
通过本教程,你将学会:
...
【技术干货】Vaadin Flow vs Hilla:你该选择哪个Java Web框架?
在现代Web开发中,前后端分离已成为主流趋势,但对于许多以 Java 为核心技术栈 的企业来说,如何高效地构建现代化Web应用依然是一个挑战。今天我们为大家介绍的,是由 Vaadin 平台 提供的两种开源全栈Web框架 —— Vaadin Flow 与 Vaadin Hilla。它们自 Vaadin 24.4 起成为平台核心组成 ...
Spring 事务、循环依赖连环问
Spring 事务
详情请查看:Spring 事务
Spring 事务实现方式有哪些?
事务就是一系列的操作原子执行。Spring事务机制主要包括声明式事务和编程式事务。
编程式事务:通过编程的方式管理事务,这种方式带来了很大的灵活性,但很难维护。
声明式事务:将事务管理代码从业务方法中分离出来,通过aop进行封装。Spring声明式事务 ...
CopyOnWriteArrayList 的故事--一起看看java原生的读写分离
CopyOnWriteArrayList 是JUC中,为了实现高并发而提供的list容器之一。对于大部分的业务场景,都是读多写少,并发度也基本卡在了读的位置。通常支持并发的容器在解决并发时,采用是:(1)数据分割,每个线程只操作属于当前线程自己的数据,如ThreadLocal (感兴趣的同学可以看我前文 《Java内存模型及Java关键字 volatile ...
为什么不该用 Double 表示金额及解决方案
众所周知,double 和 float 这些浮点数其实是不精确的。
比如 0.1 + 0.2 并不等于 0.3,而是等于 0.30000000000000004——这也一度成为程序员圈子里的经典梗。所以用浮点数表示金额这种需要精确计算的数值,是会出现精度丢失问题的。
double a = 0.1;
double b = 0.2;
System.out.println(a + b); // 输出: 0.3000000000000 ...
Spring AOP、MVC高频面试题解析
什么是AOP?
面向切面编程,作为面向对象的一种补充,将公共逻辑(事务管理、日志、缓存等)封装成切面,跟业务代码进行分离,可以减少系统的重复代码和降低模块之间的耦合度。切面就是那些与业务无关,但所有业务模块都会调用的公共逻辑。
面向切面编程和面向对象编程的区别,两者有冲突吗?
面向切面编程(AOP)和面向对 ...
从零开始学Flink:数据输出的终极指南
在实时数据处理的完整链路中,数据输出(Sink)是最后一个关键环节,它负责将处理后的结果传递到外部系统供后续使用。Flink提供了丰富的数据输出连接器,支持将数据写入Kafka、Elasticsearch、文件系统、数据库等各种目标系统。本文将深入探讨Flink数据输出的核心概念、配置方法和最佳实践,并基于Flink 1.20.1构建一个完整 ...
Java并发编程(5)
线程池
1、什么是线程池?
管理线程,避免增加创建线程和销毁线程的资源消耗:线程也是一个对象,创建一个对象要类加载,销毁一个对象要走GC垃圾回收流程,都是有资源开销的。
提高响应速度:对比普通的做法,是重新创建一个线程执行,要慢很多。
重复利用:线程用完再放回池子,可以达到重复利用的效果,节省资源。
2、 ...
10. Spring AI + RAG
10. Spring AI + RAG
@目录10. Spring AI + RAGRAG概念向量:文本向量化向量数据库匹配检索SearchRequest接入ChatClientRetrievalAugmentationAdvisor最后:
RAG
检索增强生成(Retrieval-augmented Generation)
对于基础大模型来说, 他只具备通用信息,他的参数都是拿公网进行训练,并且有一定的时间延迟, 无法得知一 ...
浅谈ThreadLocal----每个线程一个小书包
ThreadLocal是什么?thread是线程,local是本地的意思字面意思是线程本地。其实更通俗的理解是给每个线程设置一个缓存。这个缓存用来存储当前线程在未来的业务逻辑中需要执行到的变量。我们先来看怎么用:
首先创建全局变量ThreadLocal,各自启动一个线程任务:线程任务将变量设置到缓存中。线程任务需要用到缓存中的变量时 ...
7. Spring AI 对话记忆 + 结构化输出
7. Spring AI 对话记忆 + 结构化输出
@目录7. Spring AI 对话记忆 + 结构化输出对话记忆PromptChatMemoryAdvisor配置聊天记录最大存储数量配置多用户隔离记忆原理源码$数据库存储对话记忆Redis存储多层次记忆架构 痛点结构化输出基础类型:Pojo类型:原理最后:
对话记忆
大型语言模型 (LLM) 是无状态的,这意味着它们不会 ...
Spring篇知识点(4)
MVC
一、Spring MVC的工作流程
客户端向服务端发送一次请求,这个请求会先到前端控制器DispacherServlet
DispacherServlet接收到请求后会调用HandlerMapping处理器映射器——该请求由哪个Controller来处理
DispacherServlet调用HandlerAdapter处理器适配器,告诉处理器适配器应该去执行哪个Controller(这个存在的 ...