ES7特性预览

ES6 都还没得及,现在一些 ES7 的新特性就出来了。得益于Node/Native这种玩意将 JavaScript 发扬光大,所以很多特性是并不是针对浏览器脚本设计的,很多针对 Server 端,或者本地应用。所以浏览器也不会支付所以有 ES6/ES7 的规范。

ES7特性预览

说下名字问题,ES6 规范已经在年中已经正式发布了,发布之后的名字前不是 ECMAScript 6,而是 ECMAScript 2015,本文的标题 ES7 目前的版本是 ECMAScript 2016,正式发布之后叫什么就不知道了,本人对名字什么的不纠结,怎么顺口就怎么叫。即使你叫它 ES6,ES7 也没什么错,它就是ECMAScript第6版,第7版。 主要是 ES6 在没正式发布之前叫ES6 叫习惯了。

废话就这么多,直接进入正题了。

乘方运算符

乘方运算较简单。目前一些语言里面其实以经有了。代码一看就明白:

1
2
3
4
5
let squared = 2 ** 2; //  = 2 * 2 = 4
let cubed = 2 ** 3; // = 2 * 2 * 2 = 8

let x = 2;
x **= 3; // x = x**3 = x * x * x = 8;
阅读更多

并发编程简介

从手机说起

由于智能手机横行!!!所以垃圾软件横行!!!

做垃圾软件呢,又和做网站有一点小小的区别,由于软件装在用户的手机上,而且还可以 后台运行 ,所以只要安装了软件,就经常有很多连服务器的小动作比如,消息推送、心跳维持、当然了,还有恶意获取用户信息上传,肉鸡操控等等。

之前做网站,普通的网站一般也不会考虑并发过大的问题,比如小米的抢购、12306抢票等头疼的问题一般的网站也不会太多考虑,大不了在集群上多扩几台么。

现在情况有变,如果你的手机应用有一定的用户量,那么可能平时的压力就和网站时代的高峰压力相当了。如果你还是用之前的 Web 服务器,比如 Apache、 Tomcat 之类的,很容易就会遇到阻塞。

资源利用率

比如现在广泛应用的 Tomcat,默认配置是 200connection,如果同时有 500 个用户访问,那么200个用户可能会 1秒 的时候收到请求的响应,(收到后200线程被释放,处理剩下的300个请求),然后,200的用户等了两秒钟后,收到了响应。假设我们设置的服务超时时间为2秒,那么剩下100个,就会出现错误,请求失败。在这两秒种的时间,服务器仅处理了400个请求,还有100个请求在等待2秒后还被拒绝服务(超时),虽然说用户感觉到很慢,但实际上计算机的计算能力可能运用了不到 1% ,多余的性能并没有发挥出来。

聪明的你,肯定会想到,那我把默认最大线程数配大点不就行了吗,当然是 OK 的,比如配置到 500,那么这 500 个请求就不需要等待就可以马上响应了,此时,1秒钟处理了500个请求,CPU利用率肯定高出了之前的。但实际上如此盲目的增加通常会出现问题。

阅读更多