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 的整个生命周 …"
January 19, 2016
MySQL索引之聚集索引
"导读 在MySQL里,聚集索引和非聚集索引分别是什么意思,有什么区别?\n在MySQL中,InnoDB引擎表是(聚集)索引组织表(clustered index organize table),而MyISAM引擎表则是堆组织表(heap organize table)。\n也有人把聚集索引称为聚簇索引。\n当然了,聚集索引的概念不是MySQL里特有的,其他数据库系统也同样有。\n简言之,聚集索引是一种索引组织形式,索引的键值逻辑顺序决定了表数据行的物理存储顺序,而非聚集索引则就是普通索引了,仅仅只是对数据列创建相应的索引,不影响整个表的物理存储顺序。\n我们先来看看两种存储形式的不同之处:\n简单说,IOT表里数据物理存储顺序和主键索引的顺序一致,所以如果新增数据是离散的,会导致数据块趋于离散,而不是趋于顺序。而HOT表数据写入的顺序是按写入时间顺序存储的。 IOT表相比HOT表的优势是:\n范围查询效率更高;\n数据频繁更新(聚集索引本身不更新)时,更不容易产生碎片;\n特别适合有一小部分热点数据频繁读写的场景;\n通过主键访问数据时快速可达;\nIOT表的不足则有:\n数据变化如果是离散为主的话,那么效率 …"
January 19, 2016
你真的了解SQL的索引吗?
"其实对于非专业的数据库操作人员来讲,例如软件开发人员,在很大程度上都搞不清楚数据库索引的一些基本知识,有些是知其一不知其二,或者是知其然不知其所以然。造成这种情况的主要原因我觉的是行业原因,有很多公司都有自己的DBA团队,他们会帮助你优化SQL,开发人员即使不懂优化问题也不大,所以开发人员对这方面也就不会下太多功夫去了解SQL优化,但如果公司没有这样的DBA呢,就只能靠程序员自己了。 最近突然想起前一阵和一朋友的聊天,当时他问我的问题是一个非常普通的问题:说说SQL聚集索引和非聚集索引的区别。\n大家可能认为这个问题难度不大,认为太熟悉了,也许不会感兴趣,但你真能说清楚吗?其实要想说明白这两者的差别也不是三两句就说的清的,那天我也是觉的这问题太泛了,就随便说了其中的两个区别:\n聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个,这个跟没问题没差别,一般人都知道。\n聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续,这个大家也都知道。\n上面的两点从大的方面讲都是讲的通的,后面我们继续探讨,举一个实际点的例子,一个学生表student,里面是学生号id,学生 …"
January 19, 2016
MySQL聚簇索引&聚集索引&索引组织表myisam
"MySQL聚簇索引\u0026amp;聚集索引\u0026amp;索引组织表\nhttp://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html\n聚簇索引和聚集索引(Clustered Index) 说起索引,不能不说B+树。\n引用: http://blog.codinglabs.org/articles/theory-of-mysql-index.html\nMySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。\n我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,好在计算机科学的发展提供了很多更优秀的查找算法,例如二分查找(binary search),二叉树查找(binary tree search)等。如果稍微分析一下会发现,每种查找算法都只能应用于特定的数据结构 …"
December 22, 2015
使用 Git Hook 实现网站的自动部署
"自动化能解放人类的双手,而且更重要的是,因为按照规定的流程来走,也减少了很多误操作的产生。不知道大家平时都是怎么样更新自己生产环境的代码的,FTP 覆盖旧文件、服务器定时任务去 build 最新的源码,还是有更高级的做法?\n目前我在使用 Git Hook 来部署自己的项目。Git Hook 是 Git 提供的一个钩子,能被特定的事件触发后调用。其实,更通俗的讲,当你设置了 Git Hook 后,只要你的远程仓库收到一次 push 之后,Git Hook 就能帮你执行一次 bash 脚本。\nGit的挂钩(Hook)主要包含:\napplypatch-msg post-update pre-rebase commit-msg pre-applypatch update post-commit pre-commit post-receive prepare-commit-msg 这里我们只需要使用 post-receive 这个 Hook:在接收 post(push)请求之后执行。\n下面是我使用 Git Hook 进行简单的自动化部署,可能还有更高级的做法,大家自己去挖掘。\n服务器上需要配置两 …"
December 22, 2015
Git中的hooks钩子
"Git可以定制一些钩子,这些钩子可以在特定的情况下被执行,分为Client端的钩子和Server端的钩子。 Client 端钩子被operation触发,比如commit,merge等Server 端钩子被网络动作触发,比如pushed commits。\n那么钩子是放在哪的呢?\n在.git/hooks/文件夹下。当你init一个仓库的时候,下边会有一些钩子的例子,以.sample结尾。\n那么钩子什么时候被执行,Git预定义了触发时机:\nClientSide hooks:\n1 pre-commit,当执行commit动作时先执行此hook,可以用此hook做一些检查,比如代码风格检查,或者先跑测试。\n2 prepare-commit-msg, 当commit时需要输入message前会触发此hook,可以用此hook来定制自己的default message信息。\n3 commit-msg,当用户输入commit的message后被触发,可以用此hook校验message的信息,比如是否符合规定,有没有cr等。\n4 post-commit, 当commit完成后被触发,可以用此hook发 …"
December 17, 2015
javascript静态类型检测器 flow(facebook)
"http://flowtype.org/\n对于flow的介绍可以参考: http://blog.jobbole.com/80364/"