- 博客(13)
- 收藏
- 关注
原创 数据库三范式:快速辨别指南
数据库三大范式是规范表结构的关键标准:1NF要求每个字段原子性不可分;2NF在1NF基础上消除非主属性对主键的部分依赖;3NF则进一步消除传递依赖。辨别方法:1NF检查字段是否拆分彻底;2NF分析复合主键时非主属性是否完全依赖;3NF考察是否存在间接依赖关系。通过逐步检查这些规则,可以判断数据库表结构是否符合各范式要求,从而优化数据存储,减少冗余。
2025-07-06 14:03:32
431
原创 三大主流数据库特性对比与SQL实战指南
本文系统介绍了关系型数据库的核心知识与操作技巧。首先强调了SQL语句的重要性,并对比了MySQL、SQLServer和Oracle三大数据库的特性差异。随后详细讲解了SQL语法基础、分类(DDL/DML/DQL/DCL)及常用操作,包括数据库和表的创建修改、数据增删改查、权限控制等。接着介绍了字符串、数值、日期和流程四类函数的使用场景,以及约束条件和多表查询(内连接、外连接、自连接、子查询)。最后讲解了事务的ACID特性、并发问题及隔离级别设置。
2025-07-05 22:57:41
780
6
原创 LangChain4j跟Springai在开发上的不同之处
本文介绍了Spring与LangChain4j的集成方法,通过配置依赖和yml文件实现大模型调用。重点对比了两种实现方式:SpringAI采用分层设计,通过ChatClient配置默认功能和动态参数;LangChain4j则采用注解驱动,使用@AiService集中定义模型和功能。两者在会话记忆功能实现上差异明显:SpringAI通过advisors()动态添加,LangChain4j需要单独配置ChatMemory。文章指出两种框架设计理念不同但功能实现相似,熟悉一种后另一种也能快速上手。
2025-06-23 22:57:34
719
原创 RAG知识库
OK,现在我们有了这些工具:PDFReader:读取文档并拆分为片段向量大模型:将文本片段向量化向量数据库:存储向量,检索向量让我们梳理一下要解决的问题和解决思路:要解决大模型的知识限制问题,需要外挂知识库受到大模型上下文限制,知识库不能简单的直接拼接在提示词中我们需要从庞大的知识库中找到与用户问题相关的一小部分,再组装成提示词这些可以利用文档读取器向量大模型向量数据库来解决。第一阶段(存储知识库)将知识库内容切片,分为一个个片段将每个片段利用向量模型向量化。
2025-06-20 13:31:44
1147
原创 Function Calling
摘要:本文介绍了如何利用SpringAI的FunctionCalling功能结合大模型与传统Java应用,实现智能客服系统。当AI需要执行数据库操作(如查询课程、校区信息或新增预约单)时,通过定义@Tool注解的方法作为工具函数,SpringAI会自动完成函数调用。该方法解决了纯Prompt模式无法处理结构化数据的局限,简化了AI与传统系统的集成流程。智能客服可自动与用户对话获取需求,调用相应工具完成数据库操作,最终实现课程咨询和预约服务。该模式可扩展至电商等需AI交互与系统集成的场景。
2025-06-19 21:18:06
975
原创 提示词工程
OpenAI官方Prompt Engineering指南核心要点总结: 优化提示词的关键策略: 给出清晰明确的指令,避免模糊表述 使用分隔符标记输入内容 分步骤拆解复杂任务 提供Few-shot示例指导输出格式/风格 指定输出格式要求 为模型设定特定角色 减少模型"幻觉"技巧: 要求答案基于提供的数据 添加"不确定时回答'无相关信息'"等限制 防范Prompt攻击的六大措施: 提示词注入防范(使用分隔符) 越狱攻击防范(内容过滤+道德约束) 数据泄露防范(数据隔离+固
2025-06-18 22:59:48
1079
原创 SpringAi的实现一个简单的deepseek
SpringBoot快速集成AI对话功能摘要:本文介绍了使用SpringBoot快速集成AI对话功能的方法。首先创建SpringBoot工程并引入spring-ai-starter-model-openai依赖,配置DeepSeek API密钥和模型参数。通过ChatClient封装对话API,支持同步和流式两种调用方式。在Controller中接收用户提示词并返回AI响应结果。还可以通过defaultSystem方法设置AI系统角色(如"可爱的小助手木幽"),改变AI的身份设定。最后文
2025-06-18 11:20:47
465
原创 Lua语法入门
Lua是一种轻量级脚本语言,用C语言编写,常用于嵌入式应用开发。它支持多种数据类型(字符串、数字、布尔、表等),变量用local声明。表(table)是核心数据结构,既可作数组(下标从1开始)也可作映射表。循环使用for和pairs/ipairs遍历表;条件控制类似Java但逻辑运算符为英文单词(如and、or)。函数定义用function关键字,支持参数和返回值。案例展示了如何定义带错误检查的数组打印函数。Lua语法简洁,适合快速开发扩展功能。
2025-06-16 22:07:03
387
原创 Redis的批处理优化
Redis批处理操作在不同部署方式下的实现差异:在单机模式下,Pipeline可以批量执行命令,但MSET等命令仅支持部分数据类型;在集群模式下,批处理需确保所有key位于同一slot,否则会执行失败。StringRedisTemplate提供了并行slot批处理方案,通过multiSet/multiGet等封装方法可以简化集群环境下的批量操作,避免了手动处理slot分布问题。测试代码展示了两种场景下的批处理实现方式,集群方案更适用于分布式环境。
2025-06-16 13:33:58
424
原创 wsl命令报错
错误代码: Wsl/CallMsi/ERROR_PATH_NOT_FOUND。直接重新安装下面的wsl可以自动覆盖掉原先的。我尝试了很多网上所谓的解决方案,都没能够解决这个问题。偶尔刷到一篇,里面的大佬这么说的。这样下载安装后,wsl命令恢复了。我报的是以下的一种错误。系统找不到指定的路径。
2025-04-17 23:26:11
462
1
原创 StringBuilder和StringBuffer
System.out.println("StringBuilder 耗时: " + (endTime1 - startTime1) + "ms");System.out.println("StringBuffer 耗时: " + (endTime2 - startTime2) + "ms");public StringBuilder append(String str) { /* 代码 */ } // 无 synchronized。是不可变对象,频繁拼接会产生大量中间对象,性能低下。
2025-04-11 15:50:55
1150
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅