March 23, 2016
golang中的md5的用法
"代码\npackage main import ( \u0026#34;crypto/md5\u0026#34; \u0026#34;encoding/hex\u0026#34; \u0026#34;fmt\u0026#34; ) func main() { // md5 加密的第一种方法 srcData := []byte(\u0026#34;iyannik0215\u0026#34;) cipherText1 := md5.Sum(srcData) fmt.Printf(\u0026#34;md5 encrypto is \u0026#34;iyannik0215\u0026#34;: %x n\u0026#34;, cipherText1) // md5 加密的第二种方法 hash := md5.New() hash.Write(srcData) cipherText2 := hash.Sum(nil) hexText := make([]byte, 32) hex.Encode(hexText, cipherText2) fmt.Println(\u0026#34;md5 encrypto is \u0026#34;iyannik0215\u0026#34;:\u0026#34;, string(hexText)) } # …"
March 21, 2016
koa中生成器函数generator执行顺序详解
"ES6的generator http://book.apebook.org/minghe/koa-action/co/start.html\nfunction* gen() { var a = yield \u0026#39;start\u0026#39;; console.log(a); var b = yield \u0026#39;end\u0026#39;; console.log(b); return \u0026#39;over\u0026#39;; } var it = gen(); console.log(it.next()); // {value: \u0026#39;start\u0026#39;, done: false} console.log(it.next(22)); // 22 {value: \u0026#39;end\u0026#39;, done: false} console.log(it.next(333)); // 333 {value: \u0026#39;over\u0026#39;, done: true} 带有 * 的函数声明表示是一个 generator 函数,当执行 gen() 时,函数体内的代码并没有执行,而是返回了一个 generator 对象。 …"
March 15, 2016
给一个正在运行的Docker容器动态添加Volume(转)
"之前有人问我Docker容器启动之后还能否再挂载卷,考虑mnt命名空间的工作原理,我一开始认为这很难实现。不过现在我认为是它实现的。\n简单来说,要想将磁盘卷挂载到正在运行的容器上,我们需要:\n使用nsenter将包含这个磁盘卷的整个文件系统mount到临时挂载点上; 从我们想当作磁盘卷使用的特定文件夹中创建绑定挂载(bind mount)到这个磁盘卷的位置; umount第一步创建的临时挂载点。 注意事项 在下面的示例中,我故意包含了$符号来表示这是Shell命令行提示符,以帮助大家区分哪些是你需要输入的,哪些是机器回复的。有一些多行命令,我也继续用\u0026gt;。我知道这样使得例子里的命令无法轻易得被拷贝粘贴。如果你想要拷贝粘贴代码,请查看文章最后的示例脚本。\n详细步骤 下面示例的前提是你已经使用如下命令启动了一个简单的名为charlie的容器:\n$ docker run --name charlie -ti ubuntu bash 我们需要做的是将宿主文件夹 /home/jpetazzo/Work/DOCKER/docker 挂载到容器里的 /src 目录。好了,让我们开始吧。 …"
March 12, 2016
node出现“dyld: bad external relocation length”的解决办法
"mac下有时候在执行 npm的过程中,我们强制中止了操作或者一些命令出现问题会提示“dyld: bad external relocation length”这个错误,这个时候只要将未下载完的文件删除即可,我这里使用 n 4.4.3下载的时候,网络出现异常,提示这个错误,只要删除 /usr/local/n/versions/node/4.4.3 这个目录即可。\n如果还是不行的话,可以试着执行一下\nbrew doctor 命令,根据提示操作就可以了。\n我遇到的情况是使用node版本控制n安装新版本号的时候,好像安装包下载的不完整,但提示安装成功了,在最后提示这个错误。试了好多方法卸载重装也不行,最后根据 brew doctor 的提示,执行了\nbrew link --overwrite node 彻底解决了。"
March 12, 2016
nodejs中package.json文件说明
"推荐: http://jingpin.jikexueyuan.com/article/34254.html\npackage.json 中包含各种所需模块以及项目的配置信息(名称、版本、许可证等)meta 信息。\npackage.json文件可以通过npm init 来创建\n包含可配置项 name 名称 应用描述 description 版本号 version 应用的配置项 config 作者 author 资源仓库地址 respository 授权方式 licenses 目录 directories 应用入口文件 main 命令行文件 bin 项目应用运行依赖模块 dependencies 项目应用开发环境依赖 devDependencies 运行引擎 engines 脚本 script 简单模式\n==========================\n{ name: \u0026#34;myApp\u0026#34;, version :\u0026#34;0.0.1\u0026#34; } 完整模式\n===========================\n{ \u0026#34;name\u0026#34;: \u0026#34;myApp\u0026#34;, …"
March 12, 2016
windows平台下的PHP的线程安全版本与非线程安全版本的区别
"Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分(Linux/Unit平台没有这个概念的东西的),这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍。\nPHP有2中运行方式:ISAPI和FastCGI。\nISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择Thread Safe版本;\n而FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择Non Thread Safe版本。\n对于apache服务器来说一般选择isapi方式,而对于nginx服务器则选择FastCGI方式。\n1.Non Thread Safe版本php适用在使用CGI以及fastCGI的web服务器上,如nginx,lighttpd以及IIS的CGI …"
March 12, 2016
PHP底层工作原理
"从图上可以看出,php从下到上是一个4层体系\n①Zend引擎\nZend整体用纯c实现,是php的内核部分,它将php代码翻译(词法、语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法、 实现了基本的数据结构(如hashtable、oo)、内存分配及管理、提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕zend 实现。\n②Extensions\n围绕着zend引擎,extensions通过组件式的方式提供各种基础服务,我们常见的各种内置函数(如array系列)、标准库等都是通过 extension来实现,用户也可以根据需要实现自己的extension以达到功能扩展、性能优化等目的(如贴吧正在使用的php中间层、富文本解析 就是extension的典型应用)。\n③Sapi\nSapi全称是Server Application Programming Interface,也就是服务端应用编程接口,sapi通过一系列钩子函数,使得php可以和外围交互数据,这是php非常优雅和成功的一个设计,通过 sapi成功的将php本身和上层应用解耦隔离,php可以不再 …"
March 10, 2016
NPM 命令介绍(转)
"NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:\n允许用户从NPM服务器下载别人编写的第三方包到本地使用。 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。 由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 **“npm -v” **来测试是否成功安装。命令如下,出现版本提示表示安装成功:\n$ npm -v 2.3. 如果你安装的是旧版本的 npm,可以很容易得通过 npm 命令来升级,命令如下:\n$ sudo npm install npm -g /usr/local/bin/npm -\u0026gt; /usr/local/lib/node_modules/npm/bin/npm-cli.js [email protected] /usr/local/lib/node_modules/npm 如果是 Window 系统使用以下命令即可:\nnpm install npm -g 使用 npm 命令安装模块 npm …"
March 10, 2016
nodejs学习资料
"修改npm包管理器的registry( registry.npmjs.org)为淘宝镜像( npm.taobao.org),参考nam config -h 相关命令\nnpm config set registry “https://registry.npm.taobao.org“ http://npm.taobao.org\n七天学会NodeJS http://nqdeng.github.io/7-days-nodejs/\nNode.js Style Guide https://github.com/dead-horse/node-style-guide\n深入Node.js的模块机制 http://www.infoq.com/cn/articles/nodejs-module-mechanism/\n学习ES6生成器(Generator) http://www.toobug.net/article/learning_es6_generator.html\nrequire() 源码解读 http://www.ruanyifeng.com/blog/2015/05/require.html …"