![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go之第三方库
go的第三方库的使用
来自万古的忧伤
努力,勿让自己继续活在后悔中
展开
-
go依赖注入wire
参考https://lailin.xyz/post/go-training-week4-wire.html 一 安装go get github.com/google/wire/cmd/wire或者go install 也可以然后在GOPATH/bin会有一个二进制文件放在GOPATH/bin 会有一个二进制文件 放在GOPATH/bin会有一个二进制文件放在PATH下面就可以了项目启动初始化过程中 会依赖很多库包,自己写会导致库的循环引用 用wire 可以避免循环引用以及依赖缺失二 简单使.原创 2022-04-26 09:43:57 · 565 阅读 · 0 评论 -
Admission Controller简介
准入控制器介绍https://kubernetes.io/zh/docs/reference/access-authn-authz/admission-controllers/动态准入控制器 https://kubernetes.io/zh/docs/reference/access-authn-authz/extensible-admission-controllers/创建证书vi ca-config.json { "signing": { "default": { .原创 2022-03-18 11:20:20 · 1106 阅读 · 0 评论 -
模仿kubectl的top功能
package mainimport ( "context" "fmt" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/tools/clientcmd" "k8s.io/metrics/pkg/client/clientset/versioned")func main() { config ,err := clientcmd.BuildConfigFromFlags("","/Users/qushuaibo/.k原创 2022-03-17 14:33:07 · 744 阅读 · 0 评论 -
Go实现kubectl apply操作
package mainimport ( "bytes" "context" "fmt" "io" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" syaml "k8s.io/apimach原创 2022-03-16 14:34:07 · 1106 阅读 · 0 评论 -
go之gjson
引用 https://darjun.github.io/2020/03/22/godailylib/gjson/一 简介gjson实际上是get + json的缩写,用于读取 JSON 串二 使用1.安装go get github.com/tidwall/gjsonpackage mainimport ( "fmt" "github.com/tidwall/gjson")func main() { json := `{"name":{"first":"li","la原创 2022-03-15 15:11:55 · 2384 阅读 · 0 评论 -
go之bubbletea可视化操作
一 简介bubbletea是一个简单、小巧、可以非常方便地用来编写 TUI(terminal User Interface,控制台界面程序)程序的框架。内置简单的事件处理机制,可以对外部事件做出响应,如键盘按键。二 快速使用bubbletea程序都需要有一个实现bubbletea.Model接口的类型:type Model interface {// Init is the first function that will be called. It returns an optional//原创 2022-03-15 07:51:39 · 1071 阅读 · 0 评论 -
kubectl通过插件获取pod列表
一 获取pod基础信息并且格式化展示package mainimport ( "context" "github.com/olekukonko/tablewriter" "github.com/spf13/cobra" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/cli-runtime/pkg/genericclioptions" "k8s.io/client-go/kubernetes" "log" "os")var cl原创 2022-03-11 15:29:34 · 1041 阅读 · 0 评论 -
client-go之SharedInformerFactory 支持多条件索引过滤(and)
package mainimport ( "fmt" "github.com/gin-gonic/gin" "k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/client-go/informers" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/cache" "k8s.io/client-go/tools/cl原创 2022-03-10 17:20:50 · 545 阅读 · 0 评论 -
client-go实现kubectl apply操作
dynamicClient实现kubectl apply 操作,采用动态的client来针对任何类型package mainimport ( "bytes" "fmt" "io" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" //"k8s.io/apimachinery/pkg/types" "k8s.io/client-go/dynamic" "k8s.io/apimach原创 2022-03-06 10:12:46 · 1868 阅读 · 0 评论 -
Go之rpc入门
参考资料 GO高级编程一 Rpc入门RPC是远程过程调用的简称,是分布式系统中不同节点间流行的通信方式。在互联网时代,RPC已经和IPC一样成为一个不可或缺的基础构件。因此Go语言的标准库也提供了一个简单的RPC实现,我们将以此为入口学习RPC的各种用法。1.简单示例Go语言的RPC包的路径为net/rpc,也就是放在了net包目录下面。因此我们可以猜测该RPC包是建立在net包基础之上的。在第一章“Hello, World”革命一节最后,我们基于http实现了一个打印例子。下面我们尝试基于rp.原创 2021-11-29 17:14:50 · 3831 阅读 · 0 评论 -
go调用gitlabapi
这里只介绍一些api的使用方式 不一定全面一 背景介绍gitlab的api分为v3 和v4 godoc的一些包 只支持v4 但是v3的不支持所以自己写了一些简单的调用 还需要继续封装gitlab api地址https://docs.gitlab.com/ee/api///获取项目列表//main.gopackage mainimport ( "fmt" "log" . "ali/gitlab/v4")func main() { method := "GET" g :=.原创 2021-01-23 10:48:49 · 2212 阅读 · 0 评论 -
用Go写一个远程终端
此次使用到了ssh协议clientpackage clientimport ( "fmt" "golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh/terminal" "io" "net" "os" "time")type Cli struct { IP string //IP地址 Username string //用户名 Password string //密码 Po原创 2020-09-21 18:16:57 · 922 阅读 · 0 评论 -
Go程序在容器中部署需要注意的小问题
引用书籍<<GO语言编程之旅>>问题描述在Go语言中,Go scheduler的P数量非常重要,因为它会极大地影响Go在运行时的表现。在目前的Go语言中,P的数量默认是系统的CPU核数。在容器化的环境中,Go程序所获取的CPU核数是错误的,它所获取的是宿主机的CPU核数。即使容器和宿主机的CPU核数是共享的,但在集群中我们会针对每个Pod分配指定的核数,因此实际上我们需要的是Pod的核数,而不是宿主机的CPU核数。造成的后果曾提到Go的M:N调度模型,其要求M必须与P进行绑原创 2020-09-16 15:54:58 · 310 阅读 · 0 评论 -
Go之time的时区
在验证一些时间的时候经常会发现少了8小时,那么可能会是时区的问题导致的go的time库中提供了location的两个时区local和utclocal表示当前系统的时区,utc表示通用协调时间也就是零时区,time默认了是utc时区我们可以通过time提供的loadlocation去切换时区如果传入name是空或者utc那么返回utc,如果传入的name是Local那么返回当前的本地时区Local,否则name应该是IANA时区数据库中记录的地点名,在不同的约定路径尽可能地查找所需的数据库func原创 2020-07-23 23:48:37 · 3455 阅读 · 0 评论 -
Go之Cobra仿写kubectl的命令行
package mainimport ( "fmt" "github.com/spf13/cobra" "log")var ( ns string //创建rootCmd主命令,并定义run执行函数(注意,此处是定义run函数而并非直接执行该函数,也可以通过rootcmd.ADDCommand方法添加子命令) //为命令添加命令行参数flag //执行rootCmd命令调用的函数,rootCmd.Execute会在内部回调run执行函数 rootCmd = &cobra.原创 2020-07-22 22:39:35 · 285 阅读 · 0 评论 -
Go之flag
本次flag介绍 部分引用书《Go语言编程之旅》 很不错的书 推荐指数⭐⭐⭐⭐⭐文末会附书封面package mainimport ( "flag")func main() { var name string flag.Parse() //调用newflagset会返回一个带有指定名称和错误处理的空命令集 goCmd := flag.NewFlagSet("go",flag.ExitOnError) goCmd.StringVar(&name,"name","Go语言","帮原创 2020-07-21 07:56:32 · 1099 阅读 · 0 评论 -
go-client对接k8s
一、kubeconfig管理apiVersion: v1clusters:#定义api的地址以及证书- cluster: certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR2akNDQXFhZ0F3SUJBZ0lVZWFZK0prcFdjUERzVlZNZUZBbjVkM003WFRRd0RRWUpLb1pJaHZjTkFRRUwKQlFBd1pURUxNQWtHQTFVRUJoTUNRMDR4RUR原创 2020-07-14 23:39:03 · 4870 阅读 · 3 评论 -
Go使用bcrpyt哈希用户密码
bcrypt哈希字符串的组成bcrypt哈希由多个部分组成。这些部分用于确定创建哈希的设置,从而可以在不需要任何其他信息的情况下对其进行验证。上图是一个bcrypt哈希的示例图,其由四部分组成:Prefix说明了使用的bcrypt的版本Cost是进行哈希的次数-数字越大生成bcrypt的速度越慢,成本越大。同样也意味着如果密码库被盗,攻击者想通过暴力破解的方法猜测出用户密码的成本变得越昂贵。Salt是添加到要进行哈希的字符串中的随机字符(21.25个字符),所以使用bcrypt时不需要我们在表里原创 2020-07-05 20:21:57 · 1260 阅读 · 0 评论 -
go调用jenkins api
go 调用jenkins的api来帮我们实现一部分操作 适用于批量执行同一个任务 亦或者要结合cmdbpackage mainimport ( "fmt" "github.com/bndr/gojenkins" "log")func main() { jenkins := gojenkins.CreateJenkins(nil, "url", "admin", "xxx") _, err := jenkins.Init() if err != nil { fmt.Println原创 2020-06-19 16:32:53 · 2500 阅读 · 0 评论 -
go-redis简单调用(go-redis)
package mainimport ( "encoding/json" "fmt" "github.com/go-redis/redis")type Name struct { Id int Age int Desc string}func main() { name := Name{ Id: 3, Age: 2, Desc: "aaa", } //创建redis client rdb := redis.NewClient(&redis.原创 2020-06-18 19:00:21 · 461 阅读 · 0 评论