goioc 介绍 goioc 是一个基于 GO 语言编写的依赖注入框架,基于反射进行编写。 支持泛型; 简单易用的 API; 简易版本的对象生命周期管理,作用域内对象具有生命; 延迟加载,在需要的时候才会实例化对象; 支持结构体字段注入,多层注入; 对象实例化线程安全,作用域内只会被执行一次。 [......] 继续阅读

2022年11月27日 0条评论 910点热度 0人点赞 痴者工良 阅读全文

建立链路 SDK 官方仓库地址: https://github.com/open-telemetry/opentelemetry-go 设计一个这样的执行流程: Run 先后执行 Run1、Run2: a.Run1(newCtx) a.Run2(newCtx) Run1 中,还执行[......] 继续阅读

2022年11月20日 0条评论 2054点热度 1人点赞 痴者工良 阅读全文

使用示例: package main import ( "fmt" "os" "os/signal" ) func main() { // Set up channel on which to send signal notifications. // W[......]继续阅读

2022年11月20日 0条评论 3126点热度 1人点赞 痴者工良 阅读全文

使用 Go 中常用的 log 方法: Print/Printf/Println : 打印日志信息 Panic/Panicf/Panicln : 打印日志信息后,以拼装好的字符串为参数调用 Panic Fatal/Fatalf/Fatalln : 打印日志信息后,os.Exit(1) 退出程序 New[......] 继续阅读

2022年11月20日 0条评论 1195点热度 0人点赞 痴者工良 阅读全文

package main import ( "context" "fmt" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "k8s.io/client-go/t[......]继续阅读

2022年11月13日 0条评论 806点热度 0人点赞 痴者工良 阅读全文

在下面这个示例中,定时器每 1 秒向 channel 发生一次消息。当数量达到 10 次时,会自动终止。 func main() { fmt.Println("Commencing countdown.") tick := time.Tick(1 * time.Second)[......]继续阅读

2022年11月13日 0条评论 1066点热度 0人点赞 痴者工良 阅读全文

[TOC] 背景 其实,规划这篇文章有一段时间了,但是比较懒,所以一直拖着没写。 最近时总更新太快了,太卷了,所以借着 .NET 7 正式版发布,熬夜写完这篇文章,希望能够追上时总的一点距离。 本文主要介绍如何在 .NET 和 Go 语言中如何生成系统(Windows)动态链接库,又如何从代码中引用[......] 继续阅读

2022年11月10日 0条评论 1008点热度 1人点赞 痴者工良 阅读全文

基础 Go Web 的表单类型有三种: r.Form r.PostForm r.MultipartForm PostForm 支持 form-data 和 x-www-form-urlencoded 两种请求体,但是不支持上传文件。 MultipartForm 只支持 for[......] 继续阅读

2022年5月29日 1条评论 1856点热度 1人点赞 痴者工良 阅读全文

[TOC] 笔者前段时间在学习数据结构时,恰好听说了 LSM Tree,于是试着通过 LSM Tree 的设计思想,自己实现一个简单的 KV 数据库。 代码已开源,代码仓库地址:https://github.com/whuanle/lsm 笔者使用 Go 语言来实现 LSM Tree 数据库,因为[......] 继续阅读

2022年5月22日 1条评论 1280点热度 1人点赞 痴者工良 阅读全文

scanme.nmap.org 是要扫描的域名或 IP 地址。 package main import ( "fmt" "net" "sort" ) func main() { ports := make(chan int, 100) results :=[......]继续阅读

2021年11月17日 0条评论 1466点热度 0人点赞 痴者工良 阅读全文

reflect.Type.Elem() 可以返回元素的类型,例如指针类型,返回不带指针的类型。 reflect.Value.Elem() 是获取指向值的引用。 type name struct { } func (n name) Print(str string) { } func main([......]继续阅读

2021年11月16日 0条评论 1562点热度 0人点赞 痴者工良 阅读全文

以 Linux 为例,在 Go 中调用一个命令行程序,其代码示例如下: package main import ( "log" "os" "os/exec" ) func main() { cmd := exec.Command("top") cmd.S[......]继续阅读

2021年10月5日 0条评论 2093点热度 2人点赞 痴者工良 阅读全文

从何说起 Jaeger 部署 Jaeger 从示例了解 Jaeger Client Go 了解 trace、span tracer 配置 Sampler 配置 Reporter 配置 分布式系统与span 怎么调、怎么传 HTTP,跨进程追踪 客户端 Web 服务端 Tag 、 Log 和 R[......] 继续阅读

2021年3月30日 0条评论 2331点热度 0人点赞 痴者工良 阅读全文

Go GRPC 入门 Go GRPC 入门 1,安装包 2,gRPC 服务端 3,gRPC 客户端 4,编译运行 5,其它 GRPC Protobuf buffer 字段类型 字段规则 Protobuf gRPC 四种服务方法 编译 proto 1,安装包 grpc gola[......] 继续阅读

2021年3月28日 0条评论 1955点热度 0人点赞 痴者工良 阅读全文

在 Go 语言中,当我们需要引入一个包时,可以使用 import: import ( "io" ) 对于标准库,如 bufio、time、net 等,只需要一个名字即可引入,就像 C 语言的 #include 。 如果我们要引入自己编写的包或第三方源码,则会有些细节需要留[......] 继续阅读

2021年3月27日 0条评论 3648点热度 2人点赞 痴者工良 阅读全文