不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2017-02-28 10:23  分类:编程基础/Web安全  编辑

命名

YAML 的意思其实是:"Yet Another Markup Language"(仍是一种置标语言)的缩写。

功能

YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表,标量等资料形态、。

它使用 空白符号缩排 和 大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种设定档、倾印除错内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。

作者:php-note.com  发布于:2017-02-26 10:23  分类:Go/Python  编辑
作者:php-note.com  发布于:2017-02-26 10:19  分类:Go/Python  编辑

命令 go env 用于打印 Go 语言的环境信息。其中的一些信息我们在之前已经多次提及,但是却没有进行详细的说明。在本小节,我们会对这些信息进行深入介绍。我们先来看一看 go env 命令情况下都会打印出哪些 Go 语言通用环境信息。

表0-25 go env 命令可打印出的 Go 语言通用环境信息

名称 说明
CGO_ENABLED 指明cgo工具是否可用的标识。
GOARCH 程序构建环境的目标计算架构。
GOBIN 存放可执行文件的目录的绝对路径。
GOCHAR 程序构建环境的目标计算架构的单字符标识。
作者:php-note.com  发布于:2017-02-26 10:18  分类:Go/Python  编辑

cgo 也是一个 Go 语言自带的特殊工具。一般情况下,我们使用命令 go tool cgo 来运行它。这个工具可以使我们创建能够调用 C 语言代码的 Go 语言源码文件。这使得我们可以使用 Go 语言代码去封装一些 C 语言的代码库,并提供给 Go 语言代码或项目使用。

作者:php-note.com  发布于:2017-02-26 10:18  分类:Go/Python  编辑

我们可以使用 go tool pprof 命令来交互式的访问概要文件的内容。命令将会分析指定的概要文件,并会根据我们的要求为我们提供高可读性的输出信息。

在 Go 语言中,我们可以通过标准库的代码包 runtime 和 runtime/pprof 中的程序来生成三种包含实时性数据的概要文件,分别是 CPU 概要文件、内存概要文件 和 程序阻塞概要文件。下面我们先来分别介绍用于生成这三种概要文件的 API 的用法。

作者:php-note.com  发布于:2017-02-26 10:17  分类:Go/Python  编辑

命令 go vet 是一个 用于检查 Go 语言源码中静态错误的简单工具。与大多数 Go 命令一样,go vet 命令可以接受 -n 标记和 -x 标记。-n 标记用于只打印流程中执行的命令而不真正执行它们。-n 标记也用于打印流程中执行的命令,但不会取消这些命令的执行。示例如下:

hc@ubt:~$ go vet -n pkgtool
/usr/local/go/pkg/tool/linux_386/vet golang/goc2p/src/pkgtool/envir.go golang/goc2p/src/pkgtool/envir_test.go golang/goc2p/src/pkgtool/fpath.go golang/goc2p/src/pkgtool/ipath.go golang/goc2p/src/pkgtool/pnode.go golang/goc2p/src/pkgtool/util.go golang/goc2p/src/pkgtool/util_test.go
#
#
作者:php-note.com  发布于:2017-02-26 10:16  分类:Go/Python  编辑

命令 go fix 会把指定 代码包 的所有 Go 语言源码文件中的旧版本代码修正为新版本的代码。这里所说的版本即 Go 语言的版本。代码包的所有 Go 语言源码文件不包括其子代码包(如果有的话)中的文件。修正操作包括把对旧程序调用的代码更换为对新程序调用的代码、把旧的语法更换为新的语法,等等。

作者:php-note.com  发布于:2017-02-26 10:15  分类:Go/Python  编辑

go list 命令的作用是列出指定的 代码包 的信息。与其他命令相同,我们需要以 代码包导入路径 的方式给定代码包。被给定的代码包可以有多个。这些代码包对应的目录中必须直接保存有 Go 语言源码文件,其子目录中的文件不算在内。否则,代码包将被看做是不完整的。现在我们来试用一下:

hc@ubt:~$ go list cnet/ctcp pkgtool
cnet/ctcp
pkgtool
作者:php-note.com  发布于:2017-02-25 10:14  分类:Go/Python  编辑

go test 命令用于对 Go 语言编写的程序进行测试。这种测试是以 代码包 为单位的。当然,这还需要测试源码文件的帮助。关于怎样编写并写好 Go 程序测试代码,我们会在本章的第二节加以详述。在这里,我们只讨论怎样使用命令启动测试。

go test 命令会自动测试每一个指定的 代码包。当然,前提是指定的代码包中存在测试源码文件。测试源码文件是名称以“_test.go”为后缀的、内含若干测试函数的源码文件。测试函数一般是以“Test”为名称前缀并有一个类型为“testing.T”的参数声明的函数.

作者:php-note.com  发布于:2017-02-25 10:13  分类:Go/Python  编辑

Go 源码文件包括:命令源码文件库源码文件测试源码文件。其中,命令源码文件 总应该属于 main 代码包,且在其中有无参数声明、无结果声明的 main 函数。单个命令源码文件可以被单独编译,也可以被单独安装(可能需要设置环境变量 GOBIN)。当然,命令源码文件也可以被单独运行。我们想要运行 命令源码文件 就需要使用命令 go run

作者:php-note.com  发布于:2017-02-25 10:13  分类:Go/Python  编辑

go doc 命令可以打印附于Go语言程序 实体 上的文档。我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的。

插播:所谓 Go语言的 程序实体,是指变量、常量、函数、结构体以及接口。而程序实体的 标识符 即是代表它们的名称。标识符又分 非限定标识符限定标识符。其中,限定标识符 一般用于表示某个代码包中的程序实体或者某个结构体类型中的方法或字段。例如,标准库代码包 io 中的名为 EOF 的变量用限定标识符表示即 io.EOF。又例如,如果我有一个 sync.WaitGroup 类型的变量 wg 并且想调用它的 Add 方法,那么可以这样写 wg.Add()。其中,wg.Add 就是一个限定标识符,而后面的()则代表了调用操作。

作者:php-note.com  发布于:2017-02-25 10:12  分类:Go/Python  编辑

执行 go clean 命令会删除掉执行其它命令时产生的一些文件和目录,包括:

  1. 在使用 go build 命令时在当前代码包下生成的与包名同名或者与Go源码文件同名的可执行文件。在Windows下,则是与包名同名或者Go源码文件同名且带有“.exe”后缀的文件。

  2. 在执行 go test 命令并加入 -c 标记时在当前代码包下生成的以包名加“.test”后缀为名的文件。在Windows下,则是以包名加“.test.exe”后缀为名的文件。我们会在后面专门介绍 go test 命令。

作者:php-note.com  发布于:2017-02-23 10:12  分类:Go/Python  编辑
hc@ubt:~$ go get github.com/hyper-carrot/go_lib/logging

命令 go get 可以根据要求和实际情况从互联网上下载或更新指定的代码包及其依赖包,并对它们进行编译和安装。在上面这个示例中,我们从著名的代码托管站点 Github 上下载了一个项目(或称代码包),并安装到了环境变量 GOPATH 中包含的第一个工作区中。与此同时,我们也知道了这个代码包的导入路径就是 github.com/hyper-carrot/go_lib/logging

作者:php-note.com  发布于:2017-02-23 10:09  分类:PHP库/系统/微信  编辑
作者:php-note.com  发布于:2017-02-23 10:06  分类:Go/Python  编辑

命令 go install 用于编译并安装指定的代码包及它们的依赖包。当指定的代码包的依赖包还没有被编译和安装时,该命令会先去处理依赖包。与 go build 命令一样,传给 go install 命令的代码包参数应该以导入路径的形式提供。并且,go build 命令的绝大多数标记也都可以用于 go install 命令。实际上,go install 命令只比 go build 命令多做了一件事,即:安装编译后的结果文件到指定目录。

作者:php-note.com  发布于:2017-02-22 10:04  分类:Go/Python  编辑

go build 命令用于编译我们 指定的  源码文件代码包 以及它们的依赖包

例如,如果我们在执行 go build 命令时不后跟任何代码包,那么命令将试图编译当前目录所对应的代码包。例如,我们想编译 goc2p 项目的代码包 logging。其中一个方法是进入 logging 目录并直接执行该命令:

hc@ubt:~/golang/goc2p/src/logging$ go build

因为在代码包 logging 中只有库源码文件和测试源码文件,所以在执行 go build 命令之后不会在当前目录和 goc2p 项目的 pkg 目录中产生任何文件。

作者:php-note.com  发布于:2017-02-22 09:57  分类:Go/Python  编辑

Go 语言的 1.5 版本在标准命令方面有了重大变更。这倒不是说它们的用法有多大的变化,而是说它们的底层支持已经大变样了。让我们先来对比一下 $GOROOT/pkg/tool/< 平台相关目录 > 中的内容。以下简称此目录为 Go 工具目录。

插播:平台相关目录即以_命名的目录,用于存放因特定平台的不同而不同的代码包归档文件或可执行文件。其中,代表特定平台的操作系统代号,而则代表特定平台的计算架构代号。使用 go env 命令便可查看它们在你的计算机中的实际值。

作者:php-note.com  发布于:2017-02-21 09:56  分类:Linux软件安装/优化  编辑

Supervisor是一个进程管理工具,官方的说法:

用途就是有一个进程需要每时每刻不断的跑,但是这个进程又有可能由于各种原因有可能中断。当进程中断的时候我希望能自动重新启动它,此时,我就需要使用到了Supervisor

作者:php-note.com  发布于:2017-02-19 09:55  分类:Go/Python  编辑
作者:php-note.com  发布于:2017-02-18 09:55  分类:Go/Python  编辑

Golang 提供了两个标准库用来处理模板 text/template 和 html/template。我们使用 html/template 格式化 html 字符。

模板引擎

模板引擎很多,Python 的 jinja,nodejs 的 jade 等都很好。所谓模板引擎,则将模板和数据进行渲染的输出格式化后的字符程序。对于 Go,执行这个流程大概需要三步。

  1. 创建模板对象
  2. 加载模板字串
  3. 执行渲染模板

其中最后一步就是把加载的字符和数据进行格式化。其过程可以总结下图: