# Go语言HTTP服务生命周期
3 min read
在 go 语言里启动一个 http 服务非常简单,只需要一行代码http.ListenAndServe()就可以搞定,这个方法会一直阻塞着直到进程关闭,如果这个时候来了些特殊的需求比如:
在 go 语言里启动一个 http 服务非常简单,只需要一行代码http.ListenAndServe()就可以搞定,这个方法会一直阻塞着直到进程关闭,如果这个时候来了些特殊的需求比如:
最近在开发一个功能时,需要通过 http 协议上报大量的日志内容,但是在 Go 标准库里的 http client 的 API 是这样的:
用过OOP的都知道,子类重写父类的方法可以优雅的实现代码的复用,例如:
近期线上 k8s 时不时就会出现一些内部服务间的调用超时问题,通过日志可以得知超时的原因都是出现在域名解析上,并且都是 k8s 内部的域名解析超时,于是直接先将内部域名替换成 k8s service 的 IP,观察一段时间发现没有超时的情况发生了,但是由于使用 service IP 不是长久之计,所以还要去找解决办法。
当初学习 go 语言的原因之一就是看中了 go 可以直接编译成机器码运行,并且支持跨操作系统的交叉编译,这对开发跨操作系统软件提供了极大的便利,这篇文章目的就是记录下 go 是如何交叉编译的。
go 自带的flag包可以很容易的实现一个命令行程序的参数解析,但是flag包默认只支持几个基本类型的参数解析,如果需要传递slice或者map类型时就要自定义了,这里记录一下。