0%

从URL到页面渲染

每一个搞web开发都需要了解的知识,长期更新不断完善

从URL到网络请求

  1. 解析URL解析URL的协议名,域名,端口号,路径,查询参数(?),哈希值(# )等。

  2. DNS解析如果有相应的浏览器缓存或本地缓存,则直接使用缓存,不进行DNS解析。如果没有相应的DNS缓存,则访问DNS服务器,进行DNS解析,查询出域名对应的IP地址。

  3. 建立TCP/IP连接:通过三次握手建立与服务器的连接(长连接或短连接),在此之后发送具体的请求到服务器,等待服务器的响应。浏览器根据请求作出应答,返回数据包。最后当关闭连接时,双方进行通过四次挥手断开连接。

页面渲染

浏览器渲染流程

浏览器的主要功能就是向服务端发送请求,下载解析资源显示在浏览器上。将网页内容展示到浏览器上的过程,这其实就是渲染引擎完成的。渲染引擎有很多种,这里以 webkit 为例。

WebKit 渲染引擎的主流程

从上面这个图上,我们可以看到,浏览器渲染流程如下:

  1. 解析 HTML Source,生成 DOM 树。
  2. 解析 CSS,生成 CSSOM 树。
  3. 将 DOM 树和 CSSOM 树结合,去除不可见元素,生成渲染树( Render Tree )。
  4. Layout (布局):根据生成的渲染树,进行布局( Layout ),得到节点的几何信息(宽度、高度和位置等)。
  5. Painting (重绘):根据渲染树以及回流得到的几何信息,将 Render Tree 的每个像素渲染到屏幕上。
阅读全文 »

Rsync命令参数详解

在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来。rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。

Rsync的命令格式可以为以下六种:

阅读全文 »

背景

随着可视化需求的增多,以及可视化行业商业化的发展。从前小作坊式的纯手工生产不能再满足大量的业务需求,这时一些业界优秀的企业纷纷开始了对可视化页面的工业化生产。本文粗略的介绍一些可视化前端的工业化体系。

阅读全文 »

矩阵树(Treemap)

矩阵树,是层级布局(Hierarchy)的一种

该模块依赖一个层级布局(Hierarchy)结果,和一个画布区大小(size)。输出一个矩阵树数据(Treemap),矩阵树数据(Treemap)本质上是给层级布局(Hierarchy)写入了两个坐标,这两个坐标构成的区域即为该分区的可视化信息。详情见[基本数据](# 基本数据)。

阅读全文 »

分区(Partition)

分区图,是层级布局(Hierarchy)的一种

该模块依赖一个层级布局(Hierarchy)结果,和一个画布区大小(size)。输出一个分区数据(Partition),分区数据(Partition)本质上是给层级布局(Hierarchy)写入了两个坐标,这两个坐标构成的区域即为该分区的可视化信息。详情见[基本数据](# 基本数据)。

阅读全文 »

堆叠图(Stack)

该模块依赖数据项(keys)其提供了原始数据数据(data)中所需要堆积的数据项的条目。最终返回堆积数据(stackData)。堆积数据包含原始数据数据(data)中每一项的所占的起始值和结束值。详情见[基本数据](# 基本数据)。

阅读全文 »

直方图(histogram)

直方图(Histogram),又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。

直方图是数值数据分布的精确图形表示。 这是一个连续变量(定量变量)的概率分布的估计,并且被卡尔·皮尔逊(Karl Pearson)首先引入。它是一种条形图。 为了构建直方图,第一步是将值的范围分段,即将整个值的范围分成一系列间隔,然后计算每个间隔中有多少值。 这些值通常被指定为连续的,不重叠的变量间隔。 间隔必须相邻,并且通常是(但不是必须的)相等的大小。

直方图也可以被归一化以显示“相对”频率。 然后,它显示了属于几个类别中的每个案例的比例,其高度等于1。

该模块依赖一个区间(domain)以及阈值(threshold),统计数据(data)的分布情况,输出一个分箱(bins)每个划分了箱子的范围以及包含的值,区间限定了值的范围,通常为数据(data)值的范围,阈值(threshold)规定了每个箱子的范围。详情见[基本数据](# 基本数据)。

阅读全文 »

分治法(Divide and Conquer)

分治法本质上是把一个复杂的问题分解成很多规模较小的子问题,然后解决这些子问题,所有子问题解决时,大问题便已经解决。核心是分解成的子问题是相同种类的子问题,主要操作是将大问题分解成很多子问题、解决这些问题,解决的子问题合并从而解决整个大问题

阅读全文 »

二分法本质上是是一种快速搜索策略。核心是每次将搜索空间平均分成两份,确定问题集中其中一个区间,继续将空间平分以确定问题所在, 主要操作是将问题空间二分

阅读全文 »

回溯法(Backtracking)

回溯法本质上是一种,既带有系统性又带有跳跃性的的搜索算法 核心是状态,记录状态,进入状态,状态探索完毕之后,满足或不满足条件都回溯上一个状态。主要操作是递归

阅读全文 »