March 10, 2016
nodejs中exports与module.exports的区别
"对于两者的理解只要记住一句话:“exports就是module.exports****的引用”即可。\n推荐易理解的文档: http://cnodejs.org/topic/5231a630101e574521e45ef8\n原文:\n你肯定非常熟悉nodejs模块中的exports对象,你可以用它创建你的模块。例如:(假设这是rocker.js文件)\nexports.name = function() { console.log(\u0026#39;My name is Lemmy Kilmister\u0026#39;); }; 在另一个文件中你这样引用\nvar rocker = require(\u0026#39;./rocker.js\u0026#39;); rocker.name(); // \u0026#39;My name is Lemmy Kilmister\u0026#39; 那到底Module.exports是什么呢?它是否合法呢?\n其实,Module.exports才是真正的接口,exports只不过是它的一个辅助工具。 最终返回给调用的是Module.exports而不是exports。\n所有的exports收集到的属性和方 …"
March 7, 2016
Node.js框架比较: Express vs. Koa vs. Hapi
"http://www.nodejs.net/a/20141223/191626.html http://www.zhihu.com/question/25388201 https://cnodejs.org/topic/56936889c2289f51658f0926"
February 23, 2016
jQuery.extend和jQuery.fn.extend的区别-转
"jQuery.extend和jQuery.fn.extend的区别,其实从这两个办法本身也就可以看出来。很多地方说的也不详细。这里详细说说之间的区别.\n我们先把jQuery看成了一个类,这样好理解一些。 jQuery.extend(),是扩展的jQuery这个类。\n假设我们把jQuery这个类看成是人类,能吃饭能喝水能跑能跳,现在我们用jQuery.extend这个方法给这个类拓展一个能唱歌的技能。这样的话,不论是男人,女人,xx人…..等能继承这个技能(方法)了。\n可以如下图这样写着:\n然后:$.liu();这样就能打印出来”liu“这个字符串 代码在下面:\n3. 这说明啥啊,这说明.liu()变成了jQuery这个类本身的方法(object)嘛。他现在能”唱歌“了。但是吧,这个能力啊,只有代表全人类的 jQuery 这个类本身,才能用啊。你个人想用,你张三李四王五麻六,你个小草民能代表全人类嘛?\n所以啊,这个扩展也就是所谓的静态方法。只跟这个 类 本身有关。跟你具体的实例化对象是没关系滴。\n我们再看看jQuery.fn.extend()这个方法。\n从字面理解嘛,这个拓展的 …"
February 23, 2016
Git-svn命令对比表,svn用户必看
"提供给从svn转git的开发人员参考\nGit与Subversion的命令对比表\n操作 GIT SUBVERSION 复制数据仓库 git clone svn checkout 提交 git commit svn commit 查看提交的详细记录 git show svn cat 确认状态 git status svn status 确认差异 git diff svn diff 确认记录 git log svn log 添加 git add svn add 移动 git mv svn mv 删除 git rm svn rm 取消修改 git checkout / git reset svn revert (※1) 创建分支 git branch svn copy (※2) 切换分支 git checkout svn switch 合并 git merge svn merge 创建标签 git tag svn copy (※2) 从服务端更新本地 git pull / git fetch svn update 推送到远端 git push svn commit (※3) 忽略档案目录 ."
February 15, 2016
深入解析php中的foreach问题
"篇文章是对php中的foreach问题进行了详细的分析介绍,需要的朋友参考下\n前言: php4中引入了foreach结构,这是一种遍历数组的简单方式。相比传统的for循环,foreach能够更加便捷的获取键值对。在php5之前,foreach仅能用于数组;php5之后,利用foreach还能遍历对象(详见:遍历对象)。本文中仅讨论遍历数组的情况。foreach虽然简单,不过它可能会出现一些意外的行为,特别是代码涉及引用的情况下。\n下面列举了几种case,有助于我们进一步认清foreach的本质。\n问题1:\n$arr = array(1,2,3); foreach($arr as $k =\u0026gt; \u0026amp;$v) { $v = $v * 2; } // now $arr is array(2, 4, 6) foreach($arr as $k =\u0026gt; $v) { echo \u0026#34;$k\u0026#34;, \u0026#34; =\u0026gt; \u0026#34;, \u0026#34;$v\u0026#34;; } 先从简单的开始,如果我们尝试运行上述代码,就会发现最后输出为0=\u0026gt;2 1=\u0026gt;4 2=\u0026gt;4 。\n为 …"
February 15, 2016
JavaScript垃圾回收机制
"一、垃圾回收的必要性\n下面这段话引自《JavaScript权威指南(第四版)》\n_ 由于字符串、对象和数组没有固定大小,所有当他们的大小已知时,才能对他们进行动态的存储分配。JavaScript程序每次创建字符串、数组或对象时,解释器都必须分配内存来存储那个实体。只要像这样动态地分配了内存,最终都要释放这些内存以便他们能够被再用,否则,JavaScript的解释器将会消耗完系统中所有可用的内存,造成系统崩溃。_\n这段话解释了为什么需要系统需要垃圾回收,JS不像C/C++,他有自己的一套垃圾回收机制(Garbage Collection)。JavaScript的解释器可以检测到何时程序不再使用一个对象了,当他确定了一个对象是无用的时候,他就知道不再需要这个对象,可以把它所占用的内存释放掉了。例如:\nvar a = \u0026#34;before\u0026#34;; var b = \u0026#34;override a\u0026#34;; var a = b; //重写a 这段代码运行之后,“before”这个字符串失去了引用(之前是被a引用),系统检测到这个事实之后,就会释放该字符串的存储空间以便这些空间可以被再利 …"
February 2, 2016
利用 Dockerfile 来创建镜像
"使用 docker commit 来扩展一个镜像比较简单,但是不方便在一个团队中分享。我们可以使用 docker build 来创建一个新的镜像。为此,首先需要创建一个 Dockerfile,包含一些如何创建镜像的指令。\n新建一个目录和一个 Dockerfile\n$ mkdir sinatra $ cd sinatra $ touch Dockerfile Dockerfile 中每一条指令都创建镜像的一层,例如:\n# This is a comment FROM ubuntu:14.04 MAINTAINER Docker Newbee RUN apt-get -qq update RUN apt-get -qqy install ruby ruby-dev RUN gem install sinatra Dockerfile 基本的语法是\n使用#来注释 FROM 指令告诉 Docker 使用哪个镜像作为基础 接着是维护者 MAINTAINER 的信息 RUN开头的指令会在创建中运行,比如安装一个软件包,在这里使用 apt-get 来安装了一些软件 编写完成 Dockerfile 后 …"
February 2, 2016
docker安装入门篇
"一、下载镜像 image 可以使用 docker pull 命令来从仓库获取所需要的镜像。\n下面的例子将从 Docker Hub 仓库下载一个 Ubuntu 12.04 操作系统的镜像。\n$ sudo docker pull ubuntu:12.04 Pulling repository ubuntu ab8e2728644c: Pulling dependent layers 511136ea3c5a: Download complete 5f0ffaa9455e: Download complete a300658979be: Download complete 904483ae0c30: Download complete ffdaafd1ca50: Download complete d047ae21eeaf: Download complete 下载过程中,会输出获取镜像的每一层信息。\n该命令实际上相当于\n$ sudo docker pull registry.hub.docker.com/ubuntu:12.04 命令,即从注册服务 …"
February 2, 2016
docker常用命令
"官方命令: https://docs.docker.com/reference/\n1. 查看docker信息(version、info) # 查看docker版本 $docker version # 显示docker系统的信息 $docker info 2. 对image的操作(search、pull、images、rmi、history) # 检索image(sudo docker pull ubuntu:12.04,该命令实际上相当于 $ sudo docker pull registry.hub.docker.com/ubuntu:12.04 命令,即从注册服务器 registry.hub.docker.com 中的 ubuntu 仓库来下载标记为 12.04 的镜像。) $docker search image_name[:tag] # 下载image $docker pull image_name # 列出镜像列表; -a, --all=false Show all images; --no-trunc=false Don\u0026#39;t truncate output; -q, …"
February 2, 2016
docker与vm之间的最基本的区别
"5分钟弄懂Docker! http://www.csdn.net/article/2014-07-02/2820497-what%27s-docker\nDocker入门与实践: https://www.gitbook.com/book/yeasy/docker_practice\n在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。\n下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。\nVirtual Machines是由虚拟机管理程序来实现对 虚拟机 的管理,而docker是用docker Engine来实现对 应用 的管理。可以理解为一个套硬件的管理,一个是软件的管理。\n对比传统虚拟机总结 基本概念 Docker 包括三个基本概念\n镜像(Image) 容器(Container) 仓库(Repository) 理解了这三个概念,就理解了 Docker 的整个生命周 …"