stay hungry stay foolish

  • September 30, 2018 JS数据结构 阅读时长 ~ 1分钟
    JS数据结构-红黑树
    红黑是一棵特殊的平衡二叉树,其没有AVL树那么严格,其查找时间复杂的为2log2N,在实际开发中更加常用。红黑树的特性 根节点为黑色; 不存在两个连续的红色节点; 叶子节点为NULL的黑色节点; 根节点到每个叶子节点所经过的黑色节点个数一致;红黑树的插入当插入的节点为根节点时,直接将根节点颜色置为黑色。为了减少调整的次数,插入的子节点默认置为红色,当插入的节点的父节点为黑色时候,此时没有破坏红黑树的特征,不需要调整树。当插入的节点的父节点为红色时,此时需要对树进行调整,主要有以...…
  • September 27, 2018 JS数据结构 阅读时长 ~ 1分钟
    JS数据结构-AVL平衡二叉树
    平衡二叉树是一棵特殊的二叉排序树,可以快速的实现查找,其查找时间复杂的为log2N。平衡二叉树的特性 具备二叉排序树的所有特性; 左子树和右子树深度差的绝对值不超过1; 左右子树都是平衡二叉树;在插入过程中,二叉树的平衡性可能遭到破坏,这时需要对二叉树进行调整。LL型失衡左子树高度减去右子树的高度大于1。//左旋转_proto._lRotate = function(node) { var rc = node.rChild; rc.pNode = node.pNode...…
  • July 17, 2018 JavaScript 阅读时长 ~ 1分钟
    js复制文本到剪贴板
    var Util = { //获取选中的文本 getSelectedText: function() { if (document.selection) { return document.selection.createRange().text; } else if (window.getSelection) { return window.getSelection().toString(); }...…
  • June 28, 2018 开发工具 阅读时长 ~ 1分钟
    vscode搭建mac环境下c/c++开发环境
    第一步安装 C/C++ 扩展第二步选中项目中的C文件后,打开控制面板,使用C/C++:Edit Configurations命令自动生成c_cpp_properties.json文件c_cpp_properties.json:{ "configurations": [ { "name": "Mac", "includePath": [ "${workspaceFolder}/**" ...…
  • June 28, 2018 开发工具 阅读时长 ~ 1分钟
    git rebase
    git rebase commitid该命令可以把另一个分支的最新 commit 改变为当前分支的基础。在改动中会把不一致的本分支 commit 保存,把另一个分支的 commit 加载过来,然后把之前保存的 commit 打上新的时间戳放在后面,简称“变基”。rebase 过程是与提交时间无关的。在 dev 分支执行git rebase master解决完第一个冲突后add到暂存区git rebase --continue继续解决下一个冲突(总共有两个冲突)最终结果:git rebase...…
  • June 25, 2018 vue 阅读时长 ~ 3 分钟
    vue diff算法
    前端中的 diff 算法vue 的 diff 算法 和 react 的 diff 算法大同小异,节点的所有子节点为一层,比较只会在同层级进行(也即比较新旧节点树上相对应/相同节点的所有子节点), 不会跨层级比较。vue diff 的实现vue 对于同层级的比较是从两端往中间逐个比较的,也即 newStartVnode(新层未比较的第一个节点)、newEndVnode(新层未比较的最后一个节点)与 oldStartVnode(旧层未比较的第一个节点)、oldEndVnode(旧层未比较的最后...…
  • June 22, 2018 web安全 阅读时长 ~ 1分钟
    xss攻击
    跨站脚本攻击(Cross Site Scripting)本来的缩写为CSS,为了与层叠样式表(Cascading Style Sheets,CSS)的缩写进行区分,将跨站脚本攻击缩写为XSS。XSS 是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。攻击者利用XSS漏洞躲避访问控制——例如同源策略(same origin policy)。XSS 攻击XSS 攻击通常分为两种: 反射型 存储型反射型即攻击脚本不需要存储,攻击脚本...…
  • June 15, 2018 webkit 阅读时长 ~ 1分钟
    webkit学习笔记-(8)硬件加速机制
    硬件加速基础对于 GPU 绘图而言,通常不像软件渲染那样只是计算其中更新的区域,一旦有更新请求,如果没有分层,引擎可能需要重新绘制所有的区域,因为计算更新部分对 GPU 来说可能耗费更多的时间。当网页分层以后,GPU 渲染只需要绘制对应的 RenderLyaer 对象的所有内容(对于 TileLayer 不是这样的情况),并将它们和之前的层合成起来即可。硬件渲染机制在 RenderLayer 树建立之后需要做三件事来完成之后的网页渲染: 将某些不满足条件的 RenderLayer 对象组...…
  • June 14, 2018 webkit 阅读时长 ~ 1分钟
    webkit学习笔记-(7)渲染基础
    RenderObject 树对于可视节点(head、meta 等为非可视节点),Webkit 会为它们建立相应的 RenderObject 对象,这个对象保存了为绘制 DOM 节点所需要的各种信息。这些 RenderObject 对象同 DOM 节点一样,也会构成一棵树,称为 RenderObject 树。每个 DOM 对象都会递归调用 attach 函数,该函数检查 Element 对象是否需要创建 RenderObject,如果需要,则调用 NodeRenderingContext 类...…
  • June 12, 2018 JS数据结构 阅读时长 ~ 1分钟
    JS数据结构-KMP算法
    KMP 算法核心思想为:通过为模式串建立失败链接,使主串在匹配时不需要回溯索引。T 为主串,P 为模式。当 P 在 Pn 匹配失败的时候,此时 P1 需要从 T2…Tn 范围内重新开始匹配,假设匹配了 Xn-k,Xn-k+1...Xn-1,则此时 Xn-k,Xn-k+1...Xn-1 == Y1,Y2...Yk,则必然有 Zn-k,Zn-k+1...Zn-1 == Y1,Y2...Yk。X1 的位置并不一定等于 T2,根据此原理,当模式 P 在 n 位置匹配失败的时候,应该使用 Yk+...…