草庐IT

Await-Tree

全部标签

关于ES9中 for await of ... 异步迭代器

今天在逛知乎时看到了一个ES9的异步迭代器forawaitof...,于是就随便写写来测试了一下效果,以下是测试案例。functiontimer(t){returnnewPromise(resolve=>{setTimeout(()=>{resolve(t)},t)})}//第一种循环方式结果为异步4000ms后依次输出1000200030004000for(consttimeFnof[timer(4000),timer(3000),timer(2000),timer(1000)]){timeFn.then(res=>{console.log(res)})}//第二种循环方式结果为同步1000

索引 - B+Tree

B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(Binary),因为B+树是从最早的平衡二叉树演化而来的。二叉查找树二叉树性质:左子树的键值小于根的键值,右子树的键值大于根的键值二叉树搜索相当于一个二分查找,时间复杂度可以达到O(log2(n))二叉树以第一个插入的数据作为根节点,在数据基本有序的情况下,二叉树的构建基本上就是一个线性链表结构。查找最后一个数据等于遍历整个链表,查询效率很低,不稳定。平衡二叉树(AVLTree)平衡二叉树(AVL树)是一颗空树或它的左右两个子树的高度差的绝对值不能超过1,并且

索引 - B+Tree

B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(Binary),因为B+树是从最早的平衡二叉树演化而来的。二叉查找树二叉树性质:左子树的键值小于根的键值,右子树的键值大于根的键值二叉树搜索相当于一个二分查找,时间复杂度可以达到O(log2(n))二叉树以第一个插入的数据作为根节点,在数据基本有序的情况下,二叉树的构建基本上就是一个线性链表结构。查找最后一个数据等于遍历整个链表,查询效率很低,不稳定。平衡二叉树(AVLTree)平衡二叉树(AVL树)是一颗空树或它的左右两个子树的高度差的绝对值不能超过1,并且

LSM Tree 数据库底层索引

数据库中非常常用的索引数据结构——B+树,在过去很多年里它都是数据库索引的首选实现方式,但是这种数据结构也并不是很完美。因为,每次修改数据都很有可能破坏B+树的约束,我们需要对整棵树进行递归的合并、分裂等调整操作,而不同节点在磁盘上的位置很可能并不是连续的,这就导致我们需要不断地做随机写入的操作,而随机写入的性能是比较差的,这个问题在写多读少的场景下会更加明显。LSMTree(LogStructureMergeTree)是比B+树更适合写多读少场景的索引结构,也广泛应用在各大NoSQL中。比如基于LSM树实现底层索引结构的RocksDB、LevelDB。LSMTree的实现原理:LSM树包含了

LSM Tree 数据库底层索引

数据库中非常常用的索引数据结构——B+树,在过去很多年里它都是数据库索引的首选实现方式,但是这种数据结构也并不是很完美。因为,每次修改数据都很有可能破坏B+树的约束,我们需要对整棵树进行递归的合并、分裂等调整操作,而不同节点在磁盘上的位置很可能并不是连续的,这就导致我们需要不断地做随机写入的操作,而随机写入的性能是比较差的,这个问题在写多读少的场景下会更加明显。LSMTree(LogStructureMergeTree)是比B+树更适合写多读少场景的索引结构,也广泛应用在各大NoSQL中。比如基于LSM树实现底层索引结构的RocksDB、LevelDB。LSMTree的实现原理:LSM树包含了

ES6学习(17)async和await

async用来声明一个异步函数,返回值是一个promise对象,结合await使用,使异步代码看起来像同步代码。async可以单独使用如果没有返回值,则返回的状态是resolved,值是undefined如果返回值是一个非promise类型,则返回的状态是resolved,值就是返回的这个值。如果抛出错误,则返回的状态就是rejected如果返回的值是一个promise,则async的状态和返回的promise保持一致。await一般await后面跟一个promise,如果跟的是一个promise,要等这个函数执行完成(成功),才会执行下面的逻辑。注意:如果是rejected,则下面的也是不执

ES6学习(17)async和await

async用来声明一个异步函数,返回值是一个promise对象,结合await使用,使异步代码看起来像同步代码。async可以单独使用如果没有返回值,则返回的状态是resolved,值是undefined如果返回值是一个非promise类型,则返回的状态是resolved,值就是返回的这个值。如果抛出错误,则返回的状态就是rejected如果返回的值是一个promise,则async的状态和返回的promise保持一致。await一般await后面跟一个promise,如果跟的是一个promise,要等这个函数执行完成(成功),才会执行下面的逻辑。注意:如果是rejected,则下面的也是不执

JS异步操作(Promise,async,await)详解

文章序Promise,async,await都是ES6新增的用于处理异步操作/异步方法的关键字,建议在阅读本文前先搞清楚JS的单线程,异步同步,事件循环,可以参考我这篇文章https://www.jianshu.com/p/fca83f1c4702PromisePromise可以将异步代码转化成同步代码,then方法中的回调函数只有在resolve之后才会执行asyncawaitasync包裹的函数中必定出现await,await右边跟随promise,当promise内部代码执行完毕再执行await下面的代码,promise未执行完毕await下面的代码将阻塞相关代码functiongetP

JS异步操作(Promise,async,await)详解

文章序Promise,async,await都是ES6新增的用于处理异步操作/异步方法的关键字,建议在阅读本文前先搞清楚JS的单线程,异步同步,事件循环,可以参考我这篇文章https://www.jianshu.com/p/fca83f1c4702PromisePromise可以将异步代码转化成同步代码,then方法中的回调函数只有在resolve之后才会执行asyncawaitasync包裹的函数中必定出现await,await右边跟随promise,当promise内部代码执行完毕再执行await下面的代码,promise未执行完毕await下面的代码将阻塞相关代码functiongetP

利用print.js + el-tree 动态修改打印字段(支持全选所有字段)

         >全选    >             :data="treePrintData"     ref="treePrintData"     show-checkbox     default-expand-all     node-key="id"     :props="defaultProps"    >      handleCheckAllChange(val){   if(this.checkAll){    //全选    this.$refs.treePrintData.setCheckedNodes(this.treePrintData);   }else{