<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[petunsecn的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wgdzg</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wgdzg]]></copyright><item><title><![CDATA[MongoDB C# Driver 在 `ElemMatch + Contains + 类型转换` 下的翻译差异]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/161015558</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/161015558</guid><author>wgdzg</author><pubDate>Tue, 12 May 2026 13:34:22 +0800</pubDate><description><![CDATA[MongoDB C# Driver 类型转换导致的查询翻译差异分析 摘要 本文分析了 MongoDB C# Driver 在不同版本中对 ElemMatch + Contains + 类型转换 组合查询的翻译差异问题。关键发现： 问题本质：(int)nullableField 显式类型转换在新版本驱动中不再被视为简单字段路径，导致查询翻译退化为 $expr 表达式，而 $expr 不能用于 $elemMatch 内部。 版本差异：老版本驱动(2.15.1)对可空字段的类型转换更宽松，能正确翻译为 $in 查]]></description><category></category></item><item><title><![CDATA[多 GitHub 账号与多平台 Git 使用(附加场景：就想用指定账号clone)]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/157287034</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/157287034</guid><author>wgdzg</author><pubDate>Fri, 23 Jan 2026 10:44:01 +0800</pubDate><description><![CDATA[摘要：临时clone GitHub仓库并指定用户账号有4种方式：1. 直接使用SSH Host（推荐⭐）最安全简单，不影响全局配置；2. HTTPS+insteadOf 自动转换，但依赖目录位置；3. clone后修改remote地址，适合修正错误；4. 仓库级user配置（不推荐❌），仅影响commit作者而非push权限。最佳方案是方式一，如git clone git@github-company:org/repo.git，明确可靠且不依赖环境。老手可使用语义化Host名（如gh-work/gh-per]]></description><category></category></item><item><title><![CDATA[多 GitHub 账号与多平台 Git 使用]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/157130028</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/157130028</guid><author>wgdzg</author><pubDate>Mon, 19 Jan 2026 10:27:31 +0800</pubDate><description><![CDATA[本文档提供从Git新手到多账号管理的完整进阶指南。首先介绍单账号HTTPS基础用法，指出其局限性；然后讲解多账号HTTPS模式的常见问题；重点推荐SSH Key解决方案，详细说明单账号和多账号配置方法，特别是通过SSH Host分流和includeIf实现目录自动匹配身份的高级技巧；最后扩展到多平台共存和团队协作的最佳实践。文档强调从工具使用到身份管理再到组织协作的思维转变，提供了企业级Git工作流配置方案，适合个人开发者和团队参考使用。]]></description><category></category></item><item><title><![CDATA[CSRF防护模式选择指南：三种方案的对比与决策]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/155859304</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/155859304</guid><author>wgdzg</author><pubDate>Fri, 12 Dec 2025 17:01:08 +0800</pubDate><description><![CDATA[本文系统分析了CSRF防护方案的决策框架，包含5个核心维度对比表、场景化决策矩阵和流程图。针对金融级应用、现代Web应用和高并发API三种典型场景，分别给出具体配置方案和实施要点，强调安全措施、性能优化和故障处理策略。总结提出安全优先、性能优先、平衡和渐进4项决策原则，建议采用深度防御、定期评估、持续监控和团队培训等最佳实践，帮助构建有效的CSRF防护体系。]]></description><category></category></item><item><title><![CDATA[安全审查--跨站请求伪造--Fetch Metadata防护模式]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/155852314</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/155852314</guid><author>wgdzg</author><pubDate>Fri, 12 Dec 2025 12:28:09 +0800</pubDate><description><![CDATA[本文介绍了FetchMetadata机制及其在Web安全防护中的应用。FetchMetadata通过浏览器自动添加的HTTP头（Sec-Fetch-Site、Sec-Fetch-Mode、Sec-Fetch-Dest）提供请求来源、方式和目标等元数据，帮助服务器识别可疑请求。文章详细解析了FetchMetadata的工作原理，并提供了从基础到生产级的实现方案，包括分层防护策略、智能规则引擎、安全监控和自适应防护等功能。同时讨论了浏览器兼容性处理、多环境配置等实战问题，指出FetchMetadata具有零实现]]></description><category></category></item><item><title><![CDATA[安全审查--跨站请求伪造--双重提交Cookie模式]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/155851300</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/155851300</guid><author>wgdzg</author><pubDate>Fri, 12 Dec 2025 12:14:29 +0800</pubDate><description><![CDATA[本文详细讲解了双重提交Cookie模式防御CSRF攻击的原理与实现。首先通过网上银行转账案例展示了CSRF攻击的危害性，解释了攻击者如何利用浏览器自动携带Cookie的特性发起恶意请求。随后深入剖析了双重提交Cookie的核心理念：利用同源策略，要求请求同时携带Cookie中的token和请求头/体中的token进行双重验证。 文章从零开始演示了实现步骤：1)服务器设置可被JavaScript读取的CSRF Token Cookie；2)前端获取Cookie中的token并添加到请求头；3)服务器验证两个t]]></description><category></category></item><item><title><![CDATA[安全审查--跨站请求伪造--同步令牌模式]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/155713078</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/155713078</guid><author>wgdzg</author><pubDate>Mon, 08 Dec 2025 18:11:11 +0800</pubDate><description><![CDATA[本文深入讲解了同步令牌模式(Synchronizer Token Pattern)的工作原理及实现方式，通过6个层次逐步展开：1) 从银行转账类比解释CSRF攻击原理；2) 阐述同步令牌的基本概念和防御机制；3) 提供从简单到复杂的代码实现方案；4) 介绍前端如何配合使用令牌；5) 分析多标签页、SPA应用等常见问题解决方案；6) 总结安全最佳实践和注意事项。文章采用生活化比喻和代码示例相结合的方式，系统性地展示了如何通过一次性随机令牌有效防御CSRF攻击，并提供了生产环境中的优化建议和错误处理方案。]]></description><category></category></item><item><title><![CDATA[MySQL 毫秒时间处理]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/155307310</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/155307310</guid><author>wgdzg</author><pubDate>Thu, 27 Nov 2025 11:34:11 +0800</pubDate><description><![CDATA[MySQL毫秒精度处理指南 摘要：MySQL从5.6.4版本开始支持毫秒精度时间类型，但使用时需注意：1) 必须显式指定精度(如DATETIME(3))；2) 存储时会四舍五入而非截断；3) 不同精度类型转换会导致数据异常。建议：统一系统精度标准，使用NOW(3)等匹配函数，避免默认值精度不匹配，在应用层处理精度转换。特别注意TIMESTAMP会自动转换时区而DATETIME不会。]]></description><category></category></item><item><title><![CDATA[MySQL 子查询物化与半连接优化]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/154940225</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/154940225</guid><author>wgdzg</author><pubDate>Mon, 17 Nov 2025 10:30:44 +0800</pubDate><description><![CDATA[摘要：本文详细分析了MySQL 8.0中子查询物化(Subquery Materialization)和半连接(Semi-Join)优化机制。通过对比MySQL 5.7和8.0的执行计划，展示了这些优化如何显著提升关联子查询性能。文章深入解析了5种半连接策略、物化执行流程，并通过真实案例展示其优化效果。测试数据显示，相比传统执行方式，物化技术可将查询时间从2.3秒降至0.15秒。最后给出了优化器控制方法和适用场景建议，帮助开发者充分利用MySQL 8.0的新特性提升查询效率。]]></description><category></category></item><item><title><![CDATA[nginx中配置Cache-Control]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/154650847</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/154650847</guid><author>wgdzg</author><pubDate>Mon, 10 Nov 2025 15:35:40 +0800</pubDate><description><![CDATA[网站资源访问本配置缓存策略Cache-Control]]></description><category></category></item><item><title><![CDATA[Excel文件中的VBA脚本，在文件使用WPS编辑保存后无法执行]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/153729575</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/153729575</guid><author>wgdzg</author><pubDate>Wed, 22 Oct 2025 12:20:19 +0800</pubDate><description><![CDATA[前文：团队有一个老项目，有一些配置内容使用 Excel 维护，里边有一些 VBA 基于配置的项目内容生成一系列的 sql 脚本；该文件的创建和更新一直使用的是Microsoft Office，团队中有小伙伴使用了 WPS 对该文件进行编辑保存，并且未按要求执行VBA, 等到配置管理员去获取 sql 脚本时才发现问题，这里，记录一下对文件的修复。]]></description><category></category></item><item><title><![CDATA[MySQL ALTER TABLE 组合操作时导致的错误]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/148313528</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/148313528</guid><author>wgdzg</author><pubDate>Thu, 29 May 2025 17:18:15 +0800</pubDate><description><![CDATA[通过将复合ALTER TABLE操作拆分为分步执行，可以完全避免因MySQL内部状态不一致导致的UPDATE操作失败问题。在8.0某些版本中，这种组合操作可能导致表元数据处于中间状态。MySQL对单条ALTER语句中的多个修改项有特殊优化路径。添加NULL列本应是"即时操作"(只修改元数据)单条复合ALTER在内部可能不是真正的原子操作。每个ALTER语句只执行一个变更目的。重建过程中可能产生不一致的内部状态。：清晰的执行步骤便于问题排查。将结构变更与数据变更分离执行。：每个操作都有明确的完成点。]]></description><category></category></item><item><title><![CDATA[MySql添加非空字段时的“伪空”问题]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/148145837</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/148145837</guid><author>wgdzg</author><pubDate>Thu, 22 May 2025 17:48:43 +0800</pubDate><description><![CDATA[在MySQL 8.0+版本中，向表A添加非空字段schoolId时，如果不提供默认值，会导致“伪空”状态，即字段名义上为NOT NULL，但实际存储的是隐式默认值（如0）。这种状态可能导致后续更新操作失败，如报错“Lost connection to MySQL server during query”。为避免此问题，建议采用三步法：首先添加可空字段，然后更新数据，最后将字段改为非空。理解“伪空”状态的原理有助于避免数据一致性问题。]]></description><category></category></item><item><title><![CDATA[ EF Core 实体字段类型与 MySQL 数据库中常见字段类型的映射关系列表]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/147500706</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/147500706</guid><author>wgdzg</author><pubDate>Fri, 25 Apr 2025 10:12:27 +0800</pubDate><description><![CDATA[以下是ai工具帮助整理的EF Core 实体字段类型与 MySQL 数据库中常见字段类型的映射关系列表。这个映射基于使用的 EF Core MySQL Provider]]></description><category></category></item><item><title><![CDATA[MySQL 8.0 窗口函数]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/146262877</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/146262877</guid><author>wgdzg</author><pubDate>Fri, 14 Mar 2025 17:56:18 +0800</pubDate><description><![CDATA[MySQL 从 8.0 开始支持窗口函数（Window Functions），这些函数允许对查询结果集的某一部分（称为“窗口”）执行计算，而不需要对结果进行分组（GROUP BY 会导致结果集被聚合）。窗口函数与普通聚合函数不同，它不会减少查询结果集的行数，而是为每行保留独立的计算结果。]]></description><category></category></item><item><title><![CDATA[Elasticsearch 的 .net 驱动NEST ：Fluent API 和 Object Initializer API 的异同]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/145925355</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/145925355</guid><author>wgdzg</author><pubDate>Fri, 28 Feb 2025 12:18:22 +0800</pubDate><description><![CDATA[“Fluent API” 和 “Object Initializer API” 两种风格api的异同有哪些，适用于不同的使用场景, 各自的优势和缺点，以及使用建议。]]></description><category></category></item><item><title><![CDATA[清理docker资源]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/145919550</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/145919550</guid><author>wgdzg</author><pubDate>Fri, 28 Feb 2025 09:30:11 +0800</pubDate><description><![CDATA[清理 Docker  是一个常见需求，因为 Docker 的镜像、容器、网络和卷可能会占用大量磁盘空间。如果你发现 Docker 的磁盘空间不足，可以按照以下步骤来清理不必要的资源。]]></description><category></category></item><item><title><![CDATA[辍啜惙掇裰剟]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/145746226</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/145746226</guid><author>wgdzg</author><pubDate>Thu, 20 Feb 2025 10:03:49 +0800</pubDate><description><![CDATA[辍学  (chuò xué)， 啜泣  (chuò qì) ， 忧惙  (yōu chuò) ， 拾掇  (shí duo) ，裰补  (duō bǔ) ， 剟刺  (duō cì)]]></description><category></category></item><item><title><![CDATA[将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch（3.纯python的实惠版）]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/145207697</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/145207697</guid><author>wgdzg</author><pubDate>Fri, 17 Jan 2025 15:08:34 +0800</pubDate><description><![CDATA[厉害的小伙伴最终使用python脚本免费实现了这个功能]]></description><category></category></item><item><title><![CDATA[将 AzureBlob 的日志通过 Azure Event Hubs 发给 Elasticsearch（2.换掉付费的Event Hubs）]]></title><link>https://blog.youkuaiyun.com/wgdzg/article/details/145207383</link><guid>https://blog.youkuaiyun.com/wgdzg/article/details/145207383</guid><author>wgdzg</author><pubDate>Fri, 17 Jan 2025 14:53:21 +0800</pubDate><description><![CDATA[将AzureBlob的日志通过AzureEventHubs发给Elasticsearch，但是EventHubs付费怎么办？这里有一些替代方案]]></description><category></category></item></channel></rss>