为什么会有Event Loop?这就要从Javascript的特点“单线程”开始说起了。
单线程是什么?意思就是在一个时间内程序只能做一件事。很多人都用过Java或者C++之类的语言,肯定能体会到这些语言的多线程带来的很多便捷性。然而,Javascript在设计之初的定位是用来处理用户交互以及操作DOM,如果Javascript也设计成多线程,势必会带来很复杂的同步问题。
未来的事无人知晓, 所以才有无穷可能
为什么会有Event Loop?这就要从Javascript的特点“单线程”开始说起了。
单线程是什么?意思就是在一个时间内程序只能做一件事。很多人都用过Java或者C++之类的语言,肯定能体会到这些语言的多线程带来的很多便捷性。然而,Javascript在设计之初的定位是用来处理用户交互以及操作DOM,如果Javascript也设计成多线程,势必会带来很复杂的同步问题。
Flux是一种在应用程序中管理数据流动的模式,其中最重要的概念是数据是单向流动的。在这篇文章中我们将会讨论使用Flux设计应用程序的不同之处,并且展示数据是如何在应用程序中单向流动的。
列表布局的方式有很多,我目前在项目中大量使用的方式有2种。
一种是使用display: inline-block;
来达到列表布局的目的。
还有一种是使用float: left / right;
来做到列表布局。
更早些的全局<table/>
的方式目前见的比较少,而当下使用最新的CSS3
的display: flex
在一些主流网站上也可以看见其身影。
今天我来说说前两种方式。
flex布局无疑在移动端、PC端(ie10+)大大简化了前端的代码量,但是其存在的兼容性问题也不能被忽略,不同的浏览器解析flex的方式可能有所不同。用flex布局经常会发生一些奇怪的现象,而且flex套flex总是会觉得代码被污染…就很烦很难受。
这里着重分析了一种在safari和chrome两个浏览器下,对height: 100%的flex兼容性问题。
任何程序设计语言都有作用域,简单的说,作用域就是变量或函数的可访问范围。作用域控制着变量与函数的可访问性与生命周期。
在绝大部分程序设计语言中,作用域的范围有全局作用域、函数作用域、块级作用域。
然而对于Javascript
(ES5)来说,不存在块级作用域。
在Javascript中,大致存在两种对象:普通对象和函数对象。
一般而言,通过new Function()
创建的对象是函数对象,其他的是函数对象。每当创建函数对象时,该对象中都会内置一些属性,其中包括prototype
和__proto__
。prototype
即为原型对象
其内记录着函数对象的一些属性和方法。
prototype
的主要作用是继承。prototype
内定义的属性和方法都是留给自己的后代使用的。
说到后代,就必须说说js
中的原型链。此时,另一个属性__proto__
就登场了。
在使用React
的时候,根据官方文档,发现了两种创建组件的方式。一种是使用React.createClass({})
的方式来创建,还有一种是使用ES6
的class并继承React.Component
来创建。 刚开始学的时候自己觉得有点迷,并且一直都是使用ES6
语法来创建组件(毕竟先进嘛)。这段时间稍稍有空,来钻研一下两者之间的区别。
最近在使用ExecutorService的时候,对其关闭操作的概念非常模糊。查阅了许多文章、问答之后,有了一个总结。
shutdown
:
SHUTDOWN
状态;shutdown()
方法之前提交到ExecutorSrvice
的任务都会执行;ExecutorService
才会真正关闭。shutdownNow()
:
STOP
状态;