stay hungry stay foolish

  • 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分钟
    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+...…
  • June 05, 2018 前端优化 阅读时长 ~ 1分钟
    前端性能优化之-force reflow
    reflow一般来说,页面的 reflow(重排)都是异步的,但是如果在 render 树已经更改的前提下,我们使用 JavaScript 获取元素的一些特殊属性或者执行了某些方法,将会使 Recalculate Style(样式计算)或 Layout(布局计算)同步执行。以下是会触发同步Recalculate Style 和 Layout 的一些常见的属性和方法。元素获取元素布局相关的属性及方法: elem.offsetLeft elem.offsetTop elem.offset...…
  • June 04, 2018 前端优化 阅读时长 ~ 4 分钟
    前端性能优化之-Event Loop
    Event Loop To coordinate events, user interaction, scripts, rendering, networking, and so forth, user agents must use event loops as described in this section. There are two kinds of event loops: those for browsing contexts, and those for workers...…
  • June 01, 2018 前端优化 阅读时长 ~ 1分钟
    前端性能优化之-Chrome timing详解
    Queued at: 请求加入到队列中的时间点(相对于 HTML 文档下载完成的时间)。 Started at: 从队列里取出请求,并开始发送请求的时间点(相对于 HTML 文档下载完成的时间)。 Queueing: 请求在队列里排队所花费的时间。相比关键资源(JavaScript、CSS),图片等资源的优先级比较低,通常会被浏览器放在队列中延迟请求。 Stalled: 请求被阻塞的时间。有多种情况会使请求被阻塞,典型的有如下两种: TCP 连接验证。TCP三次...…