在node.js里面获取本机IP很简单,在OS模块里面,直接调用networkInterfaces(),就可以列出你机子的所有网络接口的信息,它返回的是一个数组,如官网列出的信息:
1 | { lo0: |
据此,我们可以根据实际需要取到相应的值:
1 |
|
在node.js里面获取本机IP很简单,在OS模块里面,直接调用networkInterfaces(),就可以列出你机子的所有网络接口的信息,它返回的是一个数组,如官网列出的信息:
1 | { lo0: |
据此,我们可以根据实际需要取到相应的值:
1 |
|
当我把现有的centos虚拟机文件复制或clone一份后,然后再运行复制后的.vmdk文件,会发现系统加载的时候会提示相关错误信息,大致就是网卡不能启动,
Bringing up interface eth0: Device eth0 has different MAC address than expected,ignoring.
究其原因就在于虚拟机镜像拷贝的问题,因为复制.vmdk文件是将虚拟机完全copy了一份(包括MAC地址),由于新的硬件平台网卡MAC与系统中网卡MAC不一致,因此就会有上述的结果显示。这时候你在系统里面ifconfig是得不到当前主机IP地址的信息。
为了搞清在js中如何实现继承,也是对之前这篇博文js中prototype用法的补充,我主要参考了下面两篇文章:
伯乐在线的JavaScript原型和继承
阮一峰的构造函数的继承
我是两篇对比着看的,刚开始看的时候脑袋都快被绕晕了,或许是自己对于js的高级特性不熟悉,亦或是js本身语言的强大灵活性与传统的编译性语言区别太大的原因导致,所以此次的学习笔记决定‘从简’,为了不搞混淆,只把我觉得易懂的部分给抽出来,方便以后查阅。
这里说一下node.js中的单线程缘由还是基于前段时间公司内部培训同事提出的问题:在网络通讯编程中,按照以往的语言或平台,应对成百上千的socket连接时,往往都会利用多线程的特性,对每个连接开启子线程分别接收数据再处理。那么在node.js中它是单线程,是基于事件响应的,即将每个的连接、处理事件会放到一个事件队列里面依次处理。那么问题来了,同事说如果某一个连接上来以后,一直在给服务器发送数据,那么排在事件队列后面的连接怎么处理,会一直等待吗?这个当然不是,下面我先用一个例子来说明一下这个问题的答案,方便理解。
我们准备模拟这样一个场景:一个客户端向服务器发起tcp连接,成功之后,客户端一直给服务器发送数据,而服务器收到数据后只是作一个回显。然后,我们再用一个客户端向该服务器发起tcp连接,同样发送数据,这时看服务器会不会因为接收上一个连接的持续发送数据,而不能去处理第二个tcp连接的数据发送。
平时node中在人家源码里往往会看到prototype,之前百度了下说的是原型方法,也没有细看,今天决定好好把这块知识点学习一下。结合网上的资料,把prototype的定义精简一下:js中每个函数都有一个默认的prototype属性,这个属性是另一个对象(我们称之为‘原型对象’)的引用,换句话说,其实prototype属性就是一个对象。这个原型对象的所有属性和方法,都会被构造函数的实例继承。
说了定义,那我们来看什么时候使用prototype呢?这篇博文对这部分讲的很清楚。按照他的例子举个例,在传统的实例化出来的对象要使用属性或方法时,我们事先是这样构造一个‘类’(为了好理解暂叫类吧):
1 | function Student(){ |