摘要: 缓存与数据库更新顺序不一致问题 核心结论先摆出来:先更新数据库、再删除缓存(Cache Aside) 是通用读缓存场景下唯一可取的顺序。但它给你的不是强一致,而是"把不一致窗口压到工程可接受"。真正兜住底线的是三样东西:TTL 过期、删除失败的重试、以及不要在事务提交前删缓存。如果业务真的要求缓存与数据库强一致,那么正确的动作往往 阅读全文
posted @ 2026-09-04 18:12 devpotato 阅读(5) 评论(0) 推荐(0)
摘要: Java 批量并发请求:从“能并发“到“结果按完成顺序可用“的三种写法与选型 一句话结论:Future、CompletionService、CompletableFuture 都能把串行请求变并发,但只有后两者能让你按完成顺序拿到结果。而在真实线上系统里,决定这段代码是否可靠的,往往不是选了哪个 API,而是线程池、超时预算、异常语义和可观测性这四件事有没有做对。 一、从一个 阅读全文
posted @ 2026-09-04 17:26 devpotato 阅读(4) 评论(0) 推荐(0)
摘要: 一、先把两个概念分清楚:size 和 capacity 聊 ArrayList 扩容之前,先区分两个容易混淆的概念: size:当前列表中实际存放的元素个数。 capacity:底层数组 elementData 的长度,也就是当前最多能容纳多少个元素而不触发扩容。 这两个值不是一回事。 List<S 阅读全文
posted @ 2026-06-02 22:18 devpotato 阅读(40) 评论(0) 推荐(0)
摘要: 缓存一致性问题 计算机在运行程序时,每条指令都是在CPU中执行的,在执行过程中会涉及到数据的读写。我们知道程序运行的数据是存储在主存中,这时就会有一个问题,读写主存中的数据没有 CPU 中执行指令的速度快,如果任何的交互都需要与主存打交道则会大大降低效率,所以就有了 CPU寄存器、各级缓存、主存构成 阅读全文
posted @ 2026-05-13 22:25 devpotato 阅读(198) 评论(0) 推荐(0)
摘要: 大模型“幻觉”(Hallucination)通常被解释为:模型生成了一段看似流畅、连贯、甚至很有说服力的内容,但其中包含与事实不符、与上下文不一致,或者无法被可靠依据验证的信息。 通俗地说,它就是“一本正经地胡说八道”。 但如果从工程角度看,幻觉的问题不只是“模型答错了”。真正危险的是:模型会用非常 阅读全文
posted @ 2026-05-12 23:00 devpotato 阅读(140) 评论(0) 推荐(0)
摘要: 你一定见过这种场景: 你问 ChatGPT:"我叫小明。" 它答:"你好,小明。" 再问:"我叫什么名字?" 它答:"你是小明。" 看起来 AI "记住了"你——但你知道吗?大模型本身是没有记忆的。它记住你名字的唯一方法,就是你每次请求时,把之前所有对话又重新传了一遍给它。 这就是多轮对话的本质。看 阅读全文
posted @ 2026-05-11 22:27 devpotato 阅读(134) 评论(0) 推荐(0)
摘要: 基于上篇文章:用 LangChain4j 手写一个能思考 + 行动的 Agent,本篇文章我们来开发SSE(Server-Sent Events)实现方式。 目录 一、SSE 流式:让 Agent 像 ChatGPT 一样"边想边说" 二、生产级要点:安全、可观测、成本控制 三、踩坑清单与调优技巧 阅读全文
posted @ 2026-05-11 22:24 devpotato 阅读(112) 评论(0) 推荐(0)
摘要: 要让 AI 真正"有用",它必须学会行动——调工具、查数据、改系统、发请求。 这一篇,我们就从 CoT 一步步演进到 ReAct(Reasoning + Acting),然后用 Java + Spring Boot + LangChain4j + SSE 从零手写一个能思考、能行动、能流式响应的 M 阅读全文
posted @ 2026-05-11 22:23 devpotato 阅读(122) 评论(0) 推荐(0)
摘要: CoT 是近几年大模型"变聪明"最核心的底层机制之一,是 Self-Consistency、Tree of Thoughts、Graph of Thoughts、ReAct、Agent 的共同基石。 这篇文章我们就把 CoT 彻底拆开: 它为什么有效?背后的直觉和论文是什么? 它有哪几类?怎么用? 阅读全文
posted @ 2026-05-08 22:28 devpotato 阅读(199) 评论(0) 推荐(0)
摘要: 最近在给一个 Spring Boot 服务接入 mTLS 时,遇到了一个比较容易误导人的问题:本地调试正常,但服务部署到 Kubernetes Pod 后,访问 mTLS 接口失败,并出现下面的异常。 Caused by: java.io.IOException: keystore password 阅读全文
posted @ 2026-05-01 22:47 devpotato 阅读(132) 评论(0) 推荐(0)