<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dergfg的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dergfg</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dergfg]]></copyright><item><title><![CDATA[js单例设计模式]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/119907007</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/119907007</guid><author>dergfg</author><pubDate>Wed, 25 Aug 2021 11:16:24 +0800</pubDate><description><![CDATA[单例设计模式
保证一个类仅有一个实例，并提供一个访问它的全局访问点，这样的模式就叫做单例模式。
万变不离其踪，记住getInstance方法、记住instance变量、记住闭包和静态方法
class SingleDog {
    show() {
        console.log('我是一个单例对象')
    }
}

const s1 = new SingleDog()
const s2 = new SingleDog()

// false
s1 === s2

楼上我们先 new 了一个 s]]></description><category></category></item><item><title><![CDATA[react fiber]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/119324140</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/119324140</guid><author>dergfg</author><pubDate>Mon, 16 Aug 2021 10:56:58 +0800</pubDate><description><![CDATA[说白了，fiber的底层就是链表，时间切片，一帧渲染多少
React 16 架构
为了解决同步更新长时间占用线程导致页面卡顿的问题，也为了探索运行时优化的更多可能，React开始重构并一直持续至今。重构的目标是实现Concurrent Mode（并发模式）。
  从v15到v16，React团队花了两年时间将源码架构中的Stack Reconciler重构为Fiber Reconciler。
React16架构可以分为三层：
Scheduler（调度器）—— 调度任务的优先级，高优任务优先进入Reconci]]></description><category></category></item><item><title><![CDATA[umi-request下载数据流]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/118496581</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/118496581</guid><author>dergfg</author><pubDate>Tue, 20 Jul 2021 14:45:25 +0800</pubDate><description><![CDATA[/**
 * 获取数据流
 */
import React from 'react';
import { Button } from 'antd';
import 'antd/dist/antd.css';
import request from 'umi-request';

export default () =&gt; {
  function download() {
    request('/get-data-stream', {
      method: 'POST',
      // 重]]></description><category></category></item><item><title><![CDATA[node原生处理get post请求示例]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/115427413</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/115427413</guid><author>dergfg</author><pubDate>Sun, 04 Apr 2021 12:31:05 +0800</pubDate><description><![CDATA[保持对代码的热爱并保持怀疑态度
普通的服务端开启
const http=require("http");    //引入模块
const fs=require("fs")         //文件模块
// console.log(http);

http.createServer((req,res)=&gt;{     //创建node服务  ，req是从前端到后端  res从后端到前端
    if(req.url!=="/favicon.ico"){    //过滤图标
        fs.read]]></description><category></category></item><item><title><![CDATA[vue中keep-alive使用]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/115333438</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/115333438</guid><author>dergfg</author><pubDate>Tue, 30 Mar 2021 19:23:45 +0800</pubDate><description><![CDATA[keep-alive的概念
keep-alive是vue内置的一个组件，而这个组件的作用就是能够缓存不活动的组件，组件进行切换的时候，默认会进行销毁，如果有需求，某个组件切换后不进行销毁，而是保存之前的状态，那么就可以利用keep-alive来实现
路由中的设置
这里用到了路由的原数据
在router里面
加一个属性
meta:{
keep：true
}
使用
在app.vue中
用keep-alive包裹要缓存的数据
v-if判断是否要渲染
通过$route.meta.keep来取值


...]]></description><category></category></item><item><title><![CDATA[express下后台接口req.files显示undefined的自检方式]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/114332791</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/114332791</guid><author>dergfg</author><pubDate>Wed, 03 Mar 2021 20:19:00 +0800</pubDate><description><![CDATA[是否引入了multer插件
在package.json里查看

需要提交的表单的form里是否增加了enctype="multipart/form-data属性
在app.js中是否引入，并通过use注册
const multer = require(“multer”); //读取上传文件
const upload = multer({ dest: ‘./public/uploads’ });  //设置存储路径，没有文件夹会自动创建
app.use(upload.any());  通过这个注册

...]]></description><category></category></item><item><title><![CDATA[mongoDB和sql数据库的区别]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/114080640</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/114080640</guid><author>dergfg</author><pubDate>Thu, 25 Feb 2021 14:22:50 +0800</pubDate><description><![CDATA[保持对代码的热爱并保持怀疑态度
mongodb和sql的区别
MongoDB 是一个基于分布式文件存储的数据库。
由 C++ 语言编写，是一个开源数据库系统。
旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品，是非关系数据库当中功能最丰富，最像关系数据库的。
MongoDB 将数据存储为一个文档，数据结构由键值(key=&gt;value)对组成。
MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档，数组及文档数组。
在高]]></description><category></category></item><item><title><![CDATA[css的四种定位方式的概念记]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/113815595</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/113815595</guid><author>dergfg</author><pubDate>Mon, 15 Feb 2021 14:02:47 +0800</pubDate><description><![CDATA[保持对代码的热爱并保持怀疑态度
定位的几种方式
定位的属性是position ，默认值:static 为没有定位
定位有4种：
绝对定位  absolute
相对行为 relative
固定定位
粘性定位
.层级关系  z-index（可设置负值，值必须是整数）
设置定位的定位元素，可以触发5个属性
4个是移动的方向   left,right,top,bottom
1个是层级关系     z-index（可以设置负值，值必须是整数）

普通元素的层级比定位元素的层级低
后设置定位属性比先设置的定位属性的层级]]></description><category></category></item><item><title><![CDATA[js ES6之async和await理解及使用]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/113814616</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/113814616</guid><author>dergfg</author><pubDate>Mon, 15 Feb 2021 12:29:21 +0800</pubDate><description><![CDATA[保持对代码的热爱并保持怀疑态度
async(/əˈsɪŋk/),await的概念
async和await是用来处理异步的。当你需要异步像同步一样执行，需要异步返回结果之后，再往下依据结果继续执行。
async 是“异步”的简写，而 await 可以认为是 async wait 的简写。
async 用于申明一个 function 是异步的，而 await 用于等待一个异步方法执行完成。
async的写法（a沈克）此乃中文歪读
直接声明,表示这个函数是异步的。
async function(){
}

然后里]]></description><category></category></item><item><title><![CDATA[js堆伐理解及深浅拷贝]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/113807966</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/113807966</guid><author>dergfg</author><pubDate>Sun, 14 Feb 2021 15:26:59 +0800</pubDate><description><![CDATA[保持对代码的热爱并保持怀疑态度
什么是栈堆，及其区别

栈：用来保存变量的名称或地址，稳定，不可更改，空间小
堆：用来保存数据或值，空间大，可被修改
关系：一对一，多对一，不能一对多

什么是值传递，什么是引用传递


（基本数据）值传递：内有地址和值之分，值就是地址，地址就是值
– 字符，数据，布尔，undefind


（复杂数据）引用传递：有地址和值，地址是地址，存在栈中，值是值，存在堆中，被栈中的地址指向
– 对象


深浅拷贝的区别，如何实现深拷贝

浅拷贝：只拷贝地址
深拷贝：拷贝值
实现深拷贝]]></description><category></category></item><item><title><![CDATA[js异步，同步及宏任务和微任务理解]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/113807607</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/113807607</guid><author>dergfg</author><pubDate>Sun, 14 Feb 2021 14:26:30 +0800</pubDate><description><![CDATA[保持对代码的热爱并保持怀疑态度
异步同步概念

异步：多个程序同时执行
同步：每个程序不同时执行
程序：功能
进程：一个功能的开始执行到执行结束的过程
线程：一个功能在执行过程中的每一个分支，多线程异步执行，线程越多执行速度越快，但需要消耗大量性能

同步现象
就比如这个 看实例：
    alert(1);
    alert(2);
    alert(3);
    alert(4);
    alert(5)

alert弹出会阻塞程序执行，当你不点击确认的时候，他便不会执行后面的代码，当你点击后才]]></description><category></category></item><item><title><![CDATA[js闭包原理及使用]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/113807001</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/113807001</guid><author>dergfg</author><pubDate>Sun, 14 Feb 2021 13:24:35 +0800</pubDate><description><![CDATA[保持对代码的热爱并保持怀疑态度
昨天写了一篇js防抖和节流的理解用到了闭包，刚刚好我也忘的差不多了，只知道闭包长什么，原理什么的早就忘到九霄云外了，所以准备重新梳理了一下闭包。
闭包的概念及原理
闭包是指有权访问另外一个函数作用域中的变量的函数。
也可以这么说，这样可能更能理解，也就是闭包的原理：
通过作用域的嵌套，触发计算机的垃圾回收机制（硬盘），将原本的局部变量进化成私有变量的环境，叫闭包
计算机的垃圾回收机制


硬盘：需要删除的数据，不直接删除，而是再是保存在一个临时区域，如果需要继续使用，可以从临]]></description><category></category></item><item><title><![CDATA[js this绑定方式和改变this指向，及call，apply，bind区别]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/113801528</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/113801528</guid><author>dergfg</author><pubDate>Sat, 13 Feb 2021 16:18:22 +0800</pubDate><description><![CDATA[保持对代码的热爱并保持怀疑态度
文中fn皆表示函数的意思   function（）{}
this指向


默认绑定：没有明确隶属对象的函数直接执行，window


事件绑定：事件处理函数中的this，事件源


隐式绑定：对象的方法中的this，对象


显示绑定：使用函数的call或apply或bind改变this，函数方法的第一个参数


new绑定：new关键字执行函数，new出来的对象
this是一个关键字，一般存在于函数中，表示所在函数的执行对象
this不是所在的函数，是所在函数的执行对象
t]]></description><category></category></item><item><title><![CDATA[js防抖和节流理解及区别]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/113801064</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/113801064</guid><author>dergfg</author><pubDate>Sat, 13 Feb 2021 15:32:35 +0800</pubDate><description><![CDATA[保持对代码的热爱，并保存怀疑态度
在说防抖和节流之前我们先说一下闭包
什么是闭包？
通过作用域的嵌套，触发计算机的垃圾回收机制（硬盘），将原本的局部变量进化成私有变量的环境，叫闭包
   function fn(){
       var a = 10;
       return function(){
           a ++ ;
           console.log(a);
       }
   }
   var f = fn();
   f();

什么是防抖？
首先先看一个例子

]]></description><category></category></item><item><title><![CDATA[jsES6pormise的使用]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/113800746</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/113800746</guid><author>dergfg</author><pubDate>Sat, 13 Feb 2021 13:50:56 +0800</pubDate><description><![CDATA[保持对代码的热爱并保持怀疑态度
什么是pormise？
Promise 对象代表了未来将要发生的事件，用来传递异步操作的消息。
自身存在三个状态：正在进行时，已完成，已失败
优化了异步程序的回调地狱问题。
什么是回调地狱？
看代码
     ajax("",function(res1){
     ajax("",function(res2){
         ajax("",function(res3){
             ajax("",function(res4){
            ]]></description><category></category></item><item><title><![CDATA[大过年的怎么可以不放烟花(js实现烟花简易版效果含源码）]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/113793687</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/113793687</guid><author>dergfg</author><pubDate>Fri, 12 Feb 2021 10:48:12 +0800</pubDate><description><![CDATA[保持对代码的热爱并保存怀疑态度
在这里先祝大家新年快乐，纪念一手。
源码地址：点击跳转
烟花实现的原理
  OOA：烟花，点击页面位置，出现元素运动，运动到终点，删除，创建好多元素，运动到指定随机位置，到终点，删除
    主体烟花
        创建元素，设置位置，设置颜色，插入页面
        开始运动，到终点
         删除元素
     小烟花
         创建多个元素，设置位置，设置颜色，插入页面
        开始运动，到终点
        删除元素

以上为分析，因为用]]></description><category></category></item><item><title><![CDATA[sass的简介，转换及语法]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/113789340</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/113789340</guid><author>dergfg</author><pubDate>Thu, 11 Feb 2021 11:54:20 +0800</pubDate><description><![CDATA[保持对代码的热爱并保持怀疑态度
什么是sass？
sass是CSS预处理器，它的基本思想是，用一种专门的编程语言，进行网页样式设计，然后再编译成正常的CSS文件。说白了就是css的扩展。
sass的转换
sass的文件的后缀为scss，scss是不支持直接使用到网页的，所以需要转化


首先需要下载node安装一个环境          点击查看node的安装
node安装完成后，将node作为集成环境,下载第三方模块包，点击查看gulp的安装
接下来就是安装gulp插件   gulp-sass
gulp-]]></description><category></category></item><item><title><![CDATA[js事件总结（详解）]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/113780718</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/113780718</guid><author>dergfg</author><pubDate>Wed, 10 Feb 2021 14:01:51 +0800</pubDate><description><![CDATA[保持对代码的热爱并保持怀疑态度

事件源：绑定事件的元素
事件目标：触发事件的元素
事件分类：

鼠标类
键盘类
表单类
浏览器类 location href scroll load



事件的绑定方式方式

DOM0级（赋值式）

绑定    元素.on事件名 = 函数
删除    obtn.onclick = null



var obtn=document.getElementById("btn");
    obtn.onclick=function(){
        console.log]]></description><category></category></item><item><title><![CDATA[js永久级本地存储和会话级本地存储]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/113767280</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/113767280</guid><author>dergfg</author><pubDate>Tue, 09 Feb 2021 10:46:33 +0800</pubDate><description><![CDATA[保持对代码的热爱并保持怀疑态度
localStorage永久级本地存储
sessionStorage：会话级本地存储
特点：

HTML5版本中新增的技术
不会随着HTTP发往服务器，是一种真正的本地存储

不用必须运行在服务器环境


只能存文本
大小：5M
不允许跨域
传入对象的时候也是需要用JSON.stringify转为字符型

在哪查看
f12调出控制台，跟cookie的位置一个栏目里面

语法
localStorage和sessionStorage语法是一样的
localStorage.setI]]></description><category></category></item><item><title><![CDATA[js cookie的使用及封装加小案例]]></title><link>https://blog.youkuaiyun.com/dergfg/article/details/113766647</link><guid>https://blog.youkuaiyun.com/dergfg/article/details/113766647</guid><author>dergfg</author><pubDate>Tue, 09 Feb 2021 10:31:33 +0800</pubDate><description><![CDATA[保持对代码的热爱并保持怀疑态度
什么是cookie？
Cookie 是一些数据, 存储于你电脑上的文本文件中。
当 web 服务器向浏览器发送 web 页面时，在连接关闭后，服务端不会记录用户的信息。
Cookie 的作用就是用于解决 “如何记录客户端的用户信息”:
当用户访问 web 页面时，他的名字可以记录在 cookie 中。
在用户下一次访问该页面时，可以在 cookie 中读取用户访问记录。
cookie的查看
f12调出控制台，我这里暂时没有存储数据，如果存储了可以在这里看到。

cookie的]]></description><category></category></item></channel></rss>