深入理解JavaScript中的EventLoop原理

深入理解JavaScript中的EventLoop原理

浏览器的多进程架构

在浏览器刚被设计出来的时候,那时的网页非常的简单,每个网页的资源占有率是非常低的,因此一个进程处理多个网页时可行的。然后在今天,大量网页变得日益复杂。把所有网页都放进一个进程的浏览器面临在健壮性,响应速度,安全性方面的挑战。

  • 健壮性:现代浏览器大多都是多tab架构,如果所有的tab都存在于一个进程内部的话,如果其中的一个tab崩溃,会影响其他的tab
    ,为每个tab分配一个进程,则会有效避免这个问题。

  • 响应速度:这个不赘述。

  • 安全性:由于同一进程内的线程是共享资源与地址空间的,所以如果把不同的网页放在同一进程内,可能会导致数据泄露等问题。

阅读更多
写一个脚本自动发布你的GitBook

写一个脚本自动发布你的GitBook

GitBookBuild以后,会产生一个_book的目录,里面存放着整个html
目录.只要将这个目录发布到你的Page中,就可以实现GitPage了.

前提

  • 先创建一个空的GitRepo.
  • Repo中创建两个Branch, 一个为书写Branch,在本例中为write,另一个为发布branch,在本例中为master.
  • 将下面的脚本加入书写branch中.
阅读更多
使用TensorFlow和感知机模型进行MNIST手写数字识别

使用TensorFlow和感知机模型进行MNIST手写数字识别

MNIST数据集

MNIST 数据集来自美国国家标准与技术研究所, National Institute of Standards and Technology (NIST).
训练集 (training set) 由来自 250 个不同人手写的数字构成, 其中 50% 是高中学生, 50%
来自人口普查局 (the Census Bureau) 的工作人员. 测试集(test set) 也是同样比例的手写数字数据.

数据集的划分

MNIST 数据集可在 http://yann.lecun.com/exdb/mnist/ 获取, 它包含了四个部分:

  • Training set images: train-images-idx3-ubyte.gz (9.9 MB, 解压后 47 MB, 包含 60,000 个样本)

  • Training set labels: train-labels-idx1-ubyte.gz (29 KB, 解压后 60 KB, 包含 60,000 个标签)

  • Test set images: t10k-images-idx3-ubyte.gz (1.6 MB, 解压后 7.8 MB, 包含 10,000 个样本)

  • Test set labels: t10k-labels-idx1-ubyte.gz (5KB, 解压后 10 KB, 包含 10,000 个标签)

阅读更多
Babel到底对jsx做了什么?

Babel到底对jsx做了什么?

JSX是个啥?

jsx其实不是个新鲜东西,就是react的一个语法糖。他提供了一种方式,让我们可以在JavaScript代码中编写类似于html
标签的内容,并且会在最终编译的过程中自动将这些HTML标签转换为React可以处理的代码。

阅读更多
JavaScript闭包到底解决了什么问题?

JavaScript闭包到底解决了什么问题?

JavaScript中的闭包到底是个什么东西

JavaScript中的闭包其实是一个让函数返回另一个内部函数的过程,我们都知道,JavaScript中,函数其实也是一个变量,或者说是对象,所以,对于上述的过程,我们就能够理解,这种方式是能够被实现的。

闭包的具体实现方式:

阅读更多