遇到一个显示聊天记录问题,一开始领导说放数据库,我脑洞大开用字符串,然后定时清除字符串 防止内存溢出。这个方法也能满足需求,也暴漏一个问题,不知道什么时候用户一进来,发现什么信息都没有,因为时间不确定。
后来一年后,领导突然说用队列,这个才是杀技啊。我怎么一开始没想到呢?
可能是一开始觉得字符串比较顺手吧。
然后看到这个博客
http://www.cnblogs.com/dearxinli/p/3595651.html
var Qu ={};
//构造函数
Qu.Queue = function (len) {
this.capacity = len; //队列最大容量
this.list = new Array(); //队列数据
};
//入队
Qu.Queue.prototype.enqueue = function (data) {
if (data == null) return;
if(this.list.length>=this.capacity)
{
this.list.remove(0);
}
this.list.push(data);
};
//出队
Qu.Queue.prototype.dequeue = function () {
if (this.list == null) return;
this.list.remove(0);
};
//队列长度
Qu.Queue.prototype.size = function () {
if (this == null) return;
return this.list.length;
};
//队列是否空
Qu.Queue.prototype.isEmpty = function () {
if (this == null|this.list==null) return false;
return this.list.length>0;
};
//对象数组扩展remove
Array.prototype.remove = function(dx) {
if (isNaN(dx) || dx > this.length) {
return false;
}
for (var i = 0, n = 0; i < this.length; i++) {
if (this[i] != this[dx]) {
this[n++] = this[i]
}
}
this.length -= 1
}
调用例子:
//队列初始化
var queue = new Qu.Queue(10);
queue.enqueue(1);
然后这个代码就和nodejs完美融合起来了,最后发现nodejs没有onload事件