<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[haogexiaole的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/haogexiaole</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; haogexiaole]]></copyright><item><title><![CDATA[分布式电商服务中常见的问题与应对策略]]></title><link>https://blog.csdn.net/haogexiaole/article/details/166140334</link><guid>https://blog.csdn.net/haogexiaole/article/details/166140334</guid><author>haogexiaole</author><pubDate>Sun, 20 Sep 2026 22:09:19 +0800</pubDate><description><![CDATA[分布式电商服务的问题往往不是孤立存在的，数据一致性、高并发冲击、服务治理、幂等控制和 ID 生成等问题相互交织。实际落地时，需要结合业务场景在一致性、可用性和性能之间做出权衡，并通过监控、告警和压测持续验证系统的稳定性。希望本文的梳理能帮助你在设计和维护分布式电商系统时少走弯路。]]></description><category></category></item><item><title><![CDATA[Vue 语法与常见问题：v-if 和 v-show 的区别]]></title><link>https://blog.csdn.net/haogexiaole/article/details/165860040</link><guid>https://blog.csdn.net/haogexiaole/article/details/165860040</guid><author>haogexiaole</author><pubDate>Fri, 18 Sep 2026 12:07:54 +0800</pubDate><description><![CDATA[选择v-if还是v-show，核心在于权衡「初始渲染成本」和「切换成本」。对于运行期间条件很少改变、或初始条件为假的场景，优先使用v-if；对于需要频繁切换显示状态、且元素本身不复杂的场景，v-show是更优的选择。理解两者的底层机制，才能在真实项目中做出合理的决策。同时，Vue 2 到 Vue 3 的升级带来了响应式系统、组合式 API、多根节点等多项重要变化。无论是新项目选型还是旧项目迁移，都建议优先考虑 Vue 3，并结合官方迁移指南逐步推进。]]></description><category></category></item><item><title><![CDATA[如何提升 API 接口性能：从设计到实战的完整指南]]></title><link>https://blog.csdn.net/haogexiaole/article/details/165004052</link><guid>https://blog.csdn.net/haogexiaole/article/details/165004052</guid><author>haogexiaole</author><pubDate>Fri, 11 Sep 2026 18:08:07 +0800</pubDate><description><![CDATA[提升 API 接口性能需要从全局出发，先定位瓶颈，再有针对性地优化。缓存、数据库、并发、网络传输和代码质量是五个最核心的发力点。实际项目中，建议遵循「先测量、再优化、后验证」的原则，避免盲目改动。希望本文的方法能帮助你构建出更快、更稳的 API 服务。本次订单接口慢的多层叠加根因SQL 层面：索引不合理、深分页、冗余字段查询，数据库 IO 过高。代码层面：循环串行调用远程接口，串行耗时叠加。缓存层面：热点用户订单无缓存，大量重复查询打满从库。架构层面：所有流量打从库，无热点隔离、无预计算汇总数据。]]></description><category></category></item><item><title><![CDATA[Java 基础语法与常见问题：接口、抽象类与泛型详解]]></title><link>https://blog.csdn.net/haogexiaole/article/details/164148159</link><guid>https://blog.csdn.net/haogexiaole/article/details/164148159</guid><author>haogexiaole</author><pubDate>Mon, 07 Sep 2026 10:50:17 +0800</pubDate><description><![CDATA[方法是 Java 中组织逻辑的基本单元。方法重载指在同一个类中定义多个同名方法，但参数列表不同（参数个数、类型或顺序不同），返回值类型不参与重载判断。方法重载是编译期多态的一种体现。泛型是 Java 5 引入的重要特性，它允许在定义类、接口和方法时使用类型参数，在调用时再指定具体的类型。泛型的核心价值在于将类型检查从运行时提前到编译期，从而提升代码的类型安全性和可读性，减少强制类型转换带来的风险。]]></description><category></category></item><item><title><![CDATA[Flowable 工作流引擎知识总结]]></title><link>https://blog.csdn.net/haogexiaole/article/details/164425476</link><guid>https://blog.csdn.net/haogexiaole/article/details/164425476</guid><author>haogexiaole</author><pubDate>Sun, 06 Sep 2026 11:29:45 +0800</pubDate><description><![CDATA[Flowable 是一个用 Java 编写的轻量级业务流程引擎，源自 Activiti 5 的分支，遵循 BPMN 2.0 规范。它支持业务流程建模、执行、监控和优化，广泛应用于审批流、任务编排、状态机等场景。Flowable 的核心优势在于轻量、灵活、可嵌入，既可作为独立服务运行，也可嵌入到现有应用中。Flowable 提供流程引擎、表单引擎、DMN 决策引擎、CMMN 案例管理引擎等多个模块，开发者可以根据业务需要按需引入。流程定义通常以 BPMN 2.0 XML 文件形式存在，放在。]]></description><category></category></item><item><title><![CDATA[K8s 原理与 ConfigMap 实战详解]]></title><link>https://blog.csdn.net/haogexiaole/article/details/164151862</link><guid>https://blog.csdn.net/haogexiaole/article/details/164151862</guid><author>haogexiaole</author><pubDate>Sat, 05 Sep 2026 11:18:49 +0800</pubDate><description><![CDATA[ConfigMap 是 Kubernetes 提供的配置管理资源，用于将配置数据以键值对的形式保存，并在 Pod 中以环境变量、命令行参数或挂载文件的方式注入。它的核心价值在于实现配置与镜像的分离，避免因配置变更而重新构建镜像。Kubernetes 通过声明式 API 和控制器循环实现了容器编排的自动化，而 ConfigMap 则解决了配置与镜像耦合的问题。掌握 ConfigMap 的创建和使用方式，能够显著提升应用部署的灵活性和可维护性。]]></description><category></category></item><item><title><![CDATA[Java 开发中英语工作常用语法与句子]]></title><link>https://blog.csdn.net/haogexiaole/article/details/164396054</link><guid>https://blog.csdn.net/haogexiaole/article/details/164396054</guid><author>haogexiaole</author><pubDate>Sat, 05 Sep 2026 11:12:16 +0800</pubDate><description><![CDATA[本文梳理了 Java 开发中用英语工作的常见语法和常用句子，涵盖代码注释、命名规范、日常沟通、代码评审、Git 提交信息、技术文档与邮件等核心场景。建议开发者在日常工作中多使用英文注释和提交信息，积极参与英文技术社区讨论，逐步提升英文工作能力，从而更好地融入国际化开发团队。]]></description><category></category></item><item><title><![CDATA[Kafka 与 RabbitMQ 核心考点：重平衡、消息积压、可靠性投递与发布订阅模式详解]]></title><link>https://blog.csdn.net/haogexiaole/article/details/164332764</link><guid>https://blog.csdn.net/haogexiaole/article/details/164332764</guid><author>haogexiaole</author><pubDate>Fri, 04 Sep 2026 09:23:38 +0800</pubDate><description><![CDATA[发布订阅模式是一种消息传递范式，发布者不直接发送消息给特定接收者，而是将消息发布到消息中心或主题；订阅者按需订阅感兴趣的主题，从而解耦生产者和消费者之间的关系。与点对点模式相比，发布订阅模式强调一条消息可以被多个订阅者同时消费。发布者无需关心有多少订阅者、订阅者当前是否在线，订阅者也无需关心消息来自哪个具体发布者。Kafka 与 RabbitMQ 虽然都承担消息传递职责，但设计理念和适用场景有明显差异。Kafka 更强调高吞吐、分区有序和日志回放能力，适合大数据管道和流处理；]]></description><category></category></item><item><title><![CDATA[Dubbo 原理与常见知识要点：开发与生产实践指南]]></title><link>https://blog.csdn.net/haogexiaole/article/details/164212275</link><guid>https://blog.csdn.net/haogexiaole/article/details/164212275</guid><author>haogexiaole</author><pubDate>Mon, 31 Aug 2026 13:07:39 +0800</pubDate><description><![CDATA[Dubbo 作为成熟的 RPC 框架，其核心价值在于透明化调用、服务治理和集群容错。开发阶段应重点关注配置正确性、序列化兼容性和超时重试策略；生产阶段则需围绕注册中心稳定性、流量保护和容量规划做好预案。掌握这些要点，能够帮助团队更高效地使用 Dubbo，并快速定位和解决线上问题。]]></description><category></category></item><item><title><![CDATA[JDK17 与 JDK21 新特性解析：哪些能力是 AI Agent 开发真正需要的]]></title><link>https://blog.csdn.net/haogexiaole/article/details/164147413</link><guid>https://blog.csdn.net/haogexiaole/article/details/164147413</guid><author>haogexiaole</author><pubDate>Fri, 28 Aug 2026 17:17:11 +0800</pubDate><description><![CDATA[JDK17 为 Java 语言奠定了更现代的基础，而 JDK21 则在并发模型上实现了质的飞跃。对于 Agent 开发者而言，虚拟线程、结构化并发、密封类和记录模式是最值得优先引入的能力，它们能直接提升 Agent 编排的并发能力、代码安全性和可维护性。建议团队在评估依赖兼容性后，从核心编排模块开始逐步迁移，让新特性真正服务于 Agent 应用的工程实践。]]></description><category></category></item><item><title><![CDATA[minio和普通的文件存储在硬盘上有什么区别]]></title><link>https://blog.csdn.net/haogexiaole/article/details/157245307</link><guid>https://blog.csdn.net/haogexiaole/article/details/157245307</guid><author>haogexiaole</author><pubDate>Thu, 22 Jan 2026 09:10:27 +0800</pubDate><description><![CDATA[构建云原生应用需要高可用性和可扩展性处理海量非结构化数据统一的多云存储策略与 S3 生态系统集成只需要简单的本地存储应用不支持对象存储 API小规模、简单的项目不需要分布式特性MinIO 本质上是在传统硬盘存储之上增加了一个智能的分布式管理层，提供了更好的可扩展性、可靠性和现代应用集成能力。]]></description><category></category></item><item><title><![CDATA[netty集群注意点]]></title><link>https://blog.csdn.net/haogexiaole/article/details/157027468</link><guid>https://blog.csdn.net/haogexiaole/article/details/157027468</guid><author>haogexiaole</author><pubDate>Fri, 16 Jan 2026 15:28:48 +0800</pubDate><description><![CDATA[netty.messages.in.rate            # 消息接收速率。- netty.messages.out.rate           # 消息发送速率。- cluster.messages.cross.node       # 跨节点消息量。// 使用负载均衡器（如Nginx、HAProxy、LVS）// 使用Redis Pub/Sub或Kafka进行消息广播。// 转发到目标节点。// 从注册中心移除。// 根据用户ID路由到正确节点。// 或使用ZooKeeper服务发现。]]></description><category></category></item><item><title><![CDATA[lombok涉及的编译原理]]></title><link>https://blog.csdn.net/haogexiaole/article/details/157026389</link><guid>https://blog.csdn.net/haogexiaole/article/details/157026389</guid><author>haogexiaole</author><pubDate>Fri, 16 Jan 2026 14:51:55 +0800</pubDate><description><![CDATA[Lombok 是一个通过注解处理机制（Annotation Processing）在编译时修改 AST（抽象语法树）来简化 Java 代码的工具。以下是 Lombok 涉及的编译原理关键点：Java 编译流程大致为：text
源代码 &rarr; 词法分析 &rarr; 语法分析 &rarr; 生成AST &rarr; 注解处理 &rarr; 字节码生成

Lombok 在 注解处理阶段 介入，修改 AST，然后编译器基于修改后的 AST 生成字节码。Lombok 实现了  接口，注册为注解处理器。关键点：]]></description><category></category></item><item><title><![CDATA[微信支付 (JSAPI - 常用于公众号、小程序)]]></title><link>https://blog.csdn.net/haogexiaole/article/details/155075908</link><guid>https://blog.csdn.net/haogexiaole/article/details/155075908</guid><author>haogexiaole</author><pubDate>Thu, 20 Nov 2025 20:55:32 +0800</pubDate><description><![CDATA[<return_code><![CDATA[OK]]></return_msg>]]></description><category></category></item><item><title><![CDATA[计算文章的相似度]]></title><link>https://blog.csdn.net/haogexiaole/article/details/154455283</link><guid>https://blog.csdn.net/haogexiaole/article/details/154455283</guid><author>haogexiaole</author><pubDate>Wed, 05 Nov 2025 21:03:25 +0800</pubDate><description><![CDATA[余弦相似度：基于向量空间模型，适合中等长度文本Jaccard相似度：基于集合运算，计算简单快速SimHash：适合长文本，抗噪声能力强。]]></description><category></category></item><item><title><![CDATA[余弦相似度、矩阵分解、深度学习物品的复杂、非线性特征]]></title><link>https://blog.csdn.net/haogexiaole/article/details/154455048</link><guid>https://blog.csdn.net/haogexiaole/article/details/154455048</guid><author>haogexiaole</author><pubDate>Wed, 05 Nov 2025 20:52:43 +0800</pubDate><description><![CDATA[基于用户的协同过滤 (User-CF)基于物品的协同过滤 (Item-CF)核心思想人以群分物以类聚推荐逻辑找到和你相似的用户，把他们喜欢而你没看过的推荐给你。找到你喜欢的物品的相似物品，推荐给你。好比你的好朋友给你安利东西。一个资深专家（比如音乐发烧友）根据你喜欢的歌，推荐同类型的歌。适用场景用户数相对较少，个性化强，社交属性强（如朋友圈）。物品数相对稳定，物品内在联系强（如电商、音乐）。例子小明喜欢《三体》和《哈利波特》，你也喜欢《三体》，所以把《哈利波特》推荐给你。]]></description><category></category></item><item><title><![CDATA[算法推荐开发java]]></title><link>https://blog.csdn.net/haogexiaole/article/details/154454831</link><guid>https://blog.csdn.net/haogexiaole/article/details/154454831</guid><author>haogexiaole</author><pubDate>Wed, 05 Nov 2025 20:46:12 +0800</pubDate><description><![CDATA[对于中小型系统或原型：可以使用Spring Boot + 纯Java ML库（如Tribuo/Smile）快速搭建。对于大型生产环境：通常是Spring Boot微服务 + Spark（做离线训练） + Redis（缓存） + 向量数据库（如Milvus做快速ANN检索）的架构。]]></description><category></category></item><item><title><![CDATA[虚拟机原理]]></title><link>https://blog.csdn.net/haogexiaole/article/details/154454562</link><guid>https://blog.csdn.net/haogexiaole/article/details/154454562</guid><author>haogexiaole</author><pubDate>Wed, 05 Nov 2025 20:24:11 +0800</pubDate><description><![CDATA[虚拟机的核心思想是“隔离与抽象”。想象一下，你有一台强大的物理计算机（称为主机 Host），它的硬件资源（CPU、内存、硬盘、网卡等）是固定的。虚拟机技术允许你在这台物理机上，通过一个特殊的软件层，模拟出多台独立的、完整的计算机。这些被模拟出来的计算机就是虚拟机（Guest）。每台虚拟机都像一台真正的电脑：拥有自己的虚拟CPU、虚拟内存、虚拟硬盘、虚拟网卡。可以独立安装操作系统（如 Windows, Linux）和应用程序。虚拟机之间的操作是相互隔离的，一台虚拟机崩溃不会影响其他虚拟机或主机。]]></description><category></category></item><item><title><![CDATA[微信公众号消息推送java]]></title><link>https://blog.csdn.net/haogexiaole/article/details/154454471</link><guid>https://blog.csdn.net/haogexiaole/article/details/154454471</guid><author>haogexiaole</author><pubDate>Wed, 05 Nov 2025 20:17:32 +0800</pubDate><description><![CDATA[System.err.println("发送失败 openId: " + openId + ", 错误: " + e.getMessage());throw new RuntimeException("微信模板消息发送失败", e);throw new RuntimeException("客服消息发送失败", e);throw new RuntimeException("图文消息发送失败", e);data.put("first", "您好，您有新的订单通知");// 根据消息类型处理。]]></description><category></category></item><item><title><![CDATA[vue项目的项目结构]]></title><link>https://blog.csdn.net/haogexiaole/article/details/154361970</link><guid>https://blog.csdn.net/haogexiaole/article/details/154361970</guid><author>haogexiaole</author><pubDate>Mon, 03 Nov 2025 21:36:31 +0800</pubDate><description><![CDATA[从简单开始：不要一开始就设计一个非常复杂的结构。从一个标准结构开始，随着项目复杂度的增加再逐步重构。保持一致性：在整个项目中保持命名和结构的一致性。组件命名：组件文件名使用PascalCase（如单一职责：每个文件/组件应该只负责一个明确的功能。使用别名（Alias）：在或中配置路径别名（如指向src），可以避免复杂的相对路径。]]></description><category></category></item></channel></rss>