自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 【SAA】SpringAI Alibaba学习笔记(三):ChatModel对话记忆存储和持久化

摘要:本文介绍了大模型对话记忆的概念及其实现方式。对话记忆指LLM能够追踪和利用先前对话上下文的能力,分为内存存储和持久化存储两种类型。重点阐述了使用RedisStack实现持久化存储的方案,包括依赖导入、配置参数设置、RedisMemoryConfig类配置以及通过MessageWindowChatMemory管理对话记录的方法。最后展示了Controller层的具体实现代码,提供基于用户ID检索对话历史的功能,并建议使用Lambda表达式优化代码结构。

2025-11-11 09:17:18 601

原创 【SAA】SpringAI Alibaba学习笔记(二):提示词Prompt

摘要:提示词是与AI交互的文字指令,在API调用中被划分为四大角色:System(设定AI行为边界)、User(用户输入)、Assistant(AI响应)和Tool(桥接外部服务)。通过封装Prompt对象可实现复杂交互,使用PromptTemplate可实现提示词与代码分离,便于维护。示例展示了如何通过chatModel和chatClient两种方式调用AI,并利用System角色限制回答范围,以及使用PromptTemplate动态插入内容生成故事。

2025-11-07 08:44:35 732

原创 【SAA】SpringAI Alibaba学习笔记(一):SSE与WS的区别以及如何注入多个AI模型

本文探讨了SSE技术优势及多模型配置方法。SSE作为单向通信协议,通过HTTP长连接实现服务端数据推送,特别适合AI对话场景,其流式响应相比一次性返回用户体验更佳。在SAA开发中,通过配置类实现多模型共存,示例展示了千问和deepseek模型的定义与注入。同时说明了ChatClient需手动注入且依赖ChatModel,需通过@Qualifier指定具体模型。这些技术细节对提升AI应用性能和开发效率具有实用价值。

2025-11-05 19:05:30 813

原创 【项目实践】公寓租赁项目(十三):项目部署

本文介绍了前后端分离项目部署方案:使用两台服务器分别部署前后端项目,后端通过JDK17和Systemd管理,前端采用Nginx作为静态资源服务器和反向代理。详细步骤包括:1)配置本地域名映射模拟真实环境;2)后端项目打包、JDK安装及Systemd服务配置;3)前端项目构建、Nginx配置及静态资源部署。最终实现通过域名访问移动端和管理系统,动态请求由Nginx代理转发至后端服务。部署完成后,使用systemctl管理服务进程,通过访问配置的域名即可验证部署效果。

2025-11-04 09:03:36 1317

原创 【项目实践】公寓租赁项目(十二):项目接口缓存优化

摘要:本文介绍了缓存优化技术及其实现方案。缓存优化通过将频繁访问的磁盘数据暂存到内存中,显著提升查询性能,但需注意数据库与缓存的数据一致性问题。文章以移动端房间详情接口为例,展示如何自定义RedisTemplate实现缓存逻辑:查询时优先读取Redis,未命中则查询数据库并缓存结果;在数据更新或删除时同步清理缓存,确保一致性。通过压力测试验证,带缓存的接口响应时间明显优于无缓存方案。

2025-11-01 08:46:58 1051

原创 【项目实践】公寓租赁项目(十一):基于SpringBoot开发移动端登录管理接口

本文介绍了基于Spring Boot和阿里云短信服务实现的登录系统接口开发。系统包含三个主要接口:1) 获取短信验证码接口,通过阿里云短信服务发送验证码并存入Redis;2) 登录接口,验证短信验证码并返回JWT令牌,支持自动注册新用户;3) 获取用户信息接口,通过JWT解析用户身份后返回用户基本信息。系统采用Redis存储验证码并实现防刷机制,验证码有效期为300秒,60秒内不允许重复获取。开发过程中需要配置阿里云短信服务的AccessKey和模板参数,并集成Redis作为缓存服务。该系统实现了完整的短信

2025-10-31 14:27:45 968

原创 【项目实践】公寓租赁项目(十):基于SpringBoot登录管理接口开发

本文介绍了后台管理系统登录模块的实现方案,主要包括四个接口:图形验证码获取、用户登录、JWT生成与解析、用户信息获取。系统使用EasyCaptcha生成验证码并存入Redis,采用JWT进行身份验证,通过ThreadLocal存储用户信息避免重复解析token。关键实现包括验证码校验、密码加密比对、Token生成与拦截器处理等安全机制,并通过自定义Mapper查询用户数据。该方案实现了完整的登录鉴权流程,确保了系统的安全性和性能优化。

2025-10-30 21:49:39 998 1

原创 【项目实践】公寓租赁项目(九):SpringBoot与Redis整合的快速入门使用

本文介绍了Spring Boot集成Redis的配置和使用方法。首先导入spring-boot-starter-data-redis依赖,然后在application.yml中配置Redis连接参数。重点讲解了RedisTemplate的使用方法及其操作不同数据类型的API,同时指出了RedisTemplate默认使用JDK序列化导致命令行客户端乱码的问题。最后推荐使用StringRedisTemplate替代RedisTemplate,因其采用与Redis命令行相同的序列化方式,可有效解决乱码问题,并通过

2025-10-28 20:38:05 634

原创 【项目实践】公寓租赁项目(八):SpringBoot与Redis整合的快速入门使用(2)

Redis集合类型操作指南摘要 本文介绍了Redis中三种核心集合类型: 1.无序集合(set):支持添加(sadd)、查询(smembers)、移除(srem)等操作,适用于去重场景和集合运算(交集sinter/并集sunion/差集sdiff),可用于共同好友统计和抽奖系统。 2.哈希表(hash):类似HashMap,支持键值对操作(hset/hget/hdel),适合缓存对象数据,提供字段管理功能(hkeys/hvals/hgetall)。 3.有序集合(zset):在set基础上增加分数排序功能,

2025-10-27 08:45:28 955

原创 【项目实践】公寓租赁项目(七):SpringBoot与Redis整合的快速入门使用(1)

Redis是一个高性能的键值存储系统,支持多种数据结构和持久化功能。它以内存存储为主,提供快速读写能力,常用作缓存服务。Redis支持字符串、列表、哈希等多种数据结构,并具有灵活的数据过期策略。本文介绍了Redis的基本概念、特点和应用场景,详细讲解了客户端连接方法,以及key、string、list等数据类型的常用命令和操作示例,包括键管理、数据增删改查等基础操作。这些功能使Redis广泛应用于缓存、计数器、消息队列等场景,能有效提升系统性能,降低数据库压力。

2025-10-26 02:30:00 2254

原创 【项目实践】公寓租赁项目(六):基于SpringBoot预约看房接口和租约管理接口开发

本文介绍了预约看房和租约管理系统的接口实现。预约看房部分包含分页查询预约信息和更新预约状态两个接口,采用多表关联查询返回VO对象。租约管理部分提供五个接口:1)保存/修改租约信息;2)分页查询租约列表;3)根据ID查询租约详情;4)删除租约;5)更新租约状态。系统采用MyBatis-Plus框架实现,通过条件构造器进行数据操作,并针对复杂查询自定义VO对象和Mapper映射。整体架构遵循Controller-Service-Mapper三层设计,实现了租约和预约的完整管理功能。

2025-10-25 00:00:00 806

原创 【Linux】Coder的Linux复习课(二):常用的Linux文件目录类命令

本文介绍了14个常用的Linux文件目录操作命令及其使用方法。主要内容包括:pwd显示当前路径,ls列出目录内容,cd切换目录,mkdir创建目录,rmdir删除空目录,touch创建空文件,cp复制文件/目录,rm删除文件/目录,mv移动/重命名文件,cat查看文件内容,more/less分屏查看文件,head/tail显示文件头尾部内容。每个命令都配有基础语法说明和具体操作示例,如使用绝对路径切换目录、创建多级目录、批量删除文件等。这些命令涵盖了Linux系统中最基本的文件管理操作,适合初学者快速掌握基

2025-10-24 02:00:00 944

原创 【项目实践】公寓租赁项目(五):基于SpringBoot公寓信息管理接口开发

本文介绍了公寓信息管理系统的接口设计与实现,主要包括以下功能模块: 公寓信息增删改查 新增/更新公寓信息(包含图片、标签、配套设施的删除重建逻辑) 分页查询公寓列表(支持多表联查和动态条件过滤) 获取公寓详细信息(包含关联数据查询) 删除公寓(级联删除相关数据) 状态管理 修改公寓发布状态 查询接口 根据区县ID查询公寓列表 系统采用MyBatis-Plus实现基础CRUD,复杂查询通过自定义SQL实现多表关联,并实现了严格的数据一致性管理。难点在于处理多表关联查询和更新操作时的数据一致性维护。

2025-10-23 03:45:00 1950

原创 【项目实践】公寓租赁项目(四):基于SpringBoot文件管理接口开发

本文介绍了基于Spring Boot和MinIO的文件上传接口开发流程。主要内容包括:1) 创建文件上传Controller,定义upload接口接收MultipartFile文件;2) 配置MinIO客户端,包括依赖引入、yml配置和配置类编写;3) 实现文件上传Service逻辑,包含桶创建、权限设置、文件命名和上传;4) 处理MinIO服务异常,通过全局异常处理器统一处理。系统实现了文件上传功能,返回可访问的文件URL,并通过日期和UUID保证文件名唯一性,同时处理了MinIO服务异常情况。

2025-10-20 00:00:00 1457

原创 【项目实践】公寓租赁项目(三):基于SpringBoot房间属性管理接口开发

本文介绍了房间属性管理接口的实现,主要包括五个接口功能:1.查询所有属性名称和值列表(使用左外连接多表查询);2.新增/更新属性名称;3.新增/更新属性值;4.根据ID删除属性名称(连带删除关联属性值);5.根据ID删除属性值。重点说明了MyBatis多表查询时使用resultMap处理复杂映射关系,以及左外连接(left join)与过滤条件的正确使用方法。接口实现采用分层架构,包含Controller、Service和Mapper层,通过MyBatis-Plus实现基础CRUD操作,复杂查询则通过自定义

2025-10-19 00:00:00 1186

原创 【项目实践】公寓租赁项目(二):基于SpringBoot标签管理接口开发

本文介绍了标签管理接口的实现及枚举类型转换问题的解决方案。主要内容包括:1)查询标签列表接口,通过type参数进行条件查询;2)保存/修改标签接口;3)删除标签接口。重点解决了枚举类型转换异常问题,通过自定义Converter实现String到ItemType的转换,并进一步优化为使用ConverterFactory统一处理所有枚举类的转换。文中详细分析了类型转换流程,包括WebDataBinder和TypeHandler的处理机制,并给出了两种解决方案:单独枚举转换器和通用枚举转换工厂模式,后者可减少重复

2025-10-18 00:00:00 1158

原创 【项目实践】公寓租赁项目(一):基于SpringBoot公寓房间支付方式接口开发

本文介绍了支付方式管理模块的三个核心接口实现:1.查询支付方式列表接口,使用MybatisPlus的QueryWrapper和实体类注解简化查询逻辑;2.保存/更新支付方式接口,通过@TableField注解自动处理创建和更新时间;3.逻辑删除支付方式接口。重点阐述了使用MybatisPlus的特性优化开发:包括逻辑删除配置、自动填充时间字段等技巧,同时说明了Knife4j文档工具的接口分组和命名方法。这些实现方案简化了CRUD操作,提高了开发效率。

2025-10-17 01:00:00 650

原创 【每日一道LeetCode】LeetCode349:两个数组的交集

【摘要】本文介绍求两个数组交集的算法,要求结果元素唯一且不考虑顺序。使用HashSet存储nums1元素,再遍历nums2检查是否存在,将交集存入结果集,最后转换为数组返回。核心思路是:1)创建两个HashSet分别存储元素和结果;2)两次遍历分别进行存储和判断;3)通过stream转换结果类型。代码包含空数组判断,时间复杂度O(m+n),空间复杂度O(m)。

2025-10-17 00:00:00 269

原创 【项目实践】公寓租赁项目:MinIo技术与SpringBoot项目整合的快速入门使用

本文介绍了MinIo对象存储系统及其在SpringBoot项目中的整合应用。MinIo作为高性能存储解决方案,用于管理非结构化数据(如图片、视频),包含Endpoint、Bucket、Object等核心概念。文章详细说明了MinIo的登录认证方式,并提供了SpringBoot集成MinIo的完整代码示例:通过MinioClient实现桶的创建、权限设置及文件上传功能。测试结果验证了文件成功上传至指定存储桶,同时指出权限设置既可通过API也可在管理界面完成。该方案为项目中的静态资源管理提供了可靠的技术实现。

2025-10-16 00:00:00 600

原创 【每日一道LeetCode】LeetCode454:四数相加II

摘要:本文介绍了一种使用哈希表求解四个数组元素和为0的组合数的方法。通过两次双层循环:第一次计算nums1和nums2所有元素和的频次存入哈希表;第二次计算nums3和nums4元素和,在哈希表中查找匹配的相反数并累加频次。最终返回满足条件的四元组个数。该方法时间复杂度为O(n²),空间复杂度O(n²)。

2025-10-15 00:30:00 731

原创 【Linux】Coder的Linux复习课(一):Linux概述与VIM编辑器的使用

本文介绍了Linux系统的基础知识:1. Linux起源及主要发行版(Ubuntu、RedHat等);2. 关键目录结构(/root、/bin、/etc等);3. 重点讲解了VIM编辑器的三种模式:一般模式(基本操作)、编辑模式(i/a/o等键进入)、指令模式(:键进入)及其相互转换方式。内容涵盖Linux基础概念和VIM编辑器的核心使用方法。

2025-10-15 00:00:00 1048

原创 【每日一道LeetCode】LeetCode242:有效的字母异位词

该文章介绍了一种使用哈希法判断两个字符串是否为字母异位词的有效方法。通过创建长度为26的数组作为哈希表,分别统计两个字符串中各字母出现的次数:先对字符串s中的字符进行加计数,再对字符串t中的字符进行减计数。最后检查哈希表中所有元素是否都为零,若是则说明两字符串为字母异位词。这种方法避免了暴力检索的低效,利用数组索引和ASCII码特性实现了O(n)时间复杂度的解决方案。

2025-10-14 02:00:00 519

原创 【每日一道LeetCode】LeetCode160:相交链表

摘要:该算法通过双指针法寻找两个单链表的相交节点。指针p1和p2分别遍历链表A和B,当到达末尾时切换到对方链表头节点继续遍历。若两链表相交,最终p1和p2会在交点相遇(指针相等);若无交点则同时到达null。这种方法实现了O(m+n)时间复杂度和O(1)空间复杂度的高效查找,关键在于通过路径交换使两指针同步移动。

2025-10-13 02:00:00 389

原创 【每日一道LeetCode】LeetCode19:删除链表的倒数第N个节点

摘要:本文介绍了一种使用双指针法删除链表倒数第n个节点的方法。通过创建虚拟头节点(dummyHead),让快指针(fast)先移动n+1步,再同时移动快慢指针(slow)。当fast到达末尾时,slow正好指向目标节点的前驱,从而完成删除操作。该方法时间复杂度为O(L)(L为链表长度),空间复杂度O(1),代码实现简洁高效。

2025-10-12 04:00:00 439

原创 【每日一道LeetCode】LeetCode24:两两交换链表中的节点

本文介绍了两种交换链表中相邻节点的方法:1.迭代法:创建虚拟头节点和临时节点,通过三步操作完成节点交换;2.递归法:先处理后续节点,再交换当前相邻节点。两种方法都保持了节点值不变,仅改变指针指向。迭代法使用虚拟头节点简化操作,递归法则通过递归调用实现交换。时间复杂度均为O(n),空间复杂度迭代法为O(1),递归法为O(n)。

2025-10-11 06:00:00 483

原创 【JDBC】一篇文章帮你弄清楚Java程序如何连接数据库

简单来说,JDBC是Sun公司提供的一个标准API,用于在Java程序中与关系数据库进行交互的一组规范(接口),通过注册对应数据库提供的驱动,调用API来操作数据库。

2025-10-10 06:00:00 1055

原创 大三学生的第一篇Blog!此刻启航!

第一篇Blog让大家了解一下我,希望接下来的时间能够跟大家共同学习,提升技术水平,开拓自己的视野!也希望各位即将毕业的“Coders”们能够找到自己心仪的Offer!注:图片来自于视觉中国。

2025-10-09 17:58:43 641 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除