<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[fly_wugui的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/fly_wugui</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; fly_wugui]]></copyright><item><title><![CDATA[remote: HTTP Basic: Access denied的解决方法]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/115266509</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/115266509</guid><author>fly_wugui</author><pubDate>Sat, 27 Mar 2021 16:08:46 +0800</pubDate><description><![CDATA[问题
git执行 git clone 或者 git push 报以下错误：
	remote: HTTP Basic: Access denied
	fatal: Authentication failed for 'http://git.xxxx.com/xxxxx.git/'

原因
账号密码验证不通过，密码或者权限不对，导致 Git 操作失败。
解决方法一 (最有效)
输入：git config --system --unset credential.helper
再次进行 Git 操作，输入正确的用户]]></description><category></category></item><item><title><![CDATA[使用＜details＞标签在网页里面添加脚注]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/111663627</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/111663627</guid><author>fly_wugui</author><pubDate>Fri, 25 Dec 2020 10:41:40 +0800</pubDate><description><![CDATA[使用 details 标签可以为文章添加相应注解
代码：
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
  &lt;meta charset="UTF-8"&gt;
  &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
  &lt;title&gt;Document&lt;/title&gt;
  &lt;style&gt;
    d]]></description><category></category></item><item><title><![CDATA[实现深度克隆/拷贝,解决循环引用]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/109328721</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/109328721</guid><author>fly_wugui</author><pubDate>Wed, 28 Oct 2020 11:51:24 +0800</pubDate><description><![CDATA[基础版(不能解决循环引用)
基础版
	function deepClone(obj){
	  // 如果参数为空则直接返回,如果为日期/正则 则也直接返回；
	  if( obj == null ) return obj;
	  if( obj instanceof Date ) return new Date(obj);
	  if( obj instanceof RegExp ) return new RegExp(obj);
	  if(typeof obj !== 'object') return ]]></description><category></category></item><item><title><![CDATA[JS 设计模式-发布订阅与观察者模式]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/108832892</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/108832892</guid><author>fly_wugui</author><pubDate>Thu, 15 Oct 2020 17:51:33 +0800</pubDate><description><![CDATA[高级函数

节流 防抖
解决异步请求 计数器
JS 设计模式 发布订阅 观察者



]]></description><category></category></item><item><title><![CDATA[js - 回调函数的应用技巧之切片编程]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/109092176</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/109092176</guid><author>fly_wugui</author><pubDate>Thu, 15 Oct 2020 15:04:46 +0800</pubDate><description><![CDATA[应用场景：在不改动原函数的情况下，在函数前执行另一个函数；
	// 前置函数 在当前函数执行前面增加一个函数实现再不更改原函数的情况下 对目标进行预处理;
	Function.prototype.before = function(callBack){
	  let that = this; // 将 this 指向原函数；
	  return function(){
	    callBack() // 执行 前置函数
	    that.apply(that, arguments) // 执行原函数
	]]></description><category></category></item><item><title><![CDATA[js - 回调函数的应用技巧之计数执行]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/109079823</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/109079823</guid><author>fly_wugui</author><pubDate>Thu, 15 Oct 2020 10:20:30 +0800</pubDate><description><![CDATA[在一些业务场景会有两个独立函数共同修改一个对象，而我们又不知道对象什么何时完成的时候，就要用回调函数来进行解决。
如：有两个单独文本文件，我们需要获取里面的内容来填充一个对象，我们在填充完成之后来获取对象。
获取文本文件并填充
	let fs = require('fs');
	
	function fn(acount, callBack){
	  let obj = {};
	  return function(key, data){
	    obj[key] = data;
	
	    // 计数自]]></description><category></category></item><item><title><![CDATA[转：函数防抖与节流]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/109067452</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/109067452</guid><author>fly_wugui</author><pubDate>Wed, 14 Oct 2020 11:56:32 +0800</pubDate><description><![CDATA[在前端开发的过程中，经常会需要绑定一些持续触发的事件，如 resize、scroll、mousemove 等等，但有些时候我们并不希望在事件持续触发的过程中那么频繁地去执行函数。所以诞生了 防抖与节流函数
防抖（debounce）
所谓防抖，就是指触发事件后在 n 秒内函数只能执行一次，如果在 n 秒内又触发了事件，则会重新计算函数执行时间。
页面部分
&lt;div id="box" style="height:150px;line-height:150px;text-align:center; colo]]></description><category></category></item><item><title><![CDATA[转载：掘金头像的旋转（transform）]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/108746336</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/108746336</guid><author>fly_wugui</author><pubDate>Wed, 23 Sep 2020 09:46:53 +0800</pubDate><description><![CDATA[css 实现掘金个人主页的旋转头像
#pic:hover {
    transform: rotate(666turn);
    transition-property: all;
    transition-duration: 59s;
    transition-timing-function: cubic-bezier(.34,0,.84,1);
   	transition-delay: 1s;
}


首先给任意的元素加上这些css就可以进行旋转了。
查看了一下这些属性的意思，下面介绍一下]]></description><category></category></item><item><title><![CDATA[hexo+next 增加搜索功能]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/108638358</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/108638358</guid><author>fly_wugui</author><pubDate>Thu, 17 Sep 2020 11:08:03 +0800</pubDate><description><![CDATA[1、安装本地搜索插件 hexo-generator-search
在博客根目录安装搜索插件
  # 安装插件，用于生成博客索引数据（在博客根目录下执行下列命令）：
  npm install hexo-generator-search --save

安装之后，会在站点目录的 public 文件夹下创建一个 search.xml 文件。（如果没有 search.xml 文件，请继续往下看）
2、修改站点配置文件(如果上一步没有找到 search.xml文件 则可以跳过 )
在主题配置文件中的 _config]]></description><category></category></item><item><title><![CDATA[python [:-1] [::-1]的理解]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/108631812</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/108631812</guid><author>fly_wugui</author><pubDate>Wed, 16 Sep 2020 22:13:39 +0800</pubDate><description><![CDATA[line = “abcde”
line[:-1]
结果为：‘abcd’
line = “abcde”
line[::-1]
结果为：‘edcba’
line[:-1]其实就是去除了这行文本的最后一个字符（换行符）后剩下的部分。
问题不难，但是 还是要Maker 一下。

]]></description><category></category></item><item><title><![CDATA[Python出现Could not find a version that satisfies the requirement openpyxl (from versions: )]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/108581382</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/108581382</guid><author>fly_wugui</author><pubDate>Mon, 14 Sep 2020 16:16:59 +0800</pubDate><description><![CDATA[一.环境
使用python3.7时，用pip安装openpyxl出现如下错误：

二. 解决方案
可能是python国内网络的问题，这时我们用国内的镜像源来加速。
pip install 包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
# 这个是豆瓣源
# --trusted-host pypi.douban.com 这是为了获得ssl证书的认证，要不然会报错


三. pip和pip3的区别
其实这两个命令效果是一样的]]></description><category></category></item><item><title><![CDATA[你不知道的快速复制数组小秘密]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/108532769</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/108532769</guid><author>fly_wugui</author><pubDate>Fri, 11 Sep 2020 14:16:44 +0800</pubDate><description><![CDATA[方法1、arrayObject.slice(start,end) 快速深度复制一个多维数组
关于 slice(start,end)方法说明




参数
描述




start
必需。规定从何处开始选取。如果是负数，那么它规定从数组尾部开始算起的位置。也就是说，-1 指最后一个元素，-2 指倒数第二个元素，以此类推。


end
可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数，那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数，那么它规定的是从数组尾]]></description><category></category></item><item><title><![CDATA[UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\xa0‘ in position 67008: illegal multibyte s]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/108516828</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/108516828</guid><author>fly_wugui</author><pubDate>Thu, 10 Sep 2020 16:12:12 +0800</pubDate><description><![CDATA[使用Python写文件的时候，或者将网络数据流写入到本地文件的时候，大部分情况下会遇到：UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xa0’ in position … 这个问题。 网络上有很多类似的文件讲述如何解决这个问题，但是无非就是encode，decode相关的，这是导致该问题出现的真正原因吗？不是的。 很多时候，我们使用了decode和encode，试遍了各种编码，utf8，utf-8,gbk,gb2312等等，该有的编码都试遍]]></description><category></category></item><item><title><![CDATA[axios-配置请求拦截器]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/107832569</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/107832569</guid><author>fly_wugui</author><pubDate>Thu, 06 Aug 2020 10:07:09 +0800</pubDate><description><![CDATA[个人配置 axios 拦截器
import Vue from 'vue';
import axios from 'axios';
import { Message } from 'element-ui';
Vue.component(Message.name, Message);
let sessionLoginId = sessionStorage.getItem('LoginId') || '';
axios.interceptors.request.use((res) =&gt; {
  res.he]]></description><category></category></item><item><title><![CDATA[startsWith() 方法]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/107461922</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/107461922</guid><author>fly_wugui</author><pubDate>Mon, 20 Jul 2020 13:54:54 +0800</pubDate><description><![CDATA[startsWith() 方法用于检测字符串是否以指定的子字符串开始。
如果是以指定的子字符串开头返回 true，否则 false。
startsWith() 方法对大小写敏感。
	var str = "Hello world";
	var n = str.startsWith("Hello");
	console.log(n) // true

语法
	string.startsWith(searchvalue, start)

参数值




参数
描述




searchvalue
必需，要查找的字]]></description><category></category></item><item><title><![CDATA[canvas生成二维码附带icon并实现下载]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/106811914</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/106811914</guid><author>fly_wugui</author><pubDate>Wed, 17 Jun 2020 16:38:58 +0800</pubDate><description><![CDATA[canvas生成二维码附带icon并实现下载
https://blog.youkuaiyun.com/chy555chy/article/details/85785819
利用 qrcode 生成二维码是不带 icon 的，去网上查找解决方案需要修改源码。
所以只好自己开搞了
效果如下：

代码如下
&lt;template&gt;
  &lt;div&gt;
    &lt;!-- 二维码和icon --&gt;
    &lt;img :src="rediusIconSrc" alt="ICON"&gt;
    ]]></description><category></category></item><item><title><![CDATA[css background属性合在一起写background-size background-positon]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/105990696</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/105990696</guid><author>fly_wugui</author><pubDate>Fri, 08 May 2020 10:55:06 +0800</pubDate><description><![CDATA[background：no-repeat scroll 56px 78px / 69px 69px rgba(0, 0, 0, 0) url(’…’);
background：no-repeat scroll 56px 78px（background-position）/（分割线） *69px 69px *（background-size ） rgba(0, 0, 0, 0);

...]]></description><category></category></item><item><title><![CDATA[判断一个对象是否为空]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/105767782</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/105767782</guid><author>fly_wugui</author><pubDate>Sun, 26 Apr 2020 15:07:02 +0800</pubDate><description><![CDATA[如何判断一个对象是否为空
1、利用 Object.keys 方法 该方法会返回当前对象内所有返回一个数组，成员是参数对象自身的（不含继承的）所有可遍历（enumerable）属性的键名。详情 Object.keys；
如果数组的长度不为空那么则说明对象不为空
使用方法如下：
	const obj = { name: '张三', age: 18, sex: '男' };
	let arr = Obj...]]></description><category></category></item><item><title><![CDATA[谈谈 Object.prototype.toString]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/105270887</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/105270887</guid><author>fly_wugui</author><pubDate>Thu, 02 Apr 2020 15:50:38 +0800</pubDate><description><![CDATA[ECMAScript 5
在ECMAScript 5中，Object.prototype.toString()被调用时，会进行如下步骤：

如果 this 是 undefined ，返回 object Undefined ；
如果 this是 null ， 返回 object Null ；
令 O 为以 this 作为参数调用 ToObject的结果；
令 class 为 O 的内部属性 [[Cl...]]></description><category></category></item><item><title><![CDATA[如何在 JSON 对象中调用数组的方法]]></title><link>https://blog.youkuaiyun.com/fly_wugui/article/details/105244123</link><guid>https://blog.youkuaiyun.com/fly_wugui/article/details/105244123</guid><author>fly_wugui</author><pubDate>Wed, 01 Apr 2020 13:55:35 +0800</pubDate><description><![CDATA[下面的代码输出结果是：
  let obj = {
    2:3,
    3:4,
    length: 2,
    push: Array.prototype.push
  }

  obj.push(1);
  obj.push(2);
  console.log(obj)

分析：
obj是一个对象里面有四个属性，包括push 方法，正常情况下对象是没有push() 方法的，那么pu...]]></description><category></category></item></channel></rss>