今天我想和大家分享 Go 语言一些非常实用的技巧,用于编码和解码 JSON 文档。Go 语言的 encoding/json 包有一些有趣的特性,帮助我们轻松地解析 JSON 文档。你可以轻松地将大多数实际应用中的 JSON 转换为带有 Go 语言结构体标签的接口或者是 Marshaler 和 Unmarshaler 接口。 我要晨读
对于我这类主要使用 Linux 的人来说,我对于偶尔不得不去应付 Windows 下的问题感到十分的痛苦。这句话在我写我们的 Smart Agent™ 的时候显得格外正确,它能同时跑在 Linux 和 Windows 上,并且会为了我们的日志管理及监控软件去深入探究这两个系统的底层相关问题。 我要晨读
大家都知道go语言的defer功能很强大,对于资源管理非常方便,但是如果没用好,也会有陷阱哦。Go 语言中延迟函数 defer 充当着 try...catch 的重任,使用起来也非常简便,那么defer、return、返回值、panic 之间的执行顺序是怎么样的呢,下面我们就一点一点来揭开它的神秘面纱!话不多说了,来一起看看介绍吧。 我要晨读
背景:服务需要高频发出GET请求,然后我们封装的是 golang 的net/http 库, 因为开源的比如req 和gorequsts 都是封装的net/http ,所以我们还是选用原生(req 使用不当也会掉坑里)。我们的场景是多协程从chan 中取任务,并发get 请求,然后设置超时,设置代理,完了。我们知道net/http 是自带了连接池的,能自动回收连接,但是,发现连接暴涨,起了1万个连接。 我要晨读
大多数的 Go 程序员都知道和喜欢用 go test,这个测试工具来自于 Go 官方的 gc 工具链。(想要执行测试代码)这个命令可能是最简单的了,而且还能做得很漂亮。 我要晨读
Kubernetes如今风靡一时,所有主要的云服务提供商都将其作为部署云原生应用的解决方案。Kubernetes有哪些显著的特性和工具优势,让企业开始接受它?本文作者给出了系统的梳理。 我要晨读
context是Go中广泛使用的程序包,由Google官方开发,在1.7版本引入。它用来简化在多个go routine传递上下文数据、(手动/超时)中止routine树等操作 我要晨读
这些令人惊叹的特性没有浮于表面,它们可以为你节省大量的工作。它们还可以使软件开发更加愉快。 我要晨读
聊一聊,Golang “相对”路径问题 我要晨读
连接池在编程中并不少见,链接数据库,redis等操作都需要连接池,否则就会出现并发问题,如果每次操作都建立一条新的链接将会大大消耗资源,笔者也是在使用thrift-Clinet链接Service端使用的时候出现了并发问题,然后找到了一个通用的连接池的库在这里分享给大家. 我要晨读
Genhash 是一种地理编码,由 Gustavo Niemeyer 发明的。它是一种分级的数据结构,把空间划分为网格。Genhash 属于空间填充曲线中的 Z 阶曲线(Z-order curve)的实际应用。 我要晨读
写这个系列的目的不是为了列出 Golang 编程语言的调试器的所有特性。如果你想看这些内容,可以看下 Delve。在这篇文章里我们试着去探索下调试器通常是怎样工作的,怎么在 Linux 上完成一个基本的调试,Linux 上比较关心 Golang 的功能,比如 goroutine 。 我要晨读
Kubernetes HA 1.9 高可用集群,本地离线部署 我要晨读
我是怎么阅读kubernetes源代码的?为什么要阅读代码?怎么阅读k8s源代码? 我要晨读
支持多 MySQL 连接 支持多 mongo 连接 支持多 redis 连接 采用 zap 日志记录 采用 toml 配置文件 采用 glide 管理依赖包 支持 gomail 邮件发送 支持爬虫模拟登录 我要晨读
select 语句用于在多个发送/接收信道操作中进行选择。select 语句会一直阻塞,直到发送/接收操作准备就绪。如果有多个信道操作准备完毕,select 会随机地选取其中之一执行。该语法与 switch 类似,所不同的是,这里的每个 case 语句都是信道操作。我们好好看一些代码来加深理解吧。 我要晨读
Go1.9 出来后 6 个多月的时间,Go1.10 就被发布。新版本带来大大小小的变化(发行说明),但是我想谈谈有关 net/http 包的改变。1.10 版本支持在 HTTPS(commit) 上的代理,而在原来它只能通过使用普通的(未加密)HTTP 来和代理进行沟通。接下来让我们来看看它是否真的可以工作。 我要晨读
缓冲信道和工作池(Buffered Channels and Worker Pools) 我要晨读
Reflect 反射包有2个重要的类型,分别通过Typeof()和ValueOf()返回。 分别在源码包里的reflect包中的type.go和value.go 我要晨读