<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[n_rts的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/n_rts</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; n_rts]]></copyright><item><title><![CDATA[莫名奇妙的慢SQL]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/149289385</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/149289385</guid><author>n_rts</author><pubDate>Sat, 12 Jul 2025 10:50:45 +0800</pubDate><description><![CDATA[数据库慢SQL问题排查实录：系统监测到每小时出现几次简单查询（小表+索引）耗时突增至900ms，常规检查（SQL优化、网络波动、服务器负载）均无异常。通过抓包确认数据库执行耗时真实存在，最终发现thread_pool_stall_limit参数值过高（500ms），将其调整为10ms后问题解决。该案例揭示了MySQL线程池调度参数对偶发延迟的影响，为类似性能问题提供了排查思路。]]></description><category></category></item><item><title><![CDATA[使用node-oidc-provider实现单点登录时授权页面死循环问题]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/149095891</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/149095891</guid><author>n_rts</author><pubDate>Thu, 03 Jul 2025 16:07:04 +0800</pubDate><description><![CDATA[摘要：在使用AI生成代码构建本地单点登录项目时，自定义登录页面后出现授权页面死循环问题。AI提供的授权按钮代码未能解决问题，经多次检查无效后，开发者转而研究默认授权代码实现。将默认代码替换后，成功解决了授权页面死循环问题。这表明在某些情况下，AI生成的代码可能无法完全满足需求，需要结合系统默认实现进行调试。]]></description><category></category></item><item><title><![CDATA[moodle升级（4.5到5.0）]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/149069354</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/149069354</guid><author>n_rts</author><pubDate>Wed, 02 Jul 2025 14:49:03 +0800</pubDate><description><![CDATA[本文详细记录了Moodle从4.5+升级到5.0.1+的过程。主要步骤包括：通过宝塔面板备份网站文件和数据库；下载新版本并替换旧文件；升级PHP版本及相关扩展；升级MySQL数据库；处理插件兼容性问题。在升级过程中遇到两个异常：首先是一个插件构造方法参数不匹配问题，通过修改参数解决；其次是发现语法异常的代码行，经过调整后完成升级。整个升级过程涉及系统环境调整、数据备份恢复、插件兼容处理等多个环节，最终成功完成版本升级。]]></description><category></category></item><item><title><![CDATA[击穿与穿透：缓存失效的攻防战]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/148560902</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/148560902</guid><author>n_rts</author><pubDate>Wed, 11 Jun 2025 15:15:00 +0800</pubDate><description><![CDATA[摘要：文章对比分析了"击穿"和"穿透"两种缓存问题的区别及解决方案。"击穿"指高并发请求在缓存失效瞬间涌入数据库，解决方案包括设置永不过期、加锁机制等；"穿透"则是无效请求直接穿透缓存到达数据库，可通过参数校验、布隆过滤器、缓存空结果等方式防范。两种问题成因不同，需采取针对性的防御措施。]]></description><category></category></item><item><title><![CDATA[多级缓存以及本地缓存一致性问题]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/148539714</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/148539714</guid><author>n_rts</author><pubDate>Mon, 09 Jun 2025 17:54:29 +0800</pubDate><description><![CDATA[摘要：本文介绍了本地缓存和分布式缓存的组合使用方案。本地缓存（如Guava、Caffeine）作为一级缓存存储低频更新数据，分布式缓存（如Redis）作为二级缓存存储高频更新数据。为解决分布式系统中本地缓存一致性问题，提出利用Redis的Pub/Sub机制实现节点间缓存同步：数据变更时发布消息，其他节点订阅更新，确保缓存一致性。该方案具有实时同步、减少不一致性、解耦更新逻辑等优势，同时需注意消息丢失、延迟和性能问题。通过这种多级缓存架构和消息机制，可以有效提升系统的缓存效率和一致性。
]]></description><category></category></item><item><title><![CDATA[旧电脑吃灰太浪费？三步变身私人云存储真香！旧电脑变云存储，三步打造个人云端宝藏]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/147769164</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/147769164</guid><author>n_rts</author><pubDate>Wed, 07 May 2025 16:34:43 +0800</pubDate><description><![CDATA["哎兄弟，你家墙角吃灰的旧笔记本还在吗？"——说出来你可能不信，那台开机要五分钟的老古董，其实是个待开发的宝藏。今天咱们就来唠唠怎么让旧电脑变身私人云盘，手把手教你用最低成本搞出比网盘还靠谱的存储方案。]]></description><category></category></item><item><title><![CDATA[客户端主动断开连接问题]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/147615483</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/147615483</guid><author>n_rts</author><pubDate>Tue, 29 Apr 2025 19:29:38 +0800</pubDate><description><![CDATA[Broken pipe 发生的一种可能场景]]></description><category></category></item><item><title><![CDATA[如何使用docker搭建带权限的私人仓库registry]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/147442972</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/147442972</guid><author>n_rts</author><pubDate>Wed, 23 Apr 2025 10:28:40 +0800</pubDate><description><![CDATA[【代码】如何使用docker搭建带权限的私人仓库registry。]]></description><category></category></item><item><title><![CDATA[如何进入docker中的mysql]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/145117949</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/145117949</guid><author>n_rts</author><pubDate>Mon, 13 Jan 2025 16:07:01 +0800</pubDate><description><![CDATA[3. 然后就可以使用mysql命令了。1. 查看docker容器列表。拿到container id。]]></description><category></category></item><item><title><![CDATA[【故纸堆】]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/144900096</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/144900096</guid><author>n_rts</author><pubDate>Fri, 03 Jan 2025 09:06:06 +0800</pubDate><description><![CDATA[产生了将以前写在纸上的文字搬到网上的想法，于是便有了这个专栏。]]></description><category></category></item><item><title><![CDATA[记一次aiquestion没有反应]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/144893341</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/144893341</guid><author>n_rts</author><pubDate>Thu, 02 Jan 2025 19:45:26 +0800</pubDate><description><![CDATA[根据提示 The cron task seems not to run ...判断这个插件使用了moodle的任务。发现是方法proc_open不可用，到php的配置文件中找到方法禁用，删掉这个方法，然后重启一下。问题：点击生成按钮之后，进入进度条就一直是0%的状态，就下面这样。把pcntl_signal也删掉，重启php，重新运行成功。到 站点管理 -> 服务器 -> 临时任务 去看一下。进入questions模块，发现有好多失败的任务。]]></description><category></category></item><item><title><![CDATA[删不掉的缓存]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/144565652</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/144565652</guid><author>n_rts</author><pubDate>Fri, 20 Dec 2024 10:36:31 +0800</pubDate><description><![CDATA[A系统在删除缓存之后，推了消息给B系统，后面还有一段代码导致方法没有立即结束，B系统收到消息之后立马来请求了数据，响应实在是太快了，由于A系统事务还没有提交，导致B系统请求到的是旧数据，并写入了缓存。确认了一下，方法上有事务。也就是说在删除缓存之后，事务还没有提交，数据库中的数据还不是新数据，这时候有人调用了查询接口。方案一，删除缓存之后立马将新数据写入到缓存，存在隐患，如果后续代码发生异常导致数据回滚，则缓存与数据库不一致。系统里有一个修改数据的方法，在修改数据之后，删除了redis的缓存。]]></description><category></category></item><item><title><![CDATA[多机房场景下的数据不一致问题]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/144602624</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/144602624</guid><author>n_rts</author><pubDate>Fri, 20 Dec 2024 10:28:03 +0800</pubDate><description><![CDATA[业务系统部署在多个机房，分主机房和备机房，多个机房都可用其他系统通过队列下发数据，只能在主机房接收主机房接收数据之后，修改数据库数据，并同步到备机房数据库，然后删除redis缓存（通过懒加载在下次查询数据时写缓存），删除动作也同步到备机房。]]></description><category></category></item><item><title><![CDATA[买个笔记本好难]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/144390686</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/144390686</guid><author>n_rts</author><pubDate>Wed, 11 Dec 2024 10:03:52 +0800</pubDate><description><![CDATA[笔记本电脑购买难题]]></description><category></category></item><item><title><![CDATA[如何在maven仓库发布自己的包]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/144245053</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/144245053</guid><author>n_rts</author><pubDate>Wed, 04 Dec 2024 18:01:38 +0800</pubDate><description><![CDATA[在maven仓库发布自己的包]]></description><category></category></item><item><title><![CDATA[moodle升级（详细版）]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/144221028</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/144221028</guid><author>n_rts</author><pubDate>Tue, 03 Dec 2024 19:02:13 +0800</pubDate><description><![CDATA[Moodle升级详细操作步骤]]></description><category></category></item><item><title><![CDATA[同质化]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/136147118</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/136147118</guid><author>n_rts</author><pubDate>Sun, 18 Feb 2024 10:47:47 +0800</pubDate><description><![CDATA[同质化是指同一大类中不同品牌的商品在性能、外观甚至营销手段上相互模仿，以至逐渐趋同的现象，在商品同质化基础上的市场竞争行为称为同质化竞争，可指某个领域存在类型、制作手段、制作流程、传递内容大致相同的各类信息的现象。同质化就像一个包围圈，对于有品牌意识的厂商而言，要突破这个包围圈的就需要在核心技术研发上多下工夫，提前对于终端消费市场做出预判，率先作出变革，以求在同质化现象下脱颖而出。]]></description><category></category></item><item><title><![CDATA[nextjs项目使用react-pdf生成PDF文件遇到的问题]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/135481337</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/135481337</guid><author>n_rts</author><pubDate>Tue, 09 Jan 2024 16:20:39 +0800</pubDate><description><![CDATA[我想要做一个功能，点击按钮时可以触发生成pdf文件并下载，所以觉得可以调用下面的js去执行
结果就是报错了
render这个方法是一个node api，看来只能在服务侧运行了，我不想这么干所以我又尝试了PDFDownloadLink，用如下的代码
结果又报错了

PDFDownloadLink是一个web api只能在浏览器端运行，原来nextjs的页面是在服务端渲染的，所以才报了这个错，而上面的render方法却是在页面上按钮触发时调用的，所以报了那个错。
所以，要让PDFDownloadLink在页面返]]></description><category></category></item><item><title><![CDATA[PreTeXt 如何嵌入GEOGEBRA]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/135012988</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/135012988</guid><author>n_rts</author><pubDate>Fri, 15 Dec 2023 11:36:11 +0800</pubDate><description><![CDATA[PreTeXt 嵌入GEOGEBRA]]></description><category></category></item><item><title><![CDATA[PreTeXt 如何居中]]></title><link>https://blog.youkuaiyun.com/n_rts/article/details/135011842</link><guid>https://blog.youkuaiyun.com/n_rts/article/details/135011842</guid><author>n_rts</author><pubDate>Fri, 15 Dec 2023 11:05:18 +0800</pubDate><description><![CDATA[PreTeXt 如何居中]]></description><category></category></item></channel></rss>