goioc 介绍 goioc 是一个基于 GO 语言编写的依赖注入框架,基于反射进行编写。 支持泛型; 简单易用的 API; 简易版本的对象生命周期管理,作用域内对象具有生命; 延迟加载,在需要的时候才会实例化对象; 支持结构体字段注入,多层注入; 对象实例化线程安全,作用域内只会被执行一次。 [......] 继续阅读
goioc 介绍 goioc 是一个基于 GO 语言编写的依赖注入框架,基于反射进行编写。 支持泛型; 简单易用的 API; 简易版本的对象生命周期管理,作用域内对象具有生命; 延迟加载,在需要的时候才会实例化对象; 支持结构体字段注入,多层注入; 对象实例化线程安全,作用域内只会被执行一次。 [......] 继续阅读
建立链路 SDK 官方仓库地址: https://github.com/open-telemetry/opentelemetry-go 设计一个这样的执行流程: Run 先后执行 Run1、Run2: a.Run1(newCtx) a.Run2(newCtx) Run1 中,还执行[......] 继续阅读
使用示例: package main import ( "fmt" "os" "os/signal" ) func main() { // Set up channel on which to send signal notifications. // W[......]继续阅读
使用 Go 中常用的 log 方法: Print/Printf/Println : 打印日志信息 Panic/Panicf/Panicln : 打印日志信息后,以拼装好的字符串为参数调用 Panic Fatal/Fatalf/Fatalln : 打印日志信息后,os.Exit(1) 退出程序 New[......] 继续阅读
package main import ( "context" "fmt" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/t[......]继续阅读
在下面这个示例中,定时器每 1 秒向 channel 发生一次消息。当数量达到 10 次时,会自动终止。 func main() { fmt.Println("Commencing countdown.") tick := time.Tick(1 * time.Second)[......]继续阅读
[TOC] 背景 其实,规划这篇文章有一段时间了,但是比较懒,所以一直拖着没写。 最近时总更新太快了,太卷了,所以借着 .NET 7 正式版发布,熬夜写完这篇文章,希望能够追上时总的一点距离。 本文主要介绍如何在 .NET 和 Go 语言中如何生成系统(Windows)动态链接库,又如何从代码中引用[......] 继续阅读
基础 Go Web 的表单类型有三种: r.Form r.PostForm r.MultipartForm PostForm 支持 form-data 和 x-www-form-urlencoded 两种请求体,但是不支持上传文件。 MultipartForm 只支持 for[......] 继续阅读
[TOC] 笔者前段时间在学习数据结构时,恰好听说了 LSM Tree,于是试着通过 LSM Tree 的设计思想,自己实现一个简单的 KV 数据库。 代码已开源,代码仓库地址:https://github.com/whuanle/lsm 笔者使用 Go 语言来实现 LSM Tree 数据库,因为[......] 继续阅读
scanme.nmap.org 是要扫描的域名或 IP 地址。 package main import ( "fmt" "net" "sort" ) func main() { ports := make(chan int, 100) results :=[......]继续阅读
reflect.Type.Elem() 可以返回元素的类型,例如指针类型,返回不带指针的类型。 reflect.Value.Elem() 是获取指向值的引用。 type name struct { } func (n name) Print(str string) { } func main([......]继续阅读
以 Linux 为例,在 Go 中调用一个命令行程序,其代码示例如下: package main import ( "log" "os" "os/exec" ) func main() { cmd := exec.Command("top") cmd.S[......]继续阅读
从何说起 Jaeger 部署 Jaeger 从示例了解 Jaeger Client Go 了解 trace、span tracer 配置 Sampler 配置 Reporter 配置 分布式系统与span 怎么调、怎么传 HTTP,跨进程追踪 客户端 Web 服务端 Tag 、 Log 和 R[......] 继续阅读
Go GRPC 入门 Go GRPC 入门 1,安装包 2,gRPC 服务端 3,gRPC 客户端 4,编译运行 5,其它 GRPC Protobuf buffer 字段类型 字段规则 Protobuf gRPC 四种服务方法 编译 proto 1,安装包 grpc gola[......] 继续阅读
在 Go 语言中,当我们需要引入一个包时,可以使用 import: import ( "io" ) 对于标准库,如 bufio、time、net 等,只需要一个名字即可引入,就像 C 语言的 #include 。 如果我们要引入自己编写的包或第三方源码,则会有些细节需要留[......] 继续阅读