Browsed by
标签:golang包

[译] Linux,Netlink 和 Go – 第 1 部分:netlink

[译] Linux,Netlink 和 Go – 第 1 部分:netlink

我是 Prometheus 的大粉丝。 我在家庭和工作中都使用了很多,并且非常喜欢深入了解我的系统在任何时刻的工作情况。 最广泛使用的 Prometheus 商家之一是 node_exporter:可以从类 UNIX 机器中提取各种指标的守护进程。 在我浏览仓库时,我注意到 open issue,要求向 node_exporter 添加 WiFi 指标。 这个想法吸引了我,我意识到我一定会在我的 Linux 笔记本电脑上使用这样一个功能。 我开始探索在 Linux 上检索WiFi 设备信息的选项。 经过几周的实验(包括旧版 ioctl() 无线扩展 API),我创作了两个 Go 包,它们可以共同工作,在 Linux 上与 WiFi 设备进行交互: * netlink:提供对 Linux netlink 套接字的底层访问。 * wifi:提供对 IEEE 802.11 WiFi 设备操作和统…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (1 人打了分, 平均分:1.00,总分:5)
Loading...
标准库 expvar 实战

标准库 expvar 实战

Go 标准库有一个 expvar 包。 该软件包可以通过 JSON 格式的 HTTP API 公开您的应用程序和 Go 运行时的指标。 我认为这个软件包对于每个人 gopher 来说都是有用的。 但是,来自 godoc.org 的数据表明,没有多少人知道这个包。截止目前(2017-6-18),该包被公开的项目 import 2207 次,相比较而言,连 image 包被 import 3491 次之多。这篇文章,我想展示 expvar 包的工作原理,以及它的使用。 包简介 包 expvar 为公共变量提供了一个标准化的接口,如服务器中的操作计数器。它以 JSON 格式通过 /debug/vars 接口以 HTTP 的方式公开这些公共变量。 设置或修改这些公共变量的操作是原子的。 除了为程序增加 HTTP handler,此包还注册以下变量: 导入该包有时只是为注册其 HTTP handle…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
Go语言版crontab

Go语言版crontab

1、cron 表达式的基本格式 用过 linux 的应该对 cron 有所了解。linux 中可以通过 crontab -e 来配置定时任务。不过,linux 中的 cron 只能精确到分钟。而我们这里要讨论的 Go 实现的 cron 可以精确到秒,除了这点比较大的区别外,cron 表达式的基本语法是类似的。(如果使用过 Java 中的 Quartz,对 cron 表达式应该比较了解,而且它和这里我们将要讨论的 Go 版 cron 很像,也都精确到秒) cron(计划任务),顾名思义,按照约定的时间,定时的执行特定的任务(job)。cron 表达式 表达了这种约定。 cron 表达式代表了一个时间集合,使用 6 个空格分隔的字段表示。 字段名 是否必须 允许的值 允许的特定字符 秒(Seconds) 是 0-59 * / , – 分(Minutes) 是 0-59 * / , …

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
Golang 代码中绑定Host

Golang 代码中绑定Host

在公司内部,经常会有域名是需要绑定host才能访问的,如果是通过浏览器访问,我们会修改本机的hosts文件;然而,如果是要通过程序访问这样的域名,我们是否依然必须绑定host呢?答案当然是否定的,而且,依赖本地绑定的host,程序到其他机器部署,也必须在那台机器绑定host,如果机器很多呢? 本文示例: IP:192.168.1.102,也就是说需要访问这台机器上的资源 域名:www.studygolang.com,nginx 配置的虚拟主机 url path:/testhost.txt,内容是:Welcome to studygolang.com 需求:需要请求服务器上的 testhost.txt 资源 1、Linux Shell的解决方案 Linux下的curl程序可以绑定host,因此,在 shell 中可以很简单的实现,如: curl -H “Host:www.stud…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
标准库—命令行参数解析flag

标准库—命令行参数解析flag

评论有人提到没有例子,不知道讲的是什么。因此,为了大家能够更好地理解,特意加了一个示例。其实本文更多讲解的是 flag 的实现原理,加上示例之后,就更好地知道怎么使用了。建议阅读 《Go语言标准库》一书的对应章节:flag – 命令行参数解析。 在写命令行程序(工具、server)时,对命令参数进行解析是常见的需求。各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用。如果命令行参数纯粹自己写代码解析,对于比较复杂的,还是挺费劲的。在go标准库中提供了一个包:flag,方便进行命令行解析。 注:区分几个概念 1)命令行参数(或参数):是指运行程序提供的参数 2)已定义命令行参数:是指程序中通过flag.Xxx等这种形式定义了的参数 3)非flag(non-flag)命令行参数(或保留的命令行参数):后文解释 一、使用示例 我们以 nginx 为例,执行 nginx -…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
学习Go包

学习Go包

学习一门语言,熟悉语言语法、规范等之后,应该学习语言的标准库。在Python中,会有一些函数来探究包的内容。在Go中,更多的是通过查看Go标准库文档来学习。 不仅要知其然,更要知其所以然。 实际写代码中,肯定需要用到很多标准库中的包,在学习阶段,可以在需要用某个包时,彻底学习这个包,掌握它。标准库中每个包的文档是学习包最好的资料,一定要仔细看明白。 Go包具体该怎么学了?以下是我自己的学习方法,仅供参考(以time包为例) 1、看文档中的Overview,整体上对该包有一个了解 从这知道,该包用于处理和显示日期和时间。日期都是公历。 2、看Index,关注函数和类型(函数是指不属于某种类型的func),不需要关注类型的方法(Variable和Constants需要大概关注) 1)定义了一些常量,表示时间格式 2)定义了Duration、Location、Month、ParseError、T…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
设计Go包

设计Go包

这里以第三方包goptions为例说明:(只说核心数据结构) 1、定义数据结构(struct等),如FlagSet、Flag,以及数据结构对应的方法。(这里一般会提供实例化数据结构的方法,比如:NewFlagSet()) 一般地,依赖这些就可以供外部使用(一般会就该包的功能提供一个外部可用的入口) 比如,外部可以这么使用goptions这个包: options := struct{}{} flagSet := goptions.NewFlagSet(filepath.Base(os.Args[0]), &options) flagSet.Parse(os.Args[1:]) … 相当于自己实现了goptions包中的Parse()或ParseAndFail() 这样,每个调用者都得这么实现一次。 2、定义函数,提供给外部方便调用的接口; 即:将上面的封装成函数供使用者直…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...