nodejs两个例子
1.nodejs多线程
var cluster=require("cluster");//ͨ¹ýcluster¿ÉÒÔ·Ö³öһЩ×ÓÏß³Ì
var http=require("http");
var numCPUs=require("os").cpus().length;//»ñµÃCPUÊǼ¸ºË
console.log(numCPUs);
var rssWarn=(12*1024*1024);
var heapWarn=(10 * 1024 * 1024);
if (cluster.isMaster) {
for (i = 0; i < numCPUs; i++) {
var worker = cluster.fork();
worker.on("message", function (m) {
if (m.memory) {
if (m.memory.rss > rssWarn) {
console.log('Worker' + m.process + " using to much memory");
}else {
console.log('Worker' + m.process + " is processing");
}
}
})
}
cluster.on("death", function (worker) {
console.log("worker " + worker.pid + ' died');
cluster.fork();
});
}else {
http.Server(function (req, res) {
res.writeHead(200);
res.end("Hello World\n");
}).listen(3000);
setInterval(function report() {
process.send({ "memory": process.memoryUsage(), "process": process.pid });
}, 1000);
}
2.nodejs日志分块
var fs=require('fs');
var log='D:/nodejs/log_file.log';//ÈÕÖ¾Îļþ·¾¶
var buf;
var childPath=__dirname;//·Ö¸îµÄÈÕÖ¾Îļþ´æ·ÅµÄ·¾¶
var buf_size=1024*10;//·Ö¸îÈÕÖ¾Îļþ×ÓÎļþ×î´óµÄ´óС
var logSize;//ÇóµÄÈÕÖ¾Îļþ´óС
var offse=0;
fs.stat(log,function(err,stats){
if(err) throw err;
logSize=stats.size;//µÃµ½Îļþ´óС
//´ò¿ªÎļþ
fs.open(log,'r',0666,function(err,fd){
if(err) throw err;
buf=new Buffer(buf_size);
readLog(fd);
});
});
var lognumber=0;
function readLog(fd){
lognumber++;
//¶ÁÈ¡ÈÕÖ¾
fs.read(fd,buf,0,buf_size,offse,function(err){
if(err) throw err;
logArr=buf.toString('utf8').split('\n');
var last=false;
if(offse+buf_size<logSize){
last=logArr.pop();
// console.log(last);
}
writeChildLog(childPath+"/logchild"+lognumber+'.log',logArr);
// console.log(offse+"|"+last.length+"|"+logSize);
if(last.length>0){
offse+=buf_size-last.length;
// console.log(offse);
buf=new Buffer(buf_size);
if(offse<logSize){
readLog(fd);
}
}
});
}
function writeChildLog(filename,logArr){
console.log(logArr.join("\n"));
fs.open(filename,'w',function(err,fd){
if(err) throw err;
fs.write(fd,logArr.join("\n"),0,'utf8',function(e){
if (e) throw e;
fs.close(fd);
});
});
}
nodejs两个例子的更多相关文章
- C#堆栈原理(我有两个例子测试你到底会不会)
背景 上次写了一篇文章关于try finnally的一些疑问(被我用windows live覆盖了,草),后来经过大神们解释,我明白了在我理解了try.finnally运行原理后,还欠缺的就是关于值类 ...
- (3两个例子)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练 1综述http://www.cnblogs.com/jsxyhelu/p/7907241.html2环境架设http://www.cn ...
- 解决Linux终端乱码的两则例子
现象描述 我们先来说一下出现乱码的原因. 例子 先举个实际的例子,我们一般通过ssh远程到服务器上进行操作.当在终端上执行一些有输出的任务时,有可能会遇到乱码,特别是输出中有中文时. 比如,我登陆上o ...
- HTTP基础(分析两个例子)
两个例子(一个get,一个post)(一个是访问页面,一个是提交修改后的博文): preferences.aspx:(header)(文件) 1. Remote Address:42.121. ...
- tkinter 的两个例子
第一个例子:after 用于定时操作 import tkinter as tk import time class MyApp(tk.Frame): def __init__(self, msecs= ...
- 161223、mysql锁的两个例子
版本:mysql5.5.52 存储引擎:InnoDB 隔离级别:READ-COMMITTED 示例一: 事务1:左图 事务2:右图 1. 事务2中属于快照读,基于多版本的并发控制协议--MV ...
- android:layout_weight越大所占比例越大和越大所占比例越小的两个例子
摘要: 我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3907146.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的 ...
- php中使用curl两个例子
第一个例子: 调用一个天气预告的接口 $data = 'theCityName=石家庄'; $cUrl = curl_init(); curl_setopt($cUrl, CURLOPT_URL, & ...
- Android线程之Thread 、Runnable 的两个例子
Thread例子: package fy.test; import android.app.Activity; import android.os.Bundle; import android.os. ...
随机推荐
- Respond.js – 让不懂爱的 IE6-8 支持 CSS3 Media Query
respond.min.js <script src="js/respond.min.js"></script> respond.min.js代码: /*! ...
- 组件(Conponent)是图形用户界面最基本的部分
组件(Conponent)是图形用户界面最基本的部分,也称为构件 ,是可以以图形化的方式显示在屏幕上,并能与用户进行交互的对象,例如一个按钮,一个标签等. 组件不能独立地显示出来,必须将其放在一定的容 ...
- ipv6修改DNS服务-首选DNS服务器:240c::6666
下一代互联网国家工程中心推出的IPv6 DNS服务 首选DNS服务器:240c::6666 备用DNS服务器:240c::6644 来自下一代互联网国家工程中心官网消息显示,日前,下一代互联网国家 ...
- 0、手把手教React Native实战之开山篇
##作者简介 东方耀 Android开发 RN技术 facebook github android ios 原生开发 react reactjs nodejs 前端 ...
- linux的ssh命令
转自:http://man.linuxde.net/ssh ssh命令 网络安全 ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器. 语法 ssh(选项 ...
- 滚动插件 animatescroll(可以设置要滚动到位置)
1. 引入 <script src="js/animatescroll.js"></script> 2.设置要滚动到的位置 $('目标位置').an ...
- 疯狂Html+CSS+JS 中JS总结
来自:http://mzkmzk.github.io/blog/2015/10/05/amazeing-js/ 0 总结 本书的JS 第一章有讲语法有挺多常见的坑点和原理解释很不错 第二章DOM编程讲 ...
- 品友推广的投放原理 RTB:Real Time Bidding(实时竞价) DSP:Demand-Side Platform(需求方平台) 广告交易平台:AD Exchange
总结: 1.实时竞价 0.1秒出价各个广告主出价,投放价高者: RTB(Real Time Bidding)实时竞价,是一种利用第三方技术在数以百万计的网站或移动端针对每一个用户展示行为进行评估以及出 ...
- ubuntu-16.04.2-server-amd64.iso
w
- mongoose连接数据库的两种形式
不废话,直接 ---------------------- .如果你的应用程序只使用一个数据库, 应该使用 mongoose.connect. 如果您需要创建额外的连接,使用 mongoose.cre ...