<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[zoooo_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/zoooo_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; zoooo_]]></copyright><item><title><![CDATA[vue3+vite使用antv/g6线上报错，本地没问题]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/126752280</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/126752280</guid><author>zoooo_</author><pubDate>Wed, 07 Sep 2022 19:35:21 +0800</pubDate><description><![CDATA[vue3+vite使用antv/g6画拓扑图，但是本地没问题正常运行，上线就会报路由错误；import G6 from '@antv/g6/dist/g6.min' 即可。官网给的是直接引@antv/g6,，不清楚原理是什么。但是改变了引入路径后确实线上没有阻塞了。但是更简单的方式是修改g6的引入方式。]]></description><category></category></item><item><title><![CDATA[近期遇到的小问题总结（vue3+ts+naive）]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/123064694</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/123064694</guid><author>zoooo_</author><pubDate>Tue, 22 Feb 2022 14:32:09 +0800</pubDate><description><![CDATA[目前使用了一个vue3+typescript+naive的框架，导致很多写法都比较生疏，而且这个框架相较于我之前开发的属于比较完善，封装的比较多的框架。就产生了一些小问题，防止忘记，记录如下：

table组件锁定触发事件的写法；
	下拉菜单如何实现；
	导航目录有多项，但只有一项没设置hidden时应该作为单级目录，而不是有个下拉；
	接口调用，在哪里对ip地址进行设置；


1.关于table的列表项都是进行过拆分的，单独在ts文件写的数据，所以我不懂应该怎么触发事件

Naive的官方文档是提到了的，]]></description><category></category></item><item><title><![CDATA[elementUi的tree组件动态设置展开折叠失效]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/122360124</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/122360124</guid><author>zoooo_</author><pubDate>Fri, 07 Jan 2022 11:22:06 +0800</pubDate><description><![CDATA[elementUi的tree组件动态设置展开折叠失效]]></description><category></category></item><item><title><![CDATA[在vue中怎么使用echarts实现一个简单的饼图]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/119384026</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/119384026</guid><author>zoooo_</author><pubDate>Wed, 04 Aug 2021 15:08:00 +0800</pubDate><description><![CDATA[首先echarts官网链接https://echarts.apache.org/zh/index.html

我的视线效果，以及为饼图增加了点击事件，点击弹出一个提示框





下载：

我用npm install echarts --save这个命令没下载下来 ；我就选择了直接下载文件-》

我是选择了在线定制，因为我主要需要的是一个饼图；所以定制会小一点；

下载出来是一个echarts.min.js文件，将这个文件拖至你的项目目录；



第二步在main.js文件内全局引入echarts，并...]]></description><category></category></item><item><title><![CDATA[js实现 两个相交链表，找出公共节点]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/113359619</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/113359619</guid><author>zoooo_</author><pubDate>Thu, 11 Mar 2021 11:40:25 +0800</pubDate><description><![CDATA[输入两个链表，找出它们的第一个公共结点。（注意因为传入数据是链表，所以错误测试数据的提示是用其他方式显示的，保证传入数据是正确的）


这个题，第一思路还是笨方法，去循环，找到相等的值

但是看了题解，可真牛；


function FindFirstCommonNode(pHead1, pHead2)
{
    // write code here
    
   while(pHead1){
       pHead1.f=true;
       pHead1=pHead1.next;
   }
.]]></description><category></category></item><item><title><![CDATA[二叉树的深度优先遍历和广度优先遍历js代码实现]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/111835837</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/111835837</guid><author>zoooo_</author><pubDate>Wed, 10 Mar 2021 17:06:16 +0800</pubDate><description><![CDATA[树的深度优先搜索和广度优先搜索，其实没了解过的时候，看见树就头晕，之后去搜了下，发现也不是什么困难的事情；

其实树的深度优先搜索指的是不按照层级的规律去便利，像前序便利，中序后序便利都是属于深度便利的方式；

树的广度便利就是按照层级关系，一层一层的进行便利；

树的深度便利中，先序中的先指的是根，先序就是根左右，中序是左根右，后序是左右根；下面举个代码 ????：


//结构大概是这样，可以进行赋值
function TreeNode(value, left, right) {
    this.va]]></description><category></category></item><item><title><![CDATA[js实现数组的filter方法 实现原理]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/114337537</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/114337537</guid><author>zoooo_</author><pubDate>Wed, 03 Mar 2021 22:00:45 +0800</pubDate><description><![CDATA[首先需要知道filter的作用是什么，使用方法=》那么就能实现一个filter；对于类似的实现原理也是这样的思路；

filter是过滤的含义，适用于过滤数组，返回一个新的数组；

使用方法如下：


a=[1,2,5,8,7];
let m=a.filter(function(item,index,arr){
// 三个参数：便利的当前值 || 便利的当前索引值|| 原数组
	return item&gt;5;
})
console.log(m);

我看到其他的写法一般是实现的只有一个参数，但是很多..]]></description><category></category></item><item><title><![CDATA[git常用命令总结]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/111366455</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/111366455</guid><author>zoooo_</author><pubDate>Fri, 18 Dec 2020 16:09:20 +0800</pubDate><description><![CDATA[git常用命令

git init 初始化仓库，之后就会出现.git文件

git pull 拉代码 如果本地checkout的分支刚好是dev分支，那么和后者相等，git pull origin dev 意思是去拉远程的dev分支 merge到你当前checkout的分支

git push dev 最常用，推到远端；git push --set-upstream origin branch1，本地创建的分支推到远端并给远端名字为branch1

git branch 查看本地分支 ；git branch]]></description><category></category></item><item><title><![CDATA[适配器模式]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/111328655</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/111328655</guid><author>zoooo_</author><pubDate>Thu, 17 Dec 2020 20:21:47 +0800</pubDate><description><![CDATA[在面向对象程序设计中，遇到问题之后总结问题的成功经验和最佳实践形成了设计模式

设计模式有为人熟知的六大原则



六大原则

●单一职责

要求一个接口或者一个类只有一种职责；

●里氏替换

A类对应的对象a，都可以由B类任意的对象所替换，功能正常，就说B是A的子类；

最清晰的定义：所有引用基类的地方必须能透明地使用其子类的对象。

●依赖倒置

高层模块不应该依赖低层模块，两者都应该依赖其抽象；（实现类不应该相依赖，应通过抽象类活接口进行依赖）

抽象不应该依赖细节；（接口或者抽象类不应该依...]]></description><category></category></item><item><title><![CDATA[虚拟Dom的原理 笔记]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/110500468</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/110500468</guid><author>zoooo_</author><pubDate>Tue, 08 Dec 2020 17:16:19 +0800</pubDate><description><![CDATA[前端页面都是由dom元素构成的，比如这个页面的标题，导航，都是嵌套的一个又一个的dom元素；

虚拟dom指的是用js构造的一个虚拟的dom对象，比如说：


&lt;div id="ee"&gt;内容&lt;/div&gt;
{
  tag:'div',
  attrs:{
    id:'ee'
  }
  text:'内容',
  children:[]
}

为什么需要虚拟dom；因为真实dom的操作成本太高了，vue是数据驱动视图，真实dom不像举例的js对象，真实的dom之中的属性或者隐藏值远比]]></description><category></category></item><item><title><![CDATA[反转单链表 算法 java]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/110498563</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/110498563</guid><author>zoooo_</author><pubDate>Wed, 02 Dec 2020 21:01:23 +0800</pubDate><description><![CDATA[题目描述：给你一个单链表，返回反转后的链表

思路和数据结构上课时候教的一样

头插法，

下面是主要逻辑的讲解

      m=head.next; //把头部用一个 变量 保存起来，因为下面会给head的next赋值
      head.next=pre; // 因为要反转，head就会变成尾部，那么head的next就是pre（也就是赋值为null的一个变量值）
      pre=head; //之后pre会继续作为@1的next值，所以把pre赋值为...]]></description><category></category></item><item><title><![CDATA[两个栈实现一个队列的数据结构 算法]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/110477709</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/110477709</guid><author>zoooo_</author><pubDate>Wed, 02 Dec 2020 14:16:32 +0800</pubDate><description><![CDATA[首先清楚这两种数据结构的特点；

栈：先进后出；类似一个木桶放东西，只能从一个方向上放入以及取出；

队列：先进后出；类似一个管道，两边是相通的，规定只能从一边放入，从另一边取出；

两个栈实现队列的话，可以想像把两个桶A，B底部挨着构成一个管道，但是中部是阻隔住的；也就意味着出队列时，出完B这时队列到一半，无法继续出A的内容；这时需要将A整个出栈到B中，继续B出栈；就可以实现一个队列的效果；重点逻辑就是栈转移这一点；

代码实现


import java.util.Stack;

public clas]]></description><category></category></item><item><title><![CDATA[Vue的变化侦测/响应式原理-源码讲解笔记]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/109468505</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/109468505</guid><author>zoooo_</author><pubDate>Wed, 02 Dec 2020 11:43:01 +0800</pubDate><description><![CDATA[变化侦测是指 如何监测到数值变化，并反映到视图上；

Angular是通过脏值检测，react是通过虚拟dom对比；vue也有自己的检测机制；

数据驱动视图，这个过程是怎么驱动的？vue怎么进行的变化侦测？

主要分为两部分：

@监测数据(Observer)  
	@更新视图--&gt;哪些数据需要更新，哪些数据对该数据存在依赖？
关于Object的数据绑定

Object.defineProperty可以进行监测某对象，源码中的Observer类就是利用该函数进行对数据的检测；

想要新建一个对象..]]></description><category></category></item><item><title><![CDATA[报错Can‘t resolve ‘fs‘ in /Cannot read property ‘prototype‘ of undefined]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/109343649</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/109343649</guid><author>zoooo_</author><pubDate>Thu, 29 Oct 2020 14:39:54 +0800</pubDate><description><![CDATA[尝试了 npm install fs 没用

尝试了删掉node_modulds，重新install，没用

在webpack.base.js加了node { fs:empty };管用，但是报别的错，如下类似这样



是因为引入的包的问题：https://blog.youkuaiyun.com/love_onefly/article/details/80612499

我把一个多余的包引入了，所以我给删掉就不报错了
...]]></description><category></category></item><item><title><![CDATA[三行JS代码实现 简单的模版引擎算法  面试常考]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/109245599</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/109245599</guid><author>zoooo_</author><pubDate>Fri, 23 Oct 2020 16:52:55 +0800</pubDate><description><![CDATA[前端的面试或者校招中经常会问到的一道简单的算法题：

模版引擎（给你一段模版代码，给你一个对象；转换出来html代码格式）

下面是正则实现的（借鉴大佬的代码）

代码如下：


var template='&lt;p&gt;sd,&lt;%page%&gt;,hello,&lt;%w%&gt;&lt;/p&gt;'
var data={
    page:'yes',
    w:'world'
}

var reg=/&lt;%([^%&gt;]+)?%&gt;/g;
while(mat=reg.exe]]></description><category></category></item><item><title><![CDATA[JS两个数组取交集filter]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/107927360</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/107927360</guid><author>zoooo_</author><pubDate>Tue, 11 Aug 2020 09:26:19 +0800</pubDate><description><![CDATA[关于filter的解释，菜鸟教程这样写道


filter() 方法创建一个新的数组，新数组中的元素是通过检查指定数组中符合条件的所有元素。


经常用来写两个数组取交集的算法：


var arr1=[1,5,6,4,2];
var arr2=[2,5,3,4];
var arr3=arr1.filter(function(num){
	return arr2.indexOf(num)!=(-1)
})
console.log(arr3)

需要注意的是，如果数组内有重复的数值且刚好两数组都有，数组的顺序]]></description><category></category></item><item><title><![CDATA[https详细过程-个人总结]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/107844358</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/107844358</guid><author>zoooo_</author><pubDate>Tue, 11 Aug 2020 08:54:43 +0800</pubDate><description><![CDATA[对称加密：同一个密钥加密解密 ；运算速度快，不安全

非对称加密：公钥加密，私钥解密；私钥加密，公钥解密 ；更安全，运算速度慢


]]></description><category></category></item><item><title><![CDATA[事件委托/事件代理 详解 含事件冒泡+事件捕获（个人总结）]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/107725899</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/107725899</guid><author>zoooo_</author><pubDate>Sat, 01 Aug 2020 15:54:52 +0800</pubDate><description><![CDATA[事件委托指的是事件可以绑定到其他节点上来触发你想要触发的目标节点的事件

首先有个问题，如果你想给同一个dom元素注册多个同类型事件，你会发现通过普通直接绑定无法实现，绑定多个事件只会出发最后一个绑定的事件。 如下图只会触发到第3个事件，控制台看到3



接下来就可以i通过事件处理器：addEventListener(type，listener，useCapture)实现

参数讲解：type：必填，字符串类型，指的是事件的类型；listener：必填，触发的事件，js方法或者函数体；useCapture]]></description><category></category></item><item><title><![CDATA[有道云笔记突然出现乱码 日记变成乱码]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/104791500</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/104791500</guid><author>zoooo_</author><pubDate>Wed, 11 Mar 2020 10:47:17 +0800</pubDate><description><![CDATA[今天打开有道云笔记，突然就看见我的昨天编辑的一篇考试笔记变成了乱码

去查了查，挺多人觉得是黑子的，毕竟人家有的人都没有遇到过，我用的pc端网页版的就变成这样的了：



不过不要慌，我刚开始也吓了一跳，还以为这篇要完了呢：

解决方法：点击。。。按钮



查看历史版本

然后找到相应历史版本进行恢复处理就行了！


...]]></description><category></category></item><item><title><![CDATA[计算机网络 TCP/IP知识点总结]]></title><link>https://blog.youkuaiyun.com/zoooo_/article/details/104642966</link><guid>https://blog.youkuaiyun.com/zoooo_/article/details/104642966</guid><author>zoooo_</author><pubDate>Tue, 03 Mar 2020 22:07:22 +0800</pubDate><description><![CDATA[TCP协议是有连接的数据传输，既然有链接，那肯定不支持广播的

需要了解tcp数据报格式，有紧急控制位和紧急指针的

紧急比特URG—当URG＝1时，表明紧急指针字段有效。它告诉系统此报文段中有紧急数据，应尽快传送(相当于高优先级的数据)

能够探知到接收方处理能力,当接收方大量数据未接收时,会停止继续发送新数据是TCP的一个功能，因为TCP是记录数据流的状态的，所以可以检测对方是否接受

...]]></description><category></category></item></channel></rss>