自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(113)
  • 资源 (1)
  • 收藏
  • 关注

原创 deepAgents 笔记

DeepAgents是一个独立库,建立在 LangChain代理核心构建模块之上(关系类似于:SpringBoot和Spring Framework)!主要实现自主多智能体系统(Agentic AI)**!DeepAgents是构建由大型语言模型(LLM)驱动的代理和应用的最简单方式——内置任务规划功能、用于上下文管理的文件系统、子代理生成和长期记忆。可以用它完成复杂、多步骤、切自主规划的任务。:做 “动作”,是核心的代理框架。

2026-10-16 15:19:03 123

原创 大模型 基础笔记

大模型是参数规模巨大、基于海量数据与算力演进的深度学习模型,涵盖语言、多模态生成与理解等类型。其训练遵循“预训练+后训练”范式,通过提示词工程、RAG、微调、续训及智能体开发实现落地。关键技术如Function Call与MCP协议提升工具调用效率与复用性,推动AI应用向通用智能(AGI)演进。

2026-10-14 10:27:21 158

原创 LangGraph

LangGraph 是 LangChain 1.x 中用于复杂 Agent 工作流编排的底层框架,基于状态(State)、节点(Node)和边(Edge)构建有状态、可持久化、支持流式输出与人机协作的运行时。其核心机制为 Superstep 超步循环,分计划、执行、状态提交三阶段推进。提供 Graph API(声明式图结构)与 Functional API(命令式函数调用)两种方式,适用于不同复杂度场景。推荐使用 TypedDict、dataclass 或 Pydantic 定义状态 Schema,通过 S

2026-10-12 12:34:42 258

原创 langchain笔记(三)

本文介绍LangChain中记忆系统的设计与实现,重点阐述短期记忆(基于Thread ID的会话级状态)与长期记忆(跨会话持久化)的管理机制。通过State、Checkpointer与Thread ID三者结合,实现上下文的存储与恢复;支持内存与外部数据库(如PostgreSQL)持久化。针对上下文膨胀问题,提出消息裁剪等治理策略,优化LLM响应效率与成本。

2026-10-11 11:23:08 182

原创 langchain笔记(二)

LangChain的结构化输出通过Pydantic等方案,将大模型输出从自然语言转为类型安全、格式固定的JSON或对象,实现程序可直接消费。核心优势包括:Prompt简洁(字段描述即提示)、类型检查(编辑器补全与编译时验证)、输出稳定(低错误率)。支持可选字段、默认值、枚举、列表、嵌套结构及校验约束,结合.with_structured_output(),底层自动转换为JSON Schema并调用模型工具调用功能,提升生产可用性。

2026-10-10 17:15:08 289

原创 langchain笔记(一)

LangChain 是大模型应用开发的核心框架,提供统一接口对接多模型、外部数据源与工具,支持检索增强生成(RAG)、智能体(Agent)构建及多智能体协作。其核心优势在于抽象复杂逻辑、模块化设计与丰富生态集成。通过 LangGraph 实现有向图式工作流编排,Deep Agent 进阶支持规划、记忆与子智能体协作,助力构建高阶智能应用。适用于知识库问答、自动化决策等场景,是构建可扩展AI系统的基石。

2026-10-09 16:42:44 239

原创 从零构建AI agent

路由模块由这三类构成,链式路由(依靠元数据,描述,工具标签分发用户请求),自定义意图路由(通常由赠则模板,规则树,深度学习分类器来进行分发),函数签名匹配(根据声明工具的描述进行匹配,路由到合适工具)任务智能体通常分为三个核心模块,分别是模型记忆工具(模型复责将任务规划为任务,工具是手脚负责执行任务,机遇在于维护上下文,追踪历史行为,保存用户偏好)维护一个类似注册中心的东西,作为智能体的能力声明平台,其上面的每个智能体都要声明三类核心信息,包含数据格式,上下文或工具依赖,人物类型和意图标签。

2026-09-14 18:57:00 196

原创 RAG(三)

<think>我们只需要根据内容生成摘要,不超过150字。内容涉及文档管理、增量更新、向量检索等。需要提炼核心要点。摘要要简洁,涵盖主要方案和局限。注意字数。</think>本文提出企业知识库双层存储架构:关系型数据库管台账,向量库管语义检索,以doc_id关联;文档生命周期含active/inactive/deleted状态,增量更新推荐全量替换,特殊场景用版本共存;多租户隔离推荐Metadata过滤;并讨论了分块策略与台账重要性,及向量检索的三种距离和局限。

2026-09-08 18:41:24 248

原创 Dubbo快速上手

摘要:本文系统介绍了Apache Dubbo分布式RPC框架,涵盖核心概念、架构与实战应用。Dubbo作为高性能Java RPC框架,具备远程调用、负载均衡、服务注册发现三大核心能力。文章详细解析了其五大组件(Provider/Consumer/Registry/Monitor/Container)的协作流程,并给出从Maven依赖配置到服务接口定义、提供者/消费者实现的完整示例代码。重点讲解了高级特性:四种负载均衡策略(Random/RoundRobin/LeastActive/ConsistentHas

2026-08-18 03:04:54 202

原创 从vibe coding到spec coding

本文介绍了一种名为"SpecCoding"的AI辅助开发方法论。作者通过半年的实践,总结出一套契约驱动型开发流程,核心是"契约先行,分层落地,红线兜底,人机各司"。该方法首先要求编写结构化规格说明书(Spec),使用EARS语法明确业务规则;然后通过分层设计和代码规范约束AI输出质量。文中详细展示了Spec文档模板、架构分层规范、包结构设计和代码命名规则,并强调将关键规范固化为AI提示词。这种开发模式让开发者从编码转向设计,AI负责实现重复性代码,开发者专注于边界防守和架构一致性,在提升效率的同时保证代码质

2026-08-06 22:02:12 370

原创 CompletableFuture全解

本文介绍了Java中的CompletableFuture异步编程工具。它作为JDK8的新特性,基于ForkJoinPool线程池实现任务编排,包含创建异步任务(supplyAsync/runAsync)、结果获取(get/join等)、回调处理(thenApply/thenAccept等)和多任务组合(allOf/anyOf)等方法。使用难点包括异常处理、线程安全和默认线程池限制等。底层原理是基于CAS和Treiber栈的事件驱动状态机,通过Completion节点和postComplete()方法实现回调

2026-07-04 16:30:58 176

原创 Spring Statemachine(状态机)

本文介绍了状态机在电商订单系统中的应用。状态机由现态、条件、动作和次态四个要素构成,能有效管理复杂的状态流转。以电商订单为例,通过Spring Statemachine框架实现订单状态(待支付、待发货、待收货、已完成)的转换。文章详细展示了代码实现过程,包括定义订单实体、状态枚举、状态机配置和持久化处理,通过注解方式实现状态转换监听。这种方法比传统if-else逻辑更清晰,易于维护扩展,适合处理复杂的状态流转场景。

2026-06-27 22:30:27 258

原创 redis大key如何删除

正确二:如果是hash,用hsan每次取一百个filed,分批hdel,如果是set,使用ssacn+srem分批删除。正确一:unlink异步删除,删除交给后台lazzy free 线程池主线程立刻返回。错误一:直接删除,属于同步删除,redis2秒无法处理外部请求,造成线上雪崩。错误二:设置过期时间,过期删除也是同步的,同样不行。一个10mb的大key,生产环境下如何删除。

2026-06-23 23:00:00 220

原创 mybatis拦截器插件实现数据库字段加解密

配置加密,aes加解密器,入库拦截器,出库拦截器,查询条件拦截器(等值查询)自动配置类,自动配置类自动注入。增加明文摘要字段,取前四位或者后四位,加密时同时写入,查询时对前置匹配,先缩小范围,再在内存中匹配正常内容。table,field存储,用copyonwritearraylist,读多写少,原子替换,无并发问题。密钥存储外部文件读取注入,测试,预生产,生产,无泄密风险,(配置类spi机制注入,条件注解读取)解密时机,出库后,拦截resultsethandler.handleresultsets,

2026-06-16 14:22:41 248

原创 mybatis插件原理与编写

2.代理生成:创建核心对象(如executor)时,interceptorchain调用插件的plugin()方法,通过plugin.warp()生成代理对象,3.方法拦截:调用被代理对象的方法时,触发intercept(),可在调用前后植入逻辑,再通过invocation.proceed方法执行元方法,mybatis插件是一种运行时增强机制,允许sql执行的关键环节插入自定义逻辑,而无需修改源码,其基于jdk动态代理与责任链模式,拦截statementhandler,获取sql,多租户改写。

2026-06-13 11:48:55 261

原创 RAG(二)

扫描件是图片扫进去的,文字提取出来是空的或乱码——这是鸡哥见过的最高频问题之一,上来就说"向量搜不到”,结果查半天发现文档本身就没内容。70pt 是用得比较多的经验值,但具体要看文档的版式——有的文档页眉很高,有的很低,最好打开一两份实际文档量一下。如果 Excel 是知识表格(比如产品参数对比表),应该写专门的解析逻辑,把每行转成"字段名:值"的格式,这样向量化后语义更清晰。原因是:不同长度的文本,Embedding 向量的幅度可能不同,但语义方向是相似的。缺点是一段话跨了两页,会被截断,语义完整性差。

2026-06-01 21:42:51 239

原创 RAG(一)

大模型局限性一:知识具有时效性,可以外挂知识库让大模型知道实时信息局限性二:训练数据来源于公共区域,对公司的私有知识不感知,可以外挂知识库让大模型知道公司的私有信息,既具有的大模型能力,又具备私有知识,还能过数据隐私审查局限性三:大模型不会对问题承认自己的茫然,他会预测以下话术出现的概率最高而胡编乱造,不保证准确性,三种解法:RAG,fine-tuning,上下文RAG(检索增强生成)每次用户提问时,先从知识库里检索相关内容,把内容一起发给模型,让模型基于这些内容回答。

2026-06-01 21:06:49 395

原创 MCP上下文协议

MCP是AI界的USB标准接口,可以连接数据库,浏览器,GIT,API接口等等。工具方按 MCP 协议暴露服务 → MCP ServerAI 应用按 MCP 协议调用工具 → MCP Client任何 MCP Client 可以连任何 MCP Server,不需要额外适配Function Calling 是 MCP 的底层机制——MCP Server 注册的工具,最终还是通过 Function Calling 的方式被模型调用。MCP 是在上面加了一层标准化的传输和发现协议。

2026-05-31 12:29:56 299

原创 Java并发实用干货

① 拿锁lock() —— 阻塞拿,拿不到就等tryLock() —— 尝试拿,拿不到拉倒tryLock(时间) —— 限时等,超时放弃lockInterruptibly() —— 可中断拿,别人 interrupt 我就停② 还锁unlock() —— 必须释放,成对出现,finally 里最稳③ 高级功能newCondition() —— 创建条件变量,精确唤醒condition对象只有唤醒,阻塞两种方法getHoldCount() —— 当前线程重入次数。

2026-05-29 10:50:49 230

原创 kafka为什么分区不能那么多

生产者调用send方法发送消息时,不会立即发送,而是先进入一个内存缓冲区,其核心结构是一个concurrentmap,以消息的key为key,value是一个deque,也就是说每一个分区都占一个消息队列,消息发送的时机是达到一定时间或者分区满了才会发送,分区越多,数据越难达到满的状态,发送次数越多,网络io越严重,而且分区越多,而且多个分区竞争发送机会是靠reentrantlock+condition来实现的分区越多竞争越激烈,1.生产者内存模型被分区数量击穿。

2026-05-25 17:47:32 145

原创 Java项目常用数据归档方式

2.最小化日志,在某些数据库中可以使用批量日志模式,比逐行insert产生的redo/undo日志少的多,1.无网络往返,数据在服务端直接从源表读取写入目标表,不需要将数据传回客户端,避免网络io,3.无解析优化开销,解析和执行计划只做一次,而逐行insert都要解析,4.批量io,数据库引擎以大块单位读写,属于顺序io,远快于随机io,5.无索引维护逐行代价,目标表的索引更新可以批量合并,而非逐行维护。1.归档快,秒级完成,整个分区操作,方式一,betach分区后导出归档。创建分区表,一般按照时间范围,

2026-05-21 22:31:56 81

原创 agent的左膀右臂---Skill

1.Agent Skill 就是解决这个问题的——把你说过的最好的那段话固化下来,变成 AI 永久拥有的能力,以后自动触发,不用再重复说。PromptRuleSkill对话里临时说的rules/ 文件skills/ 目录当次对话全局持续生效按需触发手动输入自动注入对话匹配触发一次性任务约束 AI 默认行为特定任务流程临时交代公司规章制度员工培训手册● Rule 是"AI 的行为准则"——永远生效,约束它的一切输出。

2026-05-20 19:51:59 293

原创 Vibe Coding,Spec Coding

Vibe Coding是一种新型编程范式,通过自然语言描述需求,由AI工具自动生成代码。其核心特点包括:自然语言驱动、迭代优先、验证导向、人机分工转变(程序员负责架构设计,AI负责实现)。编程辅助工具分为IDE插件类和终端Agent类,后者更适合跨文件的大规模任务。使用Agent类工具时,需预先定义项目规范(技术栈、代码风格等)以确保代码一致性。最佳实践是从Vibe Coding逐步过渡到Spec Coding,即在编码前先编写详细设计文档(功能目标、接口定义、业务规则等),以提高代码质量和可维护性。这种模

2026-05-17 16:36:23 370

原创 K8S快速入门(二)

NFS最大的功能就是在不同节点的不同Pod中共享读写数据。本质是使用本地设备,如磁盘,分区,目录等,hostPath的可用性取决于底层节点的可用性,如果节点变的不健康,那hostPath也将不可访问。临时卷:有些应用程序需要额外的存储,但并不关心数据在重启后是否仍可用,卷会遵从Pod的生命周期,与Pod一起创建和删除。随着Pod创建而创建,Pod在该节点上运行期间,一直存在,当Pod被节点删除时,临时卷中的数据也会被永久删除。持久卷:持久卷是集群中的存储资源,里面的内容不会随着Pod的删除而消失。

2026-03-24 22:02:20 253

原创 K8S快速入门(一)

terminationGracePeriodSeconds 宽限期策略。activeDeadlineSeconds 策略。资源文件参数使用"."分割层级结构关系。restartPolicy 保护策略。获取命名空间下容器(pod)列表。根据资源对象文件运行命令。最基础Pod资源对象文件。查看pod的详细信息。资源对象文件相关帮助。

2026-03-23 21:40:42 69

原创 AI基础设施 AI原生

传统云原生多为无状态微服务,易于水平扩展,和快速启动,AI工作负载通常是有状态的(模型上下文,KV缓存),计算量大且耗时高,且需要高性能计算支持,对低延迟,高吞吐量和连续计算有特殊要求,其功能在于,上下文协调,在不同模型,数据库工具之间交换信息,安全与治理,防止prompt注入,限制敏感任务,人机协同,在关键结点引入人工监督,agent生命周期管理,定义创建部署监控优化。SDD开发流程,规范制定,规划设计,任务分解,实现与测试,部署交付,1.可靠性,2.成本,3.质量,4.合规。

2026-03-18 21:11:55 384

原创 AI 基础设施 上下文工程

在无人工标注的情况下,大模型也可自行判别,ragas评估框架引入了context recall(上下文召回率,类似利用率),context precision(上下文精准率,类似命中率)来表征评估指标,主流的文本分块策略,固定长度切分,自然段切分,滑动窗口切分,语义切分,混合分块策略(采取多种策略,根据段落和查询需要)agent的主要职责在于何时检索,何时生成,支持失败重试,源切换,方法切换,清理冗余上下文冲突,跨工具跨数据源操作。检索评估结果时,通常用上下文命中率,利用率作为核心指标,

2026-03-18 17:00:06 248

原创 AI 基础设施 RAG工程

agentic rag引入可决策的智能体,判断何时需要检索,是否需要重写query,判断检索结果是否足够好,自动多轮推理。检索级指标:检索召回率,检索相关度,索引文档是否命中正确主题,向量相似度平均值,差不多任何有意义文档的比例。让模型读懂海量文本的关键在于将非结构化的文档转化为易检索的向量,通常包括,文档分片,向量化,索引构建。RAG的本质是数据治理,检索策略,提示词工程,性能优化,可观测性,持续评估与迭代。传统rag的不足,是否检索的判断,检索结果质量评估,查询重写,多步推理,

2026-03-16 23:38:50 196

原创 AI 基础设施 MCP

用户发起请求,主机准备上下文(host提供工具列表,环境信息),模型决策与调用(选取合适的工具去调用),客户端转发执行(使用json-rpc2.0协议向服务器发起请求),服务器执行操作(完成任务并返回结果),结果整合与回答(模型基于结果整合输出)核心价值:标准化,统一工具调用语义,可组合,多server协作组成ai应用,可扩展,支持跨语言,跨运行时,可控可观测,具备企业级安全与审计能力。3.服务端,提供具体功能或服务接口,实现mcp规范,暴露工具,资源与提示模板,1.tools ,模型可调用的函数或操作。

2026-03-16 20:27:12 71

原创 AI 基础设施 提示词工程

提示词工程是一个不断迭代的过程,要包含1.试运行提示词,观察效果,2.使用测评集或者人工标注进行误差分析,发现问题,3.结构调整,示例重写,指令收紧,输出约束等持续优化。提示词一般包含这六个部分,1.设定模型的专业角色,2.告诉模型要做什么,3.给出背景知识,限制条件,4.示例,5.输出格式规范,6.语气风格。prompt本质上是任务描述,行为规约,输出约束的组合,优秀的提示词要指令明确,上下文充足,示例有效,格式固定,风格一致,无歧义。输出不一致,相同输入,输出不一致,固定随机种子,使用更具体的模板,

2026-03-16 01:15:54 280

原创 AI 基础知识

训练是模型成长阶段,推理是模型根据知识解决问题过程,推理质量依赖于训练结果,微调是训练的延伸,在预训练模型基础上使用特定数据训练,以增强模型在特定方面的推理能力。预训练就是让模型具备对语言,世界知识,逻辑能力,写作风格等底层能力的上限,形成能读,能写,能生成,能推理的基础智能体。infra层,提供底座支撑:调度,监控,安全与交付,k8s,Aiops,Ai gateway。agent层,具备构建决策与执行能力的智能体,工具编排或mcp协议。rag能在不改变模型的情况下,增强回答能力,保证实时性,准确性,

2026-03-14 09:29:00 295

原创 flask ApI快速上手

Flask是一个轻量级的Python Web应用框架,Flask被称为"微框架",因为它保持核心简单但可扩展,不强制依赖特定的库或工具,给予开发者极大的灵活性和控制力。Flask的主要特点包括:轻量且高效:核心简洁,启动迅速,资源占用低灵活性:不强制特定项目结构或组件选择易于学习:API设计直观,学习曲线平缓可扩展性:通过丰富的扩展生态系统增强功能强大的路由系统:支持URL变量和HTTP方法内置开发服务器:便于本地测试和开发RESTful支持:轻松构建符合REST规范的API。

2026-03-11 19:42:46 585

原创 python重启之路

python 快速上手流程

2026-03-10 22:48:26 68

原创 python目录结构

python项目目录结构

2026-03-08 13:27:30 314

原创 pagehelper设置分页参数导致threadlocal数据污染

使用分页插件时设置分页参数,会存在当前线程池的线程的threadlocal中作为一个临时变量,在这个线程进行下一次分页查询时带上该参数,如果此次查询没有使用这个临时变量,该临时变量,会在该线程的下次查询中带上该参数,然后才会销毁该参数,该事故的特征是自己的接口无影响,下一次的接口有影响,且SQL日志中会出现多的limit的,

2024-11-18 16:07:05 318

原创 Java中相等的情况判断有哪些?

3.在处理金融计算或需要高精度计算时,通常会使用Bigdecimal类的compareTo方法和equals方法,compareTo方法能够比较任意精度的数,比较常用,但两个bigdecimal对象一个为1.00和1.0时,该方法会认为两个对象相同,因此此时需要判断两个对象是否相同时,需要使用equals方法。1.对于基本数据类型可以使用"= =“比较,对于基本类型的包装类型则需要使用equals方法比较,因为”= ="方法比较的是两个引用知否指向同一对象,equals方法则比较的他们的值是否相同。

2024-10-16 10:10:58 974

原创 SQL优化的十五种方式

2024-08-14 17:24:27 264

原创 阿里MySQL建表规范

必须具备update_time,create_time字段,类型为datetime,除非记录时区信息,使用timestamp,必须具备id字段,为bigint unsigned,自增,步长为1,不包含业务意义。主键索引名pk_xxx,唯一索引名uk_xxx,普通索引idx_xxx。常见例如desc,range,match,deloyed等。字符串长度超过5000,设置为text,另存表,进行关联。字符串长度比较长,且长度差异大,使用varchar。5.规范五主键,唯一索引,普通索引命名规范。

2024-08-10 18:26:24 609 1

原创 swagger生成api编写指南

指定调用接口的协议,必须是:“http”, “https”, “ws”, “wss”.默认是http.-表示是个数组元素,即schemes接受一个数组参数。#Swagger会提供测试用例,host指定测试时的主机名,如果没有指定就是当前主机,可以指定端口.。#定义的api的前缀,必须已/开头,测试用例的主机则为:host+bashPath。swagger在线官方编辑器:https://editor.swagger.io/swagger生成api的接口文档yaml版本。描述API接口信息的元数据。

2024-07-26 09:36:54 868

原创 mock测试

用于将@mock标记的模拟变量注入到测试类中,mockitoAnnotations.openmock(this)开启mock,配合以上两个注解进行测试,一般放在@beforeEach中在测试之前开启,相当于,每个测试类都开启了。选着待测试类,右键点击generate,在出现的面板中,选择Junit测试版本,generate选项中的setup/@beforeach,并勾选要测试的方法点击ok,就会在test目录下生成对应的测试目录。被@Spy修饰的对象会走真实的方法,而@mock对象不会,

2024-07-24 15:26:45 453

云原生监控组件,普罗米修斯

云原生监控组件,普罗米修斯

2026-09-10

Kafka必知必会.pdf

Kafka必知必会.pdf

2026-03-08

Kafka面试题(基础+进阶+高阶)_1.pdf

Kafka面试题(基础+进阶+高阶)_1.pdf

2026-03-08

spring IOC学习源码

spring IOC学习源码

2022-02-26

空空如也

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

TA关注的人

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