<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Zhencode的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Zhencode</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Zhencode]]></copyright><item><title><![CDATA[dify应用之文生图]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/161027498</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/161027498</guid><author>Zhencode</author><pubDate>Wed, 13 May 2026 00:31:48 +0800</pubDate><description><![CDATA[本文介绍了基于阿里百炼平台的文生图插件应用开发流程。通过创建工作流agent并配置文生图模型插件，实现了从文本输入到图片输出的自动化转换。文章详细展示了插件安装、参数配置、提示词设置等关键步骤，并以汽车营销活动策划为例，演示了如何通过AI自动生成符合需求的视觉内容。该方案支持自定义调整图片参数，验证了文生图模型在营销场景中的实际应用效果，为内容创作者提供了高效的视觉素材生成解决方案。]]></description><category></category></item><item><title><![CDATA[Python创建MCP服务]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/160668931</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/160668931</guid><author>Zhencode</author><pubDate>Thu, 30 Apr 2026 23:57:04 +0800</pubDate><description><![CDATA[现在，想象一下，如果你的AI助手能直接“读懂”这些日志，并主动告诉你：“嘿，数据库在上午10点25分连接超时了，而且磁盘空间也快满了”，那会是怎样的体验？但这扇门你已经推开，接下来，就可以尽情探索如何让你的AI助手连接更广阔的世界，完成更复杂的任务了。通过这个简单的日志分析器，你已经亲手揭开了MCP的神秘面纱。我们的目标，就是利用FastMCP，为AI创建几个专属的“工具”（Tool），让它能查询、筛选和分析日志。简单来说，MCP让你的AI从“只能聊天”的顾问，进化成能“动手干活”的超级助手。]]></description><category></category></item><item><title><![CDATA[langchain-chroma调用时出现kernel crashed]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/159603456</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/159603456</guid><author>Zhencode</author><pubDate>Sun, 29 Mar 2026 10:53:00 +0800</pubDate><description><![CDATA[摘要：本文记录了使用Jupyter调用langchain-chroma进行文档向量存储时遇到的Kernel崩溃问题。通过排查发现是由于缺少Visual C++ Redistributable依赖导致onnxruntime无法运行，安装对应组件后问题解决。文章详细描述了问题现象、排查过程（包括检查文件生成、测试不同参数配置）以及最终解决方案，并提供了官方参考文档链接。该案例说明当编译器直接崩溃时，应优先检查系统级依赖是否完整，而非单纯怀疑代码或环境配置问题。]]></description><category></category></item><item><title><![CDATA[Vue3虚拟DOM创建器之h函数]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/158879004</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/158879004</guid><author>Zhencode</author><pubDate>Tue, 10 Mar 2026 16:29:56 +0800</pubDate><description><![CDATA[在 Vue 3 的响应式系统中，h 函数（hyperscript）是连接逻辑与视图的关键桥梁。它用于创建 VNode（虚拟 DOM 节点），是编写 render 函数时最常用的工具之一]]></description><category></category></item><item><title><![CDATA[Vue核心运行时runtime-core之组件挂载流程]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/158349185</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/158349185</guid><author>Zhencode</author><pubDate>Tue, 24 Feb 2026 15:56:37 +0800</pubDate><description><![CDATA[本文梳理了Vue3组件挂载的核心流程：从createApp调用render(vnode, container)开始，经过patch判断组件类型后执行mountComponent。重点介绍了组件实例的创建过程，包括setupStatefulComponent处理状态组件、执行setup函数并处理返回值，以及通过finishComponentSetup最终确定render函数来源（setup返回函数或模板编译）。整个过程展示了Vue3组件从初始化到可渲染的完整链路，为理解后续响应式更新机制奠定了基础。文章采用代]]></description><category></category></item><item><title><![CDATA[Vue3核心运行时之runtime-core]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/158153945</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/158153945</guid><author>Zhencode</author><pubDate>Tue, 17 Feb 2026 17:36:42 +0800</pubDate><description><![CDATA[本文分析了Vue3运行时核心@vue/runtime-core的实现机制。主要内容包括：1) runtime-core作为平台无关的VNode调度器和组件生命周期管理器的作用；2) 从createApp到render的初始化流程，包括创建渲染器、应用实例和首次渲染；3) patch函数实现虚拟DOM的挂载和更新；4) 元素节点和组件的处理过程；5) 组件自动更新的简化实现，通过setupRenderEffect建立响应式更新机制。runtime-core通过调用runtime-dom提供的接口操作DOM，管]]></description><category></category></item><item><title><![CDATA[vue3运行时核心模块之runtime-dom]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/158098477</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/158098477</guid><author>Zhencode</author><pubDate>Sun, 15 Feb 2026 12:33:02 +0800</pubDate><description><![CDATA[摘要： runtime-dom是Vue 3的核心运行时包，作为Vue的DOM操作适配层，提供浏览器环境下的DOM节点操作、事件绑定、属性更新等具体实现。它使Vue保持平台无关性，可适配浏览器、SSR、Native等不同环境。核心功能包括：1）nodeOps对象封装基础DOM操作方法（插入/移除节点、创建元素/文本节点等）；2）patchProp处理属性更新，包含class/style/事件等特殊逻辑。通过平台相关实现与核心逻辑解耦，runtime-dom确保Vue在不同环境下高效运行。（149字）]]></description><category></category></item><item><title><![CDATA[深入Vue3响应式核心：computed 的实现原理与应用]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/158068169</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/158068169</guid><author>Zhencode</author><pubDate>Sat, 14 Feb 2026 12:01:32 +0800</pubDate><description><![CDATA[本文深入解析了Vue3中computed属性的实现原理。通过简化源码分析，揭示了computed如何通过&quot;依赖收集→脏标记→触发更新&quot;的机制实现响应式更新。重点剖析了computed的缓存机制(_dirty标志)和惰性求值特性，对比了计算属性与普通方法的区别。文章指出computed体现了Vue响应式系统的三大核心：精准依赖追踪、惰性与缓存、分层解耦，是响应式编程思想的完美实践。通过实例代码演示了computed的两种使用方式及其内部运作流程。]]></description><category></category></item><item><title><![CDATA[Vue3响应式原理之ref篇]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/157992668</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/157992668</guid><author>Zhencode</author><pubDate>Thu, 12 Feb 2026 09:19:00 +0800</pubDate><description><![CDATA[本文深入剖析Vue3中ref与reactive的核心区别及使用场景。ref适用于基本类型和对象，通过.value访问；reactive仅用于对象/数组，直接属性访问。ref对象会自动转为reactive，而reactive性能略优。文章通过源码分析RefImpl类实现机制，对比两者在模板解包、嵌套响应式等差异，并给出推荐使用场景：基本类型用ref，复杂对象用reactive。同时指出常见误区，如effect内创建ref会丢失响应式。掌握两者差异有助于编写高效可维护的Vue3应用。]]></description><category></category></item><item><title><![CDATA[Vue3 响应式依赖收集与更新之effect]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/157874759</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/157874759</guid><author>Zhencode</author><pubDate>Sun, 08 Feb 2026 20:23:00 +0800</pubDate><description><![CDATA[本文深入解析了Vue3响应式系统中effect的实现原理，重点介绍了依赖收集(track)和触发更新(trigger)的机制。通过ReactiveEffect类封装effect函数，利用Proxy代理实现响应式数据追踪，当访问响应式属性时自动收集依赖，数据变更时触发对应effect重新执行。文章详细剖析了createGetter/setter、track/trigger等核心函数的实现逻辑，并通过具体案例演示了响应式更新的完整流程。这种基于Proxy的响应式系统相比Vue2的Object.definePro]]></description><category></category></item><item><title><![CDATA[Vue3 响应式之reactive：深入理解 Proxy代理]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/157815168</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/157815168</guid><author>Zhencode</author><pubDate>Sat, 07 Feb 2026 00:40:26 +0800</pubDate><description><![CDATA[Vue3 使用 Proxy 实现响应式系统时，通过懒递归代理优化嵌套对象的处理。相比 Vue2 的递归代理方案，Vue3 只在属性被访问时才将其转为响应式，避免了初始化时深度遍历的性能损耗。核心实现包括：1) 使用 WeakMap 缓存已代理对象防止重复代理；2) 在 get 拦截器中对返回的对象值再次调用 reactive；3) 仅当属性被访问时才进行代理转换。这种方案显著提升了性能，特别是处理大型嵌套对象时，同时通过 WeakMap 自动管理内存，防止内存泄漏。]]></description><category></category></item><item><title><![CDATA[TypeScript工具类型之omit]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/157263902</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/157263902</guid><author>Zhencode</author><pubDate>Fri, 23 Jan 2026 00:24:19 +0800</pubDate><description><![CDATA[TypeScript 的 Omit 工具类型用于从对象类型中剔除指定属性。其核心实现基于 Pick 和 Exclude：先通过 Exclude 过滤掉目标键，再用 Pick 保留剩余属性。例如 Omit&lt;User, 'password'&gt; 会移除敏感字段。Omit 还可通过映射类型自定义实现，如 MyOmit&lt;T,K&gt;。理解 Omit 的工作原理有助于开发者更灵活地进行类型操作，并构建更复杂的工具类型。该类型在隐藏敏感数据、创建部分类型等场景中非常实用。]]></description><category></category></item><item><title><![CDATA[JavaScript内存回收机制]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/154264138</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/154264138</guid><author>Zhencode</author><pubDate>Sun, 02 Nov 2025 01:05:36 +0800</pubDate><description><![CDATA[摘要：本文介绍了JavaScript的内存回收机制，包括内存溢出的常见问题及自动垃圾回收机制的工作原理。JS采用分代回收策略，将内存分为新生代（频繁回收的小数据）和老生代（大数据）。新生代通过空间复制实现回收，老生代则采用标记清除与内存整理。虽然引擎自动管理内存，开发者仍需注意及时释放不再使用的数据（如定时器、闭包等），避免内存泄漏。了解垃圾回收机制对编写高性能代码具有重要意义。]]></description><category></category></item><item><title><![CDATA[vue之异步更新队列]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/153976800</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/153976800</guid><author>Zhencode</author><pubDate>Mon, 27 Oct 2025 18:46:40 +0800</pubDate><description><![CDATA[Vue的异步更新队列通过将Watcher对象缓存并去重，在微任务阶段批量更新视图，优化性能。利用Promise微任务机制确保及时更新，同时避免重复操作。数据变更不会立即触发视图更新，需通过nextTick访问最新DOM。这种基于EventLoop的机制减少了DOM操作，在保证响应式的同时提升了渲染效率。]]></description><category></category></item><item><title><![CDATA[CSS变量的应用]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/152746258</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/152746258</guid><author>Zhencode</author><pubDate>Thu, 09 Oct 2025 00:10:36 +0800</pubDate><description><![CDATA[CSS变量（Custom Properties）是以--开头的自定义属性，通过var()函数调用，具有继承性和局部作用域特性。在:root定义可实现全局使用，支持动态修改实现实时样式更新，常用于主题切换等场景。其优势在于提升代码可维护性，但需注意浏览器兼容性问题（不支持IE）。结合JavaScript可动态控制变量值，为前端开发提供更灵活的样式管理方案。]]></description><category></category></item><item><title><![CDATA[win10本地部署和运行Ollama加载大模型]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/151825509</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/151825509</guid><author>Zhencode</author><pubDate>Thu, 18 Sep 2025 18:09:58 +0800</pubDate><description><![CDATA[这篇博客详细介绍了如何在本地部署和运行开源工具 **Ollama**，以便在个人设备上轻松使用大型语言模型（LLM）。文章首先阐述了 Ollama 的优势，如操作简单、跨平台支持、丰富的模型库和硬件加速能力。接着，介绍了在Windows 系统上的安装方法，并演示了如何通过 `ollama run deepseek` 等命令下载模型并进行交互对话。]]></description><category></category></item><item><title><![CDATA[基于qiankun的微前端架构实践]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/151374180</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/151374180</guid><author>Zhencode</author><pubDate>Wed, 10 Sep 2025 10:12:36 +0800</pubDate><description><![CDATA[本文分享了基于qiankun的微前端实践方案，通过React主应用集成Vue/React子应用，实现多技术栈协同开发。主应用负责整体布局和子应用管理，使用qiankun的registerMicroApps注册子应用，并通过全局状态管理实现主-子应用通信。子应用需导出bootstrap、mount、unmount生命周期函数，并配置webpack为UMD格式输出。该架构支持独立开发和部署，同时保持用户体验一致性，有效解决了大型前端应用的模块化拆分与整合问题。]]></description><category></category></item><item><title><![CDATA[JavaScript中的Map与Object详解]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/151353199</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/151353199</guid><author>Zhencode</author><pubDate>Tue, 09 Sep 2025 10:03:23 +0800</pubDate><description><![CDATA[摘要： JavaScript中的Map和Object均可存储键值对，但存在关键差异： 键类型：Object仅支持字符串/Symbol键，Map支持任意类型（包括对象）。 性能：Map在频繁增删时更高效，Object适合静态数据。 功能：Map直接提供.size和顺序迭代，Object需手动处理。 场景选择： Object：简单配置、JSON序列化、点语法访问。 Map：动态键、复杂键类型、高频操作或需顺序遍历。 示例：Map适合缓存机制，Object适合结构化用户数据。根据需求灵活选择可优化代码性能与可维护]]></description><category></category></item><item><title><![CDATA[前端模块化加载器：SystemJS]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/150263795</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/150263795</guid><author>Zhencode</author><pubDate>Tue, 12 Aug 2025 10:08:45 +0800</pubDate><description><![CDATA[SystemJS是一个动态通用模块加载器，最初作为ES6模块加载器的垫片出现，现已发展为支持AMD、CommonJS、ES6等多种模块格式的运行时加载系统。它的核心功能包括模块格式兼容、动态加载、运行时配置和插件扩展，特别适合微前端架构和遗留系统迁移。虽然现代构建工具和浏览器原生ESM支持减少了其必要性，SystemJS在实现代码分割、动态加载等特定场景中仍有独特优势，如灵活处理混合技术栈、按需加载模块等。不过其运行时解析带来的性能开销和配置复杂性也限制了在现代项目中的广泛应用。]]></description><category></category></item><item><title><![CDATA[Vue3 Diff 算法片段解析：新旧节点队列之乱序比对与更新策略]]></title><link>https://blog.youkuaiyun.com/Zhencode/article/details/149312961</link><guid>https://blog.youkuaiyun.com/Zhencode/article/details/149312961</guid><author>Zhencode</author><pubDate>Sun, 13 Jul 2025 18:11:10 +0800</pubDate><description><![CDATA[Vue 3 的 Diff 算法通过双端比较和映射优化提升了虚拟 DOM 更新效率。文章通过 [c d e] 变为 [e c d h] 的示例，演示了算法核心步骤：1) 建立新节点 key 映射表；2) 标记新旧节点对应关系；3) 倒序处理节点移动和新增。关键优化包括双指针缩小比对范围、Map 加速查找、倒序处理确保稳定性，以及精确区分节点操作类型。该算法有效减少了不必要的 DOM 操作，显著提升了渲染性能。]]></description><category></category></item></channel></rss>