<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Christopher的博客]]></title><description><![CDATA[a hobbyist but want to be a professional]]></description><link>https://blog.youkuaiyun.com/EasonMu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; EasonMu]]></copyright><item><title><![CDATA[传统深度学习架构和Transformer结构的区别]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/147373146</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/147373146</guid><author>EasonMu</author><pubDate>Sun, 20 Apr 2025 18:11:43 +0800</pubDate><description><![CDATA[优先传统架构：数据量小、硬件资源有限、任务依赖局部特征（如图像分类）。
优先Transformer：长序列建模、全局依赖关键、数据充足（如机器翻译、文档理解）。
混合方案：结合两者优势（如ConvNeXt：用CNN结构模拟Transformer效果）。]]></description><category></category></item><item><title><![CDATA[前端er在Cursor使用MCP实现精选照片的快速上手教程]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/146781381</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/146781381</guid><author>EasonMu</author><pubDate>Mon, 31 Mar 2025 15:24:17 +0800</pubDate><description><![CDATA[作为一个对LLM感兴趣的前端er，本文将阐述如何在Cursor使用MCP Server（MCP服务器），实现精选本地照片的功能，通过实际的示例和操作去理解MCP这一概念。]]></description><category></category></item><item><title><![CDATA[低代码表单配置平台替代普通表单配置平台，前端部分重构的设计和思路]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/140084588</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/140084588</guid><author>EasonMu</author><pubDate>Sun, 30 Jun 2024 19:00:50 +0800</pubDate><description><![CDATA[最近将公司的旧表单配置平台重构为低代码表单配置平台，这里记录一下这个过程的设计和思路，不涉及具体的代码；另外这篇文章基本只涉及前端部分，也不涉及与后端数据交互部分。
思路：组件层面，抽象层面，物料区，渲染区，设置区
关键点：原子组件库，schema，物料区，渲染区，设置区
实现细节：原子组件库，schema，拖拽库，物料区，渲染区的状态，渲染区的交互逻辑，设置区，保存]]></description><category></category></item><item><title><![CDATA[前端项目使用import()传入路径变量不能动态导入模块的问题]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/128698582</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/128698582</guid><author>EasonMu</author><pubDate>Sun, 15 Jan 2023 22:21:03 +0800</pubDate><description><![CDATA[前端项目使用import()传入路径变量不能动态导入模块的问题]]></description><category></category></item><item><title><![CDATA[node静态服务器]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/128698499</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/128698499</guid><author>EasonMu</author><pubDate>Sun, 15 Jan 2023 22:08:21 +0800</pubDate><description><![CDATA[node静态服务器]]></description><category></category></item><item><title><![CDATA[＜script＞标签，async和defer属性]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/123462315</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/123462315</guid><author>EasonMu</author><pubDate>Sun, 13 Mar 2022 17:10:03 +0800</pubDate><description><![CDATA[&lt;script&gt;标签用于引入js脚本文件，默认为同步加载和按顺序执行，会阻塞HTML解析，async和defer可以优化&lt;script&gt;的加载和执行行为

参考文章：
图解 script 标签中的 async 和 defer 属性
Script标签加载与执行时机小结
为什么link放在头部，script放在尾部？
MDN文档：&lt;script&gt;
MDN文档：async 和 defer

...]]></description><category></category></item><item><title><![CDATA[一种简化版MVVM的实现]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/123203339</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/123203339</guid><author>EasonMu</author><pubDate>Tue, 01 Mar 2022 13:12:29 +0800</pubDate><description><![CDATA[目录代码功能流程图源代码index.htmlMVVM.JScompile.jsobserver.jswatcher.js
代码功能流程图

源代码
index.html
&lt;html&gt;
  &lt;head&gt;
    &lt;meta charset="UTF-8" /&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;div id="app"&gt;
      &lt;!-- 双向数据绑定 靠的是表单 --&gt;
      &lt;input ty]]></description><category></category></item><item><title><![CDATA[简单版react原理分析（虚拟dom，节点渲染，数据更新，diff算法等）]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/123140403</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/123140403</guid><author>EasonMu</author><pubDate>Sun, 27 Feb 2022 01:15:51 +0800</pubDate><description><![CDATA[0.前言
本文将结合简化版本的react代码，对react的核心工作流程和原理进行梳理和讲解，本文重点会顺着react的执行流程机制进行原理性的描述，整个简化版的react代码量不多，可以参照代码结合讲解，效果更佳，代码戳这里
1. React
React为一个对象，拥有render、createElement和createClass方法
1.1. React.render
传入虚拟dom及根节点进行挂载渲染
参数：
React.render(element, container)

element是Rea]]></description><category></category></item><item><title><![CDATA[图文理清HTTPS及SSL/TLS加解密核心运行机制，看不懂退钱]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/123006207</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/123006207</guid><author>EasonMu</author><pubDate>Sun, 20 Feb 2022 19:25:38 +0800</pubDate><description><![CDATA[0. HTTPS
HTTPS是基于HTTP+TCP/IP，使用SSL/TLS来加密数据包的协议。关于通信模型分层及协议的关系可见上一篇文章，这里不再做阐述。
0.1. HTTPS解决了什么问题
众所周知，HTTPS是安全的 的HTTP，与HTTP相比，HTTPS提供了一下三个安全特性：

加密(Encryption)：通过可靠的数据加密使数据在传输过程中避免被窃听
数据一致性(Data integrity)：即数据的完整性，避免数据被篡改
身份认证(Authentication)：确认对方的身份，避免中间人]]></description><category></category></item><item><title><![CDATA[一张图理清TCP/IP参考模型、OSI模型及HTTP/HTTPS的对应关系]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/122970044</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/122970044</guid><author>EasonMu</author><pubDate>Wed, 16 Feb 2022 23:42:32 +0800</pubDate><description><![CDATA[本文不涉及具体概念定义的解析，旨在理清不同模型分层及HTTP协议的对应关系，具体概念解析可参考文章末尾的参考链接
1. 前言
网络通信模型
网络通信模型一般有TCP/IP参考模型及OSI模型分层模型，TCP/IP参考模型有四层，而OSI模型有七层，TCP/IP参考模型和OSI模型大致上可以互相覆盖，但又不是完全重叠
HTTP/HTTPS
狭义的HTTP指定义于应用层的超文本传输协议，而广义的HTTP指应用层HTTP协议配合TCP/IP协议完成客户端和服务端之间通信的应答标准
HTTPS不是单独的应用层协议，]]></description><category></category></item><item><title><![CDATA[当我们在讨论设备像素比（device pixel ratio，dpr）的时候我们在讨论什么？]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/122714738</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/122714738</guid><author>EasonMu</author><pubDate>Sun, 30 Jan 2022 12:28:50 +0800</pubDate><description><![CDATA[0. 为什么要写这篇文章？
最近在查阅了一些移动端适配的文章和资料，对大多数的概念和论述没发现有疑惑的地方，唯独对设备像素比（device pixel ratio，dpr）有些不解，而设备像素比在理解移动端概念以及适配都有重要作用，所以做了更多的资料查阅和理解，这期间花了一些时间，也希望有不同意见的同学可以交流一下
ps：这篇文章不是移动端适配入门文章，不对大多数基础概念进行解释，例如像素，viewport，meta标签和主流适配方案等，如果还没了解基础概念，建议读一下相关文章再来看（也可以先阅读我下面列出]]></description><category></category></item><item><title><![CDATA[git常用命令]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/122596932</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/122596932</guid><author>EasonMu</author><pubDate>Thu, 20 Jan 2022 23:01:47 +0800</pubDate><description><![CDATA[git命令说明



.``
.


git init
创建版本库


git add &lt;file&gt;
添加文件到缓存区


git commit -m &lt;message&gt;
提交文件到仓库


git status
查看仓库状态


git diff &lt;file&gt;
查看文件差异


git log
显示提交日志，不能显示回退的commit，如有需要使用git reflog


git log --pretty=oneline
按行格式化日志输出


git log -...]]></description><category></category></item><item><title><![CDATA[vue3 vs vue2 / Vue Router 4.x vs 3.x / Vuex 4.x vs 3.x 主要不同点对比]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/122318929</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/122318929</guid><author>EasonMu</author><pubDate>Mon, 10 Jan 2022 22:25:31 +0800</pubDate><description><![CDATA[不同点
vue3
vue2




.
.
.


实例创建
Vue.createApp
new Vue


el选项
无，需调用$.mount()挂载
有，在option可选


emits选项
有，触发自定义事件需定义(可选)
无


? 多事件处理器
支持
不支持


v-model语法糖
原生标签：:value，@input组件：:model-value，@update:model-value
原生标签：:value，@input 组件：:value，@input


全局组件
Vue.cr...]]></description><category></category></item><item><title><![CDATA[vue3 组合式API与响应性的概念理解和简析]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/122393676</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/122393676</guid><author>EasonMu</author><pubDate>Sun, 09 Jan 2022 18:32:08 +0800</pubDate><description><![CDATA[本文重点在概念的理解，而不在具体代码原理的实现
1. 组合式API简介
1.1. 组合式API是为了实现关注点抽离
1.1.1. 什么是关注点？
简单地可以这么理解，关注点就是代码业务逻辑，因为我们写代码的时候倾向于把特定的逻辑功能点聚合在一起，也就是我们倾向于“关注这些功能点”，因此关注点可以理解为特定的代码业务逻辑
1.1.2. 为什么需要关注点抽离？
关注点抽离也称为关注点分离，这里称为抽离是强调功能的抽取聚合而不与分散概念混淆。关注点抽离也就是特定的代码功能块逻辑的抽离，更有利于程序的开发，问题的定]]></description><category></category></item><item><title><![CDATA[vue组件component、属性prop及事件的命名和引用大小写规则（vue2 & vue3）]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/122331477</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/122331477</guid><author>EasonMu</author><pubDate>Wed, 05 Jan 2022 23:53:59 +0800</pubDate><description><![CDATA[vue2 和 vue3 下，组件和 prop的命名规则是相同的
组件命名规则
2.1. 当使用 kebab-case (短横线分隔，如Vue.component('my-component-name', { /* ... */ })) 定义一个组件时，你在引用这个自定义元素时也必须使用 kebab-case，则必须使用&lt;my-component-name&gt;引用组件
2.2. 当使用 PascalCase (首字母大写，如Vue.component('MyComponentName', { /*.]]></description><category></category></item><item><title><![CDATA[Webpack5 工作流程简析]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/122227890</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/122227890</guid><author>EasonMu</author><pubDate>Fri, 31 Dec 2021 20:23:26 +0800</pubDate><description><![CDATA[0. 执行流程
Compiler(webpack(option)返回Compiler实例) → ContextModuleFactory → NormalModuleFactory → Compilation(compiler.run/watch调用compiler.compile生成Compilation实例)
1. 理解compiler
compiler 基本上只是执行最低限度的功能，以维持生命周期运行的功能。 它将所有的加载、打包和写入工作， 都委托到注册过的插件上。Compiler对象包含了Webp]]></description><category></category></item><item><title><![CDATA[Webpack5 Tapable 简析]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/122212793</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/122212793</guid><author>EasonMu</author><pubDate>Wed, 29 Dec 2021 12:31:03 +0800</pubDate><description><![CDATA[Webpack Tapable
SyncHook/AsyncSeriesHook… →  Hook


基类
Hook为具体hook（SyncHook/AsyncSeriesHook…）的基类，提供基础方法，如tap/tapAsync/tapPromise（订阅钩子事件）、call/promise/callAsync（发布钩子订阅），call/promise/callAsync 指向 Hook.prototype.compile方法（执行tap订阅），该方法需子类重写，基类不提供



子类重写compil]]></description><category></category></item><item><title><![CDATA[TableFreeze.js（基于JQuery的表格冻结插件）]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/83352695</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/83352695</guid><author>EasonMu</author><pubDate>Wed, 24 Oct 2018 23:52:06 +0800</pubDate><description><![CDATA[TableFreeze.js（基于JQuery的表格冻结插件）

声明：该插件在原插件的基础上增加了冻结尾列的功能，由于此插件为github找不到开源地址，原始版本的插件作者及其修改信息如下：
** 名称:JQeury实现表格行列冻结
**
** 作者:YJJ
**
** 时间:2014年4月16日
**
** 修改人：Allen
**
** 修改时间:2017-06-10
**
** 修改记录:...]]></description><category></category></item><item><title><![CDATA[使用 Vue+智能合约 构建一款基于区块链的应用]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/83281211</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/83281211</guid><author>EasonMu</author><pubDate>Tue, 23 Oct 2018 01:04:16 +0800</pubDate><description><![CDATA[银色子弹（SilverBullet）

Vue2.x + Vuex + Vue-router + Nebulas + Nebpay + WebExtensionWallet +SmartContract


声明：该项目创意来自 https://aim400kg.com/ ，仅供学习交流使用，请勿用于其他商业用途。

项目地址

在线预览地址
Github地址

特性

前端使用vue + vue...]]></description><category></category></item><item><title><![CDATA[electron-vue打包web应用（electron-vue build:web）]]></title><link>https://blog.youkuaiyun.com/EasonMu/article/details/83240654</link><guid>https://blog.youkuaiyun.com/EasonMu/article/details/83240654</guid><author>EasonMu</author><pubDate>Sun, 21 Oct 2018 13:10:46 +0800</pubDate><description><![CDATA[本文的讨论以官方提供的demo为例
0.electron-vue的打包方式

npm run build
这种打包方式对应以electron-renderer为输出的开发环境（默认）
npm run build:web
这种打包方式对应以web为输出的开发环境（默需手工修改配置及部分文件）

1.npm run build
在命令终端运行此命令后，在build文件夹会生成应用可执行文件；在dist...]]></description><category></category></item></channel></rss>