随笔分类 - 项目学习
摘要:什么是SpringAI 它解决的核心问题是:统一不同大模型的调用方式。Spring AI 抽象了一层 ChatModel 接口,不管底层是哪个模型(每个LLM厂商对应的API格式不太一样),上层代码都一样,只需要更改大模型的配置 简化 Prompt,Spring AI 提供了模板机制,Prompt
阅读全文
摘要:DAG+工作流引擎 DAG是有向无环图,一堆任务,按箭头顺序跑,不会绕圈死循环。 MCP协议 MCP(Model Context Protocol)是一个AI 调用外部工具 / 数据的标准化通信协议 MCP 最核心:只干 3 件事,告诉 AI 我有什么工具(工具发现),AI 按标准格式调用工具(统一
阅读全文
摘要:时间类 LocalDate —— 只有 日期 LocalTime —— 只有 时间 LocalDateTime —— 日期 + 时间 Spring / Redis 默认不支持 Java8 新时间类型序列化! 返回前端 → 加 @JsonFormat 存入 Redis → 配置 JavaTimeMod
阅读全文
摘要:Kafka 业务逻辑 通过@KafkaListener 注解监听 Kafka 主题,检测到该主题有要处理的任务,会自动调用 processTask 该方法并且传入要处理的类 task,对文件开始处理 在 MinIO 中进行文件合并之后会产生预签名URL, 在 Kafka 中通过这个 URL 下载文件
阅读全文
摘要:业务逻辑 获取用户数据库ID,这里有个兼容性的业务逻辑:传入的 userId 是 String 类型的,把这个类型使用 parseLong() 方法,如果能转换就是数字类型,直接根据 userId 查询看这个用户是否存在返回这个数字格式;如果转换失败说明传进来是 userName, 那么就根据用户名
阅读全文
摘要:RAG项目采取的是通义千问的 text-embedding-v4 ,主要是针对中文语境进行了专门的处理,支持2048维度向量输出,适合复杂语义匹配任务 Embedding = 把一段文字转换成一个浮点数字符串,比如 2028 维度就是一个文本变成 float[2028] 这么大一个浮点数组。一些其他
阅读全文
摘要:MinIO 存储分片文件 极致的高性能,适配大文件分片的高并发读写,MinIO 采用单机多线程 + 分布式横向扩展架构,底层基于 Go 语言开发(无 GC 瓶颈) 原生支持 S3 协议,完美适配分片上传的标准流程,分片上传的核心流程(初始化分片→并行上传分片→校验分片→合并分片→断点续传)是对象存储
阅读全文
摘要:RESTful 风格(也叫 REST 架构风格)是一种设计网络接口的标准化思路,叫做表现层状态转移 表现层(Representational):资源的 “展示形式”,比如接口返回 JSON/XML/ 二进制数据,对应 S3 协议中返回的对象内容、桶信息; 资源(Resource):接口操作的所有实体
阅读全文
摘要:结构化数据:有固定格式,比如 mysql 中行列存储的字段数据或者二维表格,userName = "小张",能直接读取到。非结构化数据:图片,大型文件,视频,比如一个文件, 机器就只能识别文件名叫什么,无法直接读取到文件内容 对象存储:对于非结构化数据存储,把数据以对象为基本存储单位,这个对象包括数
阅读全文
摘要:文件上传流程 controller层 前端会对文件先进行MD5计算出唯一标识,再进行分片向后端发出分片上传的请求 在每个文件第一个分片的时候要进行验证,截取文件的扩展名,验证改文件类型是否支持 如果文件没有所属的组织标签,那么就获取该用户的主组织标签,并设置这个文件所属组织 Service层 先查询
阅读全文
摘要:JWT的ToKen生成 JWT令牌分为三部分,Hwader记录算法和Token类型,一般由SigWith()自动生成,PayLoad存储业务信息比如过期时间,用户名等,Signature使用密匙+算法对Header+PayLoad进行加密 在Util包下会有一个JwtUtils类专门用于Jwt的生成
阅读全文
摘要:用户所属组织标签缓存 用户所属的标签是高频访问字段,所以在Redis中进行缓存 使用List结构存储而不使用set,List底层是压缩列表+双向链表,内存紧凑读写快,set天然去重是要依赖哈希表的,计算哈希值解决哈希冲突效率不如List,而且Set存储是乱序的,List存储是按照存储的顺序的,是有一
阅读全文
摘要:企业推荐 Optional + Stream流的写法,代码优雅干净 Optional本质是一个包装值的盒子,盒子里面有可能有对象,也有可能为空,但是不管哪种情况,这个Option本身是存在的,从而避免了直接操作null对象的风险 // 1. 创建 Optional 对象 User realUser
阅读全文
摘要:网卡 ipconfig /all查看所有的网卡信息,网卡分为物理网卡和虚拟网卡 Wireless LAN adapter 本地连接 * 1 / 本地连接 * 2 虚拟网卡,类似于手机热点,让其他的设备通过网络直接连接到电脑 Ethernet adapter VMware Network Adapte
阅读全文
摘要:Spring Data JPA JPA只是一个官方制定的Java持久规范,并不是具体的实现框架,Spring Data JPA是具体实现的框架,底层集成Hibernate 不用重复写CRUD代码,简单的操作不需要写sql语句,而且对于不同的数据库接口统一,降低了数据库迁移成本。 开发的时候只需要继承
阅读全文
摘要:全局异常处理流程 自定义业务状态码枚举类,规范状态码 封装返回对象例如Result 自定义异常类BusinessException,这类异常是可预见性的,直接手动throw异常抛出就可以捕获到,优先级最高 全局异常处理器@RestControllerAdvice 这套方案能够在异常处理器里面精确处理
阅读全文
摘要:日志设计分析 此项目总共分为四种日志:性能日志(performance.log),业务日志(business.log),错误输出日志(error.log),控制台输出日志 业务日志包括:基本的业务日志(logBusiness),用户操作日志(logUserOperation),业务错误日志(logB
阅读全文
摘要:业务模块 用户管理模块 文件上传与解析模块 知识检索模块 聊天助手模块 聊天记录模块 文档管理与组织模块
阅读全文
摘要:这是一种双向的。长时间保持的连接,非常适合这个实时交互的场景 调用 DeepSeek,我们调用的是流式响应的 API。这一步是实现打字机效果的关键:我们用 Spring WebFlux 的 WebClient 作为 HTTP 客户端,在请求 LLM 的时候也以流式的方式订阅返回的数据流。也就是说,L
阅读全文
摘要:MinIo 原生S3协议,易于扩展,适配这个分片上传/断点续传流程,高性能保证传输效率,高可用避免数据丢失 分片上传+断点续传 前端先把大文件切成小的分片,比如 5MB 一块,然后并发地上传到后端。后端每收到一个分片,就存到 MinIO 中,同时会用 Redis 的 bitmap 去记录哪些分片已经
阅读全文

浙公网安备 33010602011771号