<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小扳手]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/Tingfeng__</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; Tingfeng__]]></copyright><item><title><![CDATA[游戏后端篇-深入了解跨服结算：幂等怎么做、消息丢了怎么补、账对不上怎么查（附完整实现）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/170729720</link><guid>https://blog.csdn.net/Tingfeng__/article/details/170729720</guid><author>Tingfeng__</author><pubDate>Fri, 13 Nov 2026 15:14:59 +0800</pubDate><description><![CDATA[本文深度解析跨服结算系统的六大核心设计：以“不重、不丢、可对账”为标准，强调结算作为唯一写操作的事务边界必须严格控制。通过幂等键（session_id+uid+biz_type）、本地消息表（outbox）实现可靠投递，强制使用增量更新避免乱序问题，并结合三段式投递与死信机制保障可靠性。代码层面提供完整实现，涵盖幂等、事务、补偿与对账全流程，直击线上事故根源，是一套可直接落地的高可用结算方案。]]></description><category></category></item><item><title><![CDATA[游戏后端篇-深入了解跨服战斗服：固定 tick 怎么跑、无状态怎么做到、快照同步怎么设计（附完整实现）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/170625750</link><guid>https://blog.csdn.net/Tingfeng__/article/details/170625750</guid><author>Tingfeng__</author><pubDate>Thu, 12 Nov 2026 17:19:23 +0800</pubDate><description><![CDATA[本文深入解析战斗服在实时战斗中的核心设计——固定tick循环与无状态架构。澄清“无状态”实为“不可重建状态不可持有”，强调战斗服仅存可丢弃的瞬时与会话状态。通过固定tick（推荐20Hz）确保逻辑一致性与跨设备公平性，采用逻辑时间驱动、雪崩保护与单线程房间模型保障稳定性。关键落地规则包括：数据源自快照、产出仅出结算单、消耗品延后扣减、随机数可复现。状态同步依赖快照+增量+序列号，输入保持避免“卡原地”。最后以机器人压测验证稳定性，最终实现战斗服可丢弃、可扩容、崩溃后作废补偿的高可用架构。]]></description><category></category></item><item><title><![CDATA[游戏后端篇-深入了解跨服路由与会话漂移：断线重连怎么把玩家送回原来那场战斗（附完整代码）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/170494602</link><guid>https://blog.csdn.net/Tingfeng__/article/details/170494602</guid><author>Tingfeng__</author><pubDate>Wed, 11 Nov 2026 10:17:22 +0800</pubDate><description><![CDATA[本文系统解决跨服架构中“玩家位置”管理难题，提出将位置从连接附属信息独立为可查询服务状态。通过定义连接、会话、位置三者分离的模型，设计带epoch版本号的路由表，实现原子状态迁移与顶号防护；采用三级缓存+登录即重建策略应对数据丢失；结合时间常量约束与REDIRECT自愈机制，确保重连后精准定位与状态恢复。代码可运行，强调“位置必须独立存在、写入必走CAS、重连绕过缓存”的工程铁律，为跨服战斗系统提供高可用、低延迟的位置管理方案。]]></description><category></category></item><item><title><![CDATA[游戏后端篇-深入了解跨服数据归属：租约模型怎么抢、怎么续、怎么回收（附完整代码）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/170449445</link><guid>https://blog.csdn.net/Tingfeng__/article/details/170449445</guid><author>Tingfeng__</author><pubDate>Tue, 10 Nov 2026 17:09:25 +0800</pubDate><description><![CDATA[本文聚焦跨服场景下玩家数据写权的唯一性保障，提出以“租约模型”替代传统分布式锁，解决跨服并发写导致的数据丢失或重复问题。通过租约的期限授权、心跳续约与过期回收机制，实现写权的自动仲裁与故障自愈。核心设计包括：基于Redis的原子化租约操作（Lua脚本）、带身份校验的释放、ZSET索引驱动的兜底回收任务，以及针对进程崩溃、网络分区等场景的五类典型坑点防御。强调“不是尽量单写，而是数据库层面禁止第二人写”，并对比结果回源模型，指出适用边界。最后提供测试方案与生产落地建议，确保系统在极端情况下仍能保持数据一致性。]]></description><category></category></item><item><title><![CDATA[游戏后端篇-深入了解跨服架构：为什么分区分服的游戏还要「跨服」？（三种拓扑 + 一次跨服进入的完整时序）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/170445255</link><guid>https://blog.csdn.net/Tingfeng__/article/details/170445255</guid><author>Tingfeng__</author><pubDate>Tue, 10 Nov 2026 15:43:51 +0800</pubDate><description><![CDATA[本文深入剖析跨服架构的核心矛盾——“人要聚，数据要分”，指出区服本质是运营单位而非技术容量单位。通过三种拓扑演进（单世界、分区分服+跨服中心、统一网关+无状态服务），强调主流方案B的合理性。核心提出“单一写入者”原则，解析跨服关键问题：租约管理、路由表维护、结算幂等。以真实场景为例，详解跨服进入时序与三大必解难题，为中后期游戏跨服设计提供可落地的架构思路与代码骨架。]]></description><category></category></item><item><title><![CDATA[扣子AI：零代码打造治愈奶奶视频工作流]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/162493873</link><guid>https://blog.csdn.net/Tingfeng__/article/details/162493873</guid><author>Tingfeng__</author><pubDate>Thu, 02 Jul 2026 16:28:45 +0800</pubDate><description><![CDATA[十分钟让你学会使用国内 coze 平台通过工作流的方式，从而快速生成抖音爆火视频]]></description><category></category></item><item><title><![CDATA[LangChain+FastAPI打造全能AI助手]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/162277966</link><guid>https://blog.csdn.net/Tingfeng__/article/details/162277966</guid><author>Tingfeng__</author><pubDate>Thu, 25 Jun 2026 13:46:15 +0800</pubDate><description><![CDATA[本文介绍了基于LangChain和FastAPI构建的智能体服务框架，整合工具调用、知识检索、记忆管理和提示词模板四大核心模块。系统支持计算器、网页搜索、天气查询等工具调用，基于ChromaDB的RAG知识检索，会话级别的记忆管理，以及7种场景化提示词模板。文章详细阐述了各模块的技术实现，包括分层记忆结构设计、文档分块与向量化存储流程、工具调用机制（function calling）以及流式对话处理。该框架通过ReAct模式实现&quot;思考-行动-观察&quot;循环，支持同步和SSE流式响应，适用于构]]></description><category></category></item><item><title><![CDATA[SpringBootWeb 篇-深入了解 ThreadLocal 存在内存泄漏问题]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/151261639</link><guid>https://blog.csdn.net/Tingfeng__/article/details/151261639</guid><author>Tingfeng__</author><pubDate>Sat, 06 Sep 2025 21:02:02 +0800</pubDate><description><![CDATA[ThreadLocal的内存泄漏问题及解决方案。ThreadLocal为每个线程提供独立存储空间，其Map结构采用弱引用key以减少泄漏风险，但仍需手动remove清理。在线程池环境下，线程复用会导致ThreadLocalMap持续存在，若不及时清理将引发内存泄漏；而普通线程执行完毕后，ThreadLocalMap会随线程销毁自动回收。文章建议：1）使用后必须remove()；2）静态ThreadLocal实例需特别关注；]]></description><category></category></item><item><title><![CDATA[Web 毕设篇-适合练手的 Spring Boot Web 毕业设计项目：智驿AI系统（前后端源码 + 数据库 sql 脚本）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/148544220</link><guid>https://blog.csdn.net/Tingfeng__/article/details/148544220</guid><author>Tingfeng__</author><pubDate>Tue, 10 Jun 2025 21:55:16 +0800</pubDate><description><![CDATA[开发工具：IDEA、VScode服务器：Tomcat， JDK 17项目构建：maven数据库：mysql 8.0系统用户前台和管理后台两部分，项目采用前后端分离前端技术：vue3 + elementUI服务端技术：springboot + mybatis + redis + mysql]]></description><category></category></item><item><title><![CDATA[SpringAI 大模型应用开发篇-纯 Prompt 开发（舔狗模拟器）、Function Calling（智能客服）、RAG （知识库 ChatPDF）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/148159269</link><guid>https://blog.csdn.net/Tingfeng__/article/details/148159269</guid><author>Tingfeng__</author><pubDate>Sat, 24 May 2025 19:11:17 +0800</pubDate><description><![CDATA[本文介绍了大模型应用开发的四种主要技术框架：1. 纯Prompt模式：通过精心设计的提示词工程实现应用功能，详解了指令优化、任务拆解、输出格式控制等核心策略，以及防范提示注入、越狱攻击等安全措施。2. Function Calling模式：结合大模型与传统应用能力，通过定义工具函数实现业务逻辑，以智能客服案例展示了课程推荐与预约系统的完整实现流程。3. RAG模式（检索增强生成）：通过向量模型将知识库内容向量化存储，实现专业知识的检索与回答，包含PDF文档处理、向量数据库应用等技术细节。]]></description><category></category></item><item><title><![CDATA[SpringAI 大模型应用开发篇-SpringAI 项目的新手入门知识]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/148142825</link><guid>https://blog.csdn.net/Tingfeng__/article/details/148142825</guid><author>Tingfeng__</author><pubDate>Thu, 22 May 2025 17:59:06 +0800</pubDate><description><![CDATA[SpringAI是一个基于Spring框架的AI开发工具，专为Java开发者设计，能够与Spring生态无缝集成。与基于Python的LangChain相比，SpringAI更适合使用Spring框架的Java项目。使用SpringAI需要JDK17和SpringBoot 3.x版本，而LangChain4j则支持JDK8。大模型应用开发通过API接口与模型交互，企业可以选择使用开放API、云平台部署或本地部署大模型。SpringAI的配置包括在pom.xml中添加依赖。]]></description><category></category></item><item><title><![CDATA[Java 面试篇-SSM 框架专题（什么是 AOP？Spring 中事务时如何实现的？事务失效的场景？Spring 中循环引用怎么解决？Springboot 的自动配置原理？Spring 常见注解？）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/145545501</link><guid>https://blog.csdn.net/Tingfeng__/article/details/145545501</guid><author>Tingfeng__</author><pubDate>Mon, 10 Feb 2025 16:16:59 +0800</pubDate><description><![CDATA[AOP，即面向切面编程，在 Spring 中用于将那些与业务无关但对多个对象产生影响的公共行为和逻辑抽取出来，实现公共模块复用，降低耦合。常见的应用场景包括公共日志保存和事务处理。]]></description><category></category></item><item><title><![CDATA[Java 面试篇-MySQL 专题（如何定位慢查询、如何分析 SQL 语句、索引底层数据结构、什么是聚簇索引？什么是非聚簇索引？知道什么是回表查询？什么是覆盖索引？事务的特性、并发事务带来的问题？）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/145509370</link><guid>https://blog.csdn.net/Tingfeng__/article/details/145509370</guid><author>Tingfeng__</author><pubDate>Sun, 09 Feb 2025 11:18:42 +0800</pubDate><description><![CDATA[可以在 MySQL 的系统配置文件中开启慢查询日志，并设置 SQL 执行时间超过多少就记录到日志文件中，比如说项目设置的是 2 秒，超过这个时间的 SQL 就会记录在日志文件中，我们就可以在日志文件中找到执行慢的 SQL 语句。在使用索引时，遵循索引创建原则，确保索引字段是查询频繁的，使用复合索引覆盖 SQL 返回值，避免在索引上进行运算或类型转换，以及控制索引数量。非聚簇索引则是数据与索引分开存储，B+ 树的叶子节点保存的是主键值，可以有多个非聚簇索引，通常可以自定义的索引都是非聚簇索引。]]></description><category></category></item><item><title><![CDATA[Java 面试篇-Redis 专题（Redis 常见的面试专题：缓存击穿、缓存雪崩、缓存穿透、什么是布隆过滤器、什么是延时双删、持久化的方式、Redis 分布式锁、I/O 多路复用等等）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/145438558</link><guid>https://blog.csdn.net/Tingfeng__/article/details/145438558</guid><author>Tingfeng__</author><pubDate>Fri, 07 Feb 2025 11:20:41 +0800</pubDate><description><![CDATA[缓存穿透是指查询一个一定不存在的数据，由于存储层查不到数据，因此不写入到缓存中，这将导致这个不存在的数据每次请求都要到 DB 去查询，可能导致 DB 挂掉。这种情况大概率是遭到了攻击。解决方案的话，一般来说有两种：第一种是缓存空对象；第二种是使用布隆过滤器来解决。布隆过滤器主要是用来检索一个元素是否在一个集合中。当时使用的是 Redisson 实现的布隆过滤器。它的底层原理是，先是初始化一个比较大的数组，里面存放的是二进制 0 或 1。]]></description><category></category></item><item><title><![CDATA[博客之星2024年度-技术总结：技术探险家小板的一年的征程]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/145290544</link><guid>https://blog.csdn.net/Tingfeng__/article/details/145290544</guid><author>Tingfeng__</author><pubDate>Tue, 21 Jan 2025 21:33:47 +0800</pubDate><description><![CDATA[欢迎来到 2024 年的技术回顾之旅！这一年，我就像一位勇敢的探险家，在技术的广袤世界中穿梭，从数据库的深渊到微服务的云端，从消息队列的迷宫到分布式事务的挑战。这趟旅程充满了惊喜和发现，也伴随着无数次深夜的“啊哈”时刻。今天，就让我们一起回味这段激动人心的技术冒险吧！        想象一下，我们正站在一个神秘的魔法森林前——这就是关系型数据库的世界。在这个充满魔力的地方，每一片树叶都代表着一条记录，每一棵大树都是一个表。而我们的任务是掌握这片森林的秘密，让数据如溪流般顺畅流动。]]></description><category></category></item><item><title><![CDATA[微服务篇-深入了解 XXL-JOB 分布式任务调度的具体使用（XXL-JOB 的工作流程、框架搭建）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/144719853</link><guid>https://blog.csdn.net/Tingfeng__/article/details/144719853</guid><author>Tingfeng__</author><pubDate>Wed, 25 Dec 2024 17:04:30 +0800</pubDate><description><![CDATA[具体是通过 JobHandler 来确定任务逻辑，指定 @XxlJob("demoJobHandler") 注解中的 demoJobHandler 来确定。启动服务之后，访问 "localhost:8080/xxl-job-admin"，默认端口号是 8080 ，默认的登录账号。定义一个逻辑任务，使用 @XxlJob("demoJobHandler") 注解，使用该注解标记到方法上，且。port：表示当前执行器的端口，主要作用是：给调用中心发送信息给执行器所用到的端口号。]]></description><category></category></item><item><title><![CDATA[微服务篇-深入了解 MinIO 文件服务器（你还在使用阿里云 0SS 对象存储图片服务？教你使用 MinIO 文件服务器：实现从部署到具体使用）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/144676908</link><guid>https://blog.csdn.net/Tingfeng__/article/details/144676908</guid><author>Tingfeng__</author><pubDate>Tue, 24 Dec 2024 10:07:07 +0800</pubDate><description><![CDATA[MinIO 是一个高性能的对象存储服务器，专门设计用来处理大规模的非结构化数据。它提供与 Amazon S3（简单存储服务）兼容的 API，使得开发人员和运维团队能够轻松实现数据存储和管理。以下是 MinIO 的一些关键特点和概述：        1）高性能：MinIO 具有极高的吞吐量，能够支持大规模的并发请求，适用于需要快速处理大量数据的应用场景，如机器学习和数据分析等。        2）易于部署：MinIO 可以在多种环境中部署，包括本地服务器、虚拟机、容器（如 Docker和 Kubernetes]]></description><category></category></item><item><title><![CDATA[Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目：教室信息管理系统（前后端源码 + 数据库 sql 脚本）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/144492225</link><guid>https://blog.csdn.net/Tingfeng__/article/details/144492225</guid><author>Tingfeng__</author><pubDate>Tue, 17 Dec 2024 15:15:36 +0800</pubDate><description><![CDATA[（1）用户信息管理：添加、修改、删除、查询等功能。（2）角色信息管理：添加、修改、删除、查询等功能。(1) 角色信息管理：添加、修改、删除、分配权限等功能。(1) 教室设施信息：添加、修改、删除、查询等功能。（1）教室使用记录：添加、修改、删除、查询等功能。(1) 教室管理：添加、修改、删除、查询等功能。(1) 教师管理：添加、修改、删除、查询等功能。(1) 课程管理：添加、修改、删除、查询等功能。(1) 设施管理：添加、修改、删除、查询等功能。(1) 课程安排：添加、修改、删除、查询等功能。]]></description><category></category></item><item><title><![CDATA[Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目：药品进销存信息管理系统（前后端源码 + 数据库 sql 脚本）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/144491503</link><guid>https://blog.csdn.net/Tingfeng__/article/details/144491503</guid><author>Tingfeng__</author><pubDate>Sun, 15 Dec 2024 20:32:36 +0800</pubDate><description><![CDATA[（1）用户信息管理：添加、修改、删除、查询等功能。（2）角色信息管理：添加、修改、删除、查询等功能。(1) 角色信息管理：添加、修改、删除、分配权限等功能。(1) 供应商信息管理：添加、修改、删除、查询等功能。(1) 采购登记管理：添加、修改、删除、查询等功能。(1) 销售记录管理：添加、修改、删除、查询等功能。(1) 退货记录管理：添加、修改、删除、查询等功能。(1) 库存变动管理：添加、修改、删除、查询等功能。(1) 药品管理：添加、修改、删除、查询等功能。对药品进行采购、销售、调整都会进行记录。]]></description><category></category></item><item><title><![CDATA[微服务篇-深入了解 Elasticsearch DSL 查询和 RestClient 查询、数据聚合（Bucket 聚合、带条件聚合、Metric 聚合）]]></title><link>https://blog.csdn.net/Tingfeng__/article/details/144331278</link><guid>https://blog.csdn.net/Tingfeng__/article/details/144331278</guid><author>Tingfeng__</author><pubDate>Wed, 11 Dec 2024 15:09:19 +0800</pubDate><description><![CDATA[导入了大量数据到 Elasticsearch 中，实现了数据的存储。不过查询数据时依然采用的是根据 id 查询，而非模糊搜索。        所以来研究下 Elasticsearch 的数据搜索功能。Elasticsearch 提供了基于 JSON 的 DSL（Domain Specific Language）语句来定义查询条件，其 JavaAPI 就是在组织 DSL 条件。举个例子：        查询所有数据：        以最简单的无条件查询为例，无条件查询的类型是：match_all]]></description><category></category></item></channel></rss>