[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"i-lucide:mail":3,"i-lucide:moon":8,"i-lucide:arrow-up":10,"categories":12,"footer-site":39,"posts":50,"i-lucide:search":211,"i-lucide:calendar":213,"i-lucide:flame":215,"i-lucide:trending-up":217,"i-lucide:chevron-left":219,"i-lucide:chevron-right":221},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m22 7l-8.991 5.727a2 2 0 0 1-2.009 0L2 7\"\u002F>\u003Crect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m5 12l7-7l7 7m-7 7V5\"\u002F>",[13,19,25,30,35],{"id":14,"name":15,"slug":16,"description":17,"post_count":18},3,"AI 探索","ai-探索","大模型应用、RAG系统、Agent调度、流式AI交互等前沿工程探索与落地实践",11,{"id":20,"name":21,"slug":22,"description":23,"post_count":24},6,"AI 解读","ai-解读","深度学习核心原理解析：Transformer、注意力机制、归一化等关键技术的数学直觉与代码实现",5,{"id":26,"name":27,"slug":28,"description":29,"post_count":4},2,"开源与工具","开源&工具",null,{"id":31,"name":32,"slug":32,"description":33,"post_count":34},1,"技术手记","前端与全栈工程实践，涵盖流式处理、实时通信、状态管理、架构设计等硬核技术分享",12,{"id":24,"name":36,"slug":36,"description":37,"post_count":38},"算法实践","数据结构剖析、算法场景实现、代码优化技巧与性能调优实战",4,{"hero_name":40,"hero_eyebrow":41,"hero_roles":42,"hero_lead":44,"stats":45,"contact_email":46,"contact_github":47,"contact_wechat":47,"cta_text":48,"brands_title":49},"Michael meng","Hello, my name is",[43],"AI 实践者","当知识从静态文本蜕变为可对话的数字资产，我们面对的不再是信息过载，而是思维方式的重新校准。 我探索如何将大模型能力淬炼为可落地的解决方案。从 Prompt 到 Pipeline，每一篇文章都是真实场景下的拆解与复盘。欢迎「问问我的博客」，让 AI 替你找到答案。",[],"michaelnews@126.com","","有一个想法？让我们一起去实践","合作过的品牌",{"items":51,"total":77,"page":31,"page_size":20},[52,87,114,139,167,191],{"id":5,"title":53,"slug":54,"excerpt":55,"cover_image":56,"reading_time":24,"views":4,"status":57,"published_at":58,"seo_title":29,"seo_description":29,"category_id":31,"category":59,"categories":60,"tags":63,"ai_summary":29},"FFmpeg WASM 浏览器端视频合成：从图片序列到 MP4 的前端实现","ffmpeg-wasm-browser-video-composition-typescript","利用 @ffmpeg\u002Fffmpeg 的 WebAssembly 版本，在浏览器中直接将图片序列合成为 MP4 视频。覆盖 FFmpeg WASM 初始化、图片写入虚拟文件系统、H.264 编码参数控制、进度回调、前端 vs 后端方案对比，以及","https:\u002F\u002Fpicsum.photos\u002Fseed\u002Fffmpeg-wasm\u002F1200\u002F675","published","2026-07-23T03:56:18.188596Z",{"id":31,"name":32,"slug":32,"description":33,"post_count":4},[61,62],{"id":14,"name":15,"slug":16},{"id":31,"name":32,"slug":32},[64,68,72,76,80,83],{"id":65,"name":66,"slug":67,"post_count":4},46,"FFmpeg","ffmpeg",{"id":69,"name":70,"slug":71,"post_count":4},29,"WebAssembly","webassembly",{"id":73,"name":74,"slug":75,"post_count":4},30,"TypeScript","typescript",{"id":77,"name":78,"slug":79,"post_count":4},19,"React","react",{"id":81,"name":82,"slug":82,"post_count":4},47,"视频合成",{"id":84,"name":85,"slug":86,"post_count":4},39,"AIGC","aigc",{"id":88,"title":89,"slug":90,"excerpt":91,"cover_image":92,"reading_time":24,"views":4,"status":57,"published_at":93,"seo_title":29,"seo_description":29,"category_id":31,"category":94,"categories":95,"tags":98,"ai_summary":29},23,"大文件分片上传与断点续传：从 MD5 秒传到 TypeScript 完整实现","file-chunked-upload-resume-typescript-sparkmd5","实现大文件分片上传与断点续传系统：SparkMD5 计算文件指纹实现秒传，5MB 分片并发上传，刷新页面后自动恢复未完成的上传。包含完整 TypeScript 代码、API 接口规范（prepare\u002Fchunk\u002Fmerge\u002Fcancel）、进","https:\u002F\u002Fpicsum.photos\u002Fseed\u002Fchunk-upload\u002F1200\u002F675","2026-07-23T03:56:18.176804Z",{"id":31,"name":32,"slug":32,"description":33,"post_count":4},[96,97],{"id":31,"name":32,"slug":32},{"id":24,"name":36,"slug":36},[99,100,103,107,110,111],{"id":73,"name":74,"slug":75,"post_count":4},{"id":101,"name":102,"slug":102,"post_count":4},42,"文件上传",{"id":104,"name":105,"slug":106,"post_count":4},43,"SparkMD5","sparkmd5",{"id":108,"name":109,"slug":109,"post_count":4},44,"断点续传",{"id":77,"name":78,"slug":79,"post_count":4},{"id":112,"name":113,"slug":113,"post_count":4},45,"并发控制",{"id":115,"title":116,"slug":117,"excerpt":118,"cover_image":119,"reading_time":24,"views":4,"status":57,"published_at":120,"seo_title":29,"seo_description":29,"category_id":31,"category":121,"categories":122,"tags":125,"ai_summary":29},22,"AIGC任务队列与WebSocket实时状态更新系统","aigc-task-queue-websocket-real-time-status-typescript","构建 AIGC 前端任务队列系统：涵盖任务状态机（pending\u002Frunning\u002Fprogress\u002Fcompleted\u002Ffailed\u002Fcanceled）、WebSocket 实时进度推送、并发控制、localStorage 持久化、失败重试与取消。支持图片生成、视频生成","https:\u002F\u002Fpicsum.photos\u002Fseed\u002Faigc-task-queue\u002F1200\u002F675","2026-07-23T03:56:18.163561Z",{"id":31,"name":32,"slug":32,"description":33,"post_count":4},[123,124],{"id":14,"name":15,"slug":16},{"id":31,"name":32,"slug":32},[126,127,128,132,135,136],{"id":84,"name":85,"slug":86,"post_count":4},{"id":73,"name":74,"slug":75,"post_count":4},{"id":129,"name":130,"slug":131,"post_count":4},21,"WebSocket","websocket",{"id":133,"name":134,"slug":134,"post_count":4},40,"任务队列",{"id":77,"name":78,"slug":79,"post_count":4},{"id":137,"name":138,"slug":138,"post_count":4},41,"状态机",{"id":129,"title":140,"slug":141,"excerpt":142,"cover_image":143,"reading_time":24,"views":4,"status":57,"published_at":144,"seo_title":29,"seo_description":29,"category_id":31,"category":145,"categories":146,"tags":149,"ai_summary":29},"AI模型参数控制面板：多模型通用的前端参数系统设计","ai-model-parameter-panel-multi-model-typescript","构建通用的 AI 模型参数控制面板：以 TypeScript 配置表驱动，动态渲染 LLM、文生图、文生视频三类模型的差异化参数。涵盖 temperature、TopP、采样步数、CFG、帧率，以及参数联动、互斥校验、非法输入拦截和 localStorag","https:\u002F\u002Fpicsum.photos\u002Fseed\u002Fai-params-panel\u002F1200\u002F675","2026-07-23T03:56:18.142337Z",{"id":31,"name":32,"slug":32,"description":33,"post_count":4},[147,148],{"id":14,"name":15,"slug":16},{"id":31,"name":32,"slug":32},[150,154,155,156,159,163],{"id":151,"name":152,"slug":153,"post_count":4},15,"AI","ai",{"id":73,"name":74,"slug":75,"post_count":4},{"id":77,"name":78,"slug":79,"post_count":4},{"id":157,"name":158,"slug":158,"post_count":4},36,"参数设计",{"id":160,"name":161,"slug":162,"post_count":4},37,"Stable Diffusion","stable-diffusion",{"id":164,"name":165,"slug":166,"post_count":4},38,"LLM","llm",{"id":168,"title":169,"slug":170,"excerpt":171,"cover_image":172,"reading_time":18,"views":4,"status":57,"published_at":173,"seo_title":29,"seo_description":29,"category_id":31,"category":174,"categories":175,"tags":178,"ai_summary":29},20,"社区众包审核系统：从前端架构到可信度评分算法完整设计","community-crowdsource-review-system-frontend","X(Twitter)的 Community Notes 证明了众包事实核查的可行性。本文将这个模式从前端架构到可信度评分算法完整实现，可直接用于社区内容审核系统。","https:\u002F\u002Fpicsum.photos\u002Fseed\u002Fcrowd-review\u002F1200\u002F675","2026-07-23T03:32:34.890894Z",{"id":31,"name":32,"slug":32,"description":33,"post_count":4},[176,177],{"id":31,"name":32,"slug":32},{"id":24,"name":36,"slug":36},[179,181,182,185,188],{"id":115,"name":180,"slug":180,"post_count":4},"系统设计",{"id":73,"name":74,"slug":75,"post_count":4},{"id":183,"name":184,"slug":184,"post_count":4},32,"算法",{"id":186,"name":187,"slug":187,"post_count":4},35,"社交平台",{"id":189,"name":190,"slug":190,"post_count":4},34,"架构",{"id":77,"title":192,"slug":193,"excerpt":194,"cover_image":195,"reading_time":196,"views":4,"status":57,"published_at":197,"seo_title":29,"seo_description":29,"category_id":24,"category":198,"categories":199,"tags":202,"ai_summary":29},"从 Encoder-Decoder 到 Decoder-Only：Transformer 架构进化史与选型指南","transformer-architecture-encoder-decoder-gpt-evolution","为什么 BERT 是双向的、GPT 是单向的、T5 又要同时有 Encoder 和 Decoder？本文从架构层面讲清三种 Transformer 变体的设计哲学和选型指南。","https:\u002F\u002Fpicsum.photos\u002Fseed\u002Fencoder-decoder\u002F1200\u002F675",8,"2026-07-23T03:32:15.898287Z",{"id":24,"name":36,"slug":36,"description":37,"post_count":4},[200,201],{"id":20,"name":21,"slug":22},{"id":24,"name":36,"slug":36},[203,204,205,206,209],{"id":151,"name":152,"slug":153,"post_count":4},{"id":115,"name":180,"slug":180,"post_count":4},{"id":189,"name":190,"slug":190,"post_count":4},{"id":207,"name":208,"slug":208,"post_count":4},31,"深度学习",{"id":88,"name":210,"slug":210,"post_count":4},"面试",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":212},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m21 21l-4.34-4.34\"\u002F>\u003Ccircle cx=\"11\" cy=\"11\" r=\"8\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":214},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M8 2v4m8-4v4\"\u002F>\u003Crect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\"\u002F>\u003Cpath d=\"M3 10h18\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":216},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0a5 5 0 0 1 1-3a1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":218},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M16 7h6v6\"\u002F>\u003Cpath d=\"m22 7l-8.5 8.5l-5-5L2 17\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":220},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m15 18l-6-6l6-6\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":222},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m9 18l6-6l-6-6\"\u002F>"]