理解 serverless 无服务架构原理[转]

一:什么是 serverless 无服务?

serverless 中文的含义是 "无服务器",但是它真正的含义是开发者再也不用过多考虑服务器的问题,但是并不代表完全去除服务器,而是我们依靠第三方资源服务器后端,比如使用 Amazon Web Services(AWS) Lambda. 计算服务来执行代码,那么 Serverless 架构分为 Backend as a Service(BaaS) 和 Functions as a Service(FaaS) 两种技术,Serverless 它是由开发者实现的服务端逻辑运行在无状态的计算容器中,它是由事件触发,完全被第三方管理的。

"理解 serverless 无服务架构原理[转]"继续阅读

迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)[转]

网上有很多讲同步/异步/阻塞/非阻塞/BIO/NIO/AIO的文章,但是都没有达到我的心里预期,于是自己写一篇出来。

常规的误区

假设有一个展示用户详情的需求,分两步,先调用一个 HTTP 接口拿到详情数据,然后使用适合的视图展示详情数据。

"迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)[转]"继续阅读

浏览器与 Node.js 的事件循环(Event Loop)有何区别?[转]

前言

本文我们将会介绍 JavaScript 实现异步的原理,并且了解了在浏览器和 Node.js 中 Event Loop 其实是不相同的。

一、线程与进程

1. 概念

我们经常说 JavaScript 是单线程执行的,指的是一个进程里只有一个主线程,那到底什么是线程?什么是进程?

官方的说法是:进程是 CPU 资源分配的最小单位;线程是 CPU 调度的最小单位。这两句话并不好理解,我们先来看张图。

  • 进程好比图中的工厂,有单独的专属自己的工厂资源。
  • 线程好比图中的工人,多个工人在一个工厂中协作工作,工厂与工人是 1:n 的关系。也就是说一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线。
  • 工厂的空间是工人们共享的,这象征一个进程的内存空间是共享的,每个线程都可用这些共享内存。
  • 多个工厂之间独立存在。

"浏览器与 Node.js 的事件循环(Event Loop)有何区别?[转]"继续阅读

如何在 JS 代码中消灭 for 循环[转]

Edit: 在我入职第三家公司的第一天,看到代码库里面一堆的 for 循环,内心有些崩溃,于是做了一次技术分享,展示怎样在代码中避免 for 循环。这篇文章是那次分享的总结。本文并不完美,其中递归的部分其实不应该在生产环境中用的。之所以写出来了,主要是受这篇文章影响 Rethinking JavaScript: Death of the For Loop 我这篇文章重点其实应该是怎样用 reduce 和其它高阶函数,至于这些高阶函数底层用的是 while 循环还是 for 循环,都不重要,我们可以不在乎这些细节。在实际写代码的时候,只要被允许,我都会尽量使用 Ramda。

一、用好 filter,map,和其它 ES6 新增的高阶遍历函数

问题一:

将数组中的 falsy 值去除

const arrContainsEmptyVal = [3, 4, 5, 2, 3, undefined, null, 0, ""];

答案:

const compact = arr => arr.filter(Boolean);

"如何在 JS 代码中消灭 for 循环[转]"继续阅读

读书笔记:《你不知道的JavaScript(上卷)》 - [美]Kyle Simpson 著 / 赵望野 梁杰 译

this 部分讲的很全面!

出版时间:2015 年 8 月

章节:1.1 编译原理

在传统编译语言的流程中,程序中的一段源代码在执行之前会经历三个步骤,统称为“编译”。

  1. 分词/词法分析(Tokenizing / Lexing)
  2. 解析/语法分析(Parsing)
  3. 代码生成

"读书笔记:《你不知道的JavaScript(上卷)》 - [美]Kyle Simpson 著 / 赵望野 梁杰 译"继续阅读