[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"i-lucide:mail":3,"i-lucide:moon":8,"i-lucide:arrow-up":10,"home":12,"i-lucide:inbox":201,"i-lucide:map-pin":203,"i-lucide:clock":205,"footer-site":207},{"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>",{"featured_posts":13,"testimonials":187,"brands":188,"services":189,"site":190},[14,57,85,110,138,163],{"id":5,"title":15,"slug":16,"excerpt":17,"cover_image":18,"reading_time":19,"views":4,"status":20,"published_at":21,"seo_title":22,"seo_description":22,"category_id":23,"category":24,"categories":27,"tags":33,"ai_summary":22},"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",5,"published","2026-07-23T03:56:18.188596Z",null,1,{"id":23,"name":25,"slug":25,"description":26,"post_count":4},"技术手记","前端与全栈工程实践，涵盖流式处理、实时通信、状态管理、架构设计等硬核技术分享",[28,32],{"id":29,"name":30,"slug":31},3,"AI 探索","ai-探索",{"id":23,"name":25,"slug":25},[34,38,42,46,50,53],{"id":35,"name":36,"slug":37,"post_count":4},46,"FFmpeg","ffmpeg",{"id":39,"name":40,"slug":41,"post_count":4},29,"WebAssembly","webassembly",{"id":43,"name":44,"slug":45,"post_count":4},30,"TypeScript","typescript",{"id":47,"name":48,"slug":49,"post_count":4},19,"React","react",{"id":51,"name":52,"slug":52,"post_count":4},47,"视频合成",{"id":54,"name":55,"slug":56,"post_count":4},39,"AIGC","aigc",{"id":58,"title":59,"slug":60,"excerpt":61,"cover_image":62,"reading_time":19,"views":4,"status":20,"published_at":63,"seo_title":22,"seo_description":22,"category_id":23,"category":64,"categories":65,"tags":69,"ai_summary":22},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":23,"name":25,"slug":25,"description":26,"post_count":4},[66,67],{"id":23,"name":25,"slug":25},{"id":19,"name":68,"slug":68},"算法实践",[70,71,74,78,81,82],{"id":43,"name":44,"slug":45,"post_count":4},{"id":72,"name":73,"slug":73,"post_count":4},42,"文件上传",{"id":75,"name":76,"slug":77,"post_count":4},43,"SparkMD5","sparkmd5",{"id":79,"name":80,"slug":80,"post_count":4},44,"断点续传",{"id":47,"name":48,"slug":49,"post_count":4},{"id":83,"name":84,"slug":84,"post_count":4},45,"并发控制",{"id":86,"title":87,"slug":88,"excerpt":89,"cover_image":90,"reading_time":19,"views":4,"status":20,"published_at":91,"seo_title":22,"seo_description":22,"category_id":23,"category":92,"categories":93,"tags":96,"ai_summary":22},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":23,"name":25,"slug":25,"description":26,"post_count":4},[94,95],{"id":29,"name":30,"slug":31},{"id":23,"name":25,"slug":25},[97,98,99,103,106,107],{"id":54,"name":55,"slug":56,"post_count":4},{"id":43,"name":44,"slug":45,"post_count":4},{"id":100,"name":101,"slug":102,"post_count":4},21,"WebSocket","websocket",{"id":104,"name":105,"slug":105,"post_count":4},40,"任务队列",{"id":47,"name":48,"slug":49,"post_count":4},{"id":108,"name":109,"slug":109,"post_count":4},41,"状态机",{"id":100,"title":111,"slug":112,"excerpt":113,"cover_image":114,"reading_time":19,"views":4,"status":20,"published_at":115,"seo_title":22,"seo_description":22,"category_id":23,"category":116,"categories":117,"tags":120,"ai_summary":22},"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":23,"name":25,"slug":25,"description":26,"post_count":4},[118,119],{"id":29,"name":30,"slug":31},{"id":23,"name":25,"slug":25},[121,125,126,127,130,134],{"id":122,"name":123,"slug":124,"post_count":4},15,"AI","ai",{"id":43,"name":44,"slug":45,"post_count":4},{"id":47,"name":48,"slug":49,"post_count":4},{"id":128,"name":129,"slug":129,"post_count":4},36,"参数设计",{"id":131,"name":132,"slug":133,"post_count":4},37,"Stable Diffusion","stable-diffusion",{"id":135,"name":136,"slug":137,"post_count":4},38,"LLM","llm",{"id":139,"title":140,"slug":141,"excerpt":142,"cover_image":143,"reading_time":144,"views":4,"status":20,"published_at":145,"seo_title":22,"seo_description":22,"category_id":23,"category":146,"categories":147,"tags":150,"ai_summary":22},20,"社区众包审核系统：从前端架构到可信度评分算法完整设计","community-crowdsource-review-system-frontend","X(Twitter)的 Community Notes 证明了众包事实核查的可行性。本文将这个模式从前端架构到可信度评分算法完整实现，可直接用于社区内容审核系统。","https:\u002F\u002Fpicsum.photos\u002Fseed\u002Fcrowd-review\u002F1200\u002F675",11,"2026-07-23T03:32:34.890894Z",{"id":23,"name":25,"slug":25,"description":26,"post_count":4},[148,149],{"id":23,"name":25,"slug":25},{"id":19,"name":68,"slug":68},[151,153,154,157,160],{"id":86,"name":152,"slug":152,"post_count":4},"系统设计",{"id":43,"name":44,"slug":45,"post_count":4},{"id":155,"name":156,"slug":156,"post_count":4},32,"算法",{"id":158,"name":159,"slug":159,"post_count":4},35,"社交平台",{"id":161,"name":162,"slug":162,"post_count":4},34,"架构",{"id":47,"title":164,"slug":165,"excerpt":166,"cover_image":167,"reading_time":168,"views":4,"status":20,"published_at":169,"seo_title":22,"seo_description":22,"category_id":19,"category":170,"categories":172,"tags":178,"ai_summary":22},"从 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":19,"name":68,"slug":68,"description":171,"post_count":4},"数据结构剖析、算法场景实现、代码优化技巧与性能调优实战",[173,177],{"id":174,"name":175,"slug":176},6,"AI 解读","ai-解读",{"id":19,"name":68,"slug":68},[179,180,181,182,185],{"id":122,"name":123,"slug":124,"post_count":4},{"id":86,"name":152,"slug":152,"post_count":4},{"id":161,"name":162,"slug":162,"post_count":4},{"id":183,"name":184,"slug":184,"post_count":4},31,"深度学习",{"id":58,"name":186,"slug":186,"post_count":4},"面试",[],[],[],{"hero_name":191,"hero_eyebrow":192,"hero_roles":193,"hero_lead":195,"stats":196,"contact_email":197,"contact_github":198,"contact_wechat":198,"cta_text":199,"brands_title":200},"Michael meng","Hello, my name is",[194],"AI 实践者","当知识从静态文本蜕变为可对话的数字资产，我们面对的不再是信息过载，而是思维方式的重新校准。 我探索如何将大模型能力淬炼为可落地的解决方案。从 Prompt 到 Pipeline，每一篇文章都是真实场景下的拆解与复盘。欢迎「问问我的博客」，让 AI 替你找到答案。",[],"michaelnews@126.com","","有一个想法？让我们一起去实践","合作过的品牌",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":202},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M22 12h-6l-2 3h-4l-2-3H2\"\u002F>\u003Cpath d=\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":204},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0\"\u002F>\u003Ccircle cx=\"12\" cy=\"10\" r=\"3\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":206},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"10\"\u002F>\u003Cpath d=\"M12 6v6l4 2\"\u002F>\u003C\u002Fg>",{"hero_name":191,"hero_eyebrow":192,"hero_roles":208,"hero_lead":195,"stats":209,"contact_email":197,"contact_github":198,"contact_wechat":198,"cta_text":199,"brands_title":200},[194],[]]