Event Loop 是 Node.js 最核心的概念,所以理解 Event Loop 如何运作对于写出正确的代码和调试是非常重要的。比如考虑以下代码: setTimeout(() => { console.log('hi') }, 1000) ... 我们期望程序运行 1s 后打印出 hi,但是实际情况可能是远大于 1s 后才打印出 hi。这个时候如果理解 Event Loop 就可以轻易发
我们知道,Node.js 不适合 CPU 密集型计算的场景,通常的解决方法是用 C/C++ 编写 Node.js 的扩展(Addons)。以前只能用 C/C++,现在我们有了新的选择——Rust。 3.5.1 环境 node@8.9.4 rust@1.26.0-nightly 3.5.2 Rust Rust 是 Mozilla 开发的注重安全、性能和并发的现代编程语言。相比较于其他常见的编程语言,
如果你想以最简单的方式提升 Node.js 程序的性能,那就升级到 node@8+ 吧。这不是一个玩笑,多少 JavaScript 前辈们以血的教训总结出了一长列 “Optimization killers”,典型的有: 在 try 里面不要写过多代码,V8 无法优化,最好将这些代码放到一个函数里,然后 try 这个函数。 少用 delete。 少用 arguments。 … 然而,随着 V8 彻
对于 JavaScript 中的 Error,想必大家已经很熟悉了,毕竟天天与它打交道。 Node.js 内置的 Error 类型有: Error:通用的错误类型,例如:new Error('error!!!')。 SyntaxError:语法错误,例如:require('vm').runInThisContext('binary ! isNotOk')。 ReferenceError:引用错误,
笔者在很长一段时间内都使用 koa@1 +(generator|bluebird)+ sequelize 这个组合,这个组合并没有什么问题,也很常见,但是到了滥用的地步,导致后来维护和调试起来都很痛苦。若排除 sequelize 这个我们不得不用的模块,从调试 cpuprofile 角度讲讲为什么笔者认为应该用 async/await + Promise 替代 co + generator|blu
Live Template( 实时模板 ) Live Template就是把常用的代码提取成一个模板,在编写代码的时候可以通过缩写调出这个模板,达到快速输入,提高效率的目的. Android Studio中提供的Live Template定义了一些常用的缩写,我们可以通过输入缩写快速生成常用的代码模板。 操作步骤: 菜单栏:Code —> Insert Live Template 快捷键: Mac
当弹出代码补全提示时,可以鼠标|Enter|Tab|!\/.|;进行补全,但这几种补全方法功能是不一样的。 补全后不会删除后面的代码 操作步骤: 弹出代码补全提示—> 光标选中补全代码—> 鼠标\/Enter 补全后删除后面的代码 操作步骤: 弹出代码补全提示—> 光标选中补全代码—>Tab 布尔值取反补全 操作步骤: 弹出布尔值代码补全提示—> 光标选中补全代码(是弹出代码提示时候的选择)—>
最简单的部署 git clone git@github.com:i5ting/shop-api.git git clone git@github.com:i5ting/shop-admin.git git clone git@github.com:i5ting/shop-h5.git ftp上传 前提是在服务器上部署ftp服务器 推荐使用gulp和ftp部署 https://github.com
Pragma Pragma Mark #pragma mark - 是一个在类内部组织代码并且帮助你分组方法实现的好办法。 我们建议使用 #pragma mark - 来分离: 不同功能组的方法 protocols 的实现 对父类方法的重写 - (void)dealloc { /* ... */ } - (instancetype)init { /* ... */ } #pragma mark -
某些东西非常通用,以至于你有很大的机会在绝大部分 Web 应用中,都能找到 他们的身影。例如相当多的应用在使用关系数据库而且包含用户注册和认证模块。 在这种情况下,请求开始之前,他们会打开数据库连接、获得当前已经登陆的用户 信息。在请求结束的时候,数据库连接又会被关闭。 这章提供了一些由用户贡献的代码片段和模板来加速开发 Flask Snippet Archives. 大型应用 简单的包 与蓝图一
3.4. 获取代码 以下命令会创建一个go目录。切换到相应目录,并且确保当前位置不存在go目录,运行命令: $ hg clone -r release https://go.googlecode.com/hg/ go
使用代码模板 Eclipse 提供了通过定义和使用代码模板来提高工作效率与代码可预测性的能力。 我们在开发 Java 程序过程中经常需要编写 main 方法: public static void main(String[]args) { } 如果我们一个字母一个字母去编写,将是一个重复而又毫无意义的事情,这是我们就可以使用 Eclipse 代码模板来快速完成这些工作。 我们只需在类体中键入
android-webview-dev@chromium.org Last updated Jul 2014. Android build tree中,external/chromium_org是chromium源代码(根目录位于src.chromium.org/viewvc/chrome/trunk/src/)的一个镜像。 CHROMIUM TREE (“upstream”: trunk/src
from numpy import * import time import matplotlib.pyplot as plt # calulate kernel value def calcKernelValue(matrix_x, sample_x, kernelOption): kernelType = kernelOption[0] numSa
14. 构建代码 Spring Boot并不要求任何特殊的代码布局,然而,存在一些有用的最佳实践。 14.1 使用“default”包 如果一个类没有声明包,则认为这个类位于“默认包”中。通常不鼓励使用“默认包”,应当避免使用它。对于使用了@ComponentScan、@EntityScan或@SpringBootApplication注解的Spring Boot程序,“默认包”可能会导致特殊问题