February 2, 2016
docker安装入门篇
"\u003ch1 class=\"comments-section\" id=\"一下载镜像-image\"\u003e一、下载镜像 image\u003c/h1\u003e\n\u003cp\u003e可以使用 \u003ccode\u003edocker pull\u003c/code\u003e 命令来从仓库获取所需要的镜像。\u003c/p\u003e\n\u003cp\u003e下面的例子将从 Docker Hub 仓库下载一个 Ubuntu 12.04 操作系统的镜像。\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e $ sudo docker pull ubuntu:12.04\n Pulling repository ubuntu\n ab8e2728644c: Pulling dependent layers\n 511136ea3c5a: Download complete\n 5f0ffaa9455e: Download complete\n a300658979be: Download complete\n 904483ae0c30: Download complete\n ffdaafd1ca50: Download complete\n d047ae21eeaf: Download complete\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e下载过程中,会输出获取镜像的每一层信息。\u003c/p\u003e\n\u003cp\u003e该命令实际上相当于\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e$ sudo docker pull registry.hub.docker.com/ubuntu:12.04\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003e命令, …\u003c/p\u003e"
February 2, 2016
docker常用命令
"\u003cp\u003e官方命令: \u003ca href=\"https://docs.docker.com/reference/\"\u003ehttps://docs.docker.com/reference/\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"1-查看docker信息versioninfo\"\u003e1. 查看docker信息(version、info)\u003c/h2\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e# 查看docker版本\n$docker version\n\n# 显示docker系统的信息\n$docker info\n\u003c/code\u003e\u003c/pre\u003e\u003ch2 id=\"2-对image的操作searchpullimagesrmihistory\"\u003e2. 对image的操作(search、pull、images、rmi、history)\u003c/h2\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e# 检索image(sudo docker pull ubuntu:12.04,该命令实际上相当于 $ sudo docker pull registry.hub.docker.com/ubuntu:12.04 命令,即从注册服务器 registry.hub.docker.com 中的 ubuntu 仓库来下载标记为 12.04 的镜像。)\n$docker search image_name[:tag]\n\n# 下载image\n$docker pull image_name\n\n# 列出镜像列表; -a, --all=false Show all images; --no-trunc=false Don\u0026#39;t truncate output; …\u003c/code\u003e\u003c/pre\u003e"
February 2, 2016
docker与vm之间的最基本的区别
"\u003cp\u003e5分钟弄懂Docker! \u003ca href=\"http://www.csdn.net/article/2014-07-02/2820497-what%27s-docker\"\u003ehttp://www.csdn.net/article/2014-07-02/2820497-what%27s-docker\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eDocker入门与实践: \u003ca href=\"https://www.gitbook.com/book/yeasy/docker_practice\"\u003ehttps://www.gitbook.com/book/yeasy/docker_practice\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单。\u003c/p\u003e\n\u003cp\u003e下面的图片比较了 Docker 和传统虚拟化方式的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVirtual Machines是由虚拟机管理程序来实现对 \u003cstrong\u003e虚拟机\u003c/strong\u003e 的管理,而docker是用docker Engine来实现对 \u003cstrong\u003e应用\u003c/strong\u003e 的管理。可以理解为一个套硬件的管理,一个是软件的管理。\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2016/02/virtualization.png\"\u003e\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/virtualization.png\" alt=\"virtualization\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2016/02/docker.png\"\u003e\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/docker.png\" alt=\"docker\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch1 class=\"comments-section\" id=\"对比传统虚拟机总结\"\u003e 对比传统虚拟机总结\u003c/h1\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2016/02/docker-vs-vm.jpg\"\u003e\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/docker-vs-vm.jpg\" alt=\"docker-vs-vm\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch1 id=\"基本概念\"\u003e基本概念\u003c/h1\u003e\n\u003cp\u003eDocker 包括三个基本概念\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e镜像(Image)\u003c/li\u003e\n\u003cli\u003e容器(Container)\u003c/li\u003e\n\u003cli\u003e仓库(Repository)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e理解了这三个概念,就理解了 Docker …\u003c/p\u003e"
January 19, 2016
MySQL索引之聚集索引
"\u003ch2 id=\"导读\"\u003e导读\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e在MySQL里,聚集索引和非聚集索引分别是什么意思,有什么区别?\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e在MySQL中,InnoDB引擎表是(聚集)索引组织表(clustered index organize table),而MyISAM引擎表则是堆组织表(heap organize table)。\u003c/p\u003e\n\u003cp\u003e也有人把聚集索引称为聚簇索引。\u003c/p\u003e\n\u003cp\u003e当然了,聚集索引的概念不是MySQL里特有的,其他数据库系统也同样有。\u003c/p\u003e\n\u003cp\u003e简言之,\u003cstrong\u003e聚集索引是一种索引组织形式,索引的键值逻辑顺序决定了表数据行的物理存储顺序\u003c/strong\u003e,而非聚集索引则就是普通索引了,仅仅只是对数据列创建相应的索引,不影响整个表的物理存储顺序。\u003c/p\u003e\n\u003cp\u003e我们先来看看两种存储形式的不同之处:\u003c/p\u003e\n\u003cp\u003e简单说,IOT表里数据物理存储顺序和主键索引的顺序一致,所以\u003cstrong\u003e如果新增数据是离散的,会导致数据块趋于离散\u003c/strong\u003e,而不是趋于顺序。而HOT表数据写入的顺序是按写入时间顺序存储的。\nIOT表相比HOT表的\u003cstrong\u003e优势\u003c/strong\u003e是:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e范围查询效率更高;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e数据频繁更新(聚集索引本身不更新)时,更不容易产生碎片;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e特别适合有一小部分热点数据频繁读写的场景;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e通过主键访问数据时快速可达;\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIOT表的\u003cstrong\u003e不足\u003c/strong\u003e则有:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e数据变化如果 …\u003c/li\u003e\u003c/ul\u003e"
January 19, 2016
你真的了解SQL的索引吗?
"\u003cp\u003e其实对于非专业的数据库操作人员来讲,例如软件开发人员,在很大程度上都搞不清楚数据库索引的一些基本知识,有些是知其一不知其二,或者是知其然不知其所以然。造成这种情况的主要原因我觉的是行业原因,有很多公司都有自己的DBA团队,他们会帮助你优化SQL,开发人员即使不懂优化问题也不大,所以开发人员对这方面也就不会下太多功夫去了解SQL优化,但如果公司没有这样的DBA呢,就只能靠程序员自己了。 最近突然想起前一阵和一朋友的聊天,当时他问我的问题是一个非常普通的问题:说说SQL聚集索引和非聚集索引的区别。\u003c/p\u003e\n\u003cp\u003e大家可能认为这个问题难度不大,认为太熟悉了,也许不会感兴趣,但你真能说清楚吗?其实要想说明白这两者的差别也不是三两句就说的清的,那天我也是觉的这问题太泛了,就随便说了其中的两个区别:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个,这个跟没问题没差别,一般人都知道。\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续,这个大家也都知道。\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e上面的两点从大的方面讲都是讲的通的,后面我们继续探讨,举一个实际点的例子,一个学生表student,里面是学生 …\u003c/p\u003e"
January 19, 2016
MySQL聚簇索引&聚集索引&索引组织表myisam
"\u003cp\u003eMySQL聚簇索引\u0026amp;聚集索引\u0026amp;索引组织表\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html\"\u003ehttp://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html\u003c/a\u003e\u003c/p\u003e\n\u003ch1 id=\"聚簇索引和聚集索引clustered-index\"\u003e聚簇索引和聚集索引(Clustered Index)\u003c/h1\u003e\n\u003cp\u003e说起索引,不能不说B+树。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e引用: \u003ca href=\"http://blog.codinglabs.org/articles/theory-of-mysql-index.html\"\u003ehttp://blog.codinglabs.org/articles/theory-of-mysql-index.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eMySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。\u003c/p\u003e\n\u003cp\u003e我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。\u003cem\u003e\u003cstrong\u003e最基本的查询算法当然是顺序查找(linear search)\u003c/strong\u003e\u003c/em\u003e,这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,好在计算机科学的发展提供了很多更优秀的查找算法,例如\u003cstrong\u003e二分查找(binary search),\u003c/strong\u003e\u003cem\u003e\u003cstrong\u003e二叉树查找(binary tree search)\u003c/strong\u003e\u003cem\u003e等。如果稍微分析一下会发现,每种查找算法都只能应用于特定的数据结 …\u003c/em\u003e\u003c/em\u003e\u003c/p\u003e\u003c/blockquote\u003e"
December 22, 2015
使用 Git Hook 实现网站的自动部署
"\u003cp\u003e自动化能解放人类的双手,而且更重要的是,因为按照规定的流程来走,也减少了很多误操作的产生。不知道大家平时都是怎么样更新自己生产环境的代码的,FTP 覆盖旧文件、服务器定时任务去 build 最新的源码,还是有更高级的做法?\u003c/p\u003e\n\u003cp\u003e目前我在使用 Git Hook 来部署自己的项目。Git Hook 是 Git 提供的一个钩子,能被特定的事件触发后调用。其实,更通俗的讲,当你设置了 Git Hook 后,只要你的远程仓库收到一次 push 之后,Git Hook 就能帮你执行一次 bash 脚本。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eGit的挂钩(Hook)主要包含:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eapplypatch-msg\u003c/li\u003e\n\u003cli\u003epost-update\u003c/li\u003e\n\u003cli\u003epre-rebase\u003c/li\u003e\n\u003cli\u003ecommit-msg\u003c/li\u003e\n\u003cli\u003epre-applypatch\u003c/li\u003e\n\u003cli\u003eupdate\u003c/li\u003e\n\u003cli\u003epost-commit\u003c/li\u003e\n\u003cli\u003epre-commit\u003c/li\u003e\n\u003cli\u003epost-receive\u003c/li\u003e\n\u003cli\u003eprepare-commit-msg\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e这里我们只需要使用 post-receive 这个 Hook:在接收 post(push)请求之后执行。\u003c/p\u003e\n\u003cp\u003e下面是我使用 Git Hook 进行简单的自动化部署,可能还有更高级的做法,大家自己去挖掘。\u003c/p\u003e\n\u003cp\u003e服务器上需要配 …\u003c/p\u003e"
December 22, 2015
Git中的hooks钩子
"\u003cp\u003eGit可以定制一些钩子,这些钩子可以在特定的情况下被执行,分为Client端的钩子和Server端的钩子。\nClient 端钩子被operation触发,比如commit,merge等Server 端钩子被网络动作触发,比如pushed commits。\u003c/p\u003e\n\u003cp\u003e那么钩子是放在哪的呢?\u003c/p\u003e\n\u003cp\u003e在.git/hooks/文件夹下。当你init一个仓库的时候,下边会有一些钩子的例子,以.sample结尾。\u003c/p\u003e\n\u003cp\u003e那么钩子什么时候被执行,Git预定义了触发时机:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eClientSide hooks:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1 pre-commit,当执行commit动作时先执行此hook,可以用此hook做一些检查,比如代码风格检查,或者先跑测试。\u003c/p\u003e\n\u003cp\u003e2 prepare-commit-msg, 当commit时需要输入message前会触发此hook,可以用此hook来定制自己的default message信息。\u003c/p\u003e\n\u003cp\u003e3 commit-msg,当用户输入commit的message后被触发,可以用此hook校验message的信息,比如是否符合规定,有没有cr等。\u003c/p\u003e\n\u003cp\u003e4 post-commit, 当commit完成后被触发,可以用此hook发 …\u003c/p\u003e"
December 17, 2015
javascript静态类型检测器 flow(facebook)
"\u003cp\u003e\u003ca href=\"http://flowtype.org/\"\u003ehttp://flowtype.org/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e对于flow的介绍可以参考: \u003ca href=\"http://blog.jobbole.com/80364/\"\u003ehttp://blog.jobbole.com/80364/\u003c/a\u003e\u003c/p\u003e"
December 16, 2015
linux中 kill USR1和USR2 的区别
"\u003cp\u003eUSR1亦通常被用来告知应用程序重载配置文件;例如,向Apache HTTP服务器发送一个\u003c/p\u003e\n\u003cp\u003e**USR1信号将导致以下步骤的发生:\n** 停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改。\u003c/p\u003e\n\u003cp\u003e以上摘自wiki:\u003c/p\u003e\n\u003cp\u003e呃,近日发现还有USR2,貌似这个USR1和2都可以用户自定义的,同样摘自上面的wiki:\u003c/p\u003e\n\u003cp\u003e在POSIX兼容的平台上,\u003cstrong\u003eSIGUSR1\u003c/strong\u003e和\u003cstrong\u003eSIGUSR2\u003c/strong\u003e是发送给一个进程的信号,它表示了用户定义的情况。它们的符号常量在头文件signal.h中定义。在不同的平台上,信号的编号可能发生变化,因此需要使用符号名称。kill -HUP pid 或者 killall -HUP pName:\n其中pid是进程标识,pName是进程的名称\n如果想要更改配置而不需停止并重新启动服务,可以使用上面两个命令。在对配置文件作必要的更改后,发出该命令以动态更新服务配置。\n根据约定,当你发送一个挂起信号(信号1或HUP)时,大多数服务器进程(所有常用的进程)都会进行复位操作并重新加载它们的配置文件。\u003c/p\u003e"
December 13, 2015
brew tap介绍
"\u003cp\u003e官方介绍: \u003ca href=\"https://github.com/Homebrew/homebrew/wiki/brew-tap\"\u003ehttps://github.com/Homebrew/homebrew/wiki/brew-tap\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ebrew 有个默认的仓库,brew tap 你可以看成是第三方的仓库。\n这个相信很多人都已经用到过了,安装他人扩展的 brew 服务。由于 brew 和包含的包源都是通过 github 来管理,人为的维护管理,除了自己的源还允许别人的源添加进来。类似与 Ubuntu 的 ppa。好处在于只有我安装规定的方式把包丢到 github 上面就可以用了!\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ brew tap \u0026lt;gihhub_user/repo\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e这个命令并没有包含任何的帮助说明,其实它只接受上面的这个参数。\u003c/p\u003e\n\u003cp\u003e举例说明一下,Mac OS 比较歧视 PHP ,所以每次系统更新都会把常用的开发包(Ruby、Python 等)也顺带着更新到最新版本。(吐槽:Java 都已经被抛弃不再默认安装了),而 brew 居然也不包含 PHP 的包,那怎么办呢?\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ brew tap josegonzalez/php\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e命令完成之后,执行(当前最新是 php 5.5 版本,请根据需要替换)\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ brew install …\u003c/code\u003e\u003c/pre\u003e"
December 9, 2015
mac下安装PHP提示configure: error: Cannot find OpenSSL’s 的解决办法
"\u003cp\u003e在mac 10.11.2 下安装PHP7的时候,在./configure的时候,提示\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003echecking for strftime… (cached) yes\nchecking whether to enable LIBXML support… yes\nchecking libxml2 install dir… /usr\nchecking for xml2-config path… /usr/bin/xml2-config\nchecking whether libxml build works… yes\nchecking for OpenSSL support… yes\nchecking for Kerberos support… no\nchecking whether to use system default cipher list instead of hardcoded value… no\nchecking for RAND_egd… no\nchecking for pkg-config… no\nconfigure: error: Cannot find OpenSSL’s\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e错 …\u003c/p\u003e"
December 9, 2015
常用 Git 命令清单(推荐)
"\u003cp\u003e作者: \u003ca href=\"http://www.ruanyifeng.com\"\u003e阮一峰\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e日期: \u003ca href=\"http://www.ruanyifeng.com/blog/2015/12/\"\u003e2015年12月 9日\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e我每天使用 Git ,但是很多命令记不住。\u003c/p\u003e\n\u003cp\u003e一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"http://www.ruanyifeng.com/blogimg/asset/2015/bg2015120901.png\" alt=\"\"\u003e\u003c/p\u003e\n\u003cp\u003e下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eWorkspace:工作区\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIndex / Stage:暂存区\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRepository:仓库区(或本地仓库)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemote:远程仓库\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\u003c/blockquote\u003e\n\u003ch2 id=\"一新建代码库\"\u003e一、新建代码库\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e# 在当前目录新建一个Git代码库\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e$ git init\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e# 新建一个目录,将其初始化为Git代码库\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e$ git init \u003cspan style=\"color:#f92672\"\u003e[\u003c/span\u003eproject-name\u003cspan style=\"color:#f92672\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e# 下载一个项目和它的整个代码历史\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e$ git clone \u003cspan style=\"color:#f92672\"\u003e[\u003c/span\u003eurl\u003cspan style=\"color:#f92672\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/blockquote\u003e\n\u003ch2 id=\"二配置\"\u003e二、配置\u003c/h2\u003e\n\u003cp\u003eGit的设置文件为\u003ccode\u003e.gitconfig\u003c/code\u003e,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e# 显示当前的Git配置\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e$ git config --list\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e# 编辑Git配置文件\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e$ git config -e \u003cspan style=\"color:#f92672\"\u003e[\u003c/span\u003e--global\u003cspan style=\"color:#f92672\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e# 设置提交代码时的用户信息\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e$ git config \u003cspan style=\"color:#f92672\"\u003e[\u003c/span\u003e--global …\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/blockquote\u003e"
December 5, 2015
win7下wamp安装PHP7,提示错误模块名称: php7ts.dll的解决办法
"\u003cp\u003e2015年12月3号,PHP7正式发布,目前一直在用PHP5.5版本的,PHP7的性能提高非常大,于是想在本机做一些测试,顺便为后期程序升级PHP7版本做准备。\u003c/p\u003e\n\u003cp\u003e目前开发环境为WIN7 64位。当前软件情况为64位 \u003ca href=\"http://www.wampserver.com/#wampserver-64-bits-php-5-5\"\u003eWampServer2.5\u003c/a\u003e(php5.5.12/apache2.4.9/mysql5.6.17),目前WAMP已经是多PHP版本同时存在,可以很方便的切换到各个PHP版本。\u003c/p\u003e\n\u003cp\u003e按照以前的方法( \u003ca href=\"http://blog.haohtml.com/archives/16180\"\u003ehttp://blog.haohtml.com/archives/16180\u003c/a\u003e),直接从官方下载 \u003ca href=\"http://windows.php.net/download#php-7.0\"\u003ePHP7.0.0\u003c/a\u003e,解压放在 D:/wamp/bin/php/ 这个目录里,并设置phpForApache.ini文件(复制PHP.ini),停止WAMP所有服务并退出,然后再重启WAMP。此时在WAMP的PHP的版本选择里应该会出现PHP7.0.0这个版本选择,我们选择此版本,wamp重启。到此所有步骤已经完成。\u003c/p\u003e\n\u003cp\u003e由于我们需要用到一些PHP的扩展,如GD2,MYSQL,发现启用扩展后,WAMP重启失败,通过WIN7的系统日志发现以下信息:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e错误应用程序名称: httpd.exe,版本: …\u003c/p\u003e\u003c/blockquote\u003e"
December 4, 2015
wamp下配置支持多版本php
"\u003cp\u003e\u003cstrong\u003e\u003ca href=\"http://www.wampserver.com/en\"\u003eWAMPServer\u003c/a\u003e\u003c/strong\u003e 可以让开发者在Windows系统下快速搭建WAMP环境,它支持多版本的Apache、MySQL、PHP之间的相互切换,互不影响,对于PHPer开发者来讲极为方便快速。\u003c/p\u003e\n\u003cp\u003e以下是在WAMPServer下同时支持PHP5.3、PHP5.4、PHP5.5、PHP5.6的步骤:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1、安装WAMPServer\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e根据自己的操作系统选择相应的WAMP版本,我这里选择WAMPSERVER-32 BITS \u0026amp; PHP 5.5-2.5,双击安装,选择安装目录即可,超级简单。\u003c/p\u003e\n\u003cp\u003e根据我安装的版本,这里已经默认安装了PHP5.5.12,如下图,可以发现多了两个特别文件: \u003cstrong\u003ephpForApache.ini\u003c/strong\u003e、 \u003cstrong\u003ewampserver.conf\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2015/12/wamp_1.png\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2015/12/wamp_1.png\" alt=\"wamp_1\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2、下载PHP二进制包\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ePHP目前提供PHP5.3、PHP5.4、PHP5.5、PHP5.6版本,因为我安装的是WAMPSERVER-32 BITS,所以对应的PHP版本只能是32位,到 \u003cstrong\u003e\u003ca href=\"http://windows.php.net/download/\"\u003eWindows PHP\u003c/a\u003e\u003c/strong\u003e 下载TS版本( \u003cstrong\u003eThread-Safe-VC9-X86\u003c/strong\u003e)对应的PHP二进制 \u003cstrong\u003eZIP\u003c/strong\u003e 包,并解压缩二进制包到WAMP安装目录, …\u003c/p\u003e"