<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fyw1789的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fyw1789</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fyw1789]]></copyright><item><title><![CDATA[uniapp app端首次权限申请拒绝后 后续在申请]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/155860533</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/155860533</guid><author>fyw1789</author><pubDate>Fri, 12 Dec 2025 17:28:20 +0800</pubDate><description><![CDATA[【代码】uniapp app端首次权限申请拒绝后 后续在申请。]]></description><category></category></item><item><title><![CDATA[前端配置 Nginx 地址代理及接口代理]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/155859829</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/155859829</guid><author>fyw1789</author><pubDate>Fri, 12 Dec 2025 17:01:10 +0800</pubDate><description><![CDATA[本文介绍了Nginx的配置方法，主要包括：1) 设置监听端口8093和服务器地址；2) 配置前端项目目录和入口文件；3) 设置API代理(/hdt前缀)到后端服务，包含超时设置和跨域处理；4) 静态资源缓存配置(7天有效期)；5) index.html禁用缓存；6) 支持前端history路由模式。配置中还包含了OPTIONS请求处理和访问控制等细节。]]></description><category></category></item><item><title><![CDATA[解决canvas绘图模糊问题]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/143948608</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/143948608</guid><author>fyw1789</author><pubDate>Thu, 21 Nov 2024 16:18:09 +0800</pubDate><description><![CDATA[attribute 中的 width 和 height 则代表 Canvas 实际像素的宽高(物理像素(DP))style中的width和height是canvas元素在界面上占据的宽高 即 设备独立像素(DIP)原理: 让 Canvas 像素和屏幕物理像素一一对应。canvas 绘制的是物理像素就是屏幕的分辨率。设备独立像素(DIP)设备像素比(DPR)]]></description><category></category></item><item><title><![CDATA[nodejs实现一个简单的i18n]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/143855603</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/143855603</guid><author>fyw1789</author><pubDate>Mon, 18 Nov 2024 14:08:02 +0800</pubDate><description><![CDATA[【代码】nodejs实现一个简单的i18n。]]></description><category></category></item><item><title><![CDATA[JS 设计模式之发布订阅模式]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/141886195</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/141886195</guid><author>fyw1789</author><pubDate>Wed, 04 Sep 2024 10:21:14 +0800</pubDate><description><![CDATA[Publisher.js (发布者)Broker.js(中间层)]]></description><category></category></item><item><title><![CDATA[JS 设计模式之观察者模式]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/141885982</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/141885982</guid><author>fyw1789</author><pubDate>Wed, 04 Sep 2024 10:14:30 +0800</pubDate><description><![CDATA[【代码】JS 设计模式之观察者模式。]]></description><category></category></item><item><title><![CDATA[JS 设计模式之策略模式]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/141885745</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/141885745</guid><author>fyw1789</author><pubDate>Wed, 04 Sep 2024 10:05:21 +0800</pubDate><description><![CDATA[【代码】JS 设计模式之策略模式。]]></description><category></category></item><item><title><![CDATA[houdini api 定义css属性 解决渐变背景无法应用动画及变量在动画中不生效]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/140798108</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/140798108</guid><author>fyw1789</author><pubDate>Tue, 30 Jul 2024 15:28:21 +0800</pubDate><description><![CDATA[* 渐变背景本质上是浏览器绘制的一张图片 ,后面传递的是告诉浏览器的参数 ,在绘制期间开发者是无法干预的。/* houdini api 自定义css属性 */,但是css属性是可以参与绘制过程的 *//* 解决了变量在动画中不生效的问题 *//* 解决了渐变背景无法应用动画	 */]]></description><category></category></item><item><title><![CDATA[HTML保持元素宽高比的两种方式]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/140797214</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/140797214</guid><author>fyw1789</author><pubDate>Tue, 30 Jul 2024 15:01:52 +0800</pubDate><description><![CDATA[* left:0 right:0 top:0 bottom:0 的所有撑满父元素 *//* 因为没有高,所以正常的布局可能会出问题,子元素都要用绝对定位 *//* padding 四个方向百分比都是相对于父元素宽度的 *//* height: 为自身宽度的75%;/* 如果不想要绝对定位里面还要套一层 *//* 写保持的比例就行 *//* 有兼容性问题 */]]></description><category></category></item><item><title><![CDATA[XSS攻击与CSRF攻击]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/140700745</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/140700745</guid><author>fyw1789</author><pubDate>Thu, 25 Jul 2024 21:43:39 +0800</pubDate><description><![CDATA[XSS（Cross Site Scripting，跨站脚本攻击），是指攻击者利用站点的漏洞，在表单提交时，在表单内容中加入一些恶意脚本，当其他正常用户浏览页面，而页面中刚好出现攻击者的恶意脚本时，脚本被执行，从而使得页面遭到破坏，或者用户信息被窃取。]]></description><category></category></item><item><title><![CDATA[vue3响应式转换常用API]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/140700206</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/140700206</guid><author>fyw1789</author><pubDate>Thu, 25 Jul 2024 21:13:00 +0800</pubDate><description><![CDATA[这个 API 实际上是一个语法糖： val = isRef(val)?unRef: 如果参数给的是一个 ref 值，那么就返回内部的值，如果不是 ref，那么就返回参数本身。toRefs：将一个响应式对象转为一个普通对象，普通对象的每一个属性对应的是一个 ref 值。接收一个对象（不论是响应式的还是普通的）或者一个 ref，返回一个原来值的只读代理。toRef：基于响应式对象的某一个属性，将其转换为 ref 值。这个 API 和前面介绍的 unref 比较相似。]]></description><category></category></item><item><title><![CDATA[关于promise的一些例题(运行步骤详细说明)]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/140699856</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/140699856</guid><author>fyw1789</author><pubDate>Thu, 25 Jul 2024 21:08:20 +0800</pubDate><description><![CDATA[【代码】关于promise的一些例题(运行步骤详细说明)]]></description><category></category></item><item><title><![CDATA[vue3 响应式 Ref和Reactive 中的一些细节]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/140674134</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/140674134</guid><author>fyw1789</author><pubDate>Wed, 24 Jul 2024 21:50:24 +0800</pubDate><description><![CDATA[但是下面因为没有解包，意味着 object.id 仍然是一个对象，因此最终计算的结果为 [object Object]1。DOM的更新不是同步的*,这意味这当响应式数据发生改变之后,我们去获取DOM值,拿到的还是之前的DOM值。例如我们在模板中各自加 1 就会发现上面因为已经解包出来了，所以能够正常的进行表达式的计算。上面的例子，感觉非顶级的 Ref 好像也能够正常渲染出来，仿佛也是自动解包了的。在模板里面，只有顶级的 ref 才会自动解包。响应式数据的更新*(响应式数据更新是同步的)]]></description><category></category></item><item><title><![CDATA[vue面试题汇总之响应式理解]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/139633195</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/139633195</guid><author>fyw1789</author><pubDate>Wed, 12 Jun 2024 17:51:51 +0800</pubDate><description><![CDATA[vue在全局中写了一个用来运行函数的函数,有一个全局变量保存当前运行的是哪个函数,这样在getter的时候只要检查这个全局变量就知道是哪个函数在使用这个变量了,vue还建立了一个对映关系表当setter的时候把对映表中的函数重新运行一遍。vue2使用Object.defineProperty进行数据代理(getter和setter),vue3使用Proxy进行数据代理。会把函数放入异步队列,同一个渲染函数只会存在一个,这样就不会多次渲染造成效率问题。,当需要派发更新的时候不会立即运行函数,而是交给。]]></description><category></category></item><item><title><![CDATA[vue面试题汇总之什么是虚拟dom]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/139625735</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/139625735</guid><author>fyw1789</author><pubDate>Wed, 12 Jun 2024 14:25:48 +0800</pubDate><description><![CDATA[如果一个组件受响应式数据变化的影响，需要重新渲染时，它仍然会重新调用render函数，创建出一个新的虚拟dom树，用新树和旧树对比，通过对比，vue会找到最小更新量，然后更新必要的虚拟dom节点，最后，这些更新过的虚拟节点，会去修改它们对应的真实dom。在一个组件实例首次被渲染时，它先生成虚拟dom树，然后根据虚拟dom树创建真实dom，并把真实dom挂载到页面中合适的位置，此时，每个虚拟dom便会对应一个真实的dom。在渲染时，使用虚拟dom来替代真实dom，主要为解决渲染效率的问题。]]></description><category></category></item><item><title><![CDATA[javascript解构赋值详解]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/139478824</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/139478824</guid><author>fyw1789</author><pubDate>Wed, 05 Jun 2024 17:59:34 +0800</pubDate><description><![CDATA[【代码】javascript解构赋值详解。]]></description><category></category></item><item><title><![CDATA[计算机网络之crc循环冗余校验、子网划分、rip协议路由转发表、时延计算、香浓定理 奈氏准则、TCP超时重传 RTO]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/139453515</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/139453515</guid><author>fyw1789</author><pubDate>Tue, 04 Jun 2024 20:44:00 +0800</pubDate><description><![CDATA[crc循环冗余校验异或运算 : 相同得0,相异得1从多项式获取除数在原数据的末端补0 , 0的个数等于最高次项的阶数子网划分子网掩码：用于识别IP地址中的网络号和主机号的位数表示方式：32位二进制数字，在子网掩码中，对应于网络号部分用“1”表示，主机号部分用“0”表示。如IP地址1.1.1.1的子网掩码是255.0.0.0，表示这个地址的前8位是网络号网络后缀法表示子网掩码，即“/”，如138.96.0.1/18表示网络号18位，主机号14位STEP1STEP2确认子网掩码。]]></description><category></category></item><item><title><![CDATA[js知识点之正则表达式]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/139453377</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/139453377</guid><author>fyw1789</author><pubDate>Tue, 04 Jun 2024 20:34:19 +0800</pubDate><description><![CDATA[一个或一段规则之后，可以紧跟一个量词，表示前面的规则出现的次数。若多个规则是一个或者的关系，使用。直接书写一个普通字符。]]></description><category></category></item><item><title><![CDATA[js知识点之深浅拷贝]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/139452132</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/139452132</guid><author>fyw1789</author><pubDate>Tue, 04 Jun 2024 19:27:32 +0800</pubDate><description><![CDATA[首先，我们需要明确深拷贝和浅拷贝的概念。：只是拷贝了基本类型的数据，而引用类型数据，复制后也是会发生引用，我们把这种拷贝叫做浅拷贝(浅复制)。浅拷贝只复制指向某个对象的指针（引用地址），而不复制对象本身，新旧对象还是共享同一块内存。：在堆中重新分配内存，并且把源对象所有属性都进行新建拷贝，以保证深拷贝的对象的引用图不包含任何原有对象或对象图上的任何对象，拷贝后的对象与原来的对象是完全隔离，互不影响。]]></description><category></category></item><item><title><![CDATA[js知识点之函数柯里化]]></title><link>https://blog.youkuaiyun.com/fyw1789/article/details/139449256</link><guid>https://blog.youkuaiyun.com/fyw1789/article/details/139449256</guid><author>fyw1789</author><pubDate>Tue, 04 Jun 2024 17:28:14 +0800</pubDate><description><![CDATA[在计算机科学中，柯里化（英语：Currying），又译为卡瑞化或加里化，是把接受多个参数的函数变换成接受一个单一参数（最初函数的第一个参数）的函数，并且返回接受余下的参数而且返回结果的新函数的技术。这个技术由克里斯托弗·斯特雷奇以逻辑学家哈斯凯尔·加里命名的，尽管它是和戈特洛布·弗雷格发明的。在直觉上，柯里化声称如果你固定某些参数，你将得到接受余下参数的一个函数。我们姑且叫它返回函数，在调用返回函数的时候，它将判断当前的参数和之前被柯里化函数固定的参数拼起来之后，是否达到了原本函数的参数个数。]]></description><category></category></item></channel></rss>