随便翻开一本 Node.js 入门书籍的绪论部分,一般都可以看到「异步」、「单线程」、「非阻塞」这样的字眼。因其采用异步非阻塞的模型而构建,Node.js 得以能充分利用 CPU 资源,具有极强的处理高并发请求的能力。

可是到底什么是同步和异步?什么是阻塞和非阻塞?同步就意味着阻塞吗?异步就一定是非阻塞吗?即便是业务经验十分丰富的 Node.js 程序员,都不一定对这些概念辨别得十分明晰。

本文力求以简明的语言来解释清楚这几个概念并加以区分,但不涉及到 Node.js 底层的具体实现。

阅读全文 »

Node.js 开发一般不容易遇到真正的模块循环依赖的情况,可是当你的项目开始达到一定的复杂度之后,你很有可能在你的 Node.js 编码生涯中遇到几次。而且如果你之前没有关于这方面的意识,Debug 可能会花费不少的时间。

我在最近的项目中就遇到了这种情况,而且不能轻易通过项目架构的重构来解决。具体来说,A 文件中需要用 B 文件中某些函数,B 文件又需要用到 A 文件中的某些函数。

阅读全文 »

[ 本文来自于我的知乎回答,现整理修改后记于博客。]

随着互联网时代的发展,世界上的每个个体与互联网的关系也变得愈发紧密,而移动互联网更是极大的促进了这种趋势——一部手机,世界就在你手中。

伴随着这种趋势而来的,是个人对于互联网应用的依赖激增,每个人每天几乎同时使用着几十款互联网应用,如何管理这些互联网应用的个人密码并保证足够的安全性变得重要起来。

本文介绍一下我的密码管理策略。

阅读全文 »

这两三年来,伴随着大数据(Big Data)的空前火热,无论是在工程界还是科研界,非关系型数据库(NoSQL)都已经成为了一个热门话题。

相比于传统的关系型数据库,非关系型数据库天生从理念上就给数据存储提供了一种新的思路。而在实际应用中,它往往更轻巧灵活、扩展性高,并且更能胜任高性能、大数据量的场景。

值得一提的是,NoSQL并不是 “No SQL” 的意思,而是 “Not Only SQL” 的简写。

阅读全文 »
0%