<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fans2306的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fans2306</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fans2306]]></copyright><item><title><![CDATA[agent harness详解]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/170201612</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/170201612</guid><author>fans2306</author><pubDate>Fri, 06 Nov 2026 23:34:54 +0800</pubDate><description><![CDATA[我觉得 Agent Harness 这个方向有意思的地方在于，它和传统后端工程有很多相通之处。任务调度、状态管理、权限控制、执行环境隔离、日志追踪，这些本来就是后端系统中比较成熟的技术。只不过现在需要把它们应用到一个新的场景里：让大模型能够持续地执行复杂任务。之前我们可能更关注模型本身有多强，Prompt 写得好不好，RAG 检索是否准确。但现在随着 Agent 能力越来越强，模型之外的工程问题也开始变得突出。]]></description><category></category></item><item><title><![CDATA[【操作系统】哲学家就餐问题实现详解]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/157098426</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/157098426</guid><author>fans2306</author><pubDate>Sun, 18 Jan 2026 15:36:35 +0800</pubDate><description><![CDATA[互斥条件：资源不可共享占有且等待：进程已经持有至少一个资源，同时请求新的资源不可剥夺：已分配资源不能被抢走循环等待：存在一个环，每个进程都在等待下一个持有的资源。]]></description><category></category></item><item><title><![CDATA[银行家算法安全序列问题详解 【面试/考试必备】]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/157098319</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/157098319</guid><author>fans2306</author><pubDate>Sun, 18 Jan 2026 15:22:54 +0800</pubDate><description><![CDATA[安全序列 = 一个进程执行顺序，使得每个进程最终都能获得所需资源并完成系统在安全状态下一定存在安全序列找到安全序列就是证明系统不会死锁不存在安全序列 → 系统可能进入死锁。]]></description><category></category></item><item><title><![CDATA[并发安全的轮询下标设计：用取模消灭越界与状态依赖]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/156833896</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/156833896</guid><author>fans2306</author><pubDate>Sun, 11 Jan 2026 19:33:35 +0800</pubDate><description><![CDATA[在工程中，有一类问题看起来非常简单，但一旦放进的环境中，就会变成隐藏极深的 bug 温床。这篇文章记录我在实际项目中，总结出的一个。]]></description><category></category></item><item><title><![CDATA[用 semaphore 限制 Go 项目单机并发数的一次流量控制优化实践]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/156833506</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/156833506</guid><author>fans2306</author><pubDate>Sun, 11 Jan 2026 19:10:30 +0800</pubDate><description><![CDATA[/ 限制单机最大并发数这里的20CPU 核心数单任务 CPU / 内存占用实际压测结果得到的一个相对稳定区间值。启动阶段任务密集容错要求低于在线请求非常适合用硬限流兜底即使上层已经做了拆批 / 分阶段执行：semaphore 仍然是防止误配置、误改代码的安全网。]]></description><category></category></item><item><title><![CDATA[分布式事务详解]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/153690352</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/153690352</guid><author>fans2306</author><pubDate>Tue, 21 Oct 2025 15:28:00 +0800</pubDate><description><![CDATA[在单体系统中，事务（Transaction）通常由数据库本身保证——ACID（原子性、一致性、隔离性、持久性）特性足以覆盖大多数业务需求。然而，随着系统拆分为多个微服务后，一个完整的业务流程往往需要多个服务、多个数据库的协作。当某个步骤失败时，反向调用补偿逻辑（C3、C2、C1）回滚。：性能开销大、资源锁定时间长，难以应对高并发。：开发成本高，需要业务方显式实现三种接口。：补偿逻辑复杂，不适合强一致性场景。：消息补偿、重复投递需额外处理。：易于理解，适合长事务场景。：业务可控，补偿逻辑灵活。]]></description><category></category></item><item><title><![CDATA[ZooKeeper vs Redis：分布式锁的实现与选型指南]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/151222794</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/151222794</guid><author>fans2306</author><pubDate>Fri, 05 Sep 2025 14:46:08 +0800</pubDate><description><![CDATA[Redis 分布式锁基于内存操作，其核心思想是在内存中设置一个唯一的键值对来表示锁的持有。]]></description><category></category></item><item><title><![CDATA[PXM的JAVA并发编程学习总结]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/151221330</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/151221330</guid><author>fans2306</author><pubDate>Fri, 05 Sep 2025 13:46:42 +0800</pubDate><description><![CDATA[进程是程序的一次执行过程，是系统运行程序的基本单位，因此进程是动态的。系统运行一个程序即是一个进程从创建，运行到消亡的过程。在 Java 中，当我们启动 main 函数时其实就是启动了一个 JVM 的进程，而 main 函数所在的线程就是这个进程中的一个线程，也称主线程。线程与进程类似，但是是一个更小的执行单位，一个进程运行时可以产生多个线程，但是同一个进程的线程之间会共享堆和方法区，而进程与进程之间时相互隔离的。所以系统创建和运行线程的开销比进程小很多。]]></description><category></category></item><item><title><![CDATA[RabbitMQ消息堆积问题排查：concurrentConsumers 配置的坑与解决方案]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/151112545</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/151112545</guid><author>fans2306</author><pubDate>Tue, 02 Sep 2025 14:31:49 +0800</pubDate><description><![CDATA[• concurrentConsumers：初始并发消费者数• maxConcurrentConsumers：最大并发消费者数• 两者需要配合使用，只设置最大值不会生效。]]></description><category></category></item><item><title><![CDATA[Docker部署Spring Cloud微服务实战]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/150422611</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/150422611</guid><author>fans2306</author><pubDate>Fri, 15 Aug 2025 16:38:54 +0800</pubDate><description><![CDATA[在之前的springcloud项目打包实战中，我们已经学会了如何把springcloud中的应用打包成jar包，但是用jar包运行有很大的缺点，比如如果你想要把它放到Linux服务器上运行，你必须下载linux对应版本的jdk，再者，如果你还想顺带一起部署中间件，如mysql,redis,这些中间件在各个平台都有不同的安装包和部署方式，非常难以部署。为了降低运维难度，可以使用docker来进行部署。我们当然首先要学会如何打包和使用jar包，如果不会的话。]]></description><category></category></item><item><title><![CDATA[你的 Maven 打包姿势过时了吗？​Maven打包spring cloud微服务实战解析]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/150394349</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/150394349</guid><author>fans2306</author><pubDate>Thu, 14 Aug 2025 16:59:25 +0800</pubDate><description><![CDATA[在 Java 开发中，Maven 是最常用的项目管理工具之一，它不仅能管理依赖，还能自动化构建、测试和打包项目，相信maven的依赖管理功能很多人已经会熟练使用了，这次正好使用一下maven的打包功能。]]></description><category></category></item><item><title><![CDATA[gitlab仓库如何进行多人协作]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/150389204</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/150389204</guid><author>fans2306</author><pubDate>Thu, 14 Aug 2025 14:28:13 +0800</pubDate><description><![CDATA[使用gitlab仓库是工作和项目开发中的必备技能，它的使用和github的开源PR机制有所不同，这样设计是为了拥有更加精细的权限设计。]]></description><category></category></item><item><title><![CDATA[Spring cloud集成ElastictJob分布式定时任务完整攻略（含snakeyaml报错处理方法）]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/150351734</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/150351734</guid><author>fans2306</author><pubDate>Wed, 13 Aug 2025 17:33:23 +0800</pubDate><description><![CDATA[ElasticJob 适合分布式场景，Zookeeper 是其注册中心核心组件。推荐Java API 启动任务，方便在 Spring Boot 中集成。SnakeYAML 报错可通过版本统一或自定义 Representer解决。我是PXM，点个关注不迷路。]]></description><category></category></item><item><title><![CDATA[spring gateway配合nacos实现负载均衡]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/150339336</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/150339336</guid><author>fans2306</author><pubDate>Wed, 13 Aug 2025 10:45:53 +0800</pubDate><description><![CDATA[再编辑这个实例的配置，用同样的找到添加虚拟机选项设置，并写上-Dserver.port=新端口号，我们就有两台同样的服务了。接下来我们在idea里面找到服务列表，右键现有demo服务->编辑所选配置->修改选项->允许多个实例。我们在配置文件中写上相应的路由配置，假设我们已经配置了一个名为demo的服务。我的网关服务部署在8888端口，我们提前写好相关接口/user/test。代表要去掉的地址数，意味着在我进行路由转发的时候要去掉/demo。然后我们建立一个服务，并引入。这个配置代表负载均衡，]]></description><category></category></item><item><title><![CDATA[spring-cloud整合nacos详细攻略]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/150275860</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/150275860</guid><author>fans2306</author><pubDate>Tue, 12 Aug 2025 17:07:05 +0800</pubDate><description><![CDATA[在下载并部署了nacos以后，我们可以用它作为spring-cloud的注册中心和配置中心。其中config.import下面就是要引入的配置文件列表，以nacos:开头。命名空间id和命名空间名称不是同一个东西，本人被这个坑点卡了半天。接下来我们要去nacos中复制命名空间id。说明服务成功被nacos识别并注册。有如上服务说明成功读取了配置。]]></description><category></category></item><item><title><![CDATA[nacos 3.x配置攻略]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/150273801</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/150273801</guid><author>fans2306</author><pubDate>Tue, 12 Aug 2025 16:25:18 +0800</pubDate><description><![CDATA[首先检查环境里是否有jdk17+并且在官网下载压缩包解压后打开并进入bin目录即可看到成功界面我们进入localhost:8080这个页面，就能进行配置管理了，注意首次进入会让你输入密码。点击左侧命名空间，我们新建一个命名空间接下来再在命名空间里写入相应配置现在我们就能使用别的应用来进行整合，我的下一篇博客将介绍如何用springcloud进行配置发现。]]></description><category></category></item><item><title><![CDATA[【Java后端】Quartz任务调度核心机制详解：从基础编排到动态控制]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/150207237</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/150207237</guid><author>fans2306</author><pubDate>Mon, 11 Aug 2025 10:02:24 +0800</pubDate><description><![CDATA[建议将本文代码示例与您实际的业务场景结合，通过合理的线程池配置和持久化方案，可轻松应对日均百万级任务调度的需求。对于更复杂的节假日调度场景，可参考Quartz Calendar的官方文档实现。// 创建任务数据容器。]]></description><category></category></item><item><title><![CDATA[Spring Boot异常处理翻车？3步搞定全局异常捕获，让你的API稳如老狗！]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/150065980</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/150065980</guid><author>fans2306</author><pubDate>Fri, 08 Aug 2025 15:01:27 +0800</pubDate><description><![CDATA[为了统一接口返回格式，并方便携带错误码和错误信息，这里定义一个泛型响应类@Data// 成功响应// 错误响应Controller 层直接返回统一了接口格式，方便前后端对接明确了错误码避免返回异常信息时出现类型转换错误统一返回格式，便于前端处理减少重复的 try-catch 代码方便日志记录与问题排查相比使用，AOP 的方式更灵活，可以结合切点选择性地对某些包或类生效，适合需要细粒度控制的场景。]]></description><category></category></item><item><title><![CDATA[3分钟掌握Redis分布式Map核心黑科技！]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/150059791</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/150059791</guid><author>fans2306</author><pubDate>Fri, 08 Aug 2025 11:33:19 +0800</pubDate><description><![CDATA[Rmap可以当作一个用Redis实现的跨JVM的ConcurrentHashMap。]]></description><category></category></item><item><title><![CDATA[别再被卡住了！Coze Studio 开源版本地部署 5 分钟搞定（含完整踩坑指南 适配windows系统）]]></title><link>https://blog.youkuaiyun.com/fans2306/article/details/149699411</link><guid>https://blog.youkuaiyun.com/fans2306/article/details/149699411</guid><author>fans2306</author><pubDate>Mon, 28 Jul 2025 01:23:10 +0800</pubDate><description><![CDATA[就代表你的 Coze Studio 成功跑起来了！这是 Windows 用户常见问题！，多个项目的网络、容器可能会冲突。服务启动后，以下几个容器退出（觉得写的不错的话点个关注不迷路。用 VS Code 打开。如果你有多个项目都叫。]]></description><category></category></item></channel></rss>