<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chdyiboke的博客]]></title><description><![CDATA[只要你想做的事，全世界都会给你让路]]></description><link>https://blog.youkuaiyun.com/chdyiboke</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chdyiboke]]></copyright><item><title><![CDATA[flutter点击空白处收起软键盘]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/106327683</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/106327683</guid><author>chdyiboke</author><pubDate>Mon, 25 May 2020 10:30:11 +0800</pubDate><description><![CDATA[取消TextField焦点(收起软键盘)


    body: GestureDetector(
        behavior: HitTestBehavior.translucent,
        onTap: () {
        // 触摸收起键盘
        FocusScope.of(context).requestFocus(FocusNode());
        },
        child: ...
    )

把GestureDetector放在body最外层。]]></description><category></category></item><item><title><![CDATA[从0开始--我的微信公众号]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/106308197</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/106308197</guid><author>chdyiboke</author><pubDate>Sat, 23 May 2020 23:40:41 +0800</pubDate><description><![CDATA[依稀记得大三开始养成了写博客的好习惯，已经快5年啦。

虽然一直没有间断过，但是在 csdn 上面，这一年没怎么发表博客吧。期间其实一直在写，只是不在这个平台，因为工作中基本都是写到 wiki 上，github 和自己的服务器上也有一些，上个月又申请了一个微信公众号。其实，让人有些烦恼，如果我写一篇博客，这么多平台要是都发布一下，会花不少时间。

没错，我是来推广公众号的，我的初心是自我成长和乐于分享。







当然，以后也会在 csdn 上面继续写下去，争取提供更高质量的文章，以前还处于入门阶段..]]></description><category></category></item><item><title><![CDATA[深入理解react中的虚拟DOM、diff算法]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/90718613</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/90718613</guid><author>chdyiboke</author><pubDate>Fri, 31 May 2019 17:01:45 +0800</pubDate><description><![CDATA[转：https://www.cnblogs.com/zhuzhenwei918/p/7271305.html

   

虚拟DOM和DOM之间的关系是什么呢？

　　Virtual DOM并没有完全实现DOM，即虚拟DOM和真正地DOM是不一样的，Virtual DOM最主要的还是保留了Element之间的层次关系和一些基本属性。因为真实DOM实在是太复杂，一个空的Element都复杂得...]]></description><category></category></item><item><title><![CDATA[对React的setState]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/90716680</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/90716680</guid><author>chdyiboke</author><pubDate>Fri, 31 May 2019 15:42:45 +0800</pubDate><description><![CDATA[官网：https://reactjs.org/docs/react-component.html

先看一个例子：


constructor(){
    this.state={
        val:0,
    }
}
componentDidMount(){
    this.setState({val:this.state.val+1});
    console.log(this....]]></description><category></category></item><item><title><![CDATA[react-component-新生命周期]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/90714785</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/90714785</guid><author>chdyiboke</author><pubDate>Fri, 31 May 2019 15:02:17 +0800</pubDate><description><![CDATA[官方文档：https://reactjs.org/docs/react-component.html



新增两个

static getDerivedStateFromProps
	会在初始化和update时触发，用于替换componentWillReceiveProps，可以用来控制 props 更新 state 的过程；它返回一个对象表示新的 state；如果不需要更新，返回 null...]]></description><category></category></item><item><title><![CDATA[js连续赋值 a.x = a = {n: 2}]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/90543514</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/90543514</guid><author>chdyiboke</author><pubDate>Sat, 25 May 2019 09:58:28 +0800</pubDate><description><![CDATA[下面就是这个经典案例：


var a = {n: 1}；
var b = a;
a.x = a = {n: 2}；

console.log(a);
console.log(b);
console.log(a.x);
console.log(b.x)；

先来看一下普通连续赋值，即：变量赋值的类型是数据类型值




    var a=3;
    var b=a=5;
    consol...]]></description><category></category></item><item><title><![CDATA[js二叉树反转]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/90543336</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/90543336</guid><author>chdyiboke</author><pubDate>Sat, 25 May 2019 09:15:33 +0800</pubDate><description><![CDATA[如果根节点不为空，左右节点交换，很简单：



function invertTree(root) {
  if (root !== null) {
    var temp = root.left;
    root.left = root.right;
    root.right = temp;
    invertTree(root.left); 
    invertTree(root....]]></description><category></category></item><item><title><![CDATA[原型链并没有那么复杂(图)]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/90510124</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/90510124</guid><author>chdyiboke</author><pubDate>Fri, 24 May 2019 08:58:30 +0800</pubDate><description><![CDATA[先看个例子：


 var Animal = function(){};
 var Dog = function(){};

 Animal.name = 'animal';  
 Dog.prototype = Animal;  
 var tidy = new Dog();


 console.log(Dog.name) //undefined
 console.log(tidy.name)...]]></description><category></category></item><item><title><![CDATA[GET和POST的区别]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/90452892</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/90452892</guid><author>chdyiboke</author><pubDate>Wed, 22 May 2019 21:49:11 +0800</pubDate><description><![CDATA[GET和POST是什么？HTTP协议中的两种发送请求的方法。

HTTP是什么？HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。

  在我大万维网世界中，TCP就像汽车，我们用TCP来运输数据，它很可靠，从来不会发生丢件少件的现象。但是如果路上跑的全是看起来一模一样的汽车，那这个世界看起来是一团混乱，送急件的汽车可能被前面满载货物的汽车拦堵在路上，整个交通系统一定会瘫痪。为...]]></description><category></category></item><item><title><![CDATA[实现一个数组的map方法]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/90452579</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/90452579</guid><author>chdyiboke</author><pubDate>Wed, 22 May 2019 21:29:12 +0800</pubDate><description><![CDATA[大概手写一下吧。




Array.prototype.map( x =&gt; x+1)

//实现一个map1
Array.prototype.map1= function (callback){
	
	let newArr = [];
	let that = this;
	for(let i=0;i&lt;that.length;i++){
		
		newArr.push(callba...]]></description><category></category></item><item><title><![CDATA[删除数组连续重复的元素]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/90340567</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/90340567</guid><author>chdyiboke</author><pubDate>Sun, 19 May 2019 11:27:52 +0800</pubDate><description><![CDATA[input [1,3,4,4,1,7,7,7]

output [1,3,4,1,7]




	/*
	 * 相邻去重
	 * 
	 */
	function remove(arr){
		var newArr =[];
		newArr = [...arr];  //拷贝数组
		//var newArr = JSON.parse(JSON.stringify(arr));
		for(...]]></description><category></category></item><item><title><![CDATA[async,Await原理最暴力解读]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/90318236</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/90318236</guid><author>chdyiboke</author><pubDate>Sat, 18 May 2019 17:49:20 +0800</pubDate><description><![CDATA[async,Await 其实就是promise的封装，使用编译技术自动将async,Await转化为promise,为了更好的理解async,Await是什么？我们使用转换工具来分析
async/await转换工具安装
$sudonpminstallbabel-plugin-async-to-promises-g
$babel--pluginsasync-to-promis...]]></description><category></category></item><item><title><![CDATA[git命令--解决冲突]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/90200323</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/90200323</guid><author>chdyiboke</author><pubDate>Tue, 14 May 2019 10:21:22 +0800</pubDate><description><![CDATA[当2个人同时修改一个文件，push或者pull会报错。

这时我们需要执行 git merge （merge 前需要先 commit）


//你修改的文件，已经被他人修改  下面pull报错
git pull
git add .
git commit -m 'commit'
git merge

//手动修改冲突文件
git add .
git commit -m 'merge'
git ...]]></description><category></category></item><item><title><![CDATA[webpack 打包过程]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/90137030</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/90137030</guid><author>chdyiboke</author><pubDate>Sun, 12 May 2019 09:20:26 +0800</pubDate><description><![CDATA[Webpackchunk多文件的打包过程

如下图异步：



详情：https://segmentfault.com/a/1190000019117897
]]></description><category></category></item><item><title><![CDATA[node同步解压文件（async/await]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/89949535</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/89949535</guid><author>chdyiboke</author><pubDate>Wed, 08 May 2019 12:33:58 +0800</pubDate><description><![CDATA[使用 async/await


function unzipSync(fileName,mbDir) {
  return new Promise((resolve, reject) =&gt; {
    fs.createReadStream(fileName).pipe(unzip.Extract({ path: mbDir 
      })).on('close', () =&gt...]]></description><category></category></item><item><title><![CDATA[​​​​​​​git强制覆盖本地]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/89669595</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/89669595</guid><author>chdyiboke</author><pubDate>Mon, 29 Apr 2019 10:26:43 +0800</pubDate><description><![CDATA[解决冲突的方式，本地版本和 线上一致。


  git fetch --all
  git reset --hard origin/master
  git pull
]]></description><category></category></item><item><title><![CDATA[git创建分支（git checkout -b）]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/89669268</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/89669268</guid><author>chdyiboke</author><pubDate>Mon, 29 Apr 2019 10:13:48 +0800</pubDate><description><![CDATA[$ git checkout -b develop

＃已经切换到develop分支了
$ git branch

＃线上分支
git push origin develop

＃切换回master分支
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'....]]></description><category></category></item><item><title><![CDATA[node 解压文件夹]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/89523977</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/89523977</guid><author>chdyiboke</author><pubDate>Thu, 25 Apr 2019 19:55:54 +0800</pubDate><description><![CDATA[文件夹的解压，因为windows不能使用 zip/ unzip 2个命令；然后想着引入node的包。推荐：unzip-stream

  安装：


npm install unzip-stream

 

  引入：


var fs = require("fs-extra");   //或者 fs
unzip = require("unzip-stream");  
...]]></description><category></category></item><item><title><![CDATA[js传递参数都是值传递]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/89323919</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/89323919</guid><author>chdyiboke</author><pubDate>Tue, 16 Apr 2019 00:46:02 +0800</pubDate><description><![CDATA[ECMAScript中所有参数传递都是值，不可能通过引用传递参数




var obj = '111';

function ddd(obj){
    obj = '222';
} 
ddd(obj);
console.log(obj);

输出： 111


const obj2 ={a:'111'};  
//let obj2 ={a:'111'};  
//var obj2 ={a:...]]></description><category></category></item><item><title><![CDATA[promise、async和await]]></title><link>https://blog.youkuaiyun.com/chdyiboke/article/details/89323499</link><guid>https://blog.youkuaiyun.com/chdyiboke/article/details/89323499</guid><author>chdyiboke</author><pubDate>Mon, 15 Apr 2019 23:31:18 +0800</pubDate><description><![CDATA[setTimeout(function(){console.log(3)},0)

async function a() {
    await console.log(1)
    console.log(2)
}

async function b() {
    await　a();
}

b();


输出：(宏任务微任务)

1

2

3


async function testS...]]></description><category></category></item></channel></rss>