解决clone过后的虚拟机网卡上网相关问题

当我把现有的centos虚拟机文件复制或clone一份后,然后再运行复制后的.vmdk文件,会发现系统加载的时候会提示相关错误信息,大致就是网卡不能启动,

Bringing up interface eth0: Device eth0 has different MAC address than expected,ignoring.

究其原因就在于虚拟机镜像拷贝的问题,因为复制.vmdk文件是将虚拟机完全copy了一份(包括MAC地址),由于新的硬件平台网卡MAC与系统中网卡MAC不一致,因此就会有上述的结果显示。这时候你在系统里面ifconfig是得不到当前主机IP地址的信息。

Read More

解惑node中的单线程

这里说一下node.js中的单线程缘由还是基于前段时间公司内部培训同事提出的问题:在网络通讯编程中,按照以往的语言或平台,应对成百上千的socket连接时,往往都会利用多线程的特性,对每个连接开启子线程分别接收数据再处理。那么在node.js中它是单线程,是基于事件响应的,即将每个的连接、处理事件会放到一个事件队列里面依次处理。那么问题来了,同事说如果某一个连接上来以后,一直在给服务器发送数据,那么排在事件队列后面的连接怎么处理,会一直等待吗?这个当然不是,下面我先用一个例子来说明一下这个问题的答案,方便理解。

我们准备模拟这样一个场景:一个客户端向服务器发起tcp连接,成功之后,客户端一直给服务器发送数据,而服务器收到数据后只是作一个回显。然后,我们再用一个客户端向该服务器发起tcp连接,同样发送数据,这时看服务器会不会因为接收上一个连接的持续发送数据,而不能去处理第二个tcp连接的数据发送。

Read More

常用的markdown标记

##Markdown
平常用markdown的时间不多,所以每次用它来写日志的时候都容易忘记,为此总结一些平常自己会经常用到的标记,方便查看(代码和效果同时附上),此后也会持续更新…

###图片
为致敬女神,图片格式放最前,^_^

1
![Alt text](/img/hexie.jpg "Optional title")


Read More

node中异步回调解决方案之promise

以前在其他开发平台写码习惯了同步的写法,现在切换到node.js里面的异步特性,还是有一点的不习惯,起初还不怎么觉得,但当遇到数据库的操作,并且需要其返回的数据作下一步的逻辑时,问题就出来了,后面的逻辑都会写在前一个异步的回调里面,如此炮制,最后的结果就是一个金字塔似的回调噩梦就产生了。

那么如何解决这样的噩梦呢?其实不管是网上还是其他渠道的资料上都有其针对异步的解决方案,而我是在看了张丹老师的博文后,决定尝试使用asyn库,并且应用在了实际的项目中来,效果不错。而今天我要笔记的是另外一种异步的解决方案-promise。

Read More

npm install经常失败解决方法

之前在使用node.js的好基友npm包管理器install模块的时候,间断性的失败,而且是屡试不爽,后来网上了解到和我有相同遭遇的朋友们不在少数。原因就在于npm包管理服务器在米国,而我们有骄傲的GFW,故导致上述install不稳定的情况。所以,为了更好的使用体验采用了淘宝的 NPM 镜像,它是一个完整的npmjs.org镜像。

*1.通过定制的 cnpm 命令行工具代替默认的 npm

1
npm install -g cnpm --registry=http://registry.npm.taobao.org

*2.安装具体模块

1
cnpm install [name]

tips:当安装的时候发现安装的模块还没有同步过来, 淘宝 NPM 会自动在后台进行同步, 并且会让你从官方 NPM registry.npmjs.org 进行安装. 下次你再安装这个模块的时候, 就会直接从 淘宝 NPM 安装了.

*3.同步模块(直接通过 sync 命令马上同步一个模块)

1
cnpm sync connect