<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[VegetableKCCCC的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/VegetableKCCCC</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; VegetableKCCCC]]></copyright><item><title><![CDATA[cookie，session，token的区别和作用]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120081797</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120081797</guid><author>VegetableKCCCC</author><pubDate>Wed, 03 Nov 2021 10:57:54 +0800</pubDate><description><![CDATA[1.cookie，session，token的出现的背景
很久很久以前，Web 基本上就是文档的浏览而已， 既然是浏览，作为服务器， 不需要记录谁在某一段时间里都浏览了什么文档，每次请求都是一个新的HTTP协议， 就是请求加响应， 尤其是我不用记住是谁刚刚发了HTTP请求， 每个请求对我来说都是全新的。这段时间很嗨皮
但是随着交互式Web应用的兴起，像在线购物网站，需要登录的网站等等，马上就面临一个问题，那就是要管理会话，必须记住哪些人登录系统， 哪些人往自己的购物车中放商品， 也就是说我必须把每个人区分开]]></description><category></category></item><item><title><![CDATA[Vue中props用法和传值问题]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/119410145</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/119410145</guid><author>VegetableKCCCC</author><pubDate>Thu, 14 Oct 2021 16:26:19 +0800</pubDate><description><![CDATA[props的基本用法是父组件给子组件传输数据和验证
基本用法：
1.在父组件中的data中定义值
2.在子组件中使用props声明要引用哪个值
3.标签中使用
4.在template模板中，要使用中划线写法；在script脚本中使用小驼峰
props的使用：
1.静态props
静态即传入的值不变化，直接在父组件中定义，子组件中使用
2.动态props
动态即传入的值会变化，父组件中要动态地绑定父组件的数据。
3.props验证
验证传入的props参数的数据规格，如果不符合数据规格则发出警告，注意这个数据]]></description><category></category></item><item><title><![CDATA[同时发起100个http请求，总共会建立多少个TCP连接]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120011202</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120011202</guid><author>VegetableKCCCC</author><pubDate>Thu, 14 Oct 2021 14:37:07 +0800</pubDate><description><![CDATA[要搞明白这个问题，首先要解决以下问题：
1.现代浏览器在与服务器建立了一个TCP连接后，是否会在一个HTTP请求完成之后断开？什么情况下会断开？
在HTTP/1.0中，一个服务器在发送完一个HTTP响应后，会断开TCP连接。但是这样每次请求都会重新建立和断开TCP连接，代价过大。所以虽然标准中没有设定，某些服务器对Connection: keep-alive的Header进行了支持。
意思是说，完成这个HTTP请求之后，不要断开HTTP请求使用TCP连接。这样的好处是连接可以被重新使用，之后发送HTTP请求]]></description><category></category></item><item><title><![CDATA[Ajax！！！]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120173771</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120173771</guid><author>VegetableKCCCC</author><pubDate>Sat, 09 Oct 2021 16:30:24 +0800</pubDate><description><![CDATA[什么是ajax！
ajax是asynchronous javascript and XML的简写，中文翻译是异步的javascript和XML，可以局部请求网络数据但不刷新页面；然名字中包含XML，但ajax通信与数据格式无关
ajax包括以下几步骤：1、创建AJAX对象；2、发出HTTP请求；3、接收服务器传回的数据；4、更新网页数据
概括起来，就是一句话，ajax通过原生的XMLHttpRequest对象发出HTTP请求，得到服务器返回的数据后，再进行处理
怎么创建ajax
ajax技术的核心是XMLH]]></description><category></category></item><item><title><![CDATA[前后端路由,单页面应用以及vue-router两种模式]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120548663</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120548663</guid><author>VegetableKCCCC</author><pubDate>Wed, 29 Sep 2021 16:45:24 +0800</pubDate><description><![CDATA[前后端分离 ===&gt; 利用Ajax，可以在不刷新浏览器的情况下异步数据请求交互。
单页应用（只有一个html文件，整个网站的所有内容都在这一个html里，通过js来处理）不仅仅是在页面交互是无刷新的，连页面跳转都是无刷新的。为了实现单页应用 ==&gt; 前后端分离 + 前端路由。（更新视图但不重新请求页面）
前端路由实现起来其实也很简单，就是匹配不同的 url 路径，进行解析，加载不同的组件，然后动态的渲染出区域 html 内容。
早期的后端路由

前端路由

单页面应用:
单页Web应用（sing]]></description><category></category></item><item><title><![CDATA[vue2的响应式原理]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120430528</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120430528</guid><author>VegetableKCCCC</author><pubDate>Wed, 29 Sep 2021 14:48:22 +0800</pubDate><description><![CDATA[Vue的响应式原理是用Object.definePrototy()的et与get结合观察者模式进行数据劫持；
首先了解一下Object.definePrototy()的set与get；
在获取对象prototy的时候，会自动调用get方法，在修改时会自动调用set方法
VUE给data里所有的属性加上set,get这个过程就叫做Reactive化。

观察者模式（发布订阅者模式）
观察者模式分为注册环节与发布环节

依赖dep类与watch类



这个Watcher实际上是连接Vue组件与Dep的桥梁。
]]></description><category></category></item><item><title><![CDATA[vue中computed和watch的区别]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120528578</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120528578</guid><author>VegetableKCCCC</author><pubDate>Tue, 28 Sep 2021 15:35:28 +0800</pubDate><description><![CDATA[两者都是监听数据，都是当依赖的数据发生改变时，被依赖的数据就自动发生改变
区别：
1.computed是监听多个数据，一搬用于计算一些复杂的场景，如购物车计算价格，即多对一，多个数据中的一个改变会引起汇总那个数据的改变；watch是监听一个数据，通过观察一个数据的变化去改变其他数据，如搜索框列表
2.computed用于计算，watch用于观察
3.computed一定要有return
4.computed具有缓存性，当依赖的数据没有发生变化时，就会从缓存中取出数据，所以computed的性能比watch要]]></description><category></category></item><item><title><![CDATA[CSRF攻击]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120076848</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120076848</guid><author>VegetableKCCCC</author><pubDate>Tue, 28 Sep 2021 11:00:29 +0800</pubDate><description><![CDATA[CSRF（跨站请求伪造）攻击
CSRF(Cross Site Request Forgery,跨站请求伪造)是一种近年来才逐渐被大众了解的网络攻击方式，又被称为One-Click Attack或Session Riding。
攻击原理
某用户登录了A网站，认证信息保存在cookie中。当用户访问攻击者创建的B网站时，攻击者通过在B网站发送一个伪造的请求提交到A网站服务器上，让A网站服务器误以为请求来自于自己的网站，于是执行响应的操作，该用户的信息边遭到了篡改.
总结起来就是，攻击者利用用户在浏览器中保存的认]]></description><category></category></item><item><title><![CDATA[请求一个URL的优化]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120181966</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120181966</guid><author>VegetableKCCCC</author><pubDate>Tue, 28 Sep 2021 10:59:29 +0800</pubDate><description><![CDATA[当浏览器请求一个URL的时候，通过firebug我们可以发现大概有以下几个过程：阻挡、域名解析、建立连接、发送请求、等待响应、接收数据。后面四个跟用户的网络情况和你的服务器处理速度有关，本文重点说说前两个。
1、阻挡：解决方案——提高浏览器并发连接数
（并发即同时）
阻挡：不同的浏览器对单个域名的最大并发连接数有一定的限制，HTTP/1.0和HTTP/1.1也不相同。比如HTTP/1.1协议下，IE6的并发连接数限制是2个；而在HTTP/1.0下，IE6的并发连接数可以达到4个。在其它浏览器也有类似的限制，]]></description><category></category></item><item><title><![CDATA[==隐式转换]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120206115</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120206115</guid><author>VegetableKCCCC</author><pubDate>Mon, 27 Sep 2021 21:36:04 +0800</pubDate><description><![CDATA[！！关于JavaScript中0、空字符串、'0’是true还是false的总结
首先看下面：


false == 0 输出true；因为在做判断的时候，两者中有boolean（布尔类型），会把boolean先转化为number（数字类型），false为0，true是1。也就是等价于判断 0 == 0 ，结果为true。
‘’ ==  false 输出为true**；js中空字符串与0相等，也就意味着空字符串等等于false**。
‘0’ == false 正确输出为true；这里犯了一个错误认为结果会.]]></description><category></category></item><item><title><![CDATA[git解决一些错误操作]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/119487628</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/119487628</guid><author>VegetableKCCCC</author><pubDate>Mon, 27 Sep 2021 21:34:30 +0800</pubDate><description><![CDATA[git使用：https://blog.youkuaiyun.com/qq_45798556/article/details/114632849

]]></description><category></category></item><item><title><![CDATA[Vue生命周期函数的部分理解]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120505294</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120505294</guid><author>VegetableKCCCC</author><pubDate>Mon, 27 Sep 2021 11:47:04 +0800</pubDate><description><![CDATA[1.Vue中ajax放在Created和Mounted的区别
放在哪个钩子好？
个人见解：！！！一般来说放在Created中就可以了，如果涉及到需要操作DOM节点或者需要页面加载完成的情况才放到Mounted中的this.$nextTick函数中(vue的异步更新)
区别（暂时确定是这些，如有求评论！！）：
1.ssr（服务器端）不支持beforeMount/Mounted等钩子，意思是服务端渲染的话不能放在Mounted。
2.Created中无Dom节点
误区（不知道对不对）：
1.放在Created中]]></description><category></category></item><item><title><![CDATA[Vue中异步更新队列]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120305269</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120305269</guid><author>VegetableKCCCC</author><pubDate>Wed, 15 Sep 2021 13:46:41 +0800</pubDate><description><![CDATA[Vue 在更新 DOM 时是异步执行的
看下官网介绍:
只要侦听到数据变化，Vue 将开启一个队列，并缓冲在同一事件循环中发生的所有数据变更。如果同一个 watcher 被多次触发，只会被推入到队列中一次。这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作是非常重要的。然后，在下一个的事件循环“tick”中，Vue 刷新队列并执行实际 (已去重的) 工作。Vue 在内部对异步队列尝试使用原生的 Promise.then、MutationObserver 和 setImmediate，如果执行环境不]]></description><category></category></item><item><title><![CDATA[深拷贝与浅拷贝]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120199488</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120199488</guid><author>VegetableKCCCC</author><pubDate>Thu, 09 Sep 2021 14:49:54 +0800</pubDate><description><![CDATA[1.浅拷贝与深拷贝
简单来讲，浅拷贝是指向和拷贝对象相同的内存地址，因为是共用一个地址，所以当拷贝对象发生变化时，我们新的对象也会发生变化。
深拷贝的话，我们是开辟了一块新的内存地址来存放新的对象，这样两个对象是指向不同内存地址，所以对于被拷贝对象进行修改时，不会影响到拷贝的对象。
如浅拷贝：
let a=[0,1,2,3,4],
b=a;
console.log(a===b);
a[0]=1;
console.log(a,b);

再例如**简单数组的深拷贝（没有嵌套层级）**的深拷贝


当然这里只是进]]></description><category></category></item><item><title><![CDATA[HSTS是什么]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120179214</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120179214</guid><author>VegetableKCCCC</author><pubDate>Wed, 08 Sep 2021 14:41:53 +0800</pubDate><description><![CDATA[HSTS(HTTP Strict Transport Security)
HSTS（HTTP Strict Transport Security）国际互联网工程组织IETF正在推行一种新的Web安全协议
HSTS的作用是强制客户端（如浏览器）使用HTTPS与服务器创建连接。
国际互联网工程组织IETE正在推行一种新的Web安全协议HTTP Strict Transport Security（HSTS），采用HSTS协议的网站将保证浏览器始终连接到该网站的HTTPS加密版本，不需要用户手动在URL地址栏中输入]]></description><category></category></item><item><title><![CDATA[浏览器渲染页面的原理及流程]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120177052</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120177052</guid><author>VegetableKCCCC</author><pubDate>Wed, 08 Sep 2021 13:39:57 +0800</pubDate><description><![CDATA[浏览器页面渲染的原理及浏览
浏览器将域名通过网络通信从服务器拿到html文件后，如何渲染页面呢？
1.根据html文件构建DOM树和CSSOM树。构建DOM树期间，如果遇到JS，阻塞DOM树及CSSOM树的构建，优先加载JS文件，加载完毕，再继续构建DOM树及CSSOM树。CSS文件的解析是不可中断的！
2.构建渲染树（Render Tree）。
3.页面的重绘（repaint）与重排（reflow，也有称回流）。页面渲染完成后，若JS操作了DOM节点，根据JS对DOM操作动作的大小，浏览器对页面进行重绘或]]></description><category></category></item><item><title><![CDATA[http缓存]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120161142</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120161142</guid><author>VegetableKCCCC</author><pubDate>Wed, 08 Sep 2021 09:47:44 +0800</pubDate><description><![CDATA[为什么需要缓存
当浏览器第一次访问一个网站时，需要加载许多资源，html+css+js+img…，但是第一次过后，再次访问该网站，若是没有缓存，则需要再次进行网络请求，不但对服务器不友好，加载速度、渲染出页面的速度也会有很大的降低，所以说缓存可以帮我们减少网络请求的体积和数量，加速网页加载渲染速度。
强缓存
强缓存是利用http的返回头中的Expires或者Cache-Control两个字段来控制的，用来表示资源的缓存时间。

Cache-Control
Cache-Control是一个相对时间，例如Cac]]></description><category></category></item><item><title><![CDATA[宏任务与微任务]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120130783</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120130783</guid><author>VegetableKCCCC</author><pubDate>Tue, 07 Sep 2021 11:06:25 +0800</pubDate><description><![CDATA[JS运行机制
概念1：JS是单线程执行，该单线程是指JS引擎线程
在浏览器环境中，有JS 引擎线程和渲染线程，且两个线程互斥。
Node环境中，只有JS 线程。
概念2：宿主
JS运行的环境。一般为浏览器或者Node。所以一般也叫宿主环境
概念3：执行栈
是一个储存函数调用的栈结构，遵循先进后出的原则
概念4：Event Loop

...]]></description><category></category></item><item><title><![CDATA[axios原理]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120127261</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120127261</guid><author>VegetableKCCCC</author><pubDate>Mon, 06 Sep 2021 11:04:48 +0800</pubDate><description><![CDATA[1.axios是什么？
axios是一个基于promise的http库，可以用在浏览器和node.js的环境中；本质上也是对原生xhr的封装，只不过它是promise的实现版本，符合最新的ES规范
axios有什么特性
1.可以用在浏览器和node.js的环境中，从浏览器中创建XMLHttpRequests；基于node内置核心模块http实现axios，从中创建http请求，也就是说，axios可以在浏览器上和服务器上都可以发起请求
2.是一个基于Promise的HTTP库，支持promise的所有API]]></description><category></category></item><item><title><![CDATA[防抖与节流函数]]></title><link>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120061874</link><guid>https://blog.youkuaiyun.com/VegetableKCCCC/article/details/120061874</guid><author>VegetableKCCCC</author><pubDate>Thu, 02 Sep 2021 17:26:23 +0800</pubDate><description><![CDATA[防抖或节流：都是为了限制业务逻辑函数的执行次数
1.防抖debounce
防抖即通过setTimeOut的方式，将多次触发变为一次触发
什么是函数防抖
概念：函数防抖（debounce），就是指触发事件后，在 n 秒内函数只能执行一次，如果触发事件后在 n 秒内又触发了事件，则会重新计算函数延执行时间。
为什么需要函数防抖
　　前端开发过程中，有一些事件，常见的例如，onresize，scroll，mousemove ,mousehover 等，会被频繁触发（短时间内多次触发），不做限制的话，有可能一秒之内]]></description><category></category></item></channel></rss>