- 博客(24)
- 收藏
- 关注
原创 redis的io多路复用和Java NIO的区别
Redis的IO多路复用与JavaNIO的核心思想同源但实现方式不同。两者都基于操作系统提供的select/poll/epoll机制,实现单线程管理多连接。Redis采用C语言薄封装,单线程事件循环模型,适合高性能内存操作;JavaNIO则是面向对象的重封装框架,支持多线程处理,适用于复杂业务场景。关键区别在于Redis是单线程执行避免并发开销,而JavaNIO允许多线程处理,灵活性更强但复杂度更高。虽然底层原理相同,但Redis偏向专用高性能实现,JavaNIO侧重通用网络编程框架。
2026-05-12 22:45:54
338
原创 spring通过三级缓存解决循环依赖
Spring通过三级缓存机制解决单例Bean的循环依赖问题:一级缓存存储完整Bean,二级缓存存放未完成初始化的早期引用,三级缓存保存对象工厂。该机制仅支持单例作用域和Setter/字段注入方式,因为构造器注入需要完整对象而原型作用域不缓存。解决流程包括:实例化Bean时存入对象工厂到三级缓存;依赖注入时通过缓存获取早期引用;最终完成初始化后移入一级缓存。这种设计确保了循环依赖场景下Bean的正确创建和注入。
2026-05-12 22:33:10
55
原创 Spring-ai项目-Qwen-8-RAG Embedding(ChatPDF)
本文介绍了基于RAG技术实现个人知识库应用ChatPDF的全过程。针对大模型知识局限问题,文章详细阐述了RAG原理:通过向量模型将知识库内容向量化存储,利用向量数据库检索相关内容片段,再结合用户问题生成提示词。技术实现包括:1) 使用阿里云百炼平台的向量模型进行文本相似度计算;2) 采用Spring AI的SimpleVectorStore实现向量存储;3) 开发PDF文件上传、向量化及检索功能;4) 集成ChatClient实现问答交互。
2026-03-21 23:49:48
362
原创 Spring-ai项目-deepseek-7-Function Calling(智能客服)
本文介绍了如何利用AI和传统Java程序结合开发智能客服系统。通过FunctionCalling技术,将AI擅长的自然语言理解与Java擅长的数据库操作相结合。文章详细讲解了系统设计思路:1) 定义数据库表和CRUD操作;2) 创建工具类封装课程查询、校区查询和预约功能;3) 配置ChatClient集成AI模型和工具调用;4) 实现前后端交互接口。系统能自动完成课程推荐、校区选择和预约单生成等业务流程,展示了AI与传统编程协同工作的实践案例。配套提供了完整的源码和前端资源,方便读者参考实现。
2026-03-17 20:58:13
432
原创 Spring-ai项目-deepseek-6-哄哄模拟器
本文介绍了如何利用提示词工程开发"哄哄模拟器"文字互动游戏。通过优化提示词设计,让AI模拟生气的女友,玩家通过对话提升原谅值。核心策略包括:设定明确角色和规则、建立动态评分系统(-10到+10分)、设定游戏终止条件(原谅值≥100或≤0)。文章详细展示了系统提示词模板、防御机制和Java实现代码,包括ChatClient配置和Controller编写。这种纯Prompt模式的游戏开发展示了如何通过精心设计的提示词实现特定交互场景,同时防范提示注入等攻击。
2026-03-16 00:16:47
448
原创 Spring-ai项目-deepseek-5-对话历史
本文介绍了实现对话历史存储功能的开发过程。首先创建了ChatHistoryRepository接口定义保存和查询对话ID的方法,然后实现了InMemoryChatHistoryRepository类使用内存Map存储对话ID。接着修改ChatController,在对话时调用保存方法记录chatId。新增MessageVO实体类用于封装对话消息,并创建ChatHistoryController提供查询对话列表和详情的API接口。最终实现了对话历史的存储和查询功能,重启项目后即可查看对话列表和历史记录。
2026-03-08 00:58:33
169
原创 Spring-ai项目-deepseek-4-对话记忆
本文介绍了如何通过修改Spring AI配置类实现对话记忆功能。通过创建MessageWindowChatMemory配置类,设置内存存储和最多保留10条消息,并集成到ChatClient中,使AI能记住历史对话。文章还展示了如何通过chatId参数隔离不同对话的记忆,确保每个会话独立。日志输出验证了对话记忆功能的实现,包括系统消息、用户提问和AI回答的完整交互过程。最后提供了前端资源下载链接和使用说明,包含黑马程序员的学习视频和百度网盘资源地址。
2026-03-07 02:05:49
247
原创 Spring-ai项目-deepseek-会话日志
1、启动ollama并运行对话模型,参考https://blog.csdn.net/u011023306/article/details/158693877?接下来是修改配置文件application.yaml增加日志级别配置。2、启动spring-ai-study项目。3、访问streamChat接口和AI聊天。这样就可以在idea控制台看到日志输出了。调试streamChat接口。
2026-03-06 16:57:18
109
原创 idea新建Spring-ai项目-deepseek
增加defaultSystem@Bean.defaultSystem("你是由深度求索(DeepSeek)开发的俏皮可爱的人工智能助手,名字叫小深,可以帮助我解决各种问题,比如学习、写作、编程、翻译、资料整理等等。").build();调试streamChat接口1、启动ollama并运行对话模型,参考https://blog.csdn.net/u011023306/article/details/158693877?2、启动spring-ai-study项目。
2026-03-06 16:23:39
450
原创 idea新建Spring-ai项目-ollama
增加defaultSystem@Bean.defaultSystem("你是由深度求索(DeepSeek)开发的俏皮可爱的人工智能助手,名字叫小深,可以帮助我解决各种问题,比如学习、写作、编程、翻译、资料整理等等。").build();
2026-03-06 15:09:20
297
原创 win10操作系统安装ollama并运行deepseek-r1
摘要:Ollama是一款本地AI模型运行工具,Windows用户可访问官网下载对应版本安装包。安装时可自定义程序安装路径(默认C盘),安装后建议在设置中修改模型存放目录。通过命令行运行ollama run deepseek-r1:8b即可启动模型对话功能,首次使用会自动下载模型。使用ollama stop停止运行,ollama list查看已安装模型,ollama rm删除不需要的模型以释放空间。该工具支持用户灵活管理本地AI模型资源。
2026-03-06 13:11:43
95
原创 Linux下快速安装配置Redis全攻略
本文简要介绍了在Linux系统上安装和配置Redis的完整步骤。首先安装GCC依赖并添加EPEL仓库,然后更新yum源并安装Redis。接着讲解了如何修改配置文件,包括允许远程连接和设置密码。最后说明了如何启动Redis服务、查看状态以及设置开机自启。整个过程涵盖了从安装到基本配置的全部关键操作,为快速部署Redis服务器提供了清晰指导。
2025-12-23 17:36:30
389
原创 2G服务器优化MySQL内存配置指南
本文介绍了在2G内存服务器上优化MySQL配置的方法。通过修改/etc/my.cnf文件,调整关键参数如key_buffer_size(8M)、max_connections(30)、innodb_buffer_pool_size(128M)等来降低内存占用。同时关闭performance_schema等非必要功能,并配置慢查询日志路径/var/log/mysql/slow-query.log。完成配置后需重启MySQL服务并检查状态,最后创建日志目录并设置权限。
2025-12-23 16:54:42
319
原创 Linux CentOS 7.9 MySQL 8.0安装配置全攻略
摘要:本文详细介绍了在CentOS 7.9系统上安装MySQL 8.0的完整步骤,包括下载安装包、解压、按顺序安装各个组件、处理依赖问题、启动服务、获取初始密码、修改密码以及配置远程访问权限。安装过程中需要注意组件安装顺序,遇到缺少依赖包时需单独安装,修改密码需符合复杂度要求,最后通过配置允许所有主机访问并验证连接可用性。
2025-12-23 14:59:55
416
原创 在Windows 11环境部署RocketMQ和RocketMQ Dashboard
在Windows 11环境部署RocketMQ和RocketMQ Dashboard
2023-04-12 10:14:05
4002
1
原创 用Integer举例基础类型和包装类型的装箱、拆箱、整型缓存池
## 1、装箱Integer a = 100;// Integer.valueOf(100); 装箱## 2、拆箱int c = Integer.valueOf(100);// Integer.valueOf(100).intValue(); 拆箱## 3、整型缓存池Integer 缓存是 Java 5 中引入的一个有助于节省内存、提高性能的特性。Integer中有个静态内部类IntegerCache,里面有个cache[],也就是Integer常量池,常量池的大小为一...
2020-12-02 15:31:00
235
1
原创 Linux环境 Kafka启动关闭命令
本文章使用的是Kafka自带的zookeeper,使用的系统是Linux先cd到kafka目录,如1、启动 1、启动zookeeper常规模式启动bin/zookeeper-server-start.sh config/zookeeper.properties进程守护模式启动nohup bin/zookeeper-server-start.sh config/...
2020-03-24 11:27:24
8241
原创 button按钮onclick调用的函数名和id相同会导致找不到函数
前几天在做一个页面优化的时候碰到一个奇怪的问题,百思不得其解,耗费了我一天的时间,怎么想都不可能。问题是这样的,第一天下班前,我给一个button绑定了一个onclick事件,事件调用一个函数,调试成功后下班。第二天上班,把之前的函数改一个稍微符合用意的名称,再给按钮加了id,函数名和id相同;之后点击按钮时控制台一直报错,找不到我绑定的函数,我确定了很多遍onclick事件填的函数名和要
2017-01-22 16:25:52
9872
原创 Windows Server 2008 R2服务器远程连接把上一个连接挤掉
在键盘上按Win+R键(也可以在开始菜单右键然后选择运行)在运行的输入框里面输入"gpedit.msc"命令、然后点击确定在“计算机组策略”中依次展开 计算机配置-->管理模板--->windows组件--->然后在右边的菜单中选择远程桌面服务;双击打开在远程桌面服务界面中;双击打开“远程桌面会话主机”在“远程桌面会话主机”界面中双击打开“连接”然后按照图片显示的进行配置
2016-03-04 14:08:44
5070
2
转载 将java程序编译成独立运行的exe文件
将java程序编译成独立运行的exe文件 众所周知java的程序可以“一次编译,到处运行”,这个特性不错,但是实现这个特性的前提是当前的平台必须有相应的jvm,而且如果当前平台的jvm低于程序要求的版本的话这个程序就不能正常运行,还有就是运行java程序除了直接双击jar包之外就是在控制台输入命令执行,这样显得java程序跟其他语言开发的程序有很大的差别,我们可以实现像其他语言开发
2015-08-25 14:36:54
6593
1
原创 Java添加注册表协议
通过Java添加注册表协议,网页可以通过a标签调用,起到网页调用本地程序功能。需要先学习如何通过添加注册表协议,实现网页调用程序添加注册表协议的知识可以到这学习,谢谢红色石头的分享Java代码package cn.wonyen.registry;import com.ice.jni.registry.NoSuchKeyException;import com.ice.jni.registry.
2015-08-21 16:24:24
1099
转载 java 之 注册表操作篇
使用Preferences API 参考资料 Preferences的误解: 首先要指明的是:Preferences API并不是为访问Windows注册表而设计的。 我们之所以会有上面的误解是由于Sun的Windows版本的JDK在实现Preferences API时使用了Windows注册表作为存储库,即我们用Prefe
2015-08-21 15:55:34
667
转载 Java正则表达式判断字符串包含中文
如题,直接上代码:import java.util.regex.Matcher;import java.util.regex.Pattern;public class IfHanZi { public static void main(String[] args) { //方法一: String s1 = "我是中国人"; String s2 = "imchinese"; Strin
2015-08-21 11:40:22
2365
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅