<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Lemonyuki的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/GTX_WU</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; GTX_WU]]></copyright><item><title><![CDATA[Redis分布式锁实现基本概念]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/163262546</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/163262546</guid><author>GTX_WU</author><pubDate>Tue, 28 Jul 2026 09:55:08 +0800</pubDate><description><![CDATA[本文介绍了基于Redis实现分布式锁的几种方法： 基础实现：使用SETNX+EXPIRE命令组合获取锁，设置唯一UUID标识客户端，释放时通过Lua脚本保证原子性操作。 潜在问题：业务执行时间超过锁过期时间会导致锁失效，可能影响数据一致性。 Redisson解决方案：提供了锁续期机制，通过后台线程定期延长锁有效期，避免业务未完成时锁过期的问题。同时还支持可重入锁、公平锁等功能，并处理了服务器宕机等异常情况。 建议生产环境直接使用Redisson客户端，它封装了完善的分布式锁功能，比手动实现更安全可靠。]]></description><category></category></item><item><title><![CDATA[SpringBoot API日志系统设计-02：线程池异步化与RabbitMQ解耦]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/160862717</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/160862717</guid><author>GTX_WU</author><pubDate>Thu, 07 May 2026 16:50:38 +0800</pubDate><description><![CDATA[本文介绍了两种日志系统优化方案：线程池异步处理和MQ解耦。线程池方案通过@Async注解实现异步日志收集，配置了自定义线程池参数，并解决了MDC上下文传递问题。MQ方案采用RabbitMQ实现，详细配置了队列、交换机、死信机制等核心组件，通过prefetch和concurrency参数优化消费者性能，确保日志处理的高效可靠。两种方案各有优势，线程池适合简单场景，MQ更适合高并发和系统解耦需求。]]></description><category></category></item><item><title><![CDATA[SpringBoot API日志系统设计-01：AOP统一日志采集]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/160862518</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/160862518</guid><author>GTX_WU</author><pubDate>Thu, 07 May 2026 16:45:09 +0800</pubDate><description><![CDATA[这篇文章介绍了一个基于Spring AOP的API日志记录系统实现。系统通过自定义注解@ApiLog和切面编程实现对API调用的监控，主要功能包括： 数据结构设计：使用bs_api_log表存储日志信息，包含请求追踪ID、服务名、API路径、执行状态等字段 核心组件： ApiLog实体类对应数据库表 ApiLogEvent作为日志事件传输对象 @ApiLog注解用于标记需要记录日志的方法 实现原理： 通过切面拦截@ApiLog注解的方法 记录方法执行时间、参数、结果等信息 支持异常捕获和链路追踪 使用方式简]]></description><category></category></item><item><title><![CDATA[Java安全通信：RSA签名 + AES混合加密详解]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/159719719</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/159719719</guid><author>GTX_WU</author><pubDate>Wed, 01 Apr 2026 10:19:03 +0800</pubDate><description><![CDATA[加密与签名技术在网络通信中的应用 本文介绍了网络通信中的核心安全技术，包括对称加密、非对称加密和混合加密方案。对称加密采用单一密钥（如AES算法），加解密速度快但密钥传输存在风险；非对称加密使用公钥-私钥对（如RSA算法），解决了密钥分发问题但性能较低。文章详细阐述了签名机制原理和实现流程，并提供了Java代码示例。针对性能优化，推荐采用混合加密方案：使用AES加密数据，再用RSA加密AES密钥，兼顾安全性与效率。这些技术组合可有效保障数据传输的机密性和来源真实性，适用于各类系统对接场景。]]></description><category></category></item><item><title><![CDATA[【MySQL-索引调优】12：In相关概念]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/159351200</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/159351200</guid><author>GTX_WU</author><pubDate>Sun, 22 Mar 2026 14:58:56 +0800</pubDate><description><![CDATA[SQL中IN与NOT IN操作符的使用差异及优化建议：IN操作符会被优化为多次等值匹配，可走索引但需避免数据量过大；NOT IN存在NULL值比较问题，会导致结果异常，建议改用NOT EXISTS替代；小范围过滤推荐使用IN，联合索引时结合等值条件，避免大IN列表和NOT IN子查询。对于子查询场景，优先考虑JOIN替代IN(SELECT...)写法。]]></description><category></category></item><item><title><![CDATA[【MySQL-索引调优】11：Group by相关概念]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/159351166</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/159351166</guid><author>GTX_WU</author><pubDate>Sun, 22 Mar 2026 14:56:31 +0800</pubDate><description><![CDATA[摘要：GROUP BY用于对结果集按字段分组并聚合计算。执行方式分两种：有索引时直接利用索引统计，无索引时需创建临时表并排序。使用索引需遵循最左匹配原则，即GROUP BY字段必须是索引的最左列。例如索引(user_id,status)支持GROUP BY user_id，但不支持GROUP BY status。]]></description><category></category></item><item><title><![CDATA[【MySQL-索引调优】10：常见的分页优化处理]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/159284576</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/159284576</guid><author>GTX_WU</author><pubDate>Fri, 20 Mar 2026 15:38:13 +0800</pubDate><description><![CDATA[摘要：本文介绍三种高效分页方案：1) 游标分页，通过记录最后一条记录的字段值实现恒定性能分页，适合大数据量场景；2) 覆盖索引，直接从索引获取全部数据避免回表；3) 延迟关联，先通过索引获取主键再关联查询完整数据，大幅减少回表次数。其中游标分页在create_time可能重复时需要配合唯一字段确保稳定排序，相比传统分页在深分页时性能优势明显。三种方案各适用于不同场景，可根据数据量和查询需求灵活选择。]]></description><category></category></item><item><title><![CDATA[【MySQL-索引调优】09：Order By相关概念]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/159283243</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/159283243</guid><author>GTX_WU</author><pubDate>Fri, 20 Mar 2026 14:34:56 +0800</pubDate><description><![CDATA[文章摘要：本文分析了MySQL中不同查询场景下的索引使用情况。对于WHERE+ORDER BY查询，虽然使用了user_id索引定位数据，但由于create_time未建立索引，仍需额外排序（Using filesort）。单独ORDER BY查询会触发全表扫描和排序。ORDER BY+LIMIT查询即使只返回少量数据，仍需处理全部数据排序。分页查询时，无索引会导致全表排序，有索引可避免排序但仍需扫描大量行。优化建议：为常用排序字段建立索引，特别是联合索引(user_id, create_time)可显著提]]></description><category></category></item><item><title><![CDATA[【MySQL-索引调优】08：模糊查询与索引]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/159170024</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/159170024</guid><author>GTX_WU</author><pubDate>Tue, 17 Mar 2026 17:29:00 +0800</pubDate><description><![CDATA[摘要：本文分析了MySQL中LIKE查询使用索引的情况。对于LIKE '71ae%'的后置百分号查询，可以利用idx_remark索引进行范围扫描(type=range)，通过索引条件推送优化性能。而LIKE '%71ae%'的中间百分号查询则无法使用索引(type=ALL)，必须全表扫描。针对真实系统中的模糊查询需求，建议采用全文索引、搜索引擎(如Elasticsearch)或限制为前缀搜索等优化方案。文章通过EXPLAIN执行计划对比了两种查询模式下的索引使用差异，并解释了B+Tree索引的工作原理。]]></description><category></category></item><item><title><![CDATA[【MySQL-索引调优】07：Sql使用索引注意点]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/159167695</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/159167695</guid><author>GTX_WU</author><pubDate>Tue, 17 Mar 2026 16:02:06 +0800</pubDate><description><![CDATA[本文分析了MySQL索引使用的两个关键问题：1）优化器会根据成本选择是否走索引，当条件匹配大量数据时（如user_id&gt;1覆盖99%数据），全表扫描可能比回表更高效；2）索引失效的常见原因，包括对索引列进行运算、使用函数或类型转换。文章通过示例说明，在索引列上进行计算（如user_id+1=5）会导致全表扫描，并建议保持索引列&quot;原样参与比较&quot;。虽然MySQL会进行隐式类型转换（如字符串'1'转数字1），但最佳实践是保持类型一致以避免潜在问题。]]></description><category></category></item><item><title><![CDATA[【MySQL-索引调优】06：最左匹配原则及优化]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/159158583</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/159158583</guid><author>GTX_WU</author><pubDate>Tue, 17 Mar 2026 10:54:42 +0800</pubDate><description><![CDATA[摘要：本文讲解了MySQL联合索引的最左匹配原则。联合索引如(user_id,status)的存储是按最左列排序的，查询必须从最左列开始才能利用索引。例如WHERE user_id=1能用索引，而WHERE status=1则不能。联合索引可以覆盖其最左前缀的单列索引功能，因此存在(user_id)和(user_id,status)索引时，前者可删除。优化器会自动调整SQL条件的顺序，不影响索引使用。理解最左匹配原则有助于设计高效索引。]]></description><category></category></item><item><title><![CDATA[【MySQL-索引调优】05：索引相关概念]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/159156676</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/159156676</guid><author>GTX_WU</author><pubDate>Tue, 17 Mar 2026 09:41:03 +0800</pubDate><description><![CDATA[摘要：InnoDB存储引擎使用B+树实现索引结构。聚簇索引以主键为键，叶子节点存储整行数据；二级索引则存储主键值，查询时需&quot;回表&quot;。索引虽提升查询效率，但过多索引会降低写入性能并增加存储开销。B+树优势在于低高度（3-4层即可支持千万级数据）和叶子节点链表结构，使范围查询高效。需在查询性能与写入开销间取得平衡。]]></description><category></category></item><item><title><![CDATA[【MySQL-索引调优】04：回表相关概念]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/159127037</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/159127037</guid><author>GTX_WU</author><pubDate>Mon, 16 Mar 2026 17:35:05 +0800</pubDate><description><![CDATA[摘要：MySQL中当查询使用联合索引但需返回额外字段时，会触发&quot;回表&quot;操作。例如使用idx_user_status索引查询50,000条记录后，每条记录都需要通过主键ID再次查询聚簇索引获取amount字段，导致50,000次回表。回表过程是二级索引先定位主键，再通过主键查询完整行数据。为优化高频查询，应尽量使WHERE条件和SELECT字段被同一索引覆盖，避免回表开销。InnoDB引擎中，二级索引存储索引字段和主键值，查询非索引字段必须回表。]]></description><category></category></item><item><title><![CDATA[【MySQL-索引调优】03：联合索引及覆盖索引概念]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/159123266</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/159123266</guid><author>GTX_WU</author><pubDate>Mon, 16 Mar 2026 15:39:35 +0800</pubDate><description><![CDATA[摘要：文章分析了MySQL单列索引和联合索引的性能差异。当查询同时使用user_id和status字段时，单列索引(user_id)虽然能缩小扫描范围(9行)，但仍需额外过滤(status)，效率不高。建立联合索引(user_id,status)后，扫描行数降至2行且无需额外过滤，性能显著提升。进一步实验表明，当查询字段完全包含在索引中时(覆盖索引)，可以避免回表操作，仅通过索引就能获取所需数据，效率最优。关键指标包括type、key、rows和Extra字段的变化，这些都能直观反映索引优化效果。]]></description><category></category></item><item><title><![CDATA[【MySQL-索引调优】02：单列索引]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/159120282</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/159120282</guid><author>GTX_WU</author><pubDate>Mon, 16 Mar 2026 14:51:39 +0800</pubDate><description><![CDATA[SQL查询优化摘要：针对orders表user_id=1234的查询存在全表扫描问题（type=ALL），导致效率低下。通过分析执行计划发现user_id字段无索引，导致扫描99,520行数据。优化方案是为user_id创建索引idx_user_id，使查询类型变为ref，扫描行数降至8行，性能显著提升。优化后执行计划显示索引被正确使用，查询效率大幅提高。]]></description><category></category></item><item><title><![CDATA[【MySQL-索引调优】01：前置准备]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/159119856</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/159119856</guid><author>GTX_WU</author><pubDate>Mon, 16 Mar 2026 14:35:11 +0800</pubDate><description><![CDATA[MySQL查询性能分析摘要 本文演示了如何创建订单表并插入10万条测试数据，用于查询性能分析。通过EXPLAIN命令可以分析SQL语句的执行计划，如EXPLAIN SELECT * FROM orders WHERE user_id = 1234，帮助优化查询性能。测试数据包含随机生成的用户ID、产品ID、状态、价格、创建时间和备注信息，适合进行各种查询场景的性能测试和分析。]]></description><category></category></item><item><title><![CDATA[使用Docker Compose+Nginx部署Vue/React前端应用]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/158654321</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/158654321</guid><author>GTX_WU</author><pubDate>Wed, 04 Mar 2026 14:33:59 +0800</pubDate><description><![CDATA[本文介绍了使用Docker Compose部署前端项目的完整流程。主要内容包括：1）Docker Compose通过YAML文件定义多容器应用；2）Dockerfile用于构建前端镜像；3）Nginx配置文件处理前端路由和API代理。部署步骤包括创建Docker网络、打包项目、配置目录结构并启动服务，最终实现前端容器与后端服务的网络连接。该方法简化了多容器应用的部署管理，通过Nginx配置实现前后端分离架构的请求转发。]]></description><category></category></item><item><title><![CDATA[RBAC前端架构-10：Layout中TagsView]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/158581317</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/158581317</guid><author>GTX_WU</author><pubDate>Mon, 02 Mar 2026 17:47:51 +0800</pubDate><description><![CDATA[摘要：本文介绍了Vue2中使用keep-alive组件实现页面缓存的方法，以及如何配合标签页功能优化用户体验。主要内容包括：1) keep-alive的基本用法和配置选项，如include/exclude和max属性；2) 实现标签页视图的组件代码(TagsView.vue)，包含标签切换和关闭功能；3) Vuex状态管理模块(tags.js)的设计，用于存储访问过的页面信息和缓存状态，支持本地持久化存储。该方案能有效减少组件重复渲染，提升页面切换性能。]]></description><category></category></item><item><title><![CDATA[RBAC前端架构-09：Layout中Sidebar]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/158427516</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/158427516</guid><author>GTX_WU</author><pubDate>Thu, 26 Feb 2026 16:45:25 +0800</pubDate><description><![CDATA[本文实现了一个基于Vue2和Element UI的后台管理系统侧边栏组件(Sidebar.vue)。该组件通过Vuex获取菜单数据，支持多级菜单展示，并具备以下功能：1) 自动高亮当前路由对应菜单项；2) 内置路由跳转功能；3) 支持图标解析和键值处理；4) 包含响应式样式设计。组件从user/userMenus获取JSON格式的菜单数据，动态渲染菜单结构，包括一级菜单和子菜单，同时处理了图标显示和菜单项选中状态。]]></description><category></category></item><item><title><![CDATA[RBAC前端架构-08：页面骨架Layout布局搭建]]></title><link>https://blog.youkuaiyun.com/GTX_WU/article/details/158383293</link><guid>https://blog.youkuaiyun.com/GTX_WU/article/details/158383293</guid><author>GTX_WU</author><pubDate>Wed, 25 Feb 2026 11:53:23 +0800</pubDate><description><![CDATA[本文介绍了Vue2项目中基于Layout组件的页面布局实现方案。通过路由嵌套方式，将Layout作为父组件包含公共的Header、Sidebar等元素，内部通过router-view展示子页面内容。文章提供了Layout.vue组件代码示例，展示了头部导航和主体区域的实现，并说明了如何修改路由配置实现嵌套路由结构。该方案可实现页面公共布局的统一管理，子组件在Layout容器内动态渲染，适用于需要保持公共导航结构的后台管理系统等场景。]]></description><category></category></item></channel></rss>