变量提升是每个JS开发人员都听说过的那些术语之一,因为你在搜索引擎上搜索烦人的错误,并且最终到StackOverflow上查找时,有人会告诉你这个错误是因为变量提升(hoisting)导致的。那么,什么是变量提升呢?(BTW,作用域会在另一篇文章中介绍,我希望保持文章小而专注)

阅读全文 »

事件循环(Event Loop)是所有JavaScript开发者无论如何都要搞定的知识点之一,但是对于初学者来说,最初理解起来可能会有点困难。本文通过低分辨率的gif图像,以可视化的形式直观地讲解事件循环的机制。

阅读全文 »

UML图有很多种,但是并非必须掌握所有的UML图,才能完整系统分析和设计工作。一般说来,在UML图中,只要掌握类图、用例图、时序图的使用,就能完成大部分的工作。也就是说,掌握UML的20%,就能做80%的事情。对于程序员来说,最频繁使用的莫过于类图。因此,这里我们只讲解UML类图。至于其它UML图,请在以后的工作中参阅更多UML学习资料继续学习。

类图是面向对象系统建模中最常用和最重要的图,是定义其它图的基础。类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。类图中最基本的元素是类、接口。软件设计师设计出类图后,程序员就可以用代码实现类图中包含的内容。

阅读全文 »

原文地址:https://blog.takipi.com/jvm-architecture-101-get-to-know-your-virtual-machine/

alt

Java应用程序无处不在,它们在我们的手机上,平板上,电脑上。在很多编程语言中,这意味着为了让它运行在不同的操作系统上,要多次编译代码。对于我们开发人员,可能Java最酷的事情就是它被设计为平台无关的(正如老话所言:一次编写,到处运行),所以我们只需要编写和编译代码一次。

这怎么可能呢?下面我们深入研究一下Java虚拟机(JVM)来探个究竟。

阅读全文 »

在对锚点元素 a 设置样式时,一般我们都知道 Love or hate 规则,即必须按照如下的顺序写选择器:

1
2
3
4
5
a { ... }
a:link { ... }
a:visited { ... }
a:hover { ... }
a:active { ... }

背后的原理其实很简单,即按照CSS层叠规则,后出现的样式会覆盖先出现的样式。这里我就不多说了。

原本以为记住 Love or hate 规则就没啥问题了,今天被同事一问,才发现还有东西没搞清楚呢。

阅读全文 »

原文地址:https://medium.com/javascript-scene/javascript-factory-functions-with-es6-4d224591a8b1

工厂函数是既不是类,也不是构造函数,但返回值是(可能是新的)对象的任何一个函数。在JavaScript中,任何函数都可以返回一个对象。当没有new关键字时,它就是一个工厂函数。

由于工厂函数提供了轻松生成对象实例的能力,又无需深入学习类和new关键字的复杂性,因此工厂函数在JavaScript中一直很具吸引力。

阅读全文 »

原文:http://www.zcfy.cc/article/4011

结构化查询语言(SQL)是数据科学行业中一项不可或缺的技能,一般来说,学习这个技能是挺容易的。不过,很多人都忘记了写查询只是SQL的第一步。我们还得确保查询性能优异,或者符合正在工作的上下文环境。

正因为如此,本SQL教程将让你瞧瞧某些步骤,我们可以通过这些步骤来评估查询:

  • 首先,我们从简要介绍数据科学工作中学习SQL的重要性开始;

  • 接下来,我们将首先学习更多有关SQL查询处理和执行的信息,这样就可以正确理解编写高质量查询的重要性:更具体地说,就是我们将看到查询被解析、重写、优化和最终求值;

  • 考虑到这一点,我们不仅会重温初学者在编写查询时所做的一些查询反模式,而且还会学习更多针对那些可能的错误的替代方案和解决方案;还会学到更多有关基于集合的查询方法与过程式查询方法的知识。

  • 我们还会看到,这些反模式源于性能考虑,并且除了用“手动”方法来提升SQL查询之外,还可以通过使用能帮助我们查看查询计划的一些其他工具,以更结构化、更深入的方式分析查询;并且,

  • 我们会大致进一步深入时间复杂度和大O表示法,从而在执行查询之前,搞清楚执行计划的时间复杂度;最后,

  • 我们会大致获得一些关于如何进一步调整查询的指示。

阅读全文 »

原文链接:http://jamesknelson.com/the-six-things-you-need-to-know-about-babel-6/

近年来Babel已经成为一种将ES2015和JSX转化为传统JavaScript代码的必备工具。但是Babel6相对以前的版本改变巨大。以前的babel包已经废弃了,直接运行babel已经没办法将ES2015转化为ES5,以前的文档也下架了。

但是不要慌,为了让你跟上变化,我整理了6大重要的变化清单,如果你觉得还不够,可以参考我的文档ES6和Babel6完全指南手册,里面覆盖了大量的实践,还有CLI, Webpack, Mocha和 Gulp等知识点。

阅读全文 »

原文:http://www.zcfy.cc/article/4033

几周前,我们开始写旨在深入挖掘JavaScript及其工作机制的一系列文章:我们认为,通过了解JavaScript的构造单元以及这些构造单元如何组织在一起,您就能够编写更好的代码和应用程​​序。

该系列的第一篇文章重点是提供一个对引擎、运行时和调用栈的概述。这第二篇文章将会深入Google V8 JavaScript引擎的内部。我们还将提供如何编写更佳 JavaScript 代码的一些小技巧 - 这也是我们 SessionStack 开发团队在构建产品时遵循的最佳实践。

阅读全文 »