git基本用法简介

作为开发者,别人搭建git服务器之后,首先要配置个人的客户端:

git config --global user.name "yourname"
git config --global user.email "xxxx@gmail.com"

检出仓库:

git clone git://git.kernel.org/pub/scm/.../linux-2.6 my2.6

查看远程仓库:

git remote -v

setTimeout,setInterval,process.nextTick,setImmediate in Node.js

尽管我们在介绍Node的时候,多数情况下都会提到异步I/o,但是Node中其实还存在一些与I/o无关的异步API,它们分别是setTimeout(),setInterval(),setImmediate()和process.nextTick()。

##1 setTimeout()和setInterval()
setTimeout()和setInterval()与浏览器中的API是一致的,分别用于单次和多次定时执行任务。他们的实现原理与异步I/o比较类似,只是不需要I/o线程池的参与。

调用setTimeout()或setInterval()时创建的计时器会被放入定时器观察者内部的红黑树中,每次Tick时,会从该红黑树中检查定时器是否超过定时时间,超过的话,就立即执行对应的回调函数。setTimeout()和setInterval()都是当定时器使用,他们的区别在于后者是重复触发,而且由于时间设的过短会造成前一次触发后的处理刚完成后一次就紧接着触发。

由于定时器是超时触发,这会导致触发精确度降低,比如用setTimeout设定的超时时间是5秒,当事件循环在第4秒循到了一个任务,它的执行时间3秒的话,那么setTimeout的回调函数就会过期2秒执行,这就是造成精度降低的原因。并且由于采用红黑树和迭代的方式保存定时器和判断触发,较为浪费性能。

理解Node.js里的process.nextTick()

有很多人对Node.js里process.nextTick()的用法感到不理解,下面我们就来看一下process.nextTick()到底是什么,该如何使用。

Node.js是单线程的,除了系统IO之外,在它的事件轮询过程中,同一时间只会处理一个事件。你可以把事件轮询想象成一个大的队列,在每个时间点上,系统只会处理一个事件。即使你的电脑有多个CPU核心,你也无法同时并行的处理多个事件。但也就是这种特性使得node.js适合处理I/O型的应用,不适合那种CPU运算型的应用。在每个I/O型的应用中,你只需要给每一个输入输出定义一个回调函数即可,他们会自动加入到事件轮询的处理队列里。当I/O操作完成后,这个回调函数会被触发。然后系统会继续处理其他的请求。

在这种处理模式下,process.nextTick()的意思就是定义出一个动作,并且让这个动作在下一个事件轮询的时间点上执行。我们来看一个例子。例子中有一个foo(),你想在下一个时间点上调用他,可以这么做:

exports与module.exports的关系和区别

一直比较纠结exports与module.exports的关系,在查阅资料后,终于有了一些清醒的认识。简单说,exports只是对module.exports对象的引用。module.exports才是真正的接口,exports只不过是它的一个辅助工具,最终返回给调用的是module.exports而不是exports。

注:通过console.log(module)我们可以看到module这个对象的属性,其中有一个属性就是exports,初始化为空对象,这里的module.exports就是这个空对象。而exports是另一个对象,它只是对module.exports的引用。

参考:http://www.cnblogs.com/pigtail/archive/2013/01/14/2859555.html
https://cnodejs.org/topic/5231a630101e574521e45ef8

http协议小解

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。
HTTP协议的主要特点可概括如下:

  • 支持客户/服务器模式
  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  • 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
  • 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就很快。