使用 wire 实现 golang 依赖注入

最近,在负责一个 Go 项目开发。项目分层为:handler 层、service 层 dao 层。其中 handler 层依赖 service 层,service 层依赖不同基础组件以及 dao 层。这样,只要 handler 层、service 层的依赖项发生了变化,对应层的代码都得重新调整,非常繁琐。为此,在网上搜索了 Go 依赖注入相关的资料,得出,常用的 Go 依赖注入框架有:diginjectwire。其中 dig、inject 是在运行时注入依赖,对代码有一定的侵入性。而 wire 是代码生成工具,生成的内容也是普通的 Go 代码,只不过,在运行时不再依赖 wire。

本文主要是在自己使用 wire 后,对 wire 用户指南进行完整阅读翻译并记录。

阅读全文 »

Linux 信号处理

信号被传递给进程,用于软件中断。操作系统使用信号将异常情况报告给运行中的程序。某些信号用于报告错误,例如:引用了无效的内存地址。而另一些信号则用于报告异步事件,例如:网线断开了。

阅读全文 »