
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
命名规范:遵循,主配置存放公共配置;激活方式:主配置文件指定为默认方式,命令行 / 环境变量可覆盖;合并用法:通过拆分功能型配置文件。
LangChain4J 整合多 AI 模型的核心精髓所有聊天模型均提供统一的chat()方法,调用逻辑完全一致,降低学习成本;DeepSeek 兼容 OpenAI 接口标准,实现「零依赖扩展」,复用现有 OpenAI 整合代码;SpringBoot 场景通过BOM 统一版本 + Starter 自动装配,实现「配置与代码分离」,最大化提升可维护性和扩展性;本地模型(Ollama+DeepSeek-
预约业务落地需先完成持久层开发,核心是通过实现 “姓名 + 身份证 + 科室 + 日期 + 时间” 的唯一预约校验;工具类通过@Tool注解标记业务方法,@P注解描述参数,帮助大模型理解参数含义并正确传参;小智 AI 服务通过tools属性绑定工具类后,大模型可自动分析用户指令(如 “预约挂号”),调用对应工具方法并返回自然语言结果,实现 “自然语言交互 → 工具调用 → 业务落地” 的闭环。
LangChain4j 中通过特定注解配置提示词模板,实现对大语言模型(LLM)的精准指令控制,核心注解包括@MemoryId@V,主要用于定义系统提示、用户输入、会话记忆和参数绑定。// 从资源文件加载系统提示词模板,结合多参数@MemoryId int memoryId, // 会话记忆ID@UserMessage String userMessage, // 用户输入问题@V("userna
*** 自定义小智助手的内容检索器* 步骤:加载文档 → 初始化内存向量库 → 文档分割+向量化+入库 → 构建检索器*/@Bean// 1. 加载本地知识库文档(MD格式,使用默认TextDocumentParser解析)Document doc1 = FileSystemDocumentLoader.loadDocument("E:/knowledge/医院信息.md");
依赖层:引入 WebFlux + LangChain4j-Reactor 支撑响应式流式返回;配置层:指定通义千问流式模型的 API 密钥和模型名称;接口层:将 AI 服务和 Controller 的返回值改为,并指定流式模型 / 响应类型;最终效果:后端逐段推送通义千问的回答内容,前端实时接收并展示。
128 陷阱本质:Integer 对-128~127数值缓存对象,超出范围每次新建对象,导致==比较地址不一致;自动拆装箱:装箱调用valueOf(),拆箱调用xxxValue()(如 intValue ()),是编译器语法糖;核心避坑:比较 Integer 数值用equals(),避免 new Integer (),警惕拆箱时的空指针。
自定义对象作为 key 时,必须重写hashCode()和equals(),否则会导致 key 重复:java运行// 反例:未重写hashCode/equalsmap.put(new User("001"), "张三");// 输出 null(两个User对象哈希值不同)// 正例:重写hashCode/equals@Override// 基于唯一标识id计算哈希@Override优先于自然排序
ArrayList:动态数组实现,查询快、增删慢,单线程查询场景首选,创建时指定初始容量可优化性能;LinkedList:双向链表实现,首尾增删快、查询慢,仅适用于单线程首尾频繁操作的场景;Vector:古老的线程安全数组,效率极低,现代开发中已被替代;选型核心:单线程看操作类型(查询 / 增删),多线程看读写比例(读多写少用 CopyOnWriteArrayList)。
JVM 内存核心:区分 “线程私有 / 共享” 是理解内存安全和 OOM 的关键,堆是 GC 核心,虚拟机栈是方法执行的载体;编译与执行:Java 跨平台依赖 “字节码 + JVM” 分层设计,字节码不是机器码,需 JVM 二次转换;CPU 调度核心:时间片轮转实现多线程 “并发”,多核实现 “并行”,非公平调度优先性能而非绝对公平。







