{"nodes":[{"id":"c:学习文档","tier":"category","name":"学习文档","url":"/categories/学习文档/","colorIndex":0,"categoryId":"c:学习文档","value":13,"publishedAt":1762992000000},{"id":"c:设计文档","tier":"category","name":"设计文档","url":"/categories/设计文档/","colorIndex":1,"categoryId":"c:设计文档","value":8,"publishedAt":1777593600000},{"id":"c:实践笔记","tier":"category","name":"实践笔记","url":"/categories/实践笔记/","colorIndex":2,"categoryId":"c:实践笔记","value":3,"publishedAt":1764633600000},{"id":"c:部署文档","tier":"category","name":"部署文档","url":"/categories/部署文档/","colorIndex":3,"categoryId":"c:部署文档","value":2,"publishedAt":1778112000000},{"id":"t:AI","tier":"tag","name":"AI","url":"/tags/ai/","colorIndex":0,"categoryId":"c:学习文档","value":6,"publishedAt":1778544000000},{"id":"t:认证","tier":"tag","name":"认证","url":"/tags/认证/","colorIndex":1,"categoryId":"c:设计文档","value":5,"publishedAt":1777593600000},{"id":"t:安全","tier":"tag","name":"安全","url":"/tags/安全/","colorIndex":1,"categoryId":"c:设计文档","value":4,"publishedAt":1777593600000},{"id":"t:Java","tier":"tag","name":"Java","url":"/tags/java/","colorIndex":0,"categoryId":"c:学习文档","value":3,"publishedAt":1778112000000},{"id":"t:并发编程","tier":"tag","name":"并发编程","url":"/tags/并发编程/","colorIndex":0,"categoryId":"c:学习文档","value":3,"publishedAt":1762992000000},{"id":"t:性能优化","tier":"tag","name":"性能优化","url":"/tags/性能优化/","colorIndex":2,"categoryId":"c:实践笔记","value":3,"publishedAt":1764633600000},{"id":"t:登录","tier":"tag","name":"登录","url":"/tags/登录/","colorIndex":1,"categoryId":"c:设计文档","value":3,"publishedAt":1777593600000},{"id":"t:高并发","tier":"tag","name":"高并发","url":"/tags/高并发/","colorIndex":1,"categoryId":"c:设计文档","value":3,"publishedAt":1778630400000},{"id":"t:RAG","tier":"tag","name":"RAG","url":"/tags/rag/","colorIndex":0,"categoryId":"c:学习文档","value":2,"publishedAt":1778716800000},{"id":"t:Redis","tier":"tag","name":"Redis","url":"/tags/redis/","colorIndex":1,"categoryId":"c:设计文档","value":2,"publishedAt":1778025600000},{"id":"t:Spring Boot","tier":"tag","name":"Spring Boot","url":"/tags/spring-boot/","colorIndex":0,"categoryId":"c:学习文档","value":2,"publishedAt":1762992000000},{"id":"t:博客","tier":"tag","name":"博客","url":"/tags/博客/","colorIndex":0,"categoryId":"c:学习文档","value":2,"publishedAt":1781395200000},{"id":"t:线程池","tier":"tag","name":"线程池","url":"/tags/线程池/","colorIndex":0,"categoryId":"c:学习文档","value":2,"publishedAt":1762992000000},{"id":"t:部署","tier":"tag","name":"部署","url":"/tags/部署/","colorIndex":3,"categoryId":"c:部署文档","value":2,"publishedAt":1778112000000},{"id":"t:3D","tier":"tag","name":"3D","url":"/archive/?tag=3D","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1785542400000},{"id":"t:Bitmap","tier":"tag","name":"Bitmap","url":"/archive/?tag=Bitmap","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1778025600000},{"id":"t:Bot","tier":"tag","name":"Bot","url":"/archive/?tag=Bot","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778544000000},{"id":"t:CDN","tier":"tag","name":"CDN","url":"/archive/?tag=CDN","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1786233600000},{"id":"t:Cloudflare","tier":"tag","name":"Cloudflare","url":"/archive/?tag=Cloudflare","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778716800000},{"id":"t:EasyExcel","tier":"tag","name":"EasyExcel","url":"/archive/?tag=EasyExcel","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000},{"id":"t:firefly","tier":"tag","name":"firefly","url":"/archive/?tag=firefly","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787270400000},{"id":"t:HTTP","tier":"tag","name":"HTTP","url":"/archive/?tag=HTTP","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1786233600000},{"id":"t:JWT","tier":"tag","name":"JWT","url":"/archive/?tag=JWT","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777852800000},{"id":"t:LLM","tier":"tag","name":"LLM","url":"/archive/?tag=LLM","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787788800000},{"id":"t:MinIO","tier":"tag","name":"MinIO","url":"/archive/?tag=MinIO","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1777593600000},{"id":"t:Nginx","tier":"tag","name":"Nginx","url":"/archive/?tag=Nginx","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1786233600000},{"id":"t:OAuth2","tier":"tag","name":"OAuth2","url":"/archive/?tag=OAuth2","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777766400000},{"id":"t:Oracle","tier":"tag","name":"Oracle","url":"/archive/?tag=Oracle","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1764633600000},{"id":"t:Prompt","tier":"tag","name":"Prompt","url":"/archive/?tag=Prompt","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781827200000},{"id":"t:React","tier":"tag","name":"React","url":"/archive/?tag=React","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1785542400000},{"id":"t:RocketMQ","tier":"tag","name":"RocketMQ","url":"/archive/?tag=RocketMQ","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000},{"id":"t:Skill","tier":"tag","name":"Skill","url":"/archive/?tag=Skill","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1780444800000},{"id":"t:Three","tier":"tag","name":"Three","url":"/archive/?tag=Three","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1785542400000},{"id":"t:Umami","tier":"tag","name":"Umami","url":"/archive/?tag=Umami","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778112000000},{"id":"t:Vercel","tier":"tag","name":"Vercel","url":"/archive/?tag=Vercel","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778112000000},{"id":"t:WebSocket","tier":"tag","name":"WebSocket","url":"/archive/?tag=WebSocket","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1777593600000},{"id":"t:Web安全","tier":"tag","name":"Web安全","url":"/archive/?tag=Web%E5%AE%89%E5%85%A8","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1783987200000},{"id":"t:二开","tier":"tag","name":"二开","url":"/archive/?tag=%E4%BA%8C%E5%BC%80","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787270400000},{"id":"t:最佳实践","tier":"tag","name":"最佳实践","url":"/archive/?tag=%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1783987200000},{"id":"t:分布式","tier":"tag","name":"分布式","url":"/archive/?tag=%E5%88%86%E5%B8%83%E5%BC%8F","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1778025600000},{"id":"t:分布式一致性","tier":"tag","name":"分布式一致性","url":"/archive/?tag=%E5%88%86%E5%B8%83%E5%BC%8F%E4%B8%80%E8%87%B4%E6%80%A7","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000},{"id":"t:前端","tier":"tag","name":"前端","url":"/archive/?tag=%E5%89%8D%E7%AB%AF","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781395200000},{"id":"t:大数据量","tier":"tag","name":"大数据量","url":"/archive/?tag=%E5%A4%A7%E6%95%B0%E6%8D%AE%E9%87%8F","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000},{"id":"t:对象存储","tier":"tag","name":"对象存储","url":"/archive/?tag=%E5%AF%B9%E8%B1%A1%E5%AD%98%E5%82%A8","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1777593600000},{"id":"t:导入导出","tier":"tag","name":"导入导出","url":"/archive/?tag=%E5%AF%BC%E5%85%A5%E5%AF%BC%E5%87%BA","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000},{"id":"t:工作流","tier":"tag","name":"工作流","url":"/archive/?tag=%E5%B7%A5%E4%BD%9C%E6%B5%81","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1780444800000},{"id":"t:异步编程","tier":"tag","name":"异步编程","url":"/archive/?tag=%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000},{"id":"t:扫码登录","tier":"tag","name":"扫码登录","url":"/archive/?tag=%E6%89%AB%E7%A0%81%E7%99%BB%E5%BD%95","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1777593600000},{"id":"t:接口安全","tier":"tag","name":"接口安全","url":"/archive/?tag=%E6%8E%A5%E5%8F%A3%E5%AE%89%E5%85%A8","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1783987200000},{"id":"t:数据库","tier":"tag","name":"数据库","url":"/archive/?tag=%E6%95%B0%E6%8D%AE%E5%BA%93","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1764633600000},{"id":"t:枚举","tier":"tag","name":"枚举","url":"/archive/?tag=%E6%9E%9A%E4%B8%BE","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1789257600000},{"id":"t:架构设计","tier":"tag","name":"架构设计","url":"/archive/?tag=%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000},{"id":"t:消息队列","tier":"tag","name":"消息队列","url":"/archive/?tag=%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000},{"id":"t:米塔","tier":"tag","name":"米塔","url":"/archive/?tag=%E7%B1%B3%E5%A1%94","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1785542400000},{"id":"t:缓存设计","tier":"tag","name":"缓存设计","url":"/archive/?tag=%E7%BC%93%E5%AD%98%E8%AE%BE%E8%AE%A1","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000},{"id":"t:虚拟线程","tier":"tag","name":"虚拟线程","url":"/archive/?tag=%E8%99%9A%E6%8B%9F%E7%BA%BF%E7%A8%8B","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000},{"id":"t:设计文档","tier":"tag","name":"设计文档","url":"/archive/?tag=%E8%AE%BE%E8%AE%A1%E6%96%87%E6%A1%A3","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000},{"id":"t:设计模式","tier":"tag","name":"设计模式","url":"/archive/?tag=%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1789257600000},{"id":"t:顺序消费","tier":"tag","name":"顺序消费","url":"/archive/?tag=%E9%A1%BA%E5%BA%8F%E6%B6%88%E8%B4%B9","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000},{"id":"p:details-java-enum-strategy-pattern","tier":"post","name":"Java 枚举策略模式：用枚举替换 if-else 分发的三种绑定方式","url":"/posts/details-java-enum-strategy-pattern/","colorIndex":0,"categoryId":"c:学习文档","value":10,"publishedAt":1789257600000,"postId":"details-java-enum-strategy-pattern"},{"id":"h:details-java-enum-strategy-pattern#核心摘要","tier":"heading","name":"核心摘要#","url":"/posts/details-java-enum-strategy-pattern/#核心摘要","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1789257600000,"depth":2,"postId":"details-java-enum-strategy-pattern"},{"id":"h:details-java-enum-strategy-pattern#引子","tier":"heading","name":"引子#","url":"/posts/details-java-enum-strategy-pattern/#引子","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1789257600000,"depth":2,"postId":"details-java-enum-strategy-pattern"},{"id":"h:details-java-enum-strategy-pattern#背景知识","tier":"heading","name":"背景知识#","url":"/posts/details-java-enum-strategy-pattern/#背景知识","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1789257600000,"depth":2,"postId":"details-java-enum-strategy-pattern"},{"id":"h:details-java-enum-strategy-pattern#核心内容","tier":"heading","name":"核心内容#","url":"/posts/details-java-enum-strategy-pattern/#核心内容","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1789257600000,"depth":2,"postId":"details-java-enum-strategy-pattern"},{"id":"h:details-java-enum-strategy-pattern#实战演示一时间单位偏移","tier":"heading","name":"实战演示一：时间单位偏移#","url":"/posts/details-java-enum-strategy-pattern/#实战演示一时间单位偏移","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1789257600000,"depth":2,"postId":"details-java-enum-strategy-pattern"},{"id":"h:details-java-enum-strategy-pattern#实战演示二服务分发接口--optional","tier":"heading","name":"实战演示二：服务分发（接口 + Optional）#","url":"/posts/details-java-enum-strategy-pattern/#实战演示二服务分发接口--optional","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1789257600000,"depth":2,"postId":"details-java-enum-strategy-pattern"},{"id":"h:details-java-enum-strategy-pattern#踩坑点--注意事项","tier":"heading","name":"踩坑点 & 注意事项#","url":"/posts/details-java-enum-strategy-pattern/#踩坑点--注意事项","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1789257600000,"depth":2,"postId":"details-java-enum-strategy-pattern"},{"id":"h:details-java-enum-strategy-pattern#性能对比数据","tier":"heading","name":"性能/对比数据#","url":"/posts/details-java-enum-strategy-pattern/#性能对比数据","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1789257600000,"depth":2,"postId":"details-java-enum-strategy-pattern"},{"id":"h:details-java-enum-strategy-pattern#总结","tier":"heading","name":"总结#","url":"/posts/details-java-enum-strategy-pattern/#总结","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1789257600000,"depth":2,"postId":"details-java-enum-strategy-pattern"},{"id":"h:details-java-enum-strategy-pattern#参考资料","tier":"heading","name":"参考资料#","url":"/posts/details-java-enum-strategy-pattern/#参考资料","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1789257600000,"depth":2,"postId":"details-java-enum-strategy-pattern"},{"id":"p:ai-rag-ten-strategies","tier":"post","name":"RAG 检索增强生成 10 种策略：分块、混合检索与重排序选型","url":"/posts/ai-rag-ten-strategies/","colorIndex":0,"categoryId":"c:学习文档","value":9,"publishedAt":1787788800000,"postId":"ai-rag-ten-strategies"},{"id":"h:ai-rag-ten-strategies#一引子rag-死了吗","tier":"heading","name":"一、引子：RAG 死了吗#","url":"/posts/ai-rag-ten-strategies/#一引子rag-死了吗","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787788800000,"depth":2,"postId":"ai-rag-ten-strategies"},{"id":"h:ai-rag-ten-strategies#二rag-总体流程","tier":"heading","name":"二、RAG 总体流程#","url":"/posts/ai-rag-ten-strategies/#二rag-总体流程","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787788800000,"depth":2,"postId":"ai-rag-ten-strategies"},{"id":"h:ai-rag-ten-strategies#三准备阶段策略-1-5","tier":"heading","name":"三、准备阶段：策略 1-5#","url":"/posts/ai-rag-ten-strategies/#三准备阶段策略-1-5","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787788800000,"depth":2,"postId":"ai-rag-ten-strategies"},{"id":"h:ai-rag-ten-strategies#四检索阶段策略-6-9","tier":"heading","name":"四、检索阶段：策略 6-9#","url":"/posts/ai-rag-ten-strategies/#四检索阶段策略-6-9","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787788800000,"depth":2,"postId":"ai-rag-ten-strategies"},{"id":"h:ai-rag-ten-strategies#五范式升级策略-10-与组合策略","tier":"heading","name":"五、范式升级：策略 10 与组合策略#","url":"/posts/ai-rag-ten-strategies/#五范式升级策略-10-与组合策略","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787788800000,"depth":2,"postId":"ai-rag-ten-strategies"},{"id":"h:ai-rag-ten-strategies#六十种策略速览与选型","tier":"heading","name":"六、十种策略速览与选型#","url":"/posts/ai-rag-ten-strategies/#六十种策略速览与选型","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787788800000,"depth":2,"postId":"ai-rag-ten-strategies"},{"id":"h:ai-rag-ten-strategies#七质量与工程考量","tier":"heading","name":"七、质量与工程考量#","url":"/posts/ai-rag-ten-strategies/#七质量与工程考量","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787788800000,"depth":2,"postId":"ai-rag-ten-strategies"},{"id":"h:ai-rag-ten-strategies#八结语","tier":"heading","name":"八、结语#","url":"/posts/ai-rag-ten-strategies/#八结语","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787788800000,"depth":2,"postId":"ai-rag-ten-strategies"},{"id":"h:ai-rag-ten-strategies#九参考资料","tier":"heading","name":"九、参考资料#","url":"/posts/ai-rag-ten-strategies/#九参考资料","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787788800000,"depth":2,"postId":"ai-rag-ten-strategies"},{"id":"p:others-blog-firefly-mod","tier":"post","name":"Firefly 博客魔改总结：Astro 内容系统、Svelte 交互与部署","url":"/posts/others-blog-firefly-mod/","colorIndex":0,"categoryId":"c:学习文档","value":4,"publishedAt":1787270400000,"postId":"others-blog-firefly-mod"},{"id":"h:others-blog-firefly-mod#选型背景","tier":"heading","name":"选型背景#","url":"/posts/others-blog-firefly-mod/#选型背景","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787270400000,"depth":2,"postId":"others-blog-firefly-mod"},{"id":"h:others-blog-firefly-mod#一重点","tier":"heading","name":"一、重点#","url":"/posts/others-blog-firefly-mod/#一重点","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787270400000,"depth":2,"postId":"others-blog-firefly-mod"},{"id":"h:others-blog-firefly-mod#二用到的ai模型","tier":"heading","name":"二、用到的AI模型#","url":"/posts/others-blog-firefly-mod/#二用到的ai模型","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787270400000,"depth":2,"postId":"others-blog-firefly-mod"},{"id":"h:others-blog-firefly-mod#三优点与ui复制","tier":"heading","name":"三、优点与UI复制#","url":"/posts/others-blog-firefly-mod/#三优点与ui复制","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1787270400000,"depth":2,"postId":"others-blog-firefly-mod"},{"id":"p:details-web-performance-optimization","tier":"post","name":"前端性能优化十项主流：问题、方法与收益","url":"/posts/details-web-performance-optimization/","colorIndex":0,"categoryId":"c:学习文档","value":8,"publishedAt":1786233600000,"postId":"details-web-performance-optimization"},{"id":"h:details-web-performance-optimization#引子","tier":"heading","name":"引子#","url":"/posts/details-web-performance-optimization/#引子","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1786233600000,"depth":2,"postId":"details-web-performance-optimization"},{"id":"h:details-web-performance-optimization#背景知识度量框架与优化变量","tier":"heading","name":"背景知识：度量框架与优化变量#","url":"/posts/details-web-performance-optimization/#背景知识度量框架与优化变量","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1786233600000,"depth":2,"postId":"details-web-performance-optimization"},{"id":"h:details-web-performance-optimization#十项主流优化方法","tier":"heading","name":"十项主流优化方法#","url":"/posts/details-web-performance-optimization/#十项主流优化方法","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1786233600000,"depth":2,"postId":"details-web-performance-optimization"},{"id":"h:details-web-performance-optimization#实战演示静态站点的端到端配置","tier":"heading","name":"实战演示：静态站点的端到端配置#","url":"/posts/details-web-performance-optimization/#实战演示静态站点的端到端配置","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1786233600000,"depth":2,"postId":"details-web-performance-optimization"},{"id":"h:details-web-performance-optimization#踩坑点--注意事项","tier":"heading","name":"踩坑点 & 注意事项#","url":"/posts/details-web-performance-optimization/#踩坑点--注意事项","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1786233600000,"depth":2,"postId":"details-web-performance-optimization"},{"id":"h:details-web-performance-optimization#优化方法总览","tier":"heading","name":"优化方法总览#","url":"/posts/details-web-performance-optimization/#优化方法总览","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1786233600000,"depth":2,"postId":"details-web-performance-optimization"},{"id":"h:details-web-performance-optimization#总结","tier":"heading","name":"总结#","url":"/posts/details-web-performance-optimization/#总结","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1786233600000,"depth":2,"postId":"details-web-performance-optimization"},{"id":"h:details-web-performance-optimization#参考资料","tier":"heading","name":"参考资料#","url":"/posts/details-web-performance-optimization/#参考资料","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1786233600000,"depth":2,"postId":"details-web-performance-optimization"},{"id":"p:projects-miside-3d-text","tier":"post","name":"米塔 3D 字体网页端实现：Three.js SDF Text 与物理动画","url":"/posts/projects-miside-3d-text/","colorIndex":1,"categoryId":"c:设计文档","value":7,"publishedAt":1785542400000,"postId":"projects-miside-3d-text"},{"id":"h:projects-miside-3d-text#技术栈","tier":"heading","name":"技术栈#","url":"/posts/projects-miside-3d-text/#技术栈","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1785542400000,"depth":2,"postId":"projects-miside-3d-text"},{"id":"h:projects-miside-3d-text#架构总览","tier":"heading","name":"架构总览#","url":"/posts/projects-miside-3d-text/#架构总览","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1785542400000,"depth":2,"postId":"projects-miside-3d-text"},{"id":"h:projects-miside-3d-text#核心实现原理","tier":"heading","name":"核心实现原理#","url":"/posts/projects-miside-3d-text/#核心实现原理","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1785542400000,"depth":2,"postId":"projects-miside-3d-text"},{"id":"h:projects-miside-3d-text#完整代码","tier":"heading","name":"完整代码#","url":"/posts/projects-miside-3d-text/#完整代码","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1785542400000,"depth":2,"postId":"projects-miside-3d-text"},{"id":"h:projects-miside-3d-text#踩坑点--注意事项","tier":"heading","name":"踩坑点 & 注意事项#","url":"/posts/projects-miside-3d-text/#踩坑点--注意事项","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1785542400000,"depth":2,"postId":"projects-miside-3d-text"},{"id":"h:projects-miside-3d-text#性能对比","tier":"heading","name":"性能对比#","url":"/posts/projects-miside-3d-text/#性能对比","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1785542400000,"depth":2,"postId":"projects-miside-3d-text"},{"id":"h:projects-miside-3d-text#总结","tier":"heading","name":"总结#","url":"/posts/projects-miside-3d-text/#总结","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1785542400000,"depth":2,"postId":"projects-miside-3d-text"},{"id":"p:details-api-security-practices","tier":"post","name":"接口安全实践：从传输通道、入口到数据输出的全链路防护","url":"/posts/details-api-security-practices/","colorIndex":0,"categoryId":"c:学习文档","value":7,"publishedAt":1783987200000,"postId":"details-api-security-practices"},{"id":"h:details-api-security-practices#引子","tier":"heading","name":"引子#","url":"/posts/details-api-security-practices/#引子","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1783987200000,"depth":2,"postId":"details-api-security-practices"},{"id":"h:details-api-security-practices#核心摘要","tier":"heading","name":"核心摘要#","url":"/posts/details-api-security-practices/#核心摘要","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1783987200000,"depth":2,"postId":"details-api-security-practices"},{"id":"h:details-api-security-practices#背景知识攻击面与防御分层","tier":"heading","name":"背景知识：攻击面与防御分层#","url":"/posts/details-api-security-practices/#背景知识攻击面与防御分层","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1783987200000,"depth":2,"postId":"details-api-security-practices"},{"id":"h:details-api-security-practices#20-个技巧逐一展开","tier":"heading","name":"20 个技巧逐一展开#","url":"/posts/details-api-security-practices/#20-个技巧逐一展开","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1783987200000,"depth":2,"postId":"details-api-security-practices"},{"id":"h:details-api-security-practices#落地检查清单","tier":"heading","name":"落地检查清单#","url":"/posts/details-api-security-practices/#落地检查清单","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1783987200000,"depth":2,"postId":"details-api-security-practices"},{"id":"h:details-api-security-practices#总结","tier":"heading","name":"总结#","url":"/posts/details-api-security-practices/#总结","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1783987200000,"depth":2,"postId":"details-api-security-practices"},{"id":"h:details-api-security-practices#参考资料","tier":"heading","name":"参考资料#","url":"/posts/details-api-security-practices/#参考资料","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1783987200000,"depth":2,"postId":"details-api-security-practices"},{"id":"p:projects-easyexcel-export-import-design","tier":"post","name":"EasyExcel 导出下载中心与导入设计方案","url":"/posts/projects-easyexcel-export-import-design/","colorIndex":1,"categoryId":"c:设计文档","value":11,"publishedAt":1781913600000,"postId":"projects-easyexcel-export-import-design"},{"id":"h:projects-easyexcel-export-import-design#核心摘要","tier":"heading","name":"核心摘要#","url":"/posts/projects-easyexcel-export-import-design/#核心摘要","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000,"depth":2,"postId":"projects-easyexcel-export-import-design"},{"id":"h:projects-easyexcel-export-import-design#问题与目标","tier":"heading","name":"问题与目标#","url":"/posts/projects-easyexcel-export-import-design/#问题与目标","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000,"depth":2,"postId":"projects-easyexcel-export-import-design"},{"id":"h:projects-easyexcel-export-import-design#选型easyexcel-与它的维护现状","tier":"heading","name":"选型：EasyExcel 与它的维护现状#","url":"/posts/projects-easyexcel-export-import-design/#选型easyexcel-与它的维护现状","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000,"depth":2,"postId":"projects-easyexcel-export-import-design"},{"id":"h:projects-easyexcel-export-import-design#总体架构","tier":"heading","name":"总体架构#","url":"/posts/projects-easyexcel-export-import-design/#总体架构","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000,"depth":2,"postId":"projects-easyexcel-export-import-design"},{"id":"h:projects-easyexcel-export-import-design#导出方案","tier":"heading","name":"导出方案#","url":"/posts/projects-easyexcel-export-import-design/#导出方案","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000,"depth":2,"postId":"projects-easyexcel-export-import-design"},{"id":"h:projects-easyexcel-export-import-design#导入方案","tier":"heading","name":"导入方案#","url":"/posts/projects-easyexcel-export-import-design/#导入方案","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000,"depth":2,"postId":"projects-easyexcel-export-import-design"},{"id":"h:projects-easyexcel-export-import-design#关键取舍汇总","tier":"heading","name":"关键取舍汇总#","url":"/posts/projects-easyexcel-export-import-design/#关键取舍汇总","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000,"depth":2,"postId":"projects-easyexcel-export-import-design"},{"id":"h:projects-easyexcel-export-import-design#风险与应对","tier":"heading","name":"风险与应对#","url":"/posts/projects-easyexcel-export-import-design/#风险与应对","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000,"depth":2,"postId":"projects-easyexcel-export-import-design"},{"id":"h:projects-easyexcel-export-import-design#验证计划","tier":"heading","name":"验证计划#","url":"/posts/projects-easyexcel-export-import-design/#验证计划","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000,"depth":2,"postId":"projects-easyexcel-export-import-design"},{"id":"h:projects-easyexcel-export-import-design#总结","tier":"heading","name":"总结#","url":"/posts/projects-easyexcel-export-import-design/#总结","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000,"depth":2,"postId":"projects-easyexcel-export-import-design"},{"id":"h:projects-easyexcel-export-import-design#参考资料","tier":"heading","name":"参考资料#","url":"/posts/projects-easyexcel-export-import-design/#参考资料","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1781913600000,"depth":2,"postId":"projects-easyexcel-export-import-design"},{"id":"p:ai-prompt-collection","tier":"post","name":"AI 辅助前端开发 Prompt 模板集：目录结构、组件复用与代码审查","url":"/posts/ai-prompt-collection/","colorIndex":0,"categoryId":"c:学习文档","value":2,"publishedAt":1781827200000,"postId":"ai-prompt-collection"},{"id":"h:ai-prompt-collection#一规范限制","tier":"heading","name":"一、规范限制#","url":"/posts/ai-prompt-collection/#一规范限制","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781827200000,"depth":2,"postId":"ai-prompt-collection"},{"id":"h:ai-prompt-collection#二生图提示词","tier":"heading","name":"二、生图提示词#","url":"/posts/ai-prompt-collection/#二生图提示词","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781827200000,"depth":2,"postId":"ai-prompt-collection"},{"id":"p:ai-blog-ai-zero-editing","tier":"post","name":"这个博客《纯AI，零人工》","url":"/posts/ai-blog-ai-zero-editing/","colorIndex":0,"categoryId":"c:学习文档","value":3,"publishedAt":1781395200000,"postId":"ai-blog-ai-zero-editing"},{"id":"h:ai-blog-ai-zero-editing#一问题与目标","tier":"heading","name":"一、问题与目标#","url":"/posts/ai-blog-ai-zero-editing/#一问题与目标","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781395200000,"depth":2,"postId":"ai-blog-ai-zero-editing"},{"id":"h:ai-blog-ai-zero-editing#二ai-工具","tier":"heading","name":"二、AI 工具#","url":"/posts/ai-blog-ai-zero-editing/#二ai-工具","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781395200000,"depth":2,"postId":"ai-blog-ai-zero-editing"},{"id":"h:ai-blog-ai-zero-editing#三博客设计","tier":"heading","name":"三、博客设计#","url":"/posts/ai-blog-ai-zero-editing/#三博客设计","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781395200000,"depth":2,"postId":"ai-blog-ai-zero-editing"},{"id":"p:projects-rocketmq-ordered-message-sharding","tier":"post","name":"RocketMQ 顺序消息与多线程分片：生产、存储、消费的一致性设计","url":"/posts/projects-rocketmq-ordered-message-sharding/","colorIndex":0,"categoryId":"c:学习文档","value":15,"publishedAt":1781308800000,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#核心摘要","tier":"heading","name":"核心摘要#","url":"/posts/projects-rocketmq-ordered-message-sharding/#核心摘要","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#引子状态机消费乱序","tier":"heading","name":"引子：状态机消费乱序#","url":"/posts/projects-rocketmq-ordered-message-sharding/#引子状态机消费乱序","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#先定义顺序的边界","tier":"heading","name":"先定义顺序的边界#","url":"/posts/projects-rocketmq-ordered-message-sharding/#先定义顺序的边界","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#全链路机制","tier":"heading","name":"全链路机制#","url":"/posts/projects-rocketmq-ordered-message-sharding/#全链路机制","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#生产端分片键路由与串行发送","tier":"heading","name":"生产端：分片键路由与串行发送#","url":"/posts/projects-rocketmq-ordered-message-sharding/#生产端分片键路由与串行发送","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#broker-端队列内-fifo-与可配置的可靠性","tier":"heading","name":"Broker 端：队列内 FIFO 与可配置的可靠性#","url":"/posts/projects-rocketmq-ordered-message-sharding/#broker-端队列内-fifo-与可配置的可靠性","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#消费端三把锁与并行度模型","tier":"heading","name":"消费端：三把锁与并行度模型#","url":"/posts/projects-rocketmq-ordered-message-sharding/#消费端三把锁与并行度模型","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#提升吞吐四个方案与各自的代价","tier":"heading","name":"提升吞吐：四个方案与各自的代价#","url":"/posts/projects-rocketmq-ordered-message-sharding/#提升吞吐四个方案与各自的代价","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#消费失败与重试顺序的代价","tier":"heading","name":"消费失败与重试：顺序的代价#","url":"/posts/projects-rocketmq-ordered-message-sharding/#消费失败与重试顺序的代价","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#一致性设计at-least-once-之上的业务幂等","tier":"heading","name":"一致性设计：at-least-once 之上的业务幂等#","url":"/posts/projects-rocketmq-ordered-message-sharding/#一致性设计at-least-once-之上的业务幂等","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#可观测性顺序消费特有的监控盲区","tier":"heading","name":"可观测性：顺序消费特有的监控盲区#","url":"/posts/projects-rocketmq-ordered-message-sharding/#可观测性顺序消费特有的监控盲区","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#实战演示订单状态变更的消费端","tier":"heading","name":"实战演示：订单状态变更的消费端#","url":"/posts/projects-rocketmq-ordered-message-sharding/#实战演示订单状态变更的消费端","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#踩坑点","tier":"heading","name":"踩坑点#","url":"/posts/projects-rocketmq-ordered-message-sharding/#踩坑点","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#总结","tier":"heading","name":"总结#","url":"/posts/projects-rocketmq-ordered-message-sharding/#总结","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"h:projects-rocketmq-ordered-message-sharding#参考资料","tier":"heading","name":"参考资料#","url":"/posts/projects-rocketmq-ordered-message-sharding/#参考资料","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1781308800000,"depth":2,"postId":"projects-rocketmq-ordered-message-sharding"},{"id":"p:ai-openspec-superpowers-workflow","tier":"post","name":"OpenSpec+Superpowers 实现流水线开发","url":"/posts/ai-openspec-superpowers-workflow/","colorIndex":0,"categoryId":"c:学习文档","value":10,"publishedAt":1780444800000,"postId":"ai-openspec-superpowers-workflow"},{"id":"h:ai-openspec-superpowers-workflow#一介绍","tier":"heading","name":"一、介绍#","url":"/posts/ai-openspec-superpowers-workflow/#一介绍","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1780444800000,"depth":2,"postId":"ai-openspec-superpowers-workflow"},{"id":"h:ai-openspec-superpowers-workflow#二作用","tier":"heading","name":"二、作用#","url":"/posts/ai-openspec-superpowers-workflow/#二作用","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1780444800000,"depth":2,"postId":"ai-openspec-superpowers-workflow"},{"id":"h:ai-openspec-superpowers-workflow#三使用步骤","tier":"heading","name":"三、使用步骤#","url":"/posts/ai-openspec-superpowers-workflow/#三使用步骤","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1780444800000,"depth":2,"postId":"ai-openspec-superpowers-workflow"},{"id":"h:ai-openspec-superpowers-workflow#四相关-skill","tier":"heading","name":"四、相关 Skill#","url":"/posts/ai-openspec-superpowers-workflow/#四相关-skill","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1780444800000,"depth":2,"postId":"ai-openspec-superpowers-workflow"},{"id":"h:ai-openspec-superpowers-workflow#五安装","tier":"heading","name":"五、安装#","url":"/posts/ai-openspec-superpowers-workflow/#五安装","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1780444800000,"depth":2,"postId":"ai-openspec-superpowers-workflow"},{"id":"h:ai-openspec-superpowers-workflow#六卸载","tier":"heading","name":"六、卸载#","url":"/posts/ai-openspec-superpowers-workflow/#六卸载","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1780444800000,"depth":2,"postId":"ai-openspec-superpowers-workflow"},{"id":"h:ai-openspec-superpowers-workflow#七协同使用方法","tier":"heading","name":"七、协同使用方法#","url":"/posts/ai-openspec-superpowers-workflow/#七协同使用方法","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1780444800000,"depth":2,"postId":"ai-openspec-superpowers-workflow"},{"id":"h:ai-openspec-superpowers-workflow#八常见问题","tier":"heading","name":"八、常见问题#","url":"/posts/ai-openspec-superpowers-workflow/#八常见问题","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1780444800000,"depth":2,"postId":"ai-openspec-superpowers-workflow"},{"id":"h:ai-openspec-superpowers-workflow#九总结","tier":"heading","name":"九、总结#","url":"/posts/ai-openspec-superpowers-workflow/#九总结","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1780444800000,"depth":2,"postId":"ai-openspec-superpowers-workflow"},{"id":"h:ai-openspec-superpowers-workflow#十参考资料","tier":"heading","name":"十、参考资料#","url":"/posts/ai-openspec-superpowers-workflow/#十参考资料","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1780444800000,"depth":2,"postId":"ai-openspec-superpowers-workflow"},{"id":"p:ai-blog-ai-search-vectorize","tier":"post","name":"Cloudflare Vectorize实现AI搜索问答","url":"/posts/ai-blog-ai-search-vectorize/","colorIndex":1,"categoryId":"c:设计文档","value":10,"publishedAt":1778716800000,"postId":"ai-blog-ai-search-vectorize"},{"id":"h:ai-blog-ai-search-vectorize#一问题与目标","tier":"heading","name":"一、问题与目标#","url":"/posts/ai-blog-ai-search-vectorize/#一问题与目标","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778716800000,"depth":2,"postId":"ai-blog-ai-search-vectorize"},{"id":"h:ai-blog-ai-search-vectorize#二架构","tier":"heading","name":"二、架构#","url":"/posts/ai-blog-ai-search-vectorize/#二架构","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778716800000,"depth":2,"postId":"ai-blog-ai-search-vectorize"},{"id":"h:ai-blog-ai-search-vectorize#三文档分块策略","tier":"heading","name":"三、文档分块策略#","url":"/posts/ai-blog-ai-search-vectorize/#三文档分块策略","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778716800000,"depth":2,"postId":"ai-blog-ai-search-vectorize"},{"id":"h:ai-blog-ai-search-vectorize#四向量化与存储","tier":"heading","name":"四、向量化与存储#","url":"/posts/ai-blog-ai-search-vectorize/#四向量化与存储","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778716800000,"depth":2,"postId":"ai-blog-ai-search-vectorize"},{"id":"h:ai-blog-ai-search-vectorize#五worker-端问答流程","tier":"heading","name":"五、Worker 端问答流程#","url":"/posts/ai-blog-ai-search-vectorize/#五worker-端问答流程","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778716800000,"depth":2,"postId":"ai-blog-ai-search-vectorize"},{"id":"h:ai-blog-ai-search-vectorize#六前端组件","tier":"heading","name":"六、前端组件#","url":"/posts/ai-blog-ai-search-vectorize/#六前端组件","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778716800000,"depth":2,"postId":"ai-blog-ai-search-vectorize"},{"id":"h:ai-blog-ai-search-vectorize#七敏感配置处理","tier":"heading","name":"七、敏感配置处理#","url":"/posts/ai-blog-ai-search-vectorize/#七敏感配置处理","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778716800000,"depth":2,"postId":"ai-blog-ai-search-vectorize"},{"id":"h:ai-blog-ai-search-vectorize#八资源消耗","tier":"heading","name":"八、资源消耗#","url":"/posts/ai-blog-ai-search-vectorize/#八资源消耗","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778716800000,"depth":2,"postId":"ai-blog-ai-search-vectorize"},{"id":"h:ai-blog-ai-search-vectorize#九文件清单","tier":"heading","name":"九、文件清单#","url":"/posts/ai-blog-ai-search-vectorize/#九文件清单","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778716800000,"depth":2,"postId":"ai-blog-ai-search-vectorize"},{"id":"h:ai-blog-ai-search-vectorize#十踩坑记录","tier":"heading","name":"十、踩坑记录#","url":"/posts/ai-blog-ai-search-vectorize/#十踩坑记录","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778716800000,"depth":2,"postId":"ai-blog-ai-search-vectorize"},{"id":"p:projects-interaction-cache-design","tier":"post","name":"交互数据缓存设计：前端到后端的全链路方案","url":"/posts/projects-interaction-cache-design/","colorIndex":1,"categoryId":"c:设计文档","value":13,"publishedAt":1778630400000,"postId":"projects-interaction-cache-design"},{"id":"h:projects-interaction-cache-design#核心摘要","tier":"heading","name":"核心摘要#","url":"/posts/projects-interaction-cache-design/#核心摘要","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000,"depth":2,"postId":"projects-interaction-cache-design"},{"id":"h:projects-interaction-cache-design#问题与目标","tier":"heading","name":"问题与目标#","url":"/posts/projects-interaction-cache-design/#问题与目标","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000,"depth":2,"postId":"projects-interaction-cache-design"},{"id":"h:projects-interaction-cache-design#全链路架构","tier":"heading","name":"全链路架构#","url":"/posts/projects-interaction-cache-design/#全链路架构","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000,"depth":2,"postId":"projects-interaction-cache-design"},{"id":"h:projects-interaction-cache-design#前端层只缓存展示态","tier":"heading","name":"前端层：只缓存展示态#","url":"/posts/projects-interaction-cache-design/#前端层只缓存展示态","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000,"depth":2,"postId":"projects-interaction-cache-design"},{"id":"h:projects-interaction-cache-design#网关层限流优先缓存只给匿名读","tier":"heading","name":"网关层：限流优先，缓存只给匿名读#","url":"/posts/projects-interaction-cache-design/#网关层限流优先缓存只给匿名读","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000,"depth":2,"postId":"projects-interaction-cache-design"},{"id":"h:projects-interaction-cache-design#后端层按流量分级","tier":"heading","name":"后端层：按流量分级#","url":"/posts/projects-interaction-cache-design/#后端层按流量分级","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000,"depth":2,"postId":"projects-interaction-cache-design"},{"id":"h:projects-interaction-cache-design#一致性兜底三道防线","tier":"heading","name":"一致性兜底：三道防线#","url":"/posts/projects-interaction-cache-design/#一致性兜底三道防线","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000,"depth":2,"postId":"projects-interaction-cache-design"},{"id":"h:projects-interaction-cache-design#三大经典故障的防护","tier":"heading","name":"三大经典故障的防护#","url":"/posts/projects-interaction-cache-design/#三大经典故障的防护","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000,"depth":2,"postId":"projects-interaction-cache-design"},{"id":"h:projects-interaction-cache-design#流量分级决策总表","tier":"heading","name":"流量分级决策总表#","url":"/posts/projects-interaction-cache-design/#流量分级决策总表","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000,"depth":2,"postId":"projects-interaction-cache-design"},{"id":"h:projects-interaction-cache-design#踩坑点","tier":"heading","name":"踩坑点#","url":"/posts/projects-interaction-cache-design/#踩坑点","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000,"depth":2,"postId":"projects-interaction-cache-design"},{"id":"h:projects-interaction-cache-design#风险","tier":"heading","name":"风险#","url":"/posts/projects-interaction-cache-design/#风险","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000,"depth":2,"postId":"projects-interaction-cache-design"},{"id":"h:projects-interaction-cache-design#总结","tier":"heading","name":"总结#","url":"/posts/projects-interaction-cache-design/#总结","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000,"depth":2,"postId":"projects-interaction-cache-design"},{"id":"h:projects-interaction-cache-design#参考资料","tier":"heading","name":"参考资料#","url":"/posts/projects-interaction-cache-design/#参考资料","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1778630400000,"depth":2,"postId":"projects-interaction-cache-design"},{"id":"p:ai-napcat-astrbot-deployment","tier":"post","name":"NapCat+AstrBot部署QQ机器人","url":"/posts/ai-napcat-astrbot-deployment/","colorIndex":3,"categoryId":"c:部署文档","value":12,"publishedAt":1778544000000,"postId":"ai-napcat-astrbot-deployment"},{"id":"h:ai-napcat-astrbot-deployment#组件职责","tier":"heading","name":"组件职责#","url":"/posts/ai-napcat-astrbot-deployment/#组件职责","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778544000000,"depth":2,"postId":"ai-napcat-astrbot-deployment"},{"id":"h:ai-napcat-astrbot-deployment#一部署环境要求","tier":"heading","name":"一、部署环境要求#","url":"/posts/ai-napcat-astrbot-deployment/#一部署环境要求","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778544000000,"depth":2,"postId":"ai-napcat-astrbot-deployment"},{"id":"h:ai-napcat-astrbot-deployment#二目录结构","tier":"heading","name":"二、目录结构#","url":"/posts/ai-napcat-astrbot-deployment/#二目录结构","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778544000000,"depth":2,"postId":"ai-napcat-astrbot-deployment"},{"id":"h:ai-napcat-astrbot-deployment#三docker-composeyml","tier":"heading","name":"三、docker-compose.yml#","url":"/posts/ai-napcat-astrbot-deployment/#三docker-composeyml","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778544000000,"depth":2,"postId":"ai-napcat-astrbot-deployment"},{"id":"h:ai-napcat-astrbot-deployment#四本地-docker-desktop-部署","tier":"heading","name":"四、本地 Docker Desktop 部署#","url":"/posts/ai-napcat-astrbot-deployment/#四本地-docker-desktop-部署","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778544000000,"depth":2,"postId":"ai-napcat-astrbot-deployment"},{"id":"h:ai-napcat-astrbot-deployment#五服务器部署","tier":"heading","name":"五、服务器部署#","url":"/posts/ai-napcat-astrbot-deployment/#五服务器部署","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778544000000,"depth":2,"postId":"ai-napcat-astrbot-deployment"},{"id":"h:ai-napcat-astrbot-deployment#六napcat-相关配置","tier":"heading","name":"六、NapCat 相关配置#","url":"/posts/ai-napcat-astrbot-deployment/#六napcat-相关配置","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778544000000,"depth":2,"postId":"ai-napcat-astrbot-deployment"},{"id":"h:ai-napcat-astrbot-deployment#七astrbot-相关配置","tier":"heading","name":"七、AstrBot 相关配置#","url":"/posts/ai-napcat-astrbot-deployment/#七astrbot-相关配置","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778544000000,"depth":2,"postId":"ai-napcat-astrbot-deployment"},{"id":"h:ai-napcat-astrbot-deployment#八人格设置","tier":"heading","name":"八、人格设置#","url":"/posts/ai-napcat-astrbot-deployment/#八人格设置","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778544000000,"depth":2,"postId":"ai-napcat-astrbot-deployment"},{"id":"h:ai-napcat-astrbot-deployment#九推荐插件","tier":"heading","name":"九、推荐插件#","url":"/posts/ai-napcat-astrbot-deployment/#九推荐插件","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778544000000,"depth":2,"postId":"ai-napcat-astrbot-deployment"},{"id":"h:ai-napcat-astrbot-deployment#十常见问题","tier":"heading","name":"十、常见问题#","url":"/posts/ai-napcat-astrbot-deployment/#十常见问题","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778544000000,"depth":2,"postId":"ai-napcat-astrbot-deployment"},{"id":"h:ai-napcat-astrbot-deployment#十一参考资料","tier":"heading","name":"十一、参考资料#","url":"/posts/ai-napcat-astrbot-deployment/#十一参考资料","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778544000000,"depth":2,"postId":"ai-napcat-astrbot-deployment"},{"id":"p:others-umami-vercel-neon-deployment","tier":"post","name":"Umami通过Vercel+Neon部署方案","url":"/posts/others-umami-vercel-neon-deployment/","colorIndex":3,"categoryId":"c:部署文档","value":5,"publishedAt":1778112000000,"postId":"others-umami-vercel-neon-deployment"},{"id":"h:others-umami-vercel-neon-deployment#一架构","tier":"heading","name":"一、架构#","url":"/posts/others-umami-vercel-neon-deployment/#一架构","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"others-umami-vercel-neon-deployment"},{"id":"h:others-umami-vercel-neon-deployment#二部署步骤","tier":"heading","name":"二、部署步骤#","url":"/posts/others-umami-vercel-neon-deployment/#二部署步骤","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"others-umami-vercel-neon-deployment"},{"id":"h:others-umami-vercel-neon-deployment#三本项目获取-uvpv-的实现原理","tier":"heading","name":"三、本项目获取 UV/PV 的实现原理#","url":"/posts/others-umami-vercel-neon-deployment/#三本项目获取-uvpv-的实现原理","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"others-umami-vercel-neon-deployment"},{"id":"h:others-umami-vercel-neon-deployment#四设置数据自动清理","tier":"heading","name":"四、设置数据自动清理#","url":"/posts/others-umami-vercel-neon-deployment/#四设置数据自动清理","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"others-umami-vercel-neon-deployment"},{"id":"h:others-umami-vercel-neon-deployment#五更新-umami-版本","tier":"heading","name":"五、更新 Umami 版本#","url":"/posts/others-umami-vercel-neon-deployment/#五更新-umami-版本","colorIndex":3,"categoryId":"c:部署文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"others-umami-vercel-neon-deployment"},{"id":"p:projects-java-thread-pool-configuration","tier":"post","name":"Java 线程池配置指南：核心参数、线程数估算与拒绝策略","url":"/posts/projects-java-thread-pool-configuration/","colorIndex":0,"categoryId":"c:学习文档","value":16,"publishedAt":1778112000000,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#一核心摘要","tier":"heading","name":"一、核心摘要#","url":"/posts/projects-java-thread-pool-configuration/#一核心摘要","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#二为什么需要线程池","tier":"heading","name":"二、为什么需要线程池#","url":"/posts/projects-java-thread-pool-configuration/#二为什么需要线程池","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#三threadpoolexecutor-核心参数","tier":"heading","name":"三、ThreadPoolExecutor 核心参数#","url":"/posts/projects-java-thread-pool-configuration/#三threadpoolexecutor-核心参数","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#四任务提交与执行流程","tier":"heading","name":"四、任务提交与执行流程#","url":"/posts/projects-java-thread-pool-configuration/#四任务提交与执行流程","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#五cpu-密集型与-io-密集型任务","tier":"heading","name":"五、CPU 密集型与 IO 密集型任务#","url":"/posts/projects-java-thread-pool-configuration/#五cpu-密集型与-io-密集型任务","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#六线程数估算方法","tier":"heading","name":"六、线程数估算方法#","url":"/posts/projects-java-thread-pool-configuration/#六线程数估算方法","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#七工作队列选型","tier":"heading","name":"七、工作队列选型#","url":"/posts/projects-java-thread-pool-configuration/#七工作队列选型","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#八常见反模式","tier":"heading","name":"八、常见反模式#","url":"/posts/projects-java-thread-pool-configuration/#八常见反模式","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#九企业级配置案例","tier":"heading","name":"九、企业级配置案例#","url":"/posts/projects-java-thread-pool-configuration/#九企业级配置案例","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#十动态线程池","tier":"heading","name":"十、动态线程池#","url":"/posts/projects-java-thread-pool-configuration/#十动态线程池","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#十一可观测性监控与告警","tier":"heading","name":"十一、可观测性：监控与告警#","url":"/posts/projects-java-thread-pool-configuration/#十一可观测性监控与告警","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#十二性能调优建议","tier":"heading","name":"十二、性能调优建议#","url":"/posts/projects-java-thread-pool-configuration/#十二性能调优建议","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#十三常见问题解答faq","tier":"heading","name":"十三、常见问题解答（FAQ）#","url":"/posts/projects-java-thread-pool-configuration/#十三常见问题解答faq","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#十四决策速查表","tier":"heading","name":"十四、决策速查表#","url":"/posts/projects-java-thread-pool-configuration/#十四决策速查表","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#十五总结","tier":"heading","name":"十五、总结#","url":"/posts/projects-java-thread-pool-configuration/#十五总结","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"h:projects-java-thread-pool-configuration#十六参考资料","tier":"heading","name":"十六、参考资料#","url":"/posts/projects-java-thread-pool-configuration/#十六参考资料","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-thread-pool-configuration"},{"id":"p:projects-java-virtual-thread-async-orchestration","tier":"post","name":"Java 21 虚拟线程与异步编排：线程池、CompletableFuture 选型","url":"/posts/projects-java-virtual-thread-async-orchestration/","colorIndex":0,"categoryId":"c:学习文档","value":13,"publishedAt":1778112000000,"postId":"projects-java-virtual-thread-async-orchestration"},{"id":"h:projects-java-virtual-thread-async-orchestration#一背景","tier":"heading","name":"一、背景#","url":"/posts/projects-java-virtual-thread-async-orchestration/#一背景","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-virtual-thread-async-orchestration"},{"id":"h:projects-java-virtual-thread-async-orchestration#二java-并发模型的演进史","tier":"heading","name":"二、Java 并发模型的演进史#","url":"/posts/projects-java-virtual-thread-async-orchestration/#二java-并发模型的演进史","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-virtual-thread-async-orchestration"},{"id":"h:projects-java-virtual-thread-async-orchestration#三虚拟线程","tier":"heading","name":"三、虚拟线程#","url":"/posts/projects-java-virtual-thread-async-orchestration/#三虚拟线程","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-virtual-thread-async-orchestration"},{"id":"h:projects-java-virtual-thread-async-orchestration#四虚拟线程-vs-平台线程全面对比","tier":"heading","name":"四、虚拟线程 vs 平台线程：全面对比#","url":"/posts/projects-java-virtual-thread-async-orchestration/#四虚拟线程-vs-平台线程全面对比","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-virtual-thread-async-orchestration"},{"id":"h:projects-java-virtual-thread-async-orchestration#五虚拟线程的使用方式完整代码","tier":"heading","name":"五、虚拟线程的使用方式（完整代码）#","url":"/posts/projects-java-virtual-thread-async-orchestration/#五虚拟线程的使用方式完整代码","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-virtual-thread-async-orchestration"},{"id":"h:projects-java-virtual-thread-async-orchestration#六️-虚拟线程踩坑大全12个坑","tier":"heading","name":"六、⚠️ 虚拟线程踩坑大全（12个坑）#","url":"/posts/projects-java-virtual-thread-async-orchestration/#六️-虚拟线程踩坑大全12个坑","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-virtual-thread-async-orchestration"},{"id":"h:projects-java-virtual-thread-async-orchestration#七completablefuture-异步编排从零讲起","tier":"heading","name":"七、CompletableFuture 异步编排从零讲起#","url":"/posts/projects-java-virtual-thread-async-orchestration/#七completablefuture-异步编排从零讲起","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-virtual-thread-async-orchestration"},{"id":"h:projects-java-virtual-thread-async-orchestration#八️-completablefuture-踩坑大全8个坑","tier":"heading","name":"八、⚠️ CompletableFuture 踩坑大全（8个坑）#","url":"/posts/projects-java-virtual-thread-async-orchestration/#八️-completablefuture-踩坑大全8个坑","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-virtual-thread-async-orchestration"},{"id":"h:projects-java-virtual-thread-async-orchestration#九结构化并发下一代并发编程","tier":"heading","name":"九、结构化并发：下一代并发编程#","url":"/posts/projects-java-virtual-thread-async-orchestration/#九结构化并发下一代并发编程","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-virtual-thread-async-orchestration"},{"id":"h:projects-java-virtual-thread-async-orchestration#十响应式编程reactorwebflux概览","tier":"heading","name":"十、响应式编程（Reactor/WebFlux）概览#","url":"/posts/projects-java-virtual-thread-async-orchestration/#十响应式编程reactorwebflux概览","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-virtual-thread-async-orchestration"},{"id":"h:projects-java-virtual-thread-async-orchestration#十一四种模型横向大对比","tier":"heading","name":"十一、四种模型横向大对比#","url":"/posts/projects-java-virtual-thread-async-orchestration/#十一四种模型横向大对比","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-virtual-thread-async-orchestration"},{"id":"h:projects-java-virtual-thread-async-orchestration#十二企业级选型决策指南","tier":"heading","name":"十二、企业级选型决策指南#","url":"/posts/projects-java-virtual-thread-async-orchestration/#十二企业级选型决策指南","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-virtual-thread-async-orchestration"},{"id":"h:projects-java-virtual-thread-async-orchestration#十三核心总结与学习路径","tier":"heading","name":"十三、核心总结与学习路径#","url":"/posts/projects-java-virtual-thread-async-orchestration/#十三核心总结与学习路径","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1778112000000,"depth":2,"postId":"projects-java-virtual-thread-async-orchestration"},{"id":"p:projects-redis-bitmap-snowflake-id","tier":"post","name":"Redis中Bitmap、雪花ID、分布式的坑","url":"/posts/projects-redis-bitmap-snowflake-id/","colorIndex":2,"categoryId":"c:实践笔记","value":8,"publishedAt":1778025600000,"postId":"projects-redis-bitmap-snowflake-id"},{"id":"h:projects-redis-bitmap-snowflake-id#一案发现场","tier":"heading","name":"一、案发现场#","url":"/posts/projects-redis-bitmap-snowflake-id/#一案发现场","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1778025600000,"depth":2,"postId":"projects-redis-bitmap-snowflake-id"},{"id":"h:projects-redis-bitmap-snowflake-id#二问题现象","tier":"heading","name":"二、问题现象#","url":"/posts/projects-redis-bitmap-snowflake-id/#二问题现象","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1778025600000,"depth":2,"postId":"projects-redis-bitmap-snowflake-id"},{"id":"h:projects-redis-bitmap-snowflake-id#三从-bitmap-本身分析","tier":"heading","name":"三、从 Bitmap 本身分析#","url":"/posts/projects-redis-bitmap-snowflake-id/#三从-bitmap-本身分析","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1778025600000,"depth":2,"postId":"projects-redis-bitmap-snowflake-id"},{"id":"h:projects-redis-bitmap-snowflake-id#四从雪花-id-角度分析","tier":"heading","name":"四、从雪花 ID 角度分析#","url":"/posts/projects-redis-bitmap-snowflake-id/#四从雪花-id-角度分析","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1778025600000,"depth":2,"postId":"projects-redis-bitmap-snowflake-id"},{"id":"h:projects-redis-bitmap-snowflake-id#五从分布式角度分析","tier":"heading","name":"五、从分布式角度分析#","url":"/posts/projects-redis-bitmap-snowflake-id/#五从分布式角度分析","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1778025600000,"depth":2,"postId":"projects-redis-bitmap-snowflake-id"},{"id":"h:projects-redis-bitmap-snowflake-id#六roaringbitmap-能解决吗","tier":"heading","name":"六、RoaringBitmap 能解决吗？#","url":"/posts/projects-redis-bitmap-snowflake-id/#六roaringbitmap-能解决吗","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1778025600000,"depth":2,"postId":"projects-redis-bitmap-snowflake-id"},{"id":"h:projects-redis-bitmap-snowflake-id#七正确方案string--set用户维度","tier":"heading","name":"七、正确方案：String + Set（用户维度）#","url":"/posts/projects-redis-bitmap-snowflake-id/#七正确方案string--set用户维度","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1778025600000,"depth":2,"postId":"projects-redis-bitmap-snowflake-id"},{"id":"h:projects-redis-bitmap-snowflake-id#八总结","tier":"heading","name":"八、总结#","url":"/posts/projects-redis-bitmap-snowflake-id/#八总结","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1778025600000,"depth":2,"postId":"projects-redis-bitmap-snowflake-id"},{"id":"p:projects-token-storage-jwt-design","tier":"post","name":"前后端 Token 存储方案：RS256、HttpOnly Cookie 与主动吊销","url":"/posts/projects-token-storage-jwt-design/","colorIndex":1,"categoryId":"c:设计文档","value":11,"publishedAt":1777852800000,"postId":"projects-token-storage-jwt-design"},{"id":"h:projects-token-storage-jwt-design#一背景与问题","tier":"heading","name":"一、背景与问题#","url":"/posts/projects-token-storage-jwt-design/#一背景与问题","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777852800000,"depth":2,"postId":"projects-token-storage-jwt-design"},{"id":"h:projects-token-storage-jwt-design#二核心设计","tier":"heading","name":"二、核心设计#","url":"/posts/projects-token-storage-jwt-design/#二核心设计","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777852800000,"depth":2,"postId":"projects-token-storage-jwt-design"},{"id":"h:projects-token-storage-jwt-design#三技术选型","tier":"heading","name":"三、技术选型#","url":"/posts/projects-token-storage-jwt-design/#三技术选型","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777852800000,"depth":2,"postId":"projects-token-storage-jwt-design"},{"id":"h:projects-token-storage-jwt-design#四详细实现","tier":"heading","name":"四、详细实现#","url":"/posts/projects-token-storage-jwt-design/#四详细实现","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777852800000,"depth":2,"postId":"projects-token-storage-jwt-design"},{"id":"h:projects-token-storage-jwt-design#五安全设计","tier":"heading","name":"五、安全设计#","url":"/posts/projects-token-storage-jwt-design/#五安全设计","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777852800000,"depth":2,"postId":"projects-token-storage-jwt-design"},{"id":"h:projects-token-storage-jwt-design#六配置示例","tier":"heading","name":"六、配置示例#","url":"/posts/projects-token-storage-jwt-design/#六配置示例","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777852800000,"depth":2,"postId":"projects-token-storage-jwt-design"},{"id":"h:projects-token-storage-jwt-design#七迁移路径","tier":"heading","name":"七、迁移路径#","url":"/posts/projects-token-storage-jwt-design/#七迁移路径","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777852800000,"depth":2,"postId":"projects-token-storage-jwt-design"},{"id":"h:projects-token-storage-jwt-design#八性能调优","tier":"heading","name":"八、性能调优#","url":"/posts/projects-token-storage-jwt-design/#八性能调优","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777852800000,"depth":2,"postId":"projects-token-storage-jwt-design"},{"id":"h:projects-token-storage-jwt-design#九常见问题","tier":"heading","name":"九、常见问题#","url":"/posts/projects-token-storage-jwt-design/#九常见问题","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777852800000,"depth":2,"postId":"projects-token-storage-jwt-design"},{"id":"h:projects-token-storage-jwt-design#十总结","tier":"heading","name":"十、总结#","url":"/posts/projects-token-storage-jwt-design/#十总结","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777852800000,"depth":2,"postId":"projects-token-storage-jwt-design"},{"id":"h:projects-token-storage-jwt-design#十一参考资料","tier":"heading","name":"十一、参考资料#","url":"/posts/projects-token-storage-jwt-design/#十一参考资料","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777852800000,"depth":2,"postId":"projects-token-storage-jwt-design"},{"id":"p:projects-oauth2-third-party-login","tier":"post","name":"OAuth2 第三方登录：GitHub、微信、QQ 授权码流程统一设计","url":"/posts/projects-oauth2-third-party-login/","colorIndex":1,"categoryId":"c:设计文档","value":10,"publishedAt":1777766400000,"postId":"projects-oauth2-third-party-login"},{"id":"h:projects-oauth2-third-party-login#方案边界","tier":"heading","name":"方案边界#","url":"/posts/projects-oauth2-third-party-login/#方案边界","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777766400000,"depth":2,"postId":"projects-oauth2-third-party-login"},{"id":"h:projects-oauth2-third-party-login#一通用-oauth2-授权码流程","tier":"heading","name":"一、通用 OAuth2 授权码流程#","url":"/posts/projects-oauth2-third-party-login/#一通用-oauth2-授权码流程","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777766400000,"depth":2,"postId":"projects-oauth2-third-party-login"},{"id":"h:projects-oauth2-third-party-login#二github-登录","tier":"heading","name":"二、GitHub 登录#","url":"/posts/projects-oauth2-third-party-login/#二github-登录","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777766400000,"depth":2,"postId":"projects-oauth2-third-party-login"},{"id":"h:projects-oauth2-third-party-login#三微信登录网站应用","tier":"heading","name":"三、微信登录（网站应用）#","url":"/posts/projects-oauth2-third-party-login/#三微信登录网站应用","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777766400000,"depth":2,"postId":"projects-oauth2-third-party-login"},{"id":"h:projects-oauth2-third-party-login#四qq-登录","tier":"heading","name":"四、QQ 登录#","url":"/posts/projects-oauth2-third-party-login/#四qq-登录","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777766400000,"depth":2,"postId":"projects-oauth2-third-party-login"},{"id":"h:projects-oauth2-third-party-login#五多环境配置清单","tier":"heading","name":"五、多环境配置清单#","url":"/posts/projects-oauth2-third-party-login/#五多环境配置清单","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777766400000,"depth":2,"postId":"projects-oauth2-third-party-login"},{"id":"h:projects-oauth2-third-party-login#六常见问题","tier":"heading","name":"六、常见问题#","url":"/posts/projects-oauth2-third-party-login/#六常见问题","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777766400000,"depth":2,"postId":"projects-oauth2-third-party-login"},{"id":"h:projects-oauth2-third-party-login#七前端对接说明","tier":"heading","name":"七、前端对接说明#","url":"/posts/projects-oauth2-third-party-login/#七前端对接说明","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777766400000,"depth":2,"postId":"projects-oauth2-third-party-login"},{"id":"h:projects-oauth2-third-party-login#八数据库相关","tier":"heading","name":"八、数据库相关#","url":"/posts/projects-oauth2-third-party-login/#八数据库相关","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777766400000,"depth":2,"postId":"projects-oauth2-third-party-login"},{"id":"h:projects-oauth2-third-party-login#九代码文件清单","tier":"heading","name":"九、代码文件清单#","url":"/posts/projects-oauth2-third-party-login/#九代码文件清单","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777766400000,"depth":2,"postId":"projects-oauth2-third-party-login"},{"id":"p:projects-auth-flow-zsk-auth","tier":"post","name":"滑块验证码、登录与注册完整流程","url":"/posts/projects-auth-flow-zsk-auth/","colorIndex":1,"categoryId":"c:设计文档","value":11,"publishedAt":1777680000000,"postId":"projects-auth-flow-zsk-auth"},{"id":"h:projects-auth-flow-zsk-auth#方案范围","tier":"heading","name":"方案范围#","url":"/posts/projects-auth-flow-zsk-auth/#方案范围","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777680000000,"depth":2,"postId":"projects-auth-flow-zsk-auth"},{"id":"h:projects-auth-flow-zsk-auth#一流程图不包含异常处理","tier":"heading","name":"一、流程图（不包含异常处理）#","url":"/posts/projects-auth-flow-zsk-auth/#一流程图不包含异常处理","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777680000000,"depth":2,"postId":"projects-auth-flow-zsk-auth"},{"id":"h:projects-auth-flow-zsk-auth#二流程图-包含异常处理版","tier":"heading","name":"二、流程图 (包含异常处理版)#","url":"/posts/projects-auth-flow-zsk-auth/#二流程图-包含异常处理版","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777680000000,"depth":2,"postId":"projects-auth-flow-zsk-auth"},{"id":"h:projects-auth-flow-zsk-auth#三技术栈-tech-stack","tier":"heading","name":"三、技术栈 (Tech Stack)#","url":"/posts/projects-auth-flow-zsk-auth/#三技术栈-tech-stack","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777680000000,"depth":2,"postId":"projects-auth-flow-zsk-auth"},{"id":"h:projects-auth-flow-zsk-auth#四核心类说明","tier":"heading","name":"四、核心类说明#","url":"/posts/projects-auth-flow-zsk-auth/#四核心类说明","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777680000000,"depth":2,"postId":"projects-auth-flow-zsk-auth"},{"id":"h:projects-auth-flow-zsk-auth#五滑块验证码流程-slider-captcha","tier":"heading","name":"五、滑块验证码流程 (Slider Captcha)#","url":"/posts/projects-auth-flow-zsk-auth/#五滑块验证码流程-slider-captcha","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777680000000,"depth":2,"postId":"projects-auth-flow-zsk-auth"},{"id":"h:projects-auth-flow-zsk-auth#六邮箱验证码流程-email-verification","tier":"heading","name":"六、邮箱验证码流程 (Email Verification)#","url":"/posts/projects-auth-flow-zsk-auth/#六邮箱验证码流程-email-verification","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777680000000,"depth":2,"postId":"projects-auth-flow-zsk-auth"},{"id":"h:projects-auth-flow-zsk-auth#七注册流程-register","tier":"heading","name":"七、注册流程 (Register)#","url":"/posts/projects-auth-flow-zsk-auth/#七注册流程-register","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777680000000,"depth":2,"postId":"projects-auth-flow-zsk-auth"},{"id":"h:projects-auth-flow-zsk-auth#八登录流程-login","tier":"heading","name":"八、登录流程 (Login)#","url":"/posts/projects-auth-flow-zsk-auth/#八登录流程-login","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777680000000,"depth":2,"postId":"projects-auth-flow-zsk-auth"},{"id":"h:projects-auth-flow-zsk-auth#九安全加密机制-security--encryption","tier":"heading","name":"九、安全加密机制 (Security & Encryption)#","url":"/posts/projects-auth-flow-zsk-auth/#九安全加密机制-security--encryption","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777680000000,"depth":2,"postId":"projects-auth-flow-zsk-auth"},{"id":"h:projects-auth-flow-zsk-auth#十限流机制-rate-limiting","tier":"heading","name":"十、限流机制 (Rate Limiting)#","url":"/posts/projects-auth-flow-zsk-auth/#十限流机制-rate-limiting","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777680000000,"depth":2,"postId":"projects-auth-flow-zsk-auth"},{"id":"p:projects-magic-link-login-design","tier":"post","name":"邮箱 Magic Link 无密码登录设计：一次性 Token 与安全边界","url":"/posts/projects-magic-link-login-design/","colorIndex":1,"categoryId":"c:设计文档","value":6,"publishedAt":1777593600000,"postId":"projects-magic-link-login-design"},{"id":"h:projects-magic-link-login-design#方案边界","tier":"heading","name":"方案边界#","url":"/posts/projects-magic-link-login-design/#方案边界","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-magic-link-login-design"},{"id":"h:projects-magic-link-login-design#一需求分析","tier":"heading","name":"一、需求分析#","url":"/posts/projects-magic-link-login-design/#一需求分析","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-magic-link-login-design"},{"id":"h:projects-magic-link-login-design#二技术方案","tier":"heading","name":"二、技术方案#","url":"/posts/projects-magic-link-login-design/#二技术方案","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-magic-link-login-design"},{"id":"h:projects-magic-link-login-design#三方案对比分析","tier":"heading","name":"三、方案对比分析#","url":"/posts/projects-magic-link-login-design/#三方案对比分析","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-magic-link-login-design"},{"id":"h:projects-magic-link-login-design#四部署与集成方案","tier":"heading","name":"四、部署与集成方案#","url":"/posts/projects-magic-link-login-design/#四部署与集成方案","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-magic-link-login-design"},{"id":"h:projects-magic-link-login-design#五代码安全性","tier":"heading","name":"五、代码安全性#","url":"/posts/projects-magic-link-login-design/#五代码安全性","colorIndex":1,"categoryId":"c:设计文档","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-magic-link-login-design"},{"id":"p:projects-object-storage-presigned-url","tier":"post","name":"MinIO文件存储签名有效期机制","url":"/posts/projects-object-storage-presigned-url/","colorIndex":0,"categoryId":"c:学习文档","value":7,"publishedAt":1777593600000,"postId":"projects-object-storage-presigned-url"},{"id":"h:projects-object-storage-presigned-url#一背景","tier":"heading","name":"一、背景#","url":"/posts/projects-object-storage-presigned-url/#一背景","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-object-storage-presigned-url"},{"id":"h:projects-object-storage-presigned-url#二什么是签名-url","tier":"heading","name":"二、什么是签名 URL#","url":"/posts/projects-object-storage-presigned-url/#二什么是签名-url","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-object-storage-presigned-url"},{"id":"h:projects-object-storage-presigned-url#三有效期限制","tier":"heading","name":"三、有效期限制#","url":"/posts/projects-object-storage-presigned-url/#三有效期限制","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-object-storage-presigned-url"},{"id":"h:projects-object-storage-presigned-url#四两种访问模式对比","tier":"heading","name":"四、两种访问模式对比#","url":"/posts/projects-object-storage-presigned-url/#四两种访问模式对比","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-object-storage-presigned-url"},{"id":"h:projects-object-storage-presigned-url#五签名-url-过期后的应对方案","tier":"heading","name":"五、签名 URL 过期后的应对方案#","url":"/posts/projects-object-storage-presigned-url/#五签名-url-过期后的应对方案","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-object-storage-presigned-url"},{"id":"h:projects-object-storage-presigned-url#六最佳实践","tier":"heading","name":"六、最佳实践#","url":"/posts/projects-object-storage-presigned-url/#六最佳实践","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-object-storage-presigned-url"},{"id":"h:projects-object-storage-presigned-url#七常见问题","tier":"heading","name":"七、常见问题#","url":"/posts/projects-object-storage-presigned-url/#七常见问题","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-object-storage-presigned-url"},{"id":"p:projects-qrcode-login-java-comparison","tier":"post","name":"扫码登录实现方案对比：短轮询、长轮询、WebSocket 与 SSE","url":"/posts/projects-qrcode-login-java-comparison/","colorIndex":2,"categoryId":"c:实践笔记","value":10,"publishedAt":1777593600000,"postId":"projects-qrcode-login-java-comparison"},{"id":"h:projects-qrcode-login-java-comparison#一背景","tier":"heading","name":"一、背景#","url":"/posts/projects-qrcode-login-java-comparison/#一背景","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-qrcode-login-java-comparison"},{"id":"h:projects-qrcode-login-java-comparison#二扫码登录核心流程","tier":"heading","name":"二、扫码登录核心流程#","url":"/posts/projects-qrcode-login-java-comparison/#二扫码登录核心流程","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-qrcode-login-java-comparison"},{"id":"h:projects-qrcode-login-java-comparison#三方案对比pc-端如何感知状态变更","tier":"heading","name":"三、方案对比：PC 端如何感知状态变更#","url":"/posts/projects-qrcode-login-java-comparison/#三方案对比pc-端如何感知状态变更","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-qrcode-login-java-comparison"},{"id":"h:projects-qrcode-login-java-comparison#四后端实现基于-spring-boot--redis","tier":"heading","name":"四、后端实现：基于 Spring Boot + Redis#","url":"/posts/projects-qrcode-login-java-comparison/#四后端实现基于-spring-boot--redis","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-qrcode-login-java-comparison"},{"id":"h:projects-qrcode-login-java-comparison#五前端实现","tier":"heading","name":"五、前端实现#","url":"/posts/projects-qrcode-login-java-comparison/#五前端实现","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-qrcode-login-java-comparison"},{"id":"h:projects-qrcode-login-java-comparison#六安全防御","tier":"heading","name":"六、安全防御#","url":"/posts/projects-qrcode-login-java-comparison/#六安全防御","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-qrcode-login-java-comparison"},{"id":"h:projects-qrcode-login-java-comparison#七踩坑点--注意事项","tier":"heading","name":"七、踩坑点 & 注意事项#","url":"/posts/projects-qrcode-login-java-comparison/#七踩坑点--注意事项","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-qrcode-login-java-comparison"},{"id":"h:projects-qrcode-login-java-comparison#八生产环境部署清单","tier":"heading","name":"八、生产环境部署清单#","url":"/posts/projects-qrcode-login-java-comparison/#八生产环境部署清单","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-qrcode-login-java-comparison"},{"id":"h:projects-qrcode-login-java-comparison#九方案对比总结","tier":"heading","name":"九、方案对比总结#","url":"/posts/projects-qrcode-login-java-comparison/#九方案对比总结","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-qrcode-login-java-comparison"},{"id":"h:projects-qrcode-login-java-comparison#十参考资料","tier":"heading","name":"十、参考资料#","url":"/posts/projects-qrcode-login-java-comparison/#十参考资料","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1777593600000,"depth":2,"postId":"projects-qrcode-login-java-comparison"},{"id":"p:projects-oracle-erp-performance-optimization","tier":"post","name":"Oracle ERP 性能优化：SHRINK 致聚簇因子恶化的排查与恢复","url":"/posts/projects-oracle-erp-performance-optimization/","colorIndex":2,"categoryId":"c:实践笔记","value":9,"publishedAt":1764633600000,"postId":"projects-oracle-erp-performance-optimization"},{"id":"h:projects-oracle-erp-performance-optimization#一背景","tier":"heading","name":"一、背景#","url":"/posts/projects-oracle-erp-performance-optimization/#一背景","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1764633600000,"depth":2,"postId":"projects-oracle-erp-performance-optimization"},{"id":"h:projects-oracle-erp-performance-optimization#二根本原因聚簇因子clustering-factor恶化","tier":"heading","name":"二、根本原因：聚簇因子（Clustering Factor）恶化#","url":"/posts/projects-oracle-erp-performance-optimization/#二根本原因聚簇因子clustering-factor恶化","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1764633600000,"depth":2,"postId":"projects-oracle-erp-performance-optimization"},{"id":"h:projects-oracle-erp-performance-optimization#三分析方法","tier":"heading","name":"三、分析方法#","url":"/posts/projects-oracle-erp-performance-optimization/#三分析方法","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1764633600000,"depth":2,"postId":"projects-oracle-erp-performance-optimization"},{"id":"h:projects-oracle-erp-performance-optimization#四优化方案","tier":"heading","name":"四、优化方案#","url":"/posts/projects-oracle-erp-performance-optimization/#四优化方案","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1764633600000,"depth":2,"postId":"projects-oracle-erp-performance-optimization"},{"id":"h:projects-oracle-erp-performance-optimization#五深度分析","tier":"heading","name":"五、深度分析#","url":"/posts/projects-oracle-erp-performance-optimization/#五深度分析","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1764633600000,"depth":2,"postId":"projects-oracle-erp-performance-optimization"},{"id":"h:projects-oracle-erp-performance-optimization#六优化效果汇总","tier":"heading","name":"六、优化效果汇总#","url":"/posts/projects-oracle-erp-performance-optimization/#六优化效果汇总","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1764633600000,"depth":2,"postId":"projects-oracle-erp-performance-optimization"},{"id":"h:projects-oracle-erp-performance-optimization#七mrp-性能优化扩展框架","tier":"heading","name":"七、MRP 性能优化扩展框架#","url":"/posts/projects-oracle-erp-performance-optimization/#七mrp-性能优化扩展框架","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1764633600000,"depth":2,"postId":"projects-oracle-erp-performance-optimization"},{"id":"h:projects-oracle-erp-performance-optimization#八总结","tier":"heading","name":"八、总结#","url":"/posts/projects-oracle-erp-performance-optimization/#八总结","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1764633600000,"depth":2,"postId":"projects-oracle-erp-performance-optimization"},{"id":"h:projects-oracle-erp-performance-optimization#九参考资料","tier":"heading","name":"九、参考资料#","url":"/posts/projects-oracle-erp-performance-optimization/#九参考资料","colorIndex":2,"categoryId":"c:实践笔记","value":1,"publishedAt":1764633600000,"depth":2,"postId":"projects-oracle-erp-performance-optimization"},{"id":"p:details-springboot-async-best-practices","tier":"post","name":"Spring Boot @Async 实现异步的最佳实践","url":"/posts/details-springboot-async-best-practices/","colorIndex":0,"categoryId":"c:学习文档","value":14,"publishedAt":1762992000000,"postId":"details-springboot-async-best-practices"},{"id":"h:details-springboot-async-best-practices#引子","tier":"heading","name":"引子#","url":"/posts/details-springboot-async-best-practices/#引子","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000,"depth":2,"postId":"details-springboot-async-best-practices"},{"id":"h:details-springboot-async-best-practices#核心摘要","tier":"heading","name":"核心摘要#","url":"/posts/details-springboot-async-best-practices/#核心摘要","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000,"depth":2,"postId":"details-springboot-async-best-practices"},{"id":"h:details-springboot-async-best-practices#一先判断该不该用","tier":"heading","name":"一、先判断该不该用#","url":"/posts/details-springboot-async-best-practices/#一先判断该不该用","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000,"depth":2,"postId":"details-springboot-async-best-practices"},{"id":"h:details-springboot-async-best-practices#二背景async-的执行机制","tier":"heading","name":"二、背景：@Async 的执行机制#","url":"/posts/details-springboot-async-best-practices/#二背景async-的执行机制","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000,"depth":2,"postId":"details-springboot-async-best-practices"},{"id":"h:details-springboot-async-best-practices#三实践一显式定义执行器按业务分池","tier":"heading","name":"三、实践一：显式定义执行器，按业务分池#","url":"/posts/details-springboot-async-best-practices/#三实践一显式定义执行器按业务分池","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000,"depth":2,"postId":"details-springboot-async-best-practices"},{"id":"h:details-springboot-async-best-practices#四实践二异常必须闭环","tier":"heading","name":"四、实践二：异常必须闭环#","url":"/posts/details-springboot-async-best-practices/#四实践二异常必须闭环","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000,"depth":2,"postId":"details-springboot-async-best-practices"},{"id":"h:details-springboot-async-best-practices#五实践三上下文传递用-taskdecorator","tier":"heading","name":"五、实践三：上下文传递用 TaskDecorator#","url":"/posts/details-springboot-async-best-practices/#五实践三上下文传递用-taskdecorator","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000,"depth":2,"postId":"details-springboot-async-best-practices"},{"id":"h:details-springboot-async-best-practices#六实践四与事务的边界","tier":"heading","name":"六、实践四：与事务的边界#","url":"/posts/details-springboot-async-best-practices/#六实践四与事务的边界","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000,"depth":2,"postId":"details-springboot-async-best-practices"},{"id":"h:details-springboot-async-best-practices#七实践五让失效场景显形","tier":"heading","name":"七、实践五：让失效场景显形#","url":"/posts/details-springboot-async-best-practices/#七实践五让失效场景显形","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000,"depth":2,"postId":"details-springboot-async-best-practices"},{"id":"h:details-springboot-async-best-practices#八实战演示订单支付后的异步通知","tier":"heading","name":"八、实战演示：订单支付后的异步通知#","url":"/posts/details-springboot-async-best-practices/#八实战演示订单支付后的异步通知","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000,"depth":2,"postId":"details-springboot-async-best-practices"},{"id":"h:details-springboot-async-best-practices#九踩坑点与注意事项","tier":"heading","name":"九、踩坑点与注意事项#","url":"/posts/details-springboot-async-best-practices/#九踩坑点与注意事项","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000,"depth":2,"postId":"details-springboot-async-best-practices"},{"id":"h:details-springboot-async-best-practices#十上线检查清单","tier":"heading","name":"十、上线检查清单#","url":"/posts/details-springboot-async-best-practices/#十上线检查清单","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000,"depth":2,"postId":"details-springboot-async-best-practices"},{"id":"h:details-springboot-async-best-practices#总结","tier":"heading","name":"总结#","url":"/posts/details-springboot-async-best-practices/#总结","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000,"depth":2,"postId":"details-springboot-async-best-practices"},{"id":"h:details-springboot-async-best-practices#参考资料","tier":"heading","name":"参考资料#","url":"/posts/details-springboot-async-best-practices/#参考资料","colorIndex":0,"categoryId":"c:学习文档","value":1,"publishedAt":1762992000000,"depth":2,"postId":"details-springboot-async-best-practices"}],"links":[{"source":"c:学习文档","target":"t:AI","kind":"category-tag","value":4},{"source":"c:设计文档","target":"t:AI","kind":"category-tag","value":1},{"source":"c:部署文档","target":"t:AI","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:认证","kind":"category-tag","value":4},{"source":"c:实践笔记","target":"t:认证","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:安全","kind":"category-tag","value":3},{"source":"c:学习文档","target":"t:安全","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:Java","kind":"category-tag","value":3},{"source":"c:学习文档","target":"t:并发编程","kind":"category-tag","value":3},{"source":"c:学习文档","target":"t:性能优化","kind":"category-tag","value":1},{"source":"c:实践笔记","target":"t:性能优化","kind":"category-tag","value":2},{"source":"c:设计文档","target":"t:登录","kind":"category-tag","value":3},{"source":"c:设计文档","target":"t:高并发","kind":"category-tag","value":2},{"source":"c:学习文档","target":"t:高并发","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:RAG","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:RAG","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:Redis","kind":"category-tag","value":1},{"source":"c:实践笔记","target":"t:Redis","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:Spring Boot","kind":"category-tag","value":2},{"source":"c:学习文档","target":"t:博客","kind":"category-tag","value":2},{"source":"c:学习文档","target":"t:线程池","kind":"category-tag","value":2},{"source":"c:部署文档","target":"t:部署","kind":"category-tag","value":2},{"source":"c:设计文档","target":"t:3D","kind":"category-tag","value":1},{"source":"c:实践笔记","target":"t:Bitmap","kind":"category-tag","value":1},{"source":"c:部署文档","target":"t:Bot","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:CDN","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:Cloudflare","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:EasyExcel","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:firefly","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:HTTP","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:JWT","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:LLM","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:MinIO","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:Nginx","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:OAuth2","kind":"category-tag","value":1},{"source":"c:实践笔记","target":"t:Oracle","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:Prompt","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:React","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:RocketMQ","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:Skill","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:Three","kind":"category-tag","value":1},{"source":"c:部署文档","target":"t:Umami","kind":"category-tag","value":1},{"source":"c:部署文档","target":"t:Vercel","kind":"category-tag","value":1},{"source":"c:实践笔记","target":"t:WebSocket","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:Web安全","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:二开","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:最佳实践","kind":"category-tag","value":1},{"source":"c:实践笔记","target":"t:分布式","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:分布式一致性","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:前端","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:大数据量","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:对象存储","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:导入导出","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:工作流","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:异步编程","kind":"category-tag","value":1},{"source":"c:实践笔记","target":"t:扫码登录","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:接口安全","kind":"category-tag","value":1},{"source":"c:实践笔记","target":"t:数据库","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:枚举","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:架构设计","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:消息队列","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:米塔","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:缓存设计","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:虚拟线程","kind":"category-tag","value":1},{"source":"c:设计文档","target":"t:设计文档","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:设计模式","kind":"category-tag","value":1},{"source":"c:学习文档","target":"t:顺序消费","kind":"category-tag","value":1},{"source":"t:Java","target":"p:details-java-enum-strategy-pattern","kind":"tag-post","value":1},{"source":"t:枚举","target":"p:details-java-enum-strategy-pattern","kind":"tag-post","value":1},{"source":"t:设计模式","target":"p:details-java-enum-strategy-pattern","kind":"tag-post","value":1},{"source":"p:details-java-enum-strategy-pattern","target":"h:details-java-enum-strategy-pattern#核心摘要","kind":"post-heading","value":1},{"source":"p:details-java-enum-strategy-pattern","target":"h:details-java-enum-strategy-pattern#引子","kind":"post-heading","value":1},{"source":"p:details-java-enum-strategy-pattern","target":"h:details-java-enum-strategy-pattern#背景知识","kind":"post-heading","value":1},{"source":"p:details-java-enum-strategy-pattern","target":"h:details-java-enum-strategy-pattern#核心内容","kind":"post-heading","value":1},{"source":"p:details-java-enum-strategy-pattern","target":"h:details-java-enum-strategy-pattern#实战演示一时间单位偏移","kind":"post-heading","value":1},{"source":"p:details-java-enum-strategy-pattern","target":"h:details-java-enum-strategy-pattern#实战演示二服务分发接口--optional","kind":"post-heading","value":1},{"source":"p:details-java-enum-strategy-pattern","target":"h:details-java-enum-strategy-pattern#踩坑点--注意事项","kind":"post-heading","value":1},{"source":"p:details-java-enum-strategy-pattern","target":"h:details-java-enum-strategy-pattern#性能对比数据","kind":"post-heading","value":1},{"source":"p:details-java-enum-strategy-pattern","target":"h:details-java-enum-strategy-pattern#总结","kind":"post-heading","value":1},{"source":"p:details-java-enum-strategy-pattern","target":"h:details-java-enum-strategy-pattern#参考资料","kind":"post-heading","value":1},{"source":"t:AI","target":"p:ai-rag-ten-strategies","kind":"tag-post","value":1},{"source":"t:LLM","target":"p:ai-rag-ten-strategies","kind":"tag-post","value":1},{"source":"t:RAG","target":"p:ai-rag-ten-strategies","kind":"tag-post","value":1},{"source":"p:ai-rag-ten-strategies","target":"h:ai-rag-ten-strategies#一引子rag-死了吗","kind":"post-heading","value":1},{"source":"p:ai-rag-ten-strategies","target":"h:ai-rag-ten-strategies#二rag-总体流程","kind":"post-heading","value":1},{"source":"p:ai-rag-ten-strategies","target":"h:ai-rag-ten-strategies#三准备阶段策略-1-5","kind":"post-heading","value":1},{"source":"p:ai-rag-ten-strategies","target":"h:ai-rag-ten-strategies#四检索阶段策略-6-9","kind":"post-heading","value":1},{"source":"p:ai-rag-ten-strategies","target":"h:ai-rag-ten-strategies#五范式升级策略-10-与组合策略","kind":"post-heading","value":1},{"source":"p:ai-rag-ten-strategies","target":"h:ai-rag-ten-strategies#六十种策略速览与选型","kind":"post-heading","value":1},{"source":"p:ai-rag-ten-strategies","target":"h:ai-rag-ten-strategies#七质量与工程考量","kind":"post-heading","value":1},{"source":"p:ai-rag-ten-strategies","target":"h:ai-rag-ten-strategies#八结语","kind":"post-heading","value":1},{"source":"p:ai-rag-ten-strategies","target":"h:ai-rag-ten-strategies#九参考资料","kind":"post-heading","value":1},{"source":"t:firefly","target":"p:others-blog-firefly-mod","kind":"tag-post","value":1},{"source":"t:二开","target":"p:others-blog-firefly-mod","kind":"tag-post","value":1},{"source":"t:博客","target":"p:others-blog-firefly-mod","kind":"tag-post","value":1},{"source":"p:others-blog-firefly-mod","target":"h:others-blog-firefly-mod#选型背景","kind":"post-heading","value":1},{"source":"p:others-blog-firefly-mod","target":"h:others-blog-firefly-mod#一重点","kind":"post-heading","value":1},{"source":"p:others-blog-firefly-mod","target":"h:others-blog-firefly-mod#二用到的ai模型","kind":"post-heading","value":1},{"source":"p:others-blog-firefly-mod","target":"h:others-blog-firefly-mod#三优点与ui复制","kind":"post-heading","value":1},{"source":"t:CDN","target":"p:details-web-performance-optimization","kind":"tag-post","value":1},{"source":"t:HTTP","target":"p:details-web-performance-optimization","kind":"tag-post","value":1},{"source":"t:Nginx","target":"p:details-web-performance-optimization","kind":"tag-post","value":1},{"source":"t:性能优化","target":"p:details-web-performance-optimization","kind":"tag-post","value":1},{"source":"p:details-web-performance-optimization","target":"h:details-web-performance-optimization#引子","kind":"post-heading","value":1},{"source":"p:details-web-performance-optimization","target":"h:details-web-performance-optimization#背景知识度量框架与优化变量","kind":"post-heading","value":1},{"source":"p:details-web-performance-optimization","target":"h:details-web-performance-optimization#十项主流优化方法","kind":"post-heading","value":1},{"source":"p:details-web-performance-optimization","target":"h:details-web-performance-optimization#实战演示静态站点的端到端配置","kind":"post-heading","value":1},{"source":"p:details-web-performance-optimization","target":"h:details-web-performance-optimization#踩坑点--注意事项","kind":"post-heading","value":1},{"source":"p:details-web-performance-optimization","target":"h:details-web-performance-optimization#优化方法总览","kind":"post-heading","value":1},{"source":"p:details-web-performance-optimization","target":"h:details-web-performance-optimization#总结","kind":"post-heading","value":1},{"source":"p:details-web-performance-optimization","target":"h:details-web-performance-optimization#参考资料","kind":"post-heading","value":1},{"source":"t:3D","target":"p:projects-miside-3d-text","kind":"tag-post","value":1},{"source":"t:React","target":"p:projects-miside-3d-text","kind":"tag-post","value":1},{"source":"t:Three","target":"p:projects-miside-3d-text","kind":"tag-post","value":1},{"source":"t:米塔","target":"p:projects-miside-3d-text","kind":"tag-post","value":1},{"source":"p:projects-miside-3d-text","target":"h:projects-miside-3d-text#技术栈","kind":"post-heading","value":1},{"source":"p:projects-miside-3d-text","target":"h:projects-miside-3d-text#架构总览","kind":"post-heading","value":1},{"source":"p:projects-miside-3d-text","target":"h:projects-miside-3d-text#核心实现原理","kind":"post-heading","value":1},{"source":"p:projects-miside-3d-text","target":"h:projects-miside-3d-text#完整代码","kind":"post-heading","value":1},{"source":"p:projects-miside-3d-text","target":"h:projects-miside-3d-text#踩坑点--注意事项","kind":"post-heading","value":1},{"source":"p:projects-miside-3d-text","target":"h:projects-miside-3d-text#性能对比","kind":"post-heading","value":1},{"source":"p:projects-miside-3d-text","target":"h:projects-miside-3d-text#总结","kind":"post-heading","value":1},{"source":"t:Spring Boot","target":"p:details-api-security-practices","kind":"tag-post","value":1},{"source":"t:Web安全","target":"p:details-api-security-practices","kind":"tag-post","value":1},{"source":"t:接口安全","target":"p:details-api-security-practices","kind":"tag-post","value":1},{"source":"t:最佳实践","target":"p:details-api-security-practices","kind":"tag-post","value":1},{"source":"p:details-api-security-practices","target":"h:details-api-security-practices#引子","kind":"post-heading","value":1},{"source":"p:details-api-security-practices","target":"h:details-api-security-practices#核心摘要","kind":"post-heading","value":1},{"source":"p:details-api-security-practices","target":"h:details-api-security-practices#背景知识攻击面与防御分层","kind":"post-heading","value":1},{"source":"p:details-api-security-practices","target":"h:details-api-security-practices#20-个技巧逐一展开","kind":"post-heading","value":1},{"source":"p:details-api-security-practices","target":"h:details-api-security-practices#落地检查清单","kind":"post-heading","value":1},{"source":"p:details-api-security-practices","target":"h:details-api-security-practices#总结","kind":"post-heading","value":1},{"source":"p:details-api-security-practices","target":"h:details-api-security-practices#参考资料","kind":"post-heading","value":1},{"source":"t:EasyExcel","target":"p:projects-easyexcel-export-import-design","kind":"tag-post","value":1},{"source":"t:大数据量","target":"p:projects-easyexcel-export-import-design","kind":"tag-post","value":1},{"source":"t:导入导出","target":"p:projects-easyexcel-export-import-design","kind":"tag-post","value":1},{"source":"t:设计文档","target":"p:projects-easyexcel-export-import-design","kind":"tag-post","value":1},{"source":"t:高并发","target":"p:projects-easyexcel-export-import-design","kind":"tag-post","value":1},{"source":"p:projects-easyexcel-export-import-design","target":"h:projects-easyexcel-export-import-design#核心摘要","kind":"post-heading","value":1},{"source":"p:projects-easyexcel-export-import-design","target":"h:projects-easyexcel-export-import-design#问题与目标","kind":"post-heading","value":1},{"source":"p:projects-easyexcel-export-import-design","target":"h:projects-easyexcel-export-import-design#选型easyexcel-与它的维护现状","kind":"post-heading","value":1},{"source":"p:projects-easyexcel-export-import-design","target":"h:projects-easyexcel-export-import-design#总体架构","kind":"post-heading","value":1},{"source":"p:projects-easyexcel-export-import-design","target":"h:projects-easyexcel-export-import-design#导出方案","kind":"post-heading","value":1},{"source":"p:projects-easyexcel-export-import-design","target":"h:projects-easyexcel-export-import-design#导入方案","kind":"post-heading","value":1},{"source":"p:projects-easyexcel-export-import-design","target":"h:projects-easyexcel-export-import-design#关键取舍汇总","kind":"post-heading","value":1},{"source":"p:projects-easyexcel-export-import-design","target":"h:projects-easyexcel-export-import-design#风险与应对","kind":"post-heading","value":1},{"source":"p:projects-easyexcel-export-import-design","target":"h:projects-easyexcel-export-import-design#验证计划","kind":"post-heading","value":1},{"source":"p:projects-easyexcel-export-import-design","target":"h:projects-easyexcel-export-import-design#总结","kind":"post-heading","value":1},{"source":"p:projects-easyexcel-export-import-design","target":"h:projects-easyexcel-export-import-design#参考资料","kind":"post-heading","value":1},{"source":"t:AI","target":"p:ai-prompt-collection","kind":"tag-post","value":1},{"source":"t:Prompt","target":"p:ai-prompt-collection","kind":"tag-post","value":1},{"source":"p:ai-prompt-collection","target":"h:ai-prompt-collection#一规范限制","kind":"post-heading","value":1},{"source":"p:ai-prompt-collection","target":"h:ai-prompt-collection#二生图提示词","kind":"post-heading","value":1},{"source":"t:AI","target":"p:ai-blog-ai-zero-editing","kind":"tag-post","value":1},{"source":"t:前端","target":"p:ai-blog-ai-zero-editing","kind":"tag-post","value":1},{"source":"t:博客","target":"p:ai-blog-ai-zero-editing","kind":"tag-post","value":1},{"source":"p:ai-blog-ai-zero-editing","target":"h:ai-blog-ai-zero-editing#一问题与目标","kind":"post-heading","value":1},{"source":"p:ai-blog-ai-zero-editing","target":"h:ai-blog-ai-zero-editing#二ai-工具","kind":"post-heading","value":1},{"source":"p:ai-blog-ai-zero-editing","target":"h:ai-blog-ai-zero-editing#三博客设计","kind":"post-heading","value":1},{"source":"t:RocketMQ","target":"p:projects-rocketmq-ordered-message-sharding","kind":"tag-post","value":1},{"source":"t:分布式一致性","target":"p:projects-rocketmq-ordered-message-sharding","kind":"tag-post","value":1},{"source":"t:消息队列","target":"p:projects-rocketmq-ordered-message-sharding","kind":"tag-post","value":1},{"source":"t:顺序消费","target":"p:projects-rocketmq-ordered-message-sharding","kind":"tag-post","value":1},{"source":"t:高并发","target":"p:projects-rocketmq-ordered-message-sharding","kind":"tag-post","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#核心摘要","kind":"post-heading","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#引子状态机消费乱序","kind":"post-heading","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#先定义顺序的边界","kind":"post-heading","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#全链路机制","kind":"post-heading","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#生产端分片键路由与串行发送","kind":"post-heading","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#broker-端队列内-fifo-与可配置的可靠性","kind":"post-heading","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#消费端三把锁与并行度模型","kind":"post-heading","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#提升吞吐四个方案与各自的代价","kind":"post-heading","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#消费失败与重试顺序的代价","kind":"post-heading","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#一致性设计at-least-once-之上的业务幂等","kind":"post-heading","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#可观测性顺序消费特有的监控盲区","kind":"post-heading","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#实战演示订单状态变更的消费端","kind":"post-heading","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#踩坑点","kind":"post-heading","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#总结","kind":"post-heading","value":1},{"source":"p:projects-rocketmq-ordered-message-sharding","target":"h:projects-rocketmq-ordered-message-sharding#参考资料","kind":"post-heading","value":1},{"source":"t:AI","target":"p:ai-openspec-superpowers-workflow","kind":"tag-post","value":1},{"source":"t:Skill","target":"p:ai-openspec-superpowers-workflow","kind":"tag-post","value":1},{"source":"t:工作流","target":"p:ai-openspec-superpowers-workflow","kind":"tag-post","value":1},{"source":"p:ai-openspec-superpowers-workflow","target":"h:ai-openspec-superpowers-workflow#一介绍","kind":"post-heading","value":1},{"source":"p:ai-openspec-superpowers-workflow","target":"h:ai-openspec-superpowers-workflow#二作用","kind":"post-heading","value":1},{"source":"p:ai-openspec-superpowers-workflow","target":"h:ai-openspec-superpowers-workflow#三使用步骤","kind":"post-heading","value":1},{"source":"p:ai-openspec-superpowers-workflow","target":"h:ai-openspec-superpowers-workflow#四相关-skill","kind":"post-heading","value":1},{"source":"p:ai-openspec-superpowers-workflow","target":"h:ai-openspec-superpowers-workflow#五安装","kind":"post-heading","value":1},{"source":"p:ai-openspec-superpowers-workflow","target":"h:ai-openspec-superpowers-workflow#六卸载","kind":"post-heading","value":1},{"source":"p:ai-openspec-superpowers-workflow","target":"h:ai-openspec-superpowers-workflow#七协同使用方法","kind":"post-heading","value":1},{"source":"p:ai-openspec-superpowers-workflow","target":"h:ai-openspec-superpowers-workflow#八常见问题","kind":"post-heading","value":1},{"source":"p:ai-openspec-superpowers-workflow","target":"h:ai-openspec-superpowers-workflow#九总结","kind":"post-heading","value":1},{"source":"p:ai-openspec-superpowers-workflow","target":"h:ai-openspec-superpowers-workflow#十参考资料","kind":"post-heading","value":1},{"source":"t:AI","target":"p:ai-blog-ai-search-vectorize","kind":"tag-post","value":1},{"source":"t:Cloudflare","target":"p:ai-blog-ai-search-vectorize","kind":"tag-post","value":1},{"source":"t:RAG","target":"p:ai-blog-ai-search-vectorize","kind":"tag-post","value":1},{"source":"p:ai-blog-ai-search-vectorize","target":"h:ai-blog-ai-search-vectorize#一问题与目标","kind":"post-heading","value":1},{"source":"p:ai-blog-ai-search-vectorize","target":"h:ai-blog-ai-search-vectorize#二架构","kind":"post-heading","value":1},{"source":"p:ai-blog-ai-search-vectorize","target":"h:ai-blog-ai-search-vectorize#三文档分块策略","kind":"post-heading","value":1},{"source":"p:ai-blog-ai-search-vectorize","target":"h:ai-blog-ai-search-vectorize#四向量化与存储","kind":"post-heading","value":1},{"source":"p:ai-blog-ai-search-vectorize","target":"h:ai-blog-ai-search-vectorize#五worker-端问答流程","kind":"post-heading","value":1},{"source":"p:ai-blog-ai-search-vectorize","target":"h:ai-blog-ai-search-vectorize#六前端组件","kind":"post-heading","value":1},{"source":"p:ai-blog-ai-search-vectorize","target":"h:ai-blog-ai-search-vectorize#七敏感配置处理","kind":"post-heading","value":1},{"source":"p:ai-blog-ai-search-vectorize","target":"h:ai-blog-ai-search-vectorize#八资源消耗","kind":"post-heading","value":1},{"source":"p:ai-blog-ai-search-vectorize","target":"h:ai-blog-ai-search-vectorize#九文件清单","kind":"post-heading","value":1},{"source":"p:ai-blog-ai-search-vectorize","target":"h:ai-blog-ai-search-vectorize#十踩坑记录","kind":"post-heading","value":1},{"source":"t:Redis","target":"p:projects-interaction-cache-design","kind":"tag-post","value":1},{"source":"t:架构设计","target":"p:projects-interaction-cache-design","kind":"tag-post","value":1},{"source":"t:缓存设计","target":"p:projects-interaction-cache-design","kind":"tag-post","value":1},{"source":"t:高并发","target":"p:projects-interaction-cache-design","kind":"tag-post","value":1},{"source":"p:projects-interaction-cache-design","target":"h:projects-interaction-cache-design#核心摘要","kind":"post-heading","value":1},{"source":"p:projects-interaction-cache-design","target":"h:projects-interaction-cache-design#问题与目标","kind":"post-heading","value":1},{"source":"p:projects-interaction-cache-design","target":"h:projects-interaction-cache-design#全链路架构","kind":"post-heading","value":1},{"source":"p:projects-interaction-cache-design","target":"h:projects-interaction-cache-design#前端层只缓存展示态","kind":"post-heading","value":1},{"source":"p:projects-interaction-cache-design","target":"h:projects-interaction-cache-design#网关层限流优先缓存只给匿名读","kind":"post-heading","value":1},{"source":"p:projects-interaction-cache-design","target":"h:projects-interaction-cache-design#后端层按流量分级","kind":"post-heading","value":1},{"source":"p:projects-interaction-cache-design","target":"h:projects-interaction-cache-design#一致性兜底三道防线","kind":"post-heading","value":1},{"source":"p:projects-interaction-cache-design","target":"h:projects-interaction-cache-design#三大经典故障的防护","kind":"post-heading","value":1},{"source":"p:projects-interaction-cache-design","target":"h:projects-interaction-cache-design#流量分级决策总表","kind":"post-heading","value":1},{"source":"p:projects-interaction-cache-design","target":"h:projects-interaction-cache-design#踩坑点","kind":"post-heading","value":1},{"source":"p:projects-interaction-cache-design","target":"h:projects-interaction-cache-design#风险","kind":"post-heading","value":1},{"source":"p:projects-interaction-cache-design","target":"h:projects-interaction-cache-design#总结","kind":"post-heading","value":1},{"source":"p:projects-interaction-cache-design","target":"h:projects-interaction-cache-design#参考资料","kind":"post-heading","value":1},{"source":"t:AI","target":"p:ai-napcat-astrbot-deployment","kind":"tag-post","value":1},{"source":"t:Bot","target":"p:ai-napcat-astrbot-deployment","kind":"tag-post","value":1},{"source":"t:部署","target":"p:ai-napcat-astrbot-deployment","kind":"tag-post","value":1},{"source":"p:ai-napcat-astrbot-deployment","target":"h:ai-napcat-astrbot-deployment#组件职责","kind":"post-heading","value":1},{"source":"p:ai-napcat-astrbot-deployment","target":"h:ai-napcat-astrbot-deployment#一部署环境要求","kind":"post-heading","value":1},{"source":"p:ai-napcat-astrbot-deployment","target":"h:ai-napcat-astrbot-deployment#二目录结构","kind":"post-heading","value":1},{"source":"p:ai-napcat-astrbot-deployment","target":"h:ai-napcat-astrbot-deployment#三docker-composeyml","kind":"post-heading","value":1},{"source":"p:ai-napcat-astrbot-deployment","target":"h:ai-napcat-astrbot-deployment#四本地-docker-desktop-部署","kind":"post-heading","value":1},{"source":"p:ai-napcat-astrbot-deployment","target":"h:ai-napcat-astrbot-deployment#五服务器部署","kind":"post-heading","value":1},{"source":"p:ai-napcat-astrbot-deployment","target":"h:ai-napcat-astrbot-deployment#六napcat-相关配置","kind":"post-heading","value":1},{"source":"p:ai-napcat-astrbot-deployment","target":"h:ai-napcat-astrbot-deployment#七astrbot-相关配置","kind":"post-heading","value":1},{"source":"p:ai-napcat-astrbot-deployment","target":"h:ai-napcat-astrbot-deployment#八人格设置","kind":"post-heading","value":1},{"source":"p:ai-napcat-astrbot-deployment","target":"h:ai-napcat-astrbot-deployment#九推荐插件","kind":"post-heading","value":1},{"source":"p:ai-napcat-astrbot-deployment","target":"h:ai-napcat-astrbot-deployment#十常见问题","kind":"post-heading","value":1},{"source":"p:ai-napcat-astrbot-deployment","target":"h:ai-napcat-astrbot-deployment#十一参考资料","kind":"post-heading","value":1},{"source":"t:Umami","target":"p:others-umami-vercel-neon-deployment","kind":"tag-post","value":1},{"source":"t:Vercel","target":"p:others-umami-vercel-neon-deployment","kind":"tag-post","value":1},{"source":"t:部署","target":"p:others-umami-vercel-neon-deployment","kind":"tag-post","value":1},{"source":"p:others-umami-vercel-neon-deployment","target":"h:others-umami-vercel-neon-deployment#一架构","kind":"post-heading","value":1},{"source":"p:others-umami-vercel-neon-deployment","target":"h:others-umami-vercel-neon-deployment#二部署步骤","kind":"post-heading","value":1},{"source":"p:others-umami-vercel-neon-deployment","target":"h:others-umami-vercel-neon-deployment#三本项目获取-uvpv-的实现原理","kind":"post-heading","value":1},{"source":"p:others-umami-vercel-neon-deployment","target":"h:others-umami-vercel-neon-deployment#四设置数据自动清理","kind":"post-heading","value":1},{"source":"p:others-umami-vercel-neon-deployment","target":"h:others-umami-vercel-neon-deployment#五更新-umami-版本","kind":"post-heading","value":1},{"source":"t:Java","target":"p:projects-java-thread-pool-configuration","kind":"tag-post","value":1},{"source":"t:并发编程","target":"p:projects-java-thread-pool-configuration","kind":"tag-post","value":1},{"source":"t:线程池","target":"p:projects-java-thread-pool-configuration","kind":"tag-post","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#一核心摘要","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#二为什么需要线程池","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#三threadpoolexecutor-核心参数","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#四任务提交与执行流程","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#五cpu-密集型与-io-密集型任务","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#六线程数估算方法","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#七工作队列选型","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#八常见反模式","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#九企业级配置案例","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#十动态线程池","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#十一可观测性监控与告警","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#十二性能调优建议","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#十三常见问题解答faq","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#十四决策速查表","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#十五总结","kind":"post-heading","value":1},{"source":"p:projects-java-thread-pool-configuration","target":"h:projects-java-thread-pool-configuration#十六参考资料","kind":"post-heading","value":1},{"source":"t:Java","target":"p:projects-java-virtual-thread-async-orchestration","kind":"tag-post","value":1},{"source":"t:并发编程","target":"p:projects-java-virtual-thread-async-orchestration","kind":"tag-post","value":1},{"source":"t:虚拟线程","target":"p:projects-java-virtual-thread-async-orchestration","kind":"tag-post","value":1},{"source":"p:projects-java-virtual-thread-async-orchestration","target":"h:projects-java-virtual-thread-async-orchestration#一背景","kind":"post-heading","value":1},{"source":"p:projects-java-virtual-thread-async-orchestration","target":"h:projects-java-virtual-thread-async-orchestration#二java-并发模型的演进史","kind":"post-heading","value":1},{"source":"p:projects-java-virtual-thread-async-orchestration","target":"h:projects-java-virtual-thread-async-orchestration#三虚拟线程","kind":"post-heading","value":1},{"source":"p:projects-java-virtual-thread-async-orchestration","target":"h:projects-java-virtual-thread-async-orchestration#四虚拟线程-vs-平台线程全面对比","kind":"post-heading","value":1},{"source":"p:projects-java-virtual-thread-async-orchestration","target":"h:projects-java-virtual-thread-async-orchestration#五虚拟线程的使用方式完整代码","kind":"post-heading","value":1},{"source":"p:projects-java-virtual-thread-async-orchestration","target":"h:projects-java-virtual-thread-async-orchestration#六️-虚拟线程踩坑大全12个坑","kind":"post-heading","value":1},{"source":"p:projects-java-virtual-thread-async-orchestration","target":"h:projects-java-virtual-thread-async-orchestration#七completablefuture-异步编排从零讲起","kind":"post-heading","value":1},{"source":"p:projects-java-virtual-thread-async-orchestration","target":"h:projects-java-virtual-thread-async-orchestration#八️-completablefuture-踩坑大全8个坑","kind":"post-heading","value":1},{"source":"p:projects-java-virtual-thread-async-orchestration","target":"h:projects-java-virtual-thread-async-orchestration#九结构化并发下一代并发编程","kind":"post-heading","value":1},{"source":"p:projects-java-virtual-thread-async-orchestration","target":"h:projects-java-virtual-thread-async-orchestration#十响应式编程reactorwebflux概览","kind":"post-heading","value":1},{"source":"p:projects-java-virtual-thread-async-orchestration","target":"h:projects-java-virtual-thread-async-orchestration#十一四种模型横向大对比","kind":"post-heading","value":1},{"source":"p:projects-java-virtual-thread-async-orchestration","target":"h:projects-java-virtual-thread-async-orchestration#十二企业级选型决策指南","kind":"post-heading","value":1},{"source":"p:projects-java-virtual-thread-async-orchestration","target":"h:projects-java-virtual-thread-async-orchestration#十三核心总结与学习路径","kind":"post-heading","value":1},{"source":"t:Bitmap","target":"p:projects-redis-bitmap-snowflake-id","kind":"tag-post","value":1},{"source":"t:Redis","target":"p:projects-redis-bitmap-snowflake-id","kind":"tag-post","value":1},{"source":"t:分布式","target":"p:projects-redis-bitmap-snowflake-id","kind":"tag-post","value":1},{"source":"t:性能优化","target":"p:projects-redis-bitmap-snowflake-id","kind":"tag-post","value":1},{"source":"p:projects-redis-bitmap-snowflake-id","target":"h:projects-redis-bitmap-snowflake-id#一案发现场","kind":"post-heading","value":1},{"source":"p:projects-redis-bitmap-snowflake-id","target":"h:projects-redis-bitmap-snowflake-id#二问题现象","kind":"post-heading","value":1},{"source":"p:projects-redis-bitmap-snowflake-id","target":"h:projects-redis-bitmap-snowflake-id#三从-bitmap-本身分析","kind":"post-heading","value":1},{"source":"p:projects-redis-bitmap-snowflake-id","target":"h:projects-redis-bitmap-snowflake-id#四从雪花-id-角度分析","kind":"post-heading","value":1},{"source":"p:projects-redis-bitmap-snowflake-id","target":"h:projects-redis-bitmap-snowflake-id#五从分布式角度分析","kind":"post-heading","value":1},{"source":"p:projects-redis-bitmap-snowflake-id","target":"h:projects-redis-bitmap-snowflake-id#六roaringbitmap-能解决吗","kind":"post-heading","value":1},{"source":"p:projects-redis-bitmap-snowflake-id","target":"h:projects-redis-bitmap-snowflake-id#七正确方案string--set用户维度","kind":"post-heading","value":1},{"source":"p:projects-redis-bitmap-snowflake-id","target":"h:projects-redis-bitmap-snowflake-id#八总结","kind":"post-heading","value":1},{"source":"t:JWT","target":"p:projects-token-storage-jwt-design","kind":"tag-post","value":1},{"source":"t:安全","target":"p:projects-token-storage-jwt-design","kind":"tag-post","value":1},{"source":"t:认证","target":"p:projects-token-storage-jwt-design","kind":"tag-post","value":1},{"source":"p:projects-token-storage-jwt-design","target":"h:projects-token-storage-jwt-design#一背景与问题","kind":"post-heading","value":1},{"source":"p:projects-token-storage-jwt-design","target":"h:projects-token-storage-jwt-design#二核心设计","kind":"post-heading","value":1},{"source":"p:projects-token-storage-jwt-design","target":"h:projects-token-storage-jwt-design#三技术选型","kind":"post-heading","value":1},{"source":"p:projects-token-storage-jwt-design","target":"h:projects-token-storage-jwt-design#四详细实现","kind":"post-heading","value":1},{"source":"p:projects-token-storage-jwt-design","target":"h:projects-token-storage-jwt-design#五安全设计","kind":"post-heading","value":1},{"source":"p:projects-token-storage-jwt-design","target":"h:projects-token-storage-jwt-design#六配置示例","kind":"post-heading","value":1},{"source":"p:projects-token-storage-jwt-design","target":"h:projects-token-storage-jwt-design#七迁移路径","kind":"post-heading","value":1},{"source":"p:projects-token-storage-jwt-design","target":"h:projects-token-storage-jwt-design#八性能调优","kind":"post-heading","value":1},{"source":"p:projects-token-storage-jwt-design","target":"h:projects-token-storage-jwt-design#九常见问题","kind":"post-heading","value":1},{"source":"p:projects-token-storage-jwt-design","target":"h:projects-token-storage-jwt-design#十总结","kind":"post-heading","value":1},{"source":"p:projects-token-storage-jwt-design","target":"h:projects-token-storage-jwt-design#十一参考资料","kind":"post-heading","value":1},{"source":"t:OAuth2","target":"p:projects-oauth2-third-party-login","kind":"tag-post","value":1},{"source":"t:登录","target":"p:projects-oauth2-third-party-login","kind":"tag-post","value":1},{"source":"t:认证","target":"p:projects-oauth2-third-party-login","kind":"tag-post","value":1},{"source":"p:projects-oauth2-third-party-login","target":"h:projects-oauth2-third-party-login#方案边界","kind":"post-heading","value":1},{"source":"p:projects-oauth2-third-party-login","target":"h:projects-oauth2-third-party-login#一通用-oauth2-授权码流程","kind":"post-heading","value":1},{"source":"p:projects-oauth2-third-party-login","target":"h:projects-oauth2-third-party-login#二github-登录","kind":"post-heading","value":1},{"source":"p:projects-oauth2-third-party-login","target":"h:projects-oauth2-third-party-login#三微信登录网站应用","kind":"post-heading","value":1},{"source":"p:projects-oauth2-third-party-login","target":"h:projects-oauth2-third-party-login#四qq-登录","kind":"post-heading","value":1},{"source":"p:projects-oauth2-third-party-login","target":"h:projects-oauth2-third-party-login#五多环境配置清单","kind":"post-heading","value":1},{"source":"p:projects-oauth2-third-party-login","target":"h:projects-oauth2-third-party-login#六常见问题","kind":"post-heading","value":1},{"source":"p:projects-oauth2-third-party-login","target":"h:projects-oauth2-third-party-login#七前端对接说明","kind":"post-heading","value":1},{"source":"p:projects-oauth2-third-party-login","target":"h:projects-oauth2-third-party-login#八数据库相关","kind":"post-heading","value":1},{"source":"p:projects-oauth2-third-party-login","target":"h:projects-oauth2-third-party-login#九代码文件清单","kind":"post-heading","value":1},{"source":"t:安全","target":"p:projects-auth-flow-zsk-auth","kind":"tag-post","value":1},{"source":"t:登录","target":"p:projects-auth-flow-zsk-auth","kind":"tag-post","value":1},{"source":"t:认证","target":"p:projects-auth-flow-zsk-auth","kind":"tag-post","value":1},{"source":"p:projects-auth-flow-zsk-auth","target":"h:projects-auth-flow-zsk-auth#方案范围","kind":"post-heading","value":1},{"source":"p:projects-auth-flow-zsk-auth","target":"h:projects-auth-flow-zsk-auth#一流程图不包含异常处理","kind":"post-heading","value":1},{"source":"p:projects-auth-flow-zsk-auth","target":"h:projects-auth-flow-zsk-auth#二流程图-包含异常处理版","kind":"post-heading","value":1},{"source":"p:projects-auth-flow-zsk-auth","target":"h:projects-auth-flow-zsk-auth#三技术栈-tech-stack","kind":"post-heading","value":1},{"source":"p:projects-auth-flow-zsk-auth","target":"h:projects-auth-flow-zsk-auth#四核心类说明","kind":"post-heading","value":1},{"source":"p:projects-auth-flow-zsk-auth","target":"h:projects-auth-flow-zsk-auth#五滑块验证码流程-slider-captcha","kind":"post-heading","value":1},{"source":"p:projects-auth-flow-zsk-auth","target":"h:projects-auth-flow-zsk-auth#六邮箱验证码流程-email-verification","kind":"post-heading","value":1},{"source":"p:projects-auth-flow-zsk-auth","target":"h:projects-auth-flow-zsk-auth#七注册流程-register","kind":"post-heading","value":1},{"source":"p:projects-auth-flow-zsk-auth","target":"h:projects-auth-flow-zsk-auth#八登录流程-login","kind":"post-heading","value":1},{"source":"p:projects-auth-flow-zsk-auth","target":"h:projects-auth-flow-zsk-auth#九安全加密机制-security--encryption","kind":"post-heading","value":1},{"source":"p:projects-auth-flow-zsk-auth","target":"h:projects-auth-flow-zsk-auth#十限流机制-rate-limiting","kind":"post-heading","value":1},{"source":"t:安全","target":"p:projects-magic-link-login-design","kind":"tag-post","value":1},{"source":"t:登录","target":"p:projects-magic-link-login-design","kind":"tag-post","value":1},{"source":"t:认证","target":"p:projects-magic-link-login-design","kind":"tag-post","value":1},{"source":"p:projects-magic-link-login-design","target":"h:projects-magic-link-login-design#方案边界","kind":"post-heading","value":1},{"source":"p:projects-magic-link-login-design","target":"h:projects-magic-link-login-design#一需求分析","kind":"post-heading","value":1},{"source":"p:projects-magic-link-login-design","target":"h:projects-magic-link-login-design#二技术方案","kind":"post-heading","value":1},{"source":"p:projects-magic-link-login-design","target":"h:projects-magic-link-login-design#三方案对比分析","kind":"post-heading","value":1},{"source":"p:projects-magic-link-login-design","target":"h:projects-magic-link-login-design#四部署与集成方案","kind":"post-heading","value":1},{"source":"p:projects-magic-link-login-design","target":"h:projects-magic-link-login-design#五代码安全性","kind":"post-heading","value":1},{"source":"t:MinIO","target":"p:projects-object-storage-presigned-url","kind":"tag-post","value":1},{"source":"t:安全","target":"p:projects-object-storage-presigned-url","kind":"tag-post","value":1},{"source":"t:对象存储","target":"p:projects-object-storage-presigned-url","kind":"tag-post","value":1},{"source":"p:projects-object-storage-presigned-url","target":"h:projects-object-storage-presigned-url#一背景","kind":"post-heading","value":1},{"source":"p:projects-object-storage-presigned-url","target":"h:projects-object-storage-presigned-url#二什么是签名-url","kind":"post-heading","value":1},{"source":"p:projects-object-storage-presigned-url","target":"h:projects-object-storage-presigned-url#三有效期限制","kind":"post-heading","value":1},{"source":"p:projects-object-storage-presigned-url","target":"h:projects-object-storage-presigned-url#四两种访问模式对比","kind":"post-heading","value":1},{"source":"p:projects-object-storage-presigned-url","target":"h:projects-object-storage-presigned-url#五签名-url-过期后的应对方案","kind":"post-heading","value":1},{"source":"p:projects-object-storage-presigned-url","target":"h:projects-object-storage-presigned-url#六最佳实践","kind":"post-heading","value":1},{"source":"p:projects-object-storage-presigned-url","target":"h:projects-object-storage-presigned-url#七常见问题","kind":"post-heading","value":1},{"source":"t:WebSocket","target":"p:projects-qrcode-login-java-comparison","kind":"tag-post","value":1},{"source":"t:扫码登录","target":"p:projects-qrcode-login-java-comparison","kind":"tag-post","value":1},{"source":"t:认证","target":"p:projects-qrcode-login-java-comparison","kind":"tag-post","value":1},{"source":"p:projects-qrcode-login-java-comparison","target":"h:projects-qrcode-login-java-comparison#一背景","kind":"post-heading","value":1},{"source":"p:projects-qrcode-login-java-comparison","target":"h:projects-qrcode-login-java-comparison#二扫码登录核心流程","kind":"post-heading","value":1},{"source":"p:projects-qrcode-login-java-comparison","target":"h:projects-qrcode-login-java-comparison#三方案对比pc-端如何感知状态变更","kind":"post-heading","value":1},{"source":"p:projects-qrcode-login-java-comparison","target":"h:projects-qrcode-login-java-comparison#四后端实现基于-spring-boot--redis","kind":"post-heading","value":1},{"source":"p:projects-qrcode-login-java-comparison","target":"h:projects-qrcode-login-java-comparison#五前端实现","kind":"post-heading","value":1},{"source":"p:projects-qrcode-login-java-comparison","target":"h:projects-qrcode-login-java-comparison#六安全防御","kind":"post-heading","value":1},{"source":"p:projects-qrcode-login-java-comparison","target":"h:projects-qrcode-login-java-comparison#七踩坑点--注意事项","kind":"post-heading","value":1},{"source":"p:projects-qrcode-login-java-comparison","target":"h:projects-qrcode-login-java-comparison#八生产环境部署清单","kind":"post-heading","value":1},{"source":"p:projects-qrcode-login-java-comparison","target":"h:projects-qrcode-login-java-comparison#九方案对比总结","kind":"post-heading","value":1},{"source":"p:projects-qrcode-login-java-comparison","target":"h:projects-qrcode-login-java-comparison#十参考资料","kind":"post-heading","value":1},{"source":"t:Oracle","target":"p:projects-oracle-erp-performance-optimization","kind":"tag-post","value":1},{"source":"t:性能优化","target":"p:projects-oracle-erp-performance-optimization","kind":"tag-post","value":1},{"source":"t:数据库","target":"p:projects-oracle-erp-performance-optimization","kind":"tag-post","value":1},{"source":"p:projects-oracle-erp-performance-optimization","target":"h:projects-oracle-erp-performance-optimization#一背景","kind":"post-heading","value":1},{"source":"p:projects-oracle-erp-performance-optimization","target":"h:projects-oracle-erp-performance-optimization#二根本原因聚簇因子clustering-factor恶化","kind":"post-heading","value":1},{"source":"p:projects-oracle-erp-performance-optimization","target":"h:projects-oracle-erp-performance-optimization#三分析方法","kind":"post-heading","value":1},{"source":"p:projects-oracle-erp-performance-optimization","target":"h:projects-oracle-erp-performance-optimization#四优化方案","kind":"post-heading","value":1},{"source":"p:projects-oracle-erp-performance-optimization","target":"h:projects-oracle-erp-performance-optimization#五深度分析","kind":"post-heading","value":1},{"source":"p:projects-oracle-erp-performance-optimization","target":"h:projects-oracle-erp-performance-optimization#六优化效果汇总","kind":"post-heading","value":1},{"source":"p:projects-oracle-erp-performance-optimization","target":"h:projects-oracle-erp-performance-optimization#七mrp-性能优化扩展框架","kind":"post-heading","value":1},{"source":"p:projects-oracle-erp-performance-optimization","target":"h:projects-oracle-erp-performance-optimization#八总结","kind":"post-heading","value":1},{"source":"p:projects-oracle-erp-performance-optimization","target":"h:projects-oracle-erp-performance-optimization#九参考资料","kind":"post-heading","value":1},{"source":"t:Spring Boot","target":"p:details-springboot-async-best-practices","kind":"tag-post","value":1},{"source":"t:并发编程","target":"p:details-springboot-async-best-practices","kind":"tag-post","value":1},{"source":"t:异步编程","target":"p:details-springboot-async-best-practices","kind":"tag-post","value":1},{"source":"t:线程池","target":"p:details-springboot-async-best-practices","kind":"tag-post","value":1},{"source":"p:details-springboot-async-best-practices","target":"h:details-springboot-async-best-practices#引子","kind":"post-heading","value":1},{"source":"p:details-springboot-async-best-practices","target":"h:details-springboot-async-best-practices#核心摘要","kind":"post-heading","value":1},{"source":"p:details-springboot-async-best-practices","target":"h:details-springboot-async-best-practices#一先判断该不该用","kind":"post-heading","value":1},{"source":"p:details-springboot-async-best-practices","target":"h:details-springboot-async-best-practices#二背景async-的执行机制","kind":"post-heading","value":1},{"source":"p:details-springboot-async-best-practices","target":"h:details-springboot-async-best-practices#三实践一显式定义执行器按业务分池","kind":"post-heading","value":1},{"source":"p:details-springboot-async-best-practices","target":"h:details-springboot-async-best-practices#四实践二异常必须闭环","kind":"post-heading","value":1},{"source":"p:details-springboot-async-best-practices","target":"h:details-springboot-async-best-practices#五实践三上下文传递用-taskdecorator","kind":"post-heading","value":1},{"source":"p:details-springboot-async-best-practices","target":"h:details-springboot-async-best-practices#六实践四与事务的边界","kind":"post-heading","value":1},{"source":"p:details-springboot-async-best-practices","target":"h:details-springboot-async-best-practices#七实践五让失效场景显形","kind":"post-heading","value":1},{"source":"p:details-springboot-async-best-practices","target":"h:details-springboot-async-best-practices#八实战演示订单支付后的异步通知","kind":"post-heading","value":1},{"source":"p:details-springboot-async-best-practices","target":"h:details-springboot-async-best-practices#九踩坑点与注意事项","kind":"post-heading","value":1},{"source":"p:details-springboot-async-best-practices","target":"h:details-springboot-async-best-practices#十上线检查清单","kind":"post-heading","value":1},{"source":"p:details-springboot-async-best-practices","target":"h:details-springboot-async-best-practices#总结","kind":"post-heading","value":1},{"source":"p:details-springboot-async-best-practices","target":"h:details-springboot-async-best-practices#参考资料","kind":"post-heading","value":1},{"source":"t:安全","target":"t:认证","kind":"tag-tag","value":3},{"source":"t:登录","target":"t:认证","kind":"tag-tag","value":3},{"source":"t:AI","target":"t:RAG","kind":"tag-tag","value":2},{"source":"t:Java","target":"t:并发编程","kind":"tag-tag","value":2},{"source":"t:安全","target":"t:登录","kind":"tag-tag","value":2},{"source":"t:并发编程","target":"t:线程池","kind":"tag-tag","value":2},{"source":"t:3D","target":"t:React","kind":"tag-tag","value":1},{"source":"t:3D","target":"t:Three","kind":"tag-tag","value":1},{"source":"t:3D","target":"t:米塔","kind":"tag-tag","value":1},{"source":"t:AI","target":"t:Bot","kind":"tag-tag","value":1},{"source":"t:AI","target":"t:Cloudflare","kind":"tag-tag","value":1},{"source":"t:AI","target":"t:LLM","kind":"tag-tag","value":1},{"source":"t:AI","target":"t:Prompt","kind":"tag-tag","value":1},{"source":"t:AI","target":"t:Skill","kind":"tag-tag","value":1},{"source":"t:AI","target":"t:前端","kind":"tag-tag","value":1},{"source":"t:AI","target":"t:博客","kind":"tag-tag","value":1},{"source":"t:AI","target":"t:工作流","kind":"tag-tag","value":1},{"source":"t:AI","target":"t:部署","kind":"tag-tag","value":1},{"source":"t:Bitmap","target":"t:Redis","kind":"tag-tag","value":1},{"source":"t:Bitmap","target":"t:分布式","kind":"tag-tag","value":1},{"source":"t:Bitmap","target":"t:性能优化","kind":"tag-tag","value":1},{"source":"t:Bot","target":"t:部署","kind":"tag-tag","value":1},{"source":"t:CDN","target":"t:HTTP","kind":"tag-tag","value":1},{"source":"t:CDN","target":"t:Nginx","kind":"tag-tag","value":1},{"source":"t:CDN","target":"t:性能优化","kind":"tag-tag","value":1},{"source":"t:Cloudflare","target":"t:RAG","kind":"tag-tag","value":1},{"source":"t:EasyExcel","target":"t:大数据量","kind":"tag-tag","value":1},{"source":"t:EasyExcel","target":"t:导入导出","kind":"tag-tag","value":1},{"source":"t:EasyExcel","target":"t:设计文档","kind":"tag-tag","value":1},{"source":"t:EasyExcel","target":"t:高并发","kind":"tag-tag","value":1},{"source":"t:firefly","target":"t:二开","kind":"tag-tag","value":1},{"source":"t:firefly","target":"t:博客","kind":"tag-tag","value":1},{"source":"t:HTTP","target":"t:Nginx","kind":"tag-tag","value":1},{"source":"t:HTTP","target":"t:性能优化","kind":"tag-tag","value":1},{"source":"t:Java","target":"t:枚举","kind":"tag-tag","value":1},{"source":"t:Java","target":"t:线程池","kind":"tag-tag","value":1},{"source":"t:Java","target":"t:虚拟线程","kind":"tag-tag","value":1},{"source":"t:Java","target":"t:设计模式","kind":"tag-tag","value":1},{"source":"t:JWT","target":"t:安全","kind":"tag-tag","value":1},{"source":"t:JWT","target":"t:认证","kind":"tag-tag","value":1},{"source":"t:LLM","target":"t:RAG","kind":"tag-tag","value":1},{"source":"t:MinIO","target":"t:安全","kind":"tag-tag","value":1},{"source":"t:MinIO","target":"t:对象存储","kind":"tag-tag","value":1},{"source":"t:Nginx","target":"t:性能优化","kind":"tag-tag","value":1},{"source":"t:OAuth2","target":"t:登录","kind":"tag-tag","value":1},{"source":"t:OAuth2","target":"t:认证","kind":"tag-tag","value":1},{"source":"t:Oracle","target":"t:性能优化","kind":"tag-tag","value":1},{"source":"t:Oracle","target":"t:数据库","kind":"tag-tag","value":1},{"source":"t:React","target":"t:Three","kind":"tag-tag","value":1},{"source":"t:React","target":"t:米塔","kind":"tag-tag","value":1},{"source":"t:Redis","target":"t:分布式","kind":"tag-tag","value":1},{"source":"t:Redis","target":"t:性能优化","kind":"tag-tag","value":1},{"source":"t:Redis","target":"t:架构设计","kind":"tag-tag","value":1},{"source":"t:Redis","target":"t:缓存设计","kind":"tag-tag","value":1},{"source":"t:Redis","target":"t:高并发","kind":"tag-tag","value":1},{"source":"t:RocketMQ","target":"t:分布式一致性","kind":"tag-tag","value":1},{"source":"t:RocketMQ","target":"t:消息队列","kind":"tag-tag","value":1},{"source":"t:RocketMQ","target":"t:顺序消费","kind":"tag-tag","value":1},{"source":"t:RocketMQ","target":"t:高并发","kind":"tag-tag","value":1},{"source":"t:Skill","target":"t:工作流","kind":"tag-tag","value":1},{"source":"t:Spring Boot","target":"t:Web安全","kind":"tag-tag","value":1},{"source":"t:Spring Boot","target":"t:最佳实践","kind":"tag-tag","value":1},{"source":"t:Spring Boot","target":"t:并发编程","kind":"tag-tag","value":1},{"source":"t:Spring Boot","target":"t:异步编程","kind":"tag-tag","value":1},{"source":"t:Spring Boot","target":"t:接口安全","kind":"tag-tag","value":1},{"source":"t:Spring Boot","target":"t:线程池","kind":"tag-tag","value":1},{"source":"t:Three","target":"t:米塔","kind":"tag-tag","value":1},{"source":"t:Umami","target":"t:Vercel","kind":"tag-tag","value":1},{"source":"t:Umami","target":"t:部署","kind":"tag-tag","value":1},{"source":"t:Vercel","target":"t:部署","kind":"tag-tag","value":1},{"source":"t:WebSocket","target":"t:扫码登录","kind":"tag-tag","value":1},{"source":"t:WebSocket","target":"t:认证","kind":"tag-tag","value":1},{"source":"t:Web安全","target":"t:最佳实践","kind":"tag-tag","value":1},{"source":"t:Web安全","target":"t:接口安全","kind":"tag-tag","value":1},{"source":"t:二开","target":"t:博客","kind":"tag-tag","value":1},{"source":"t:分布式","target":"t:性能优化","kind":"tag-tag","value":1},{"source":"t:分布式一致性","target":"t:消息队列","kind":"tag-tag","value":1},{"source":"t:分布式一致性","target":"t:顺序消费","kind":"tag-tag","value":1},{"source":"t:分布式一致性","target":"t:高并发","kind":"tag-tag","value":1},{"source":"t:前端","target":"t:博客","kind":"tag-tag","value":1},{"source":"t:大数据量","target":"t:导入导出","kind":"tag-tag","value":1},{"source":"t:大数据量","target":"t:设计文档","kind":"tag-tag","value":1},{"source":"t:大数据量","target":"t:高并发","kind":"tag-tag","value":1},{"source":"t:安全","target":"t:对象存储","kind":"tag-tag","value":1},{"source":"t:导入导出","target":"t:设计文档","kind":"tag-tag","value":1},{"source":"t:导入导出","target":"t:高并发","kind":"tag-tag","value":1},{"source":"t:并发编程","target":"t:异步编程","kind":"tag-tag","value":1},{"source":"t:并发编程","target":"t:虚拟线程","kind":"tag-tag","value":1},{"source":"t:异步编程","target":"t:线程池","kind":"tag-tag","value":1},{"source":"t:性能优化","target":"t:数据库","kind":"tag-tag","value":1},{"source":"t:扫码登录","target":"t:认证","kind":"tag-tag","value":1},{"source":"t:接口安全","target":"t:最佳实践","kind":"tag-tag","value":1},{"source":"t:枚举","target":"t:设计模式","kind":"tag-tag","value":1},{"source":"t:架构设计","target":"t:缓存设计","kind":"tag-tag","value":1},{"source":"t:架构设计","target":"t:高并发","kind":"tag-tag","value":1},{"source":"t:消息队列","target":"t:顺序消费","kind":"tag-tag","value":1},{"source":"t:消息队列","target":"t:高并发","kind":"tag-tag","value":1},{"source":"t:缓存设计","target":"t:高并发","kind":"tag-tag","value":1},{"source":"t:设计文档","target":"t:高并发","kind":"tag-tag","value":1},{"source":"t:顺序消费","target":"t:高并发","kind":"tag-tag","value":1}],"meta":{"version":1,"categories":[{"id":"c:学习文档","name":"学习文档","url":"/categories/学习文档/","colorIndex":0,"postCount":13,"tagCount":33},{"id":"c:设计文档","name":"设计文档","url":"/categories/设计文档/","colorIndex":1,"postCount":8,"tagCount":20},{"id":"c:实践笔记","name":"实践笔记","url":"/categories/实践笔记/","colorIndex":2,"postCount":3,"tagCount":9},{"id":"c:部署文档","name":"部署文档","url":"/categories/部署文档/","colorIndex":3,"postCount":2,"tagCount":5}],"counts":{"category":4,"tag":59,"post":26,"heading":241},"timeRange":{"from":1762992000000,"to":1789257600000},"headingDepth":2}}