<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Apple_Boy的博客]]></title><description><![CDATA[吃苹果的程序员]]></description><link>https://blog.youkuaiyun.com/belongtocode</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; belongtocode]]></copyright><item><title><![CDATA[从“怎么写”到“写得好不好”：Prompt 工程师的设计框架与评测方法论]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/168448699</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/168448699</guid><author>belongtocode</author><pubDate>Sat, 24 Oct 2026 13:16:53 +0800</pubDate><description><![CDATA[本文系统阐述了结构化Prompt工程的核心方法与评测闭环。通过RTF、ICIO、CRISPE、CO-STAR、TIDD-EC、BROKE等六大框架，从基础表达到复杂任务，层层递进地解决“角色不清、任务模糊、输出失控”等问题。强调提示词设计应聚焦角色、任务、背景、格式四大核心要素，倡导灵活混搭使用。同时提出“设计→测试→评估→优化”的迭代流程，主张将大模型视为协作伙伴，以科学提示提升输出质量，实现高效精准的AI交互。]]></description><category></category></item><item><title><![CDATA[一文看懂 AI 提示词：别只会问问题，真正关键的是让模型“按你的方式思考”]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/161466792</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/161466792</guid><author>belongtocode</author><pubDate>Fri, 26 Jun 2026 10:53:27 +0800</pubDate><description><![CDATA[文章摘要： 本文从程序员视角解析AI提示词（Prompt）的设计与优化。提示词是给AI的任务说明书，包含角色、任务、背景、约束和输出格式五要素。好的提示词能显著提升AI回答的准确性和实用性。设计时需明确角色视角（如Java工程师或产品经理）、具体任务目标（如优化接口性能）、上下文背景（如技术栈和业务场景）、约束条件（如不涉及前端）和输出格式（如Markdown表格）。日常使用中，可通过拆解任务、提供正反例、分步分析等技巧优化提示词，避免模糊提问导致泛泛回答。程序员应避免将AI当作搜索引擎或一次性解决复杂问题]]></description><category></category></item><item><title><![CDATA[一文看懂大模型底层原理：从“学知识”到“吐 Token”，它到底在做什么？]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/161462646</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/161462646</guid><author>belongtocode</author><pubDate>Wed, 17 Jun 2026 16:21:40 +0800</pubDate><description><![CDATA[大模型从训练到应用主要经历三个阶段：预训练阶段通过海量文本学习语言规律和知识；微调阶段通过监督学习和强化学习使模型适应问答任务；推理阶段将输入文本转换为Token并经过多层Transformer计算生成回答。整个过程涉及分词、向量化、注意力机制等关键技术，最终通过采样策略输出符合人类预期的回答。这三个阶段环环相扣，共同构成了大模型的核心工作流程。]]></description><category></category></item><item><title><![CDATA[别只会调 API！ 程序员必须搞懂的大模型基础知识在这里]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/161400430</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/161400430</guid><author>belongtocode</author><pubDate>Mon, 01 Jun 2026 22:41:52 +0800</pubDate><description><![CDATA[摘要： 大语言模型（LLM）是海量数据、深度学习与超强算力训练的产物，本质是通过Transformer架构预测下一个词。其核心是自注意力机制，支持并行计算与全局语义关联。参数量达千亿级（如GPT-3）的模型展现出涌现能力，能完成未明确训练的任务（如编程、数学）。技术原理上，LLM通过分词、向量化、注意力机制逐步生成文本。开发者可通过API调用（如Spring AI）快速集成模型能力，应用于文本生成、代码审查等多场景。理解底层逻辑有助于突破“提示词工程师”局限，高效利用AI工具。]]></description><category></category></item><item><title><![CDATA[【部署实战】一文搞懂！SpringBoot + 前端项目上线，Nginx 到底是怎么做请求转发的？]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/158968848</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/158968848</guid><author>belongtocode</author><pubDate>Sun, 24 May 2026 21:25:28 +0800</pubDate><description><![CDATA[本文用通俗易懂的方式讲解了Nginx反向代理的工作原理和两种常见部署配置。主要内容包括： 反向代理概念：Nginx作为"前台接待员"，统一接收请求并智能转发到前端或后端服务，用户无需知道具体端口号。 两种部署方式详解： 前后端分离部署（推荐）：Nginx分别配置静态资源路径和API代理 前后端一体化部署：所有请求直接转发给Spring Boot 配置示例和请求流程解析，说明Nginx如何解决跨域问题。 通过类比和图示，帮助读者直观理解Nginx的转发机制。 文章适合刚接触项目部署的开发者快速掌握Nginx的]]></description><category></category></item><item><title><![CDATA[问了好几个 AI 都没解决！IDEA 打开项目依赖全飘红，Reload 就好——这个玄学问题的真正原因在这里]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/161258919</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/161258919</guid><author>belongtocode</author><pubDate>Thu, 21 May 2026 17:30:58 +0800</pubDate><description><![CDATA[摘要： 文章分享了作者在IDEA中遇到的Maven依赖报错问题：每次打开项目时依赖爆红，但点击Reload后恢复正常。经过多次排查发现，IDEA未正确读取Maven的settings.xml配置，导致默认使用C盘仓库而非指定的E盘路径。最终解决方案是将settings.xml复制到Maven默认用户目录（C:\Users\用户名\.m2\），确保配置稳定生效。文章总结了Maven配置优先级及常见误区，强调IDEA显示配置与实际生效配置可能不一致，建议将配置文件放在默认位置以避免类似问题。]]></description><category></category></item><item><title><![CDATA[【踩坑实录】LEFT JOIN 条件放 ON 还是 WHERE？带你从 SQL 执行顺序看透本质]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/158661168</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/158661168</guid><author>belongtocode</author><pubDate>Wed, 04 Mar 2026 20:03:30 +0800</pubDate><description><![CDATA[摘要 本文通过实例分析LEFT JOIN中过滤条件放在ON和WHERE子句的差异。核心结论： ON条件在连接时过滤右表，不影响左表数据保留； WHERE条件在连接后过滤，会剔除不符合条件的行，破坏LEFT JOIN保留左表的特性。 测试数据表明： 写法A（ON b.num!=0）正确保留所有用户，仅过滤右表无效订单； 写法B（WHERE b.num!=0）错误丢失用户，因NULL值被过滤。 补救方案（补IS NULL条件）仍不等价，因无法区分&quot;无订单&quot;和&quot;订单无效&quot;场]]></description><category></category></item><item><title><![CDATA[面试官：说说线程的阻塞、等待和自旋的区别？我：就这？]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/156066158</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/156066158</guid><author>belongtocode</author><pubDate>Fri, 19 Dec 2025 09:24:48 +0800</pubDate><description><![CDATA[本文通过生动的生活案例和深入的技术解析，清晰阐述了Java线程的三种等待方式： 阻塞（Blocked）：被动等待锁释放，如synchronized竞争失败，线程被挂起不消耗CPU资源 等待（Waiting）：主动放弃资源（调用wait()/park()），需其他线程唤醒，同样不消耗CPU 自旋（Spinning）：持续循环检测（如CAS），保持运行状态消耗CPU但响应最快 通过火锅店排队等位的比喻，形象说明了三种方式的区别：傻站排队（阻塞）、留号逛街（等待）、不停询问（自旋）。技术层面则从触发方式、CPU消]]></description><category></category></item><item><title><![CDATA[不只是关键词匹配：AI如何像人类一样‘听懂‘你在说什么]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/150640873</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/150640873</guid><author>belongtocode</author><pubDate>Sun, 24 Aug 2025 23:31:46 +0800</pubDate><description><![CDATA[“嘿 Siri，你真的懂我吗？” 当你和AI聊天、翻译时，有没有好奇过这台冰冷的机器究竟如何听懂我们复杂又善变的人类语言？这背后可不是魔法！

本文将用最生动的比喻，带你一步步揭开AI语言理解的神秘面纱。你将了解到，AI如何像搭建乐高一样拆解句子，如何在一个巨大的“词语宇宙”中为每个词定位，以及它如何施展“注意力”大法，精准理解你的真实意图。

这不只是一篇技术科普，更是一场有趣的探秘之旅。读完它，你将彻底看透智能对话背后的逻辑。准备好成为那个真正“懂AI”的人了吗？点进来，一起揭晓答案！]]></description><category></category></item><item><title><![CDATA[AI那几个高大上的名词，我替你弄明白了：聊聊RAG、MCP和Agent]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/150059664</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/150059664</guid><author>belongtocode</author><pubDate>Fri, 08 Aug 2025 11:24:10 +0800</pubDate><description><![CDATA[面对RAG、MCP、Agent这些天书般的AI术语，你是否也感到头大？别担心，这篇文章不讲生硬定义，而是用一个“技术老友”的口吻，带你认识三位有趣的AI“角色”。

你会发现，确保AI不说谎的RAG，其实是一位严谨的“学霸图书管理员”；让AI能调用各种工具的MCP，就像一把“万能瑞士军刀”；而最酷的Agent，则是一位能独立思考、主动办事的“全能秘书”。

想知道这AI“三剑客”是如何分工协作，共同构建起强大智能的吗？点击阅读，让你彻底理清思路，轻松看懂AI的未来趋势。]]></description><category></category></item><item><title><![CDATA[告别混淆：如何精准找出两个Git分支间“真正”的差异？]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/149257965</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/149257965</guid><author>belongtocode</author><pubDate>Sun, 03 Aug 2025 13:24:58 +0800</pubDate><description><![CDATA[如何优雅比较Git分支差异？本文介绍了从简单到复杂的解决方案。基本方法使用git log branchA..branchB比较分支差异，但需要注意远程分支需先git fetch。针对cherry-pick导致的提交重复问题，推荐使用--cherry-pick参数和三点语法...来正确识别差异。文章还提供了实用命令模板，包含作者筛选、排除合并提交等常用参数组合，帮助开发者高效对比分支代码差异，避免踩坑。掌握这些技巧能大幅提升分支管理效率。]]></description><category></category></item><item><title><![CDATA[Git代码合并两大神器：Merge 对决 Cherry-pick，你真的用对了吗？]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/149258244</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/149258244</guid><author>belongtocode</author><pubDate>Sun, 27 Jul 2025 19:17:26 +0800</pubDate><description><![CDATA[文章摘要：Git中的代码合并主要涉及git merge和git cherry-pick两种方式。前者用于合并整个分支，保留完整历史记录，适合功能开发完成后的合并；后者则可以精准选取单个提交，适合紧急修复或少量改动同步。两者各有优劣：merge保持历史完整性但可能混乱，cherry-pick灵活但可能丢失上下文或造成重复提交。选择原则是&quot;功能用merge，修复用cherry-pick&quot;。理解两者的区别和适用场景，能帮助开发者更高效地管理代码提交历史。]]></description><category></category></item><item><title><![CDATA[当Metadata失效时：我是如何从2000张手机自拍照片里“考古“出真实拍摄时间的?]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/147622286</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/147622286</guid><author>belongtocode</author><pubDate>Tue, 06 May 2025 20:39:23 +0800</pubDate><description><![CDATA[而对于如何识别图片的拍摄信息呢？这里有一个Java库：metadata-extractor，它用于从媒体文件中提取元数据。它支持多种格式的元数据，包括EXIF、IPTC、XMP、ICC以及其他可能在单个图像中存在的元数据格式。这个库可以处理多种类型的文件，包括JPEG、TIFF、WebP、WAV、PSD、PNG、BMP、GIF、HEIF (HEIC & AVIF)、ICO、PCX、QuickTime、MP4、Camera Raw等。]]></description><category></category></item><item><title><![CDATA[MySQL深度分页：当千万级数据遇上“翻页卡顿”，如何优雅化解？]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/147194828</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/147194828</guid><author>belongtocode</author><pubDate>Sun, 13 Apr 2025 20:43:06 +0800</pubDate><description><![CDATA[MySQL 的深度分页性能问题，根源往往在于导致的大量数据扫描和回表操作。理解了“回表”的代价，我们就能更有针对性地进行优化。子查询+主键定位：通过子查询利用索引覆盖找到起始ID，避免了对跳过数据的大量回表，是有效的优化手段。游标分页：是更彻底、性能更优的方案，通过传递上一页的边界ID实现高效分页，值得在项目中优先考虑。]]></description><category></category></item><item><title><![CDATA[MySQL索引悖论：为什么MySQL加索引有时不如无索引快？]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/146769232</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/146769232</guid><author>belongtocode</author><pubDate>Sun, 30 Mar 2025 17:22:28 +0800</pubDate><description><![CDATA[当使用二级索引进行查询，且需要获取索引中未包含的字段时，MySQL需要进行回表操作：通过二级索引找到主键值，再通过主键值查询完整记录。令我惊讶的是，第一条使用了索引条件的SQL语句执行速度竟然比不使用索引条件的慢！当索引扫描成本 > 全表扫描成本时，就会出现使用索引反而更慢的情况。)上，当我给查询语句加上索引条件时，查询速度反而变慢了。这个过程中，"回表"操作是非常耗时的，特别是当需要回表1500000次时。最近在进行项目数据库优化时，我遇到了一个很有趣的现象。字段建立了索引，为什么带条件的查询反而更慢？]]></description><category></category></item><item><title><![CDATA[互联网千万级别大数据量如何在本地模拟生成？采用MySQL存储过程轻松实现]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/146425343</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/146425343</guid><author>belongtocode</author><pubDate>Sun, 23 Mar 2025 21:53:10 +0800</pubDate><description><![CDATA[用户表 (users包含了200万个用户，每个用户有一个独一无二的user_id。数据字段包括user_name和user_email，统一随机。订单表 (orders每个用户随机生成1-5个订单，订单与用户通过user_id关联。每笔订单随机生成表示订单总金额。订单详情表 (每笔订单有1-5条随机的订单详情，包括商品名称、数量和价格。数据提供关联测试。]]></description><category></category></item><item><title><![CDATA[Java异常堆栈分析：菜鸟老手的必备技能]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/146262603</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/146262603</guid><author>belongtocode</author><pubDate>Sun, 16 Mar 2025 16:44:20 +0800</pubDate><description><![CDATA[调用链的方向：异常堆栈信息是从出错的地方开始（最顶部）一路追溯到最外层调用。对于初学者来说，最重要的是首先查看堆栈顶部的那一行，因为它告诉你异常实际发生的位置，然后沿着调用链向上找出异常的传递路径。调试技巧：比如当遇到空指针异常时，首先要学会堆栈过滤：关注自己编写的类（排除JDK和第三方库），然后可以根据堆栈信息迅速定位到具体的代码行（IntelliJ：点击堆栈行号跳转到源码），从而查找变量是否为null、方法调用是否有误等问题。对照代码和堆栈信息，可以发现错误原因并及时修复。]]></description><category></category></item><item><title><![CDATA[RabbitMQ常见问题持续汇总]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/143218211</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/143218211</guid><author>belongtocode</author><pubDate>Thu, 24 Oct 2024 20:13:04 +0800</pubDate><description><![CDATA[是用于发送消息失败后的重试机制，针对的是消息的生产者（发送端）。是用于消费消息时处理失败后的重试机制，针对的是消息的消费者（监听端）。]]></description><category></category></item><item><title><![CDATA[不止于方案，用代码示例讲解RabbitMQ顺序消费]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/142437523</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/142437523</guid><author>belongtocode</author><pubDate>Sun, 22 Sep 2024 15:13:23 +0800</pubDate><description><![CDATA[关于消息队列（MQ）顺序消费的讨论比比皆是，网上一搜便是铺天盖地的文章。然而，很多文章只是浅谈思路，对于具体的代码实现却往往一笔带过，让许多开发者（包括我）感到一头雾水。所以有时候空谈方案不来点代码理解一下就等于纸上谈兵~根据业务需要，定义多个队列和与之相关的交换机，比如3个队列，那么他们并发度也相比原来的一个队列提升了2倍！注意每个队列定义的时候也要声明为单活模式！// 定义交换机@Bean// 定义多个队列，假设有三个队列@Bean//最主要的区别就是声明了这个队列是单活模式。]]></description><category></category></item><item><title><![CDATA[不止于纸上谈兵，用代码案例分析如何确保RabbitMQ消息可靠性？]]></title><link>https://blog.youkuaiyun.com/belongtocode/article/details/141404972</link><guid>https://blog.youkuaiyun.com/belongtocode/article/details/141404972</guid><author>belongtocode</author><pubDate>Tue, 17 Sep 2024 13:01:53 +0800</pubDate><description><![CDATA[1.如果消息没有到exchange,则confirm回调,ack=false2.如果消息到达exchange,则confirm回调,ack=true3.exchange到queue成功,则不回调return4.exchange到queue失败,则回调return(需设置mandatory=true,否则不回回调,消息就丢了)Confirm 模式：确保消息成功到达交换机，适用于消息是否被成功接收的确认。性能较好，使用异步确认机制，但需要处理消息未被成功确认的情况。Return 模式。]]></description><category></category></item></channel></rss>