<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ab123768的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ab123768</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ab123768]]></copyright><item><title><![CDATA[three.js 完整笔记]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/168103451</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/168103451</guid><author>ab123768</author><pubDate>Fri, 16 Oct 2026 09:11:42 +0800</pubDate><description><![CDATA[three.js 完整笔记摘要（≤150字）： Three.js 是基于 WebGL 的开源 JavaScript 3D 库，可直接在浏览器中创建交互式 3D 内容。核心三要素为场景、相机与渲染器，支持几何体、材质、灯光、动画及模型导入（首选 glTF/GLB）。常用功能包括轨道控制器、光照阴影、射线拾取、性能优化（如 InstancedMesh、LOD）与后期特效。配合 Blender 建模、GLTFLoader 加载，结合 OrbitControls 与 AnimationMixer 可实现复杂交互与骨]]></description><category></category></item><item><title><![CDATA[Spring WebSocket（STOMP）]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/167808351</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/167808351</guid><author>ab123768</author><pubDate>Tue, 13 Oct 2026 15:55:41 +0800</pubDate><description><![CDATA[Spring WebSocket结合STOMP子协议实现服务端主动向客户端推送实时消息。WebSocket通过HTTP握手升级双向TCP长连接；STOMP提供发布订阅模型，通过destination目的地路由消息。本文包含完整后端配置、广播消息、一对一私聊代码，前端stomp.js示例、SockJS降级、心跳保活，区分内置SimpleBroker与RabbitMQ外部Broker，整理生产踩坑点与面试题，适合实现实时通知、在线聊天、大屏数据推送。]]></description><category></category></item><item><title><![CDATA[Docker Compose 完整详解]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/167806212</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/167806212</guid><author>ab123768</author><pubDate>Tue, 13 Oct 2026 14:56:36 +0800</pubDate><description><![CDATA[Docker Compose 是单机环境下管理多容器应用的工具，通过 YAML 配置文件定义服务、网络、数据卷等。核心功能包括一键启动/停止多容器，自动创建隔离网络（服务间可通过服务名互访），支持 image（拉取远程镜像）或 build（本地构建）二选一配置。数据持久化使用 volume（Docker 管理）或 bind mount（宿主机目录挂载）。注意：replicas 仅在 Docker Swarm 中生效，单机需手动定义多个 service 实现多实例。推荐使用新版 docker compose ]]></description><category></category></item><item><title><![CDATA[乐观锁（MyBatis-Plus）]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/167793652</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/167793652</guid><author>ab123768</author><pubDate>Tue, 13 Oct 2026 11:32:48 +0800</pubDate><description><![CDATA[乐观锁通过版本号机制防止并发更新丢失，MyBatis-Plus中需在表添加version字段，实体类标注@Version，并注册OptimisticLockerInnerInterceptor插件。仅对带实体的updateById等方法生效，不支持纯Wrapper更新。适用于读多写少场景，高并发下易失败，不适合库存扣减等频繁争抢场景。]]></description><category></category></item><item><title><![CDATA[MyBatis-Plus 知识点整理]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/167792364</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/167792364</guid><author>ab123768</author><pubDate>Tue, 13 Oct 2026 11:19:09 +0800</pubDate><description><![CDATA[MyBatis-Plus是MyBatis的增强工具，简化持久层开发，实现基础CRUD无需编写SQL。通过@TableName、@TableId、@TableField注解实现实体与数据库映射；Mapper继承BaseMapper获取内置CRUD方法；使用Wrapper（推荐Lambda版）拼接条件；分页需配置插件；支持逻辑删除、自动填充、乐观锁等扩展功能。复杂SQL仍可结合原生XML，兼容性强。]]></description><category></category></item><item><title><![CDATA[Eclipse Paho 完整详细笔记]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/167787489</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/167787489</guid><author>ab123768</author><pubDate>Tue, 13 Oct 2026 10:50:55 +0800</pubDate><description><![CDATA[Eclipse Paho 是物联网领域事实标准的 MQTT 客户端 SDK，支持多语言（Python、Java、C、Go 等），封装了 QoS、KeepAlive、SSL/TLS、遗嘱消息、保留消息等核心协议特性。采用回调驱动模型，实现设备与 Broker 的高效通信。推荐使用新版 CallbackAPIVersion.VERSION2，支持 MQTT5.0 新特性如 Reason Code、Properties、共享订阅等。关键实践包括：重连后自动订阅、避免回调阻塞、启用持久化会话、合理设置 Client]]></description><category></category></item><item><title><![CDATA[MQTT笔记]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/167666132</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/167666132</guid><author>ab123768</author><pubDate>Mon, 12 Oct 2026 09:39:47 +0800</pubDate><description><![CDATA[本文系统梳理MQTT协议核心要点：主流版本为MQTT 3.1.1与5.0，后者支持共享订阅、原因码、用户属性等增强功能。核心概念包括会话管理（Clean Start）、主题通配符、保留消息、遗嘱消息及QoS分级（0/1/2）。报文机制基于固定格式，支持心跳保活与安全认证（TLS/ACL）。适用于物联网数据上报、设备控制等场景，不适用于大文件传输或复杂事务处理。对比Kafka与WebSocket，MQTT更适配低带宽、高并发的嵌入式设备通信。]]></description><category></category></item><item><title><![CDATA[Spring Integration 完整笔记 + 和 spring-integration-mqtt、Paho、EMQX 的关系]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/167367137</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/167367137</guid><author>ab123768</author><pubDate>Sat, 10 Oct 2026 16:15:49 +0800</pubDate><description><![CDATA[Spring Integration是基于EIP的企业级消息集成框架，统一使用Message（含头与体）模型实现跨系统数据流转。核心组件包括MessageChannel、Adapter、MessageHandler等。其本身不支持MQTT，需依赖spring-integration-mqtt扩展模块，该模块封装Paho客户端，提供MQTT In/Outbound Adapter，将原始协议消息转换为标准Message并传递至流水线。整体架构中，Paho负责底层通信，spring-integration-mq]]></description><category></category></item><item><title><![CDATA[OpenCV 学习笔记]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/167269173</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/167269173</guid><author>ab123768</author><pubDate>Thu, 08 Oct 2026 11:25:54 +0800</pubDate><description><![CDATA[本文介绍OpenCV基础应用，涵盖视频读取、图像预处理（灰度化、RGB转换、缩放、高斯模糊）、绘图（画框、加文字）及截图保存。重点强调BGR与RGB通道差异、资源释放必要性，并指出仿真场景下可直接使用内存图像数组替代VideoCapture。代码演示完整流程，适用于目标检测与答辩可视化。]]></description><category></category></item><item><title><![CDATA[Nginx网关完整知识点]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/166559919</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/166559919</guid><author>ab123768</author><pubDate>Thu, 24 Sep 2026 08:39:13 +0800</pubDate><description><![CDATA[Nginx网关基于Master-Worker架构，1个Master进程管理配置与进程，多个Worker进程（建议等于CPU核心数）单线程处理请求，依托epoll实现高并发。核心能力包括反向代理、负载均衡（轮询/加权/IP哈希）、限流（共享内存计数）、缓存（proxy_cache）、SSL终止等。支持平滑重载，无中断更新配置。优点为高性能、低内存、稳定性强；缺点是动态逻辑弱，仅支持被动健康检查。面试高频点涵盖worker数量、共享内存作用、惊群效应及配置陷阱。]]></description><category></category></item><item><title><![CDATA[Kafka生产者高可靠机制完整学习笔记]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/166559350</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/166559350</guid><author>ab123768</author><pubDate>Thu, 24 Sep 2026 08:29:44 +0800</pubDate><description><![CDATA[Kafka生产者高可靠配置组合：acks=all + retries=3 + enable.idempotence=true，确保消息至少投递一次且不重复。acks=all保障主副本及所有同步副本写入成功；retries=3实现临时故障自动重试；幂等生产者通过PID+序列号机制，拦截重复消息，防止重试导致的重复写入。配合retry.backoff.ms=500避免重试风暴，delivery.timeout.ms=120000兜底超时。该组合实现生产端不丢不重，达到发送环节的精确一次语义（Exactly On]]></description><category></category></item><item><title><![CDATA[重试退避（retry backoff）]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/166494882</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/166494882</guid><author>ab123768</author><pubDate>Thu, 24 Sep 2026 08:08:10 +0800</pubDate><description><![CDATA[Kafka生产者通过重试退避机制应对发送失败：retries=3最多重试3次，每次间隔500ms，避免瞬间重试风暴；开启enable.idempotence=true确保重试不产生重复消息；delivery.timeout.ms=120000设置120秒超时兜底，超时后消息进入死信队列（DLQ）并告警，保障系统稳定与消息可靠性。]]></description><category></category></item><item><title><![CDATA[Kafka全套核心术语]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/166375157</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/166375157</guid><author>ab123768</author><pubDate>Tue, 22 Sep 2026 23:57:58 +0800</pubDate><description><![CDATA[Kafka核心术语涵盖生产者、消费者、Broker集群与ZooKeeper协调服务。消息按Topic逻辑分类，通过Partition物理分片实现高并发，同Key消息保序。每个Partition有Leader与Follower副本保障高可用。消费者组内通过Offset记录消费位置，支持Rebalance动态分配分区。关键机制包括acks确认、消息保留策略、DLQ死信队列及异步发送（CompletableFuture）。这些概念共同支撑Kafka的高性能、可扩展与可靠性。]]></description><category></category></item><item><title><![CDATA[Spring Data MongoDB Repository 对比笔记]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/166375121</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/166375121</guid><author>ab123768</author><pubDate>Tue, 22 Sep 2026 23:55:11 +0800</pubDate><description><![CDATA[Spring Data MongoDB Repository 通过接口方法名自动生成查询，无需XML，继承基础CRUD，实体用注解映射；MyBatis需手写SQL与映射文件，灵活但繁琐。前者适合MongoDB快速开发，后者适用于关系型数据库复杂查询场景。]]></description><category></category></item><item><title><![CDATA[Kafka & RabbitMQ 死信队列（DLQ）超全整合笔记]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/166375061</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/166375061</guid><author>ab123768</author><pubDate>Tue, 22 Sep 2026 23:51:11 +0800</pubDate><description><![CDATA[本文系统梳理Kafka与RabbitMQ死信队列（DLQ）核心机制，对比二者在原生支持、触发条件、实现方式及适用场景上的差异。RabbitMQ基于DLX原生自动路由死信，配置即用；Kafka则需业务手动捕获异常、管理Offset并投递至指定Topic，灵活性高但侵入性强。总结：RabbitMQ适合轻量延时任务，Kafka适用于高并发流式处理，生产中需结合监控告警、上下文携带与重放补偿，确保异常消息可追溯、可修复、可补偿。]]></description><category></category></item><item><title><![CDATA[1004 To Buy or Not to Buy - Hard Version]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/159811757</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/159811757</guid><author>ab123768</author><pubDate>Wed, 08 Apr 2026 12:00:17 +0800</pubDate><description><![CDATA[int new_extra = cur_extra; // 记录购买当前商店后的额外量 int new_rest_need = rest_need; // 记录购买后剩余需求 vector&lt;int&gt; temp_need = cur_need; // 临时副本用于回溯 // 购买第i个商店的珠子，更新需求和额外量 for (auto&amp; [color, count] : shop_bead[i]) { if (temp_need[color] &gt; 0) { // 满足部分需求 int ]]></description><category></category></item><item><title><![CDATA[1003 Universal Travel Sites]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/159811682</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/159811682</guid><author>ab123768</author><pubDate>Wed, 08 Apr 2026 11:59:15 +0800</pubDate><description><![CDATA[文章摘要 题目《1003 Universal Travel Sites》要求计算行星站所需的最小容量，以确保所有太空船能够顺利停靠和卸载乘客。该问题可转化为最大流问题，其中行星和卫星作为节点，运输路线作为有向边，容量表示最大乘客运输量。使用Dinic算法求解： 输入处理：将行星名称映射为整数ID，构建邻接表。 分层BFS：确定节点的层次，确保增广路径最短。 DFS增广：沿层次图寻找增广路径并更新流量。 反向边优化：允许流量调整，避免局部最优。 最终输出从源行星到目标行星的最大流值，即行星站的最小容量要求。例]]></description><category></category></item><item><title><![CDATA[PAT 1002 Business 学习笔记]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/159811387</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/159811387</guid><author>ab123768</author><pubDate>Sat, 04 Apr 2026 05:34:09 +0800</pubDate><description><![CDATA[PAT 1002 Business 问题解析 该问题要求选择多个项目以获得最大利润，每个项目具有利润P、持续时间L和截止日期D。关键点在于项目必须连续完成且不超期。 解题思路 问题分析：转化为带截止时间的01背包问题 核心算法： 按截止日期排序项目 使用动态规划，状态dp[i][j]表示前i个项目在j天内获得的最大利润 优化方案： 采用滚动数组降低空间复杂度 合理设置时间上限 实现要点 项目排序确保截止时间早的优先处理 状态转移考虑三种情况：时间不足、可做项目、超期情况 最终遍历所有时间状态取最大值 该问题]]></description><category></category></item><item><title><![CDATA[PAT 1001 Battle Over Cities - Hard Version 笔记]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/159811209</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/159811209</guid><author>ab123768</author><pubDate>Sat, 04 Apr 2026 05:31:22 +0800</pubDate><description><![CDATA[PAT 1001 Battle Over Cities - Hard Version 摘要 该题考察在战争背景下，当某个城市被攻占后，如何以最小代价修复高速公路使剩余城市保持连通。输入包含N个城市和M条高速公路信息（每条路有修复代价和使用状态）。核心算法是枚举每个城市被攻占的情况，使用Kruskal算法结合并查集计算剩余城市连通的最小修复代价。具体步骤包括：预处理边（优先使用完好道路），枚举每个城市作为被攻占点，构建最小生成树并统计代价，最终输出需要最关注的城市（修复代价最大的）。若所有城市被攻占后都不需修]]></description><category></category></item><item><title><![CDATA[选修课（小林选课规划）学习笔记]]></title><link>https://blog.youkuaiyun.com/ab123768/article/details/159811026</link><guid>https://blog.youkuaiyun.com/ab123768/article/details/159811026</guid><author>ab123768</author><pubDate>Sat, 04 Apr 2026 05:24:56 +0800</pubDate><description><![CDATA[本文研究了小林选课规划问题：在k个学期内选修n门核心课程，要求每门课程至少被选修一次。通过组合数学分析，将问题转化为集合覆盖计数，并应用容斥原理和二项式定理，得出答案为$(2^k - 1)^n \mod 998244353$。验证了样例的正确性，提供了C++实现代码，并分析了时间/空间复杂度。核心结论可概括为：每门课有$2^k$种选法，排除全不选的情况后，n门课的组合数为$(2^k-1)^n$。该解法高效简洁，时间复杂度为$O(\log k + \log n)$。]]></description><category></category></item></channel></rss>