- 博客(38)
- 收藏
- 关注
原创 深入理解 LLM 的“思考工具“:从零实现 ReasoningTools
本文介绍了如何为AI Agent开发"内部思考空间"工具think和analyze,以解决复杂推理问题。think用于执行前的计划(如拆解需求、制定策略),analyze用于执行后的评估(如验证结果、决策下一步)。通过多步推理链示例(如笔记本电脑推荐场景),展示了工具如何协作实现结构化思考:先规划、再执行、后评估,循环迭代直至得出可靠结论。这种机制使AI推理过程透明可控,提升复杂问题的处理能力。
2025-12-05 15:43:46
898
原创 构建一个更稳定、更聪明的 PDF 翻译 Agent:从踩坑到总结
(1)任务要求(Task)任务是否具体?判断逻辑是否明确?模糊示例:根据用户意向判断是否要精准翻译。清晰示例:当用户输入中包含“精准”“准一点”等关键词时,采用精准翻译模式,否则使用普通翻译。(2)输出格式(Format)输出是 JSON、Markdown、自然语言还是函数调用?如果是 JSON,要定义清楚 Schema。(3)风格与语气(Style)输出语气是专业、友好、简洁还是详细?模糊示例:输出一段安抚用户的回复。
2025-11-02 23:56:27
763
原创 AI Agent的未来之争:任务规划,该由人主导还是AI自主?
最近读到阿里云发布的一篇技术文章,主题是关于 AI Agent 的任务规划——到底应该由人主导,还是由 AI 自主完成。在我自己的开发过程中,经常会遇到类似的问题:在编写 Agent 的提示词(Prompt)时,往往需要明确地定义流程,否则 Agent 可能无法完整地执行任务。但当任务数量增多时,如果每个任务都需要我手动编写流程,就会出现“规则爆炸”的问题,这与传统的 workflow 几乎没有区别。这篇文章恰好从实践角度探讨了相同的议题,让我对 Agent 的任务规划方式有了更深入的理解。
2025-10-26 20:40:33
776
原创 为什么 ChatGPT 和 DeepSeek 都不能直接从网址下载文件?
所以啊,ChatGPT、DeepSeek 不是“笨”,它们只是被有意“关在笼子里”。因为对一个公共 AI 服务来说,安全永远比功能重要。如果真要让它“自由上网、自己下文件”,那必须是你自己控制的环境,不然平台根本扛不住风险。所以,下次看到它说“我不能直接从 URL 下载文件”,不用奇怪——这是在保护它自己,也是保护你。
2025-10-22 09:28:29
2994
原创 Agno Agent 服务端文件上传处理机制
最近实习在做 AI Agent 的时候,出现了一个上传文件的场景:你要上传一个文件,让 AI 帮你处理这个文件。那么在这个场景下,我生出来一个疑问:文件是怎么上传的?
2025-10-20 16:04:37
694
原创 Spring 编程式事务实战:一套数据库 + Redis 的强一致性方案
Spring 的编程式事务没那么高大上,但真的是一个好工具 —— 简单、灵活、实用,尤其适合控制欲比较强的业务场景。如果你正在处理:需要强一致性的操作;想捕获异常但又不希望事务提前提交;多个系统(数据库 + Redis、消息队列)之间的业务流程;试试这套写法,可能比你想象的更稳。
2025-07-23 10:15:00
501
原创 Spring 事务通俗全解:从注解到编程式事务,一文吃透!
事务(Transaction)就是一组要么全部成功、要么全部失败的操作。典型场景比如转账:从A扣钱、往B加钱,任何一步出错都要回滚,不能只做一半。事务虽然看起来简单,加个注解就完事,但底层其实涉及到 AOP、代理、传播机制、异常处理等多个细节,理解了这些,能帮你避开很多坑,也能写出更健壮的业务代码。如果你看到这里,说明你已经基本掌握了 Spring 事务的精髓,后面深入比如事务传播异常分析、事务日志分析等,就可以轻松上手了。
2025-07-21 11:10:27
379
原创 你了解工厂模式吗?什么时候使用工厂模式?
工厂模式是一种创建型的设计模式,用来封装对象的创建逻辑,将实例化的过程从调用者中抽离出来,交给专门的工厂进行处理。
2025-06-20 11:21:45
245
原创 MyBatis-Plus 泛型设计:为什么 ServiceImpl 必须显式指定实体类型?
需要知道“快递员是谁”(Mapper)和“快递是什么东西”(实体),虽然快递员负责快递,但公司不能仅凭快递员的身份就推断快递类型,必须明确告知两者对应关系。本文将从 Java 泛型机制和 MyBatis-Plus 设计角度,帮你全面解析这个问题。,编译器无法确认这些方法的参数和返回类型。可以通过反射获得泛型参数类型。因此,MyBatis-Plus 设计时只能。理论上,如果 Java 泛型推断更智能,的原始类型,没法反射得到具体类型。这要求子类必须显式写出泛型参数。虽然无法编译时自动推断,但。
2025-06-19 14:26:08
504
原创 MySQL 中 INSERT ... ON DUPLICATE KEY UPDATE 为什么会导致主键自增失效?
最近开发的过程中,使用ai生成代码,写了一条这样的SQL:INSERT … ON DUPLICATE KEY UPDATE,然后发现一个奇怪的现象:为什么使用这个语法后,自增主键(AUTO_INCREMENT)的值会跳跃甚至失效?
2025-06-17 13:22:47
374
原创 ThreadLocal为什么会导致内存泄漏(详细讲解)
key 被回收后,Entry 里的 key 为 null,但 Entry 本身仍被 ThreadLocalMap 引用,而 value 是 Entry 的普通强引用,因此 value 依然可达,不会被回收。现在对threadLocal内存泄漏的原理是不是会清晰一点。
2025-06-12 16:09:01
1074
原创 接地气的方式认识JVM(一)
最近在学jvm,浮于表面的学了之后,发现jvm并没有我想象中的那么神秘,这篇文章将会用接地气的方式来说一说这些jvm的相关概念以及名词解释。带着下面两个问题来阅读。
2025-05-28 16:30:26
1037
原创 idea和cursor快速切换
作者分享了在IDEA和Cursor之间高效切换的开发技巧。通过使用"switch2cursor"插件(IDEA)和"switch2idea"插件(Cursor),只需快捷键Alt+Shift+O就能实现两个IDE间的无缝切换,并自动保持当前编辑类的同步,有效解决了不同开发环境下类文件不一致的问题,提升了开发效率。文末附有插件使用效果图。
2025-05-25 18:44:03
2720
1
原创 Future,Callable,CompletableFuture是什么?
文章主要介绍了Java中三个与异步任务处理相关的类:Future、Callable和CompletableFuture。Future用于表示异步任务的结果,通过get()方法获取返回值,解决了多线程下任务结果获取的复杂性问题。Callable表示一个可以被线程异步执行且有返回值的任务,弥补了Runnable无法返回结果和抛出异常的缺陷。CompletableFuture是Future的升级版,支持更强大的异步任务处理,如链式调用、任务组合和异常处理,通过回调机制实现非阻塞操作。文章通过外卖的比喻,形象地解释
2025-05-13 21:22:41
932
原创 基于AQS实现Reentrantlcok
我们知道ReentrantLock是可重入的锁,主要的核心是state,他是一个原子性的整数,我们只需要将获取锁的代码boolean由false到true变成0->1即可完成。在完成删除逻辑时如果锁的state>1我们就将state–,而不用释放锁,否则,我们释放这个锁即可。下面是详细的代码,修改自我之前的文章:70行代码手写AQS,感兴趣的可以去看看;以后面对面试官问起这个问题时,可以大大方方的说,我会!这次来补充上一次AQS还没有实现的可重入锁部分!
2025-05-09 20:48:07
216
原创 Java锁的升级流程详解:无锁、偏向锁、轻量级锁、重量级锁
在Java中,为了在多线程并发场景下既保证线程安全,又尽可能提高性能,JVM针对synchronized实现了锁的优化升级机制。锁可以从无锁逐步升级到偏向锁、轻量级锁,最后是重量级锁。话不多说,发车!
2025-04-28 20:40:04
687
原创 80行代码从零手写AQS(渐渐深入)
/ 使用 AtomicBoolean 实现一个自旋锁,初始为未加锁状态(false)// 获取锁的方法// 如果当前为未加锁状态(false),尝试将其设置为加锁状态(true)// compareAndSet 是原子操作,避免多线程竞争导致的问题return;// 加锁成功,返回// 否则继续自旋尝试获取锁// 释放锁的方法// 如果当前为加锁状态(true),尝试将其设置为未加锁状态(false)return;// 解锁成功,返回。
2025-04-24 13:16:12
272
原创 什么是可重入锁和不可重入锁(包含ReentrantLock解析)?
在之前的一次面试当中,被面试官狠狠拷打的一番juc,奈何我的juc学的一塌糊涂,今天在补juc的知识突然想到一个问题,什么是可重入锁和不可重入锁?以及为什么可重入锁的出现是为了解决什么问题?话不多说,发车!AQS是一个抽象类,主要就是为锁和同步器构建了一个通用功能的实现,用AQS的包括有ReentrantLock,Semaphore等都是基于ReentrantLock的。
2025-04-16 15:19:30
600
原创 记录一次小小的代码低级错误
今天写代码的时候被学长叫去,说代码写的有点问题,原来是在遍历的时候进行了sql查询导致每一遍历一个对象都要进行一个sql查询,真正的做法是先查询一个list,再根据list进行一个匹配就行。果然,这样的小错误在自己开发的时候发现不了,只有在真正实践的时候,才能发现自己的不足啊。
2025-04-15 16:56:27
232
原创 键入网址到网页显示,期间发生了什么?
最近再次回看之前的计算机网络的知识,发现忘记了许多小的知识点,看来还是要多看多理解啊这篇博客我们主要来讲一讲 从键入网址到网页显示,期间都发生了什么???正好趁着这个将计算机网络的知识串一串,不要让知识东一块西一块了老规矩 思维导图 启动!
2025-04-14 17:49:51
1101
1
原创 Redis高可用之集群(超详细)
Cluster模式是Redis的一种高级集群模式,它通过数据分片和分布式存储实现了负载均衡和高可用性。在Cluster模式下,Redis将所有的键值对数据分散在多个节点上。每个节点负责一部分数据,称为槽位。通过对数据的分片,Cluster模式可以突破单节点的内存限制,实现更大规模的数据存储。
2025-04-13 15:20:04
1640
原创 一篇文章带你学透布隆过滤器
以下定义来自百度百科:布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困难。从上述定义我们可以得到以下关键信息:布隆过滤器是由很长的二进制向量(即可以理解成很长的0、1数组)与一系列随机映射函数(Hash函数)构成。布隆过滤器的作用是检索一个元素是否存在我们的集合之中。
2025-04-09 17:11:32
342
原创 RabbitMQ的重复消费问题
2.消费者成功消费,但是ack丢失–这种情况在网络不好的时候会发生。1.消费者宕机,消息队列没收到ack,重新将消息分发给其他人。3.消费者重连,再次发送消息给这个消费者。
2025-04-09 11:30:00
368
原创 使用redis实现热榜数据的储存
首先我们要了解redis中的数据结构:zsetzset有三个属性 key num score下面以文章和文章的阅读量举例key为viewcount num为knowledgeId score为阅读量。
2025-04-07 08:36:18
248
原创 双非大三勇闯实习之总结
此外,在自己的项目中实现了 Redis 分布式锁,使用用户唯一标识作为 Redis 的 key,将 JVM ID 作为 value 存储,在查询用户唯一标识之前上锁,插入数据完成后解锁。今天主要编写了学长布置的任务,学到了在编写关联表的更新(update)业务时,首先需要删除关联表中的数据,然后进行插入操作。以前只是了解过它的概念,今天终于在实际工作中使用了一次,才真正理解了它的强大和灵活,代码的结构也变得更简洁了。以后写好接口了最好自己测明白了再给前端,数据库内容也弄的好好的方便前端使用,不要麻烦别人!
2025-04-02 10:44:56
936
原创 初步了解JVM
1、启动类加载器(Bootstrap ClassLoader)加载核心类2、扩展类加载器(Extension ClassLoader)加载扩展类3、应用程序类加载器(Application ClassLoader)加载应用classpath中的类4、自定义类加载器,重写findClass方法。JDK9及之后扩展类加载器(Extension ClassLoader)变成了平台类加载器(Platform引用计数法和可达性分析法。
2025-04-02 10:35:50
887
原创 java注解的底层原理是什么?
用于描述代码(类、方法、字段、参数等)的。Java 代码在编译后,注解会被存储在。文件,仅用于编译器处理。,不会直接影响代码执行。
2025-03-20 17:20:32
1114
原创 Java中的深拷贝和浅拷贝
浅拷贝和深拷贝的区别主要在于引用的类型拷贝的是地址还是拷贝的是对象;如果拷贝的是地址的话,拷贝后,修改对象,那么这个拷贝的对象也会变;如果拷贝的不是地址的话,拷贝后,修改对象,对拷贝的对象没有影响;
2025-03-20 16:34:42
169
原创 Spring Cloud Stream 配置及使用(以 RabbitMQ 为例)
Spring Cloud Stream 是 Spring 提供的消息驱动微服务框架,它将消息中间件(如 RabbitMQ、Kafka)与 Spring Boot 结合,简化了消息的生产和消费过程。生产者和消费者,并专注于业务逻辑,而不需要管理 RabbitMQ 连接、交换机、队列等。Spring Cloud Stream 需要连接 RabbitMQ,可以在。在 Spring Cloud Stream 3.x 版本中,推荐使用。RabbitMQ 默认会丢弃消费失败的消息。如果消费失败,消息会进入。
2025-03-17 21:49:30
1892
1
原创 Java中volatile关键字的使用以及在单例模式下的使用
单例模式(Singleton Pattern)是一种设计模式,旨在保证一个类只有一个实例,并提供一个全局访问点来获取该实例。换句话说,单例模式确保在整个应用程序生命周期内某个类只有一个对象实例存在,且该实例可以在任何地方被访问。
2025-01-23 11:10:34
2040
原创 Hutool之props.toBean();
方法使得将属性文件的内容直接映射到 Java Bean 成为可能,并且可以通过前缀过滤需要的配置项。该方法简化了手动获取属性和设置 Bean 的过程,使得代码更加简洁,特别适用于配置文件的读取和管理。
2025-01-23 10:52:06
693
原创 Java中的反射
反射是 Java 提供的动态机制,它能够在运行时获取类的信息,并调用方法、访问字段。结合你提供的代码,反射在实现 RPC 请求的过程中发挥了重要作用,使得。
2025-01-23 10:39:13
1545
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅