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 (还没有人评分,赶紧评一下)
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

在写命令行程序(工具、server)时,对命令参数进行解析是常见的需求。各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用。如果命令行参数纯粹自己写代码解析,对于比较复杂的,还是挺费劲的。在go标准库中提供了一个包:flag,方便进行命令行解析。 注:区分几个概念 1)命令行参数(或参数):是指运行程序提供的参数 2)已定义命令行参数:是指程序中通过flag.Xxx等这种形式定义了的参数 3)非flag(non-flag)命令行参数(或保留的命令行参数):后文解释 一、flag包概述 flag包实现了命令行参数的解析。 定义flags有两种方式: 1)flag.Xxx(),其中Xxx可以是Int、String等;返回一个相应类型的指针,如: 2)flag.XxxVar(),将flag绑定到一个变量上,如: 另外,还可以创建自定义flag,只要实现flag.Value接口即可(要…

阅读全文 阅读全文

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...