<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Wind_waving的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Wind_waving</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Wind_waving]]></copyright><item><title><![CDATA[MVC、MVP和MVVM的区别]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/153270302</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/153270302</guid><author>Wind_waving</author><pubDate>Tue, 14 Oct 2025 18:28:36 +0800</pubDate><description><![CDATA[特性MVCMVPMVVMView 职责展示数据，监听 Model展示数据，转发用户输入展示，通过绑定自动更新中间层职责Controller：路由协调Presenter：展示逻辑ViewModel：视图状态管理数据流向双向（View↔Controller↔Model）单向（View→Presenter→Model→Presenter→View）双向自动绑定View 与 Model 关系View 知道 Model完全解耦通过 ViewModel 间接连接依赖方向。]]></description><category></category></item><item><title><![CDATA[react源码]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/152420525</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/152420525</guid><author>Wind_waving</author><pubDate>Sat, 04 Oct 2025 23:28:04 +0800</pubDate><description><![CDATA[2）在performConcurrentWorkOnRoot中根据root.callbackNode和当前任务是否一致判断是否有高优任务进入：如果有就取消当前任务并设置taskL.callback=null，回退到workLoop中，由于callback=null，所以取消taskL并重新获取taskqueue队首任务，也就是taskH，从而执行taskH的callback。task.callback设置为continuation。假设高优任务taskH，正在执行的低优任务taskL。]]></description><category></category></item><item><title><![CDATA[react状态管理]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/148280768</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/148280768</guid><author>Wind_waving</author><pubDate>Wed, 28 May 2025 11:38:55 +0800</pubDate><description><![CDATA[1. 所有的状态管理都利用了观察者模式2. 组件中修改外部数据：通过proxy的setter或者调用自定义set函数3. 数据变化响应到视图：set时forceUpdate，setState或者通过useSyncExternalStore自动响应。]]></description><category></category></item><item><title><![CDATA[依赖注入(DI)/控制反转(IoC) nodejs案例详解]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/148262121</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/148262121</guid><author>Wind_waving</author><pubDate>Tue, 27 May 2025 17:51:41 +0800</pubDate><description><![CDATA[文章摘要 本文介绍了TypeScript中的Reflect API和装饰器技术。首先讲解了Reflect API的核心方法如getMetadata、defineMetadata等，用于元数据操作。然后详细说明了四种装饰器：类装饰器（用于修改类行为）、方法装饰器（拦截方法调用）、属性装饰器（监听属性访问）和参数装饰器（验证参数类型）。最后阐述了依赖注入和控制反转的概念，通过MidwayJS示例展示了IoC容器如何自动管理依赖关系，实现解耦。这些技术在框架开发中应用广泛，能有效提升代码的可维护性和扩展性。]]></description><category></category></item><item><title><![CDATA[webpack构建速度和打包体积优化方案]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/148144807</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/148144807</guid><author>Wind_waving</author><pubDate>Thu, 22 May 2025 16:48:13 +0800</pubDate><description><![CDATA[生成 stats.json 文件。]]></description><category></category></item><item><title><![CDATA[webpack源码学习思维导图]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/147929845</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/147929845</guid><author>Wind_waving</author><pubDate>Tue, 13 May 2025 17:32:02 +0800</pubDate><description><![CDATA[webpack打包原理导图笔记]]></description><category></category></item><item><title><![CDATA[认识MCP]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/147500835</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/147500835</guid><author>Wind_waving</author><pubDate>Fri, 25 Apr 2025 10:15:52 +0800</pubDate><description><![CDATA[了解MCP基本架构：MPC和function calling的关系：]]></description><category></category></item><item><title><![CDATA[插件架构实践]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/147304884</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/147304884</guid><author>Wind_waving</author><pubDate>Thu, 17 Apr 2025 14:12:36 +0800</pubDate><description><![CDATA[微内核/插件架构设计应用实践]]></description><category></category></item><item><title><![CDATA[常见几种网络攻击防御方式]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/146530012</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/146530012</guid><author>Wind_waving</author><pubDate>Wed, 26 Mar 2025 15:42:20 +0800</pubDate><description><![CDATA[恶意脚本是通过 URL 参数或者表单提交直接传递给服务器的，并且立即在响应页面中反射返回给用户。，浏览器会执行恶意脚本，弹出警告框。恶意脚本被永久存储在目标服务器上（例如存在数据库中）。当用户请求包含这些脚本的数据时，脚本会在用户的浏览器中执行。]]></description><category></category></item><item><title><![CDATA[Express.js 搭建 HTTP/2 服务器]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/142761959</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/142761959</guid><author>Wind_waving</author><pubDate>Tue, 08 Oct 2024 15:54:15 +0800</pubDate><description><![CDATA[转载。]]></description><category></category></item><item><title><![CDATA[【无标题】]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/142638310</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/142638310</guid><author>Wind_waving</author><pubDate>Sun, 29 Sep 2024 16:34:23 +0800</pubDate><description><![CDATA[需要创建一个新的 builder 实例（如果不能翻墙，可以使用配置了镜像加速地址的 dockerpracticesig/buildkit:master 镜像替换官方镜像）● 创建LoadBalancer，但minikube并未支持创建负载均衡，由于loadbalancer是nodeport的扩展，所以会变成一个普通的nodePort服务。驱动意味着 buildx 将在独立的 Docker 容器中运行，支持多架构可移植性等特性，如果未指定，则使用默认的docker驱动。//端口要写，不然无法通过服务暴露。]]></description><category></category></item><item><title><![CDATA[用Promise实现前端并发请求]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/142594844</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/142594844</guid><author>Wind_waving</author><pubDate>Fri, 27 Sep 2024 15:59:35 +0800</pubDate><description><![CDATA[【代码】用Promise实现前端并发请求。]]></description><category></category></item><item><title><![CDATA[usecallback和usememo的误区]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/127947075</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/127947075</guid><author>Wind_waving</author><pubDate>Sun, 20 Nov 2022 11:37:29 +0800</pubDate><description><![CDATA[转载]]></description><category></category></item><item><title><![CDATA[win11安装CUDA+cuDNN+ tensorflow]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/127464866</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/127464866</guid><author>Wind_waving</author><pubDate>Sat, 22 Oct 2022 18:07:13 +0800</pubDate><description><![CDATA[可用的gpu版本tensorflow配置：python3.7.0+CUDA11.6.0+cuDNN8.4.0+tensorflow2.7.0+Keras2.7.0。然后安装tensorflow2.7版本之后（不需要单独安装gpu版本，因为已经包含了），重启电脑，再使用。GTX3060，CUDA driver版本11.7。]]></description><category></category></item><item><title><![CDATA[css实现可访问性隐藏的几种方式]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/124768524</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/124768524</guid><author>Wind_waving</author><pubDate>Sat, 14 May 2022 15:42:18 +0800</pubDate><description><![CDATA[可访问性隐藏：在页面上看不到，但是可以被其他辅助设备捕捉，如无障碍识别或者SEO等。
众所周知的隐藏方式有设置display、visibility为不可见，但是设置不可见同样会导致屏幕阅读器不可捕捉。因此这种方法并不推荐，以下为几种较好的方式：
一、利用clip+absolute（普遍适用）
clip属性生效的前提是position为absolute/fixed
实现方式：
    &lt;div style="width: 100px;height: 60px;"&gt;
        &lt;span]]></description><category></category></item><item><title><![CDATA[实现BFC的几种方法比较]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/124700036</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/124700036</guid><author>Wind_waving</author><pubDate>Tue, 10 May 2022 23:36:36 +0800</pubDate><description><![CDATA[触发BFC的方式

html根元素；
float的值不为none；
overflow的值为auto、scroll或hidden；
display的值为table-cell、table-caption和inline-block中的任何一个；
position的值不为relative和static。


BFC的特性之一是BFC内部的元素不受外界影响也不影响外界，基于BFC特性 可以实现多栏自适应布局，但是触发BFC的属性自身也有一些奇怪的特性，因此并不是所有的方式都适合自适应布局，以下针对overflow和.]]></description><category></category></item><item><title><![CDATA[移动网站适配]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/123782613</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/123782613</guid><author>Wind_waving</author><pubDate>Sun, 27 Mar 2022 22:06:02 +0800</pubDate><description><![CDATA[对于物理像素，设备独立像素，设备像素比，css像素，布局视口，可视视口,理想视口的概念了解参考
我对移动端适配的了解
移动WEB开发之-流式布局
关于移动端适配，你必需要知道的
各种视口和js中API的对应关系为：


屏幕分辨率：screen.width
布局视口：document.documentElement.clientWidth
视觉视口：window.innerWidth
理想视口：screen.width
设备像素比：window.devicePixelRatio
屏幕方向：window.or]]></description><category></category></item><item><title><![CDATA[正则表达式]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/123777675</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/123777675</guid><author>Wind_waving</author><pubDate>Sun, 27 Mar 2022 17:46:06 +0800</pubDate><description><![CDATA[转载自一看就懂：正则表达式
关于^符号的作用，如果在[]中，^表示取反，否则表示以此开头

]]></description><category></category></item><item><title><![CDATA[margin总结]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/123768370</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/123768370</guid><author>Wind_waving</author><pubDate>Sun, 27 Mar 2022 17:09:41 +0800</pubDate><description><![CDATA[参考张鑫旭——《CSS世界》
margin不具有兼容性问题，也就是在各个浏览器下表现一致

有滚动条的容器最好使用子元素的margin-bottom取代padding添加底部留白，因为IE和旧版Firefox浏览器是超过padding box触发滚动条，因此其padding-bottom值会在滚动的情况下被忽略。

margin实现等高布局（margin负值应用）

满足的场景：auto高度的容器内部具有多个水平排列的分栏，且各个分栏的高度始终和容器一致

先看效果：

代码：
//html
	&lt;di]]></description><category></category></item><item><title><![CDATA[padding+background-clip绘制图形]]></title><link>https://blog.youkuaiyun.com/Wind_waving/article/details/123752432</link><guid>https://blog.youkuaiyun.com/Wind_waving/article/details/123752432</guid><author>Wind_waving</author><pubDate>Sat, 26 Mar 2022 11:10:33 +0800</pubDate><description><![CDATA[参考《CSS世界》——张鑫旭
background-clip属性用于描述背景绘制的区域，默认为border-box，还可以取值content-box，padding-box
效果一：移动端经常使用的折叠菜单图标


分析：上下两条使用border-top/bottom实现，中间条利用黑色绘制背景部分。想要背景和border中间有间隙，设置上下padding。默认背景绘制包含padding和border，使用background-clip属性修改背景绘制区域

代码：
.menu{
            w]]></description><category></category></item></channel></rss>