首页 » JavaScript

使用Go语言代替node.js实践

  使用Go语言到生产环境已有半年,其优秀的性能,内存管理及便利的Goroutine让人爱不释手。Go在语法上比较保守严谨,因此代码的正确性有很大的提升,但也使得其代码量上远远多于nodejs+CoffeeScript组合。
  之所以使用Go语言,直接原因是node.js在一个日1亿多次ajax请求同时1万websocket长连接的HTTPS服务端在内存上有类似泄漏的表现。debug发现是在启用SSL后,废弃数组中大量faye-websocket对象积压,究其原因,可能是使用不当,也可能是应用设计上的缺陷...

ToffeeScript 1.6.2 发布

ToffeeScript
支持异步语法的CoffeeScript
特性
异步语法
条件语句: If, Switch
循环语句: For In, For Of, While with guard when
数值运算
逻辑运算:
自动回调
正则运算 =~ 与匹配项 \~, \&, \0~\9
支持 Sourcemap
当前基于 CoffeeScript 1.6.2
安装
npm install toffee-script
代码例子
左: ToffeeScript
右:...

node.js成也异步,败也异步,评node.js的异步特性

node.js最大的卖点就是异步,声称以此获得更高的性能,而我认为,node之所以快并不是因为异步而快,而是因为V8而快。异步仅在资源占有明显优势,而引入异步却大大增加了编程的复杂度,且异步在http服务上并没有或者无法用在刀刃上。
以目前node来看,其作为单独http服务器的实现远远不如nginx,若以node建站,更普遍的选择是nginx 反向代理 node,一则由于node作为http服务器功能简单,实现更是差nginx几个台阶,其次因node单线程特性,若要发挥多核的优势,也必然会开2个以上的no...

node.js异步数据库连接,事务查询思考

首先思考一下场景
1、同时有50个并发请求,
2、每个请求将连接PgSQL并执行一个事务: 调用2个不同的Model Bill与Profile,执行 Bill.insert 与 Profile.update
3、PgSQL最大连接数为20
因为使用到事务,所以同一个数据库连接不可能同用于两个不同的http请求
如果在PHP中,那么开20个不同的php-cgi,并对每个php-cgi进行操作,其余30个在请求nginx队列
1、nginx接受50个http请求
2、php-cgi接受20个请求,并建立20个全...

ToffeeScript – 支持异步语法的CoffeeScript

ToffeeScript是CoffeeScript衍生,在完全兼容CoffeeScript的语法下提供了一些新的特性。
一、 特性一览
异步语法支持
Ruby Symbol语法的字串
正则运算符 =~
正则Magic标识符 \& \~ \1..9
1. 异步语法支持
语法: 在调用的函数尾加上!(感叹号)
输入:
do ->
# ! always is a function
foo_0_0!
@va = obj.foo_2_1!...

CoffeeScript 功能加强

CoffeScript makes javascript fun, and the CoffeeScript’s source code write clearly and easy to extend, I add 2 string related features: Ruby symbol like string and long string.
CoffeeScript让javascript变得有趣,而且代码清晰,易用扩展,我在CoffeeScript的原基础上加入2个新字符串相关的语法。...

nodejs V8 Persistent句柄与GC

在nodejs中,常常会遇到ObjectWrap的C++ Module,即用一个Persistent句柄引用一个携带C/C++指针的对象,并设定该Persistent句柄的WeakCallback,当Persistent被孤立时,删除指针,并Dispose句柄。一般来说凡是C++/Native的Module(如PostgreSQL,Memcache等等)的都会有Persistent释放问题。
测试发现,因为GC的延迟常常会使得有效的指针堆积如山,由heap.cc可以得知V8的在台式机上的GC策略为...

javascript V8惊人的性能

今天测试了一下V8,虽然一直听说和感觉到V8快,但测试后发现性能超过C++ STL,甚至超过了C函数。着实惊人。
一、测试代码:
1. C++:test.cc
#include <sys/time.h>
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <list>
#include <string>
#include <map>...