随笔分类 - Golang
摘要:kubernetes client-go 构建客户端的几种方式 package callk8s import ( "context" "log" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" "
阅读全文
摘要:# 服务注册与发现-etcd 遇见的问题 # 问题现象 grpc client 调用 server ,通过 etcd 提供服务发现能力 ```Plain Text 2023/06/02 11:25:33 scheme: etcd; {"level":"warn","ts":"2023-06-02T1
阅读全文
摘要:代理,装饰,适配,桥接,面孔的区别 Proxy could be used when you want to lazy-instantiate an object, or hide the fact that you're calling a remote service, or control a
阅读全文
摘要:封装 logrus Golang 常用的 log 库 golang 标准库的 log 也很好用,但是缺乏一些特性功能,新能较差,所以社区衍生出如下日志库: logrus 可能是最早的第三方日志库 uber_zap 优步推出的高性能日志库 go-kit 基于 kit 产生了很多的衍生品,例如: pro
阅读全文
摘要:前言 我们在查看 Golang 代码的时候往往跳转到一个 interface{} 就终止了,这个时候你看不到代码的实现,其实这就是面向接口设计的一种巧妙之处,其实这里是为了让组合代替面向对象的复杂嵌套,或者说简化父子类形成的对象树。intreface{} 和 struct 的组合,interface
阅读全文
摘要:gRPC环境搭建 Windows gRPC 环境搭建 1 下载 protoc 工具 下载地址:https://github.com/protocolbuffers/protobuf/releases/download/v3.19.1/protoc-3.19.1-win64.zip 获取解压完成后的目
阅读全文
摘要:http.Server{} 参数讲解 type Server struct { Addr string // 监听的TCP地址,如果为空字符串会使用":http" Handler Handler // 调用的处理器,如为nil会调用http.DefaultServeMux ReadTimeout t
阅读全文
摘要:package main import "fmt" func main(){ var a int a = 100 var b int b = 2 per := float32(b/a) fmt.Printf("打印百分比: %.2f%%\n",per) truePer := float32(b)/f
阅读全文
摘要:概念 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 别名 状态对象 动机 举个例子:在表示网络练的类 TCPConnection。 一个 TCPConnection 对象会表示不同的状态,建立链接(Established), 正在监听 (Listening),链接关闭(C
阅读全文
摘要:单例模式 意图 保证一个类仅有一个实例,并提供一个访问他的全局访问点 动机 这个类可以保证没有其他实例可以被创建(通过截取创建新对象的请求),并且它可以提供一个访问该实例的方法 适用性 当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时 当这个危已实例应该时通过子类化可拓展的,并且客户应该
阅读全文
摘要:策略模式 意图 定义一系列的算法,把他们一个个封装起来,并是他们可以互相替换。本模式是的算法可独立于使用他的客户而变化 动机 许多算法可对一个文本流进行分行。将这些算法硬编近使用他们的类中是不可取的。原因如下: 需要换行功能的客户程序如果直接包含换行算法代码的话会变得复杂,这使得客户程序庞大且难以维
阅读全文
摘要:Get 请求 package main import ( "fmt" "io/ioutil" "net/http" ) func main() { response, err := http.Get("http://www.baidu.com") if err != nil { // handle
阅读全文
摘要:# 创建 go module 项目 mkdir <YOUR_PROJECT_NAME> go mod init <YOUR_PROJECT_NAME> cd <YOUR_PROJECT_NAME> # go mod 常规操作 go mod tidy //整理模块(拉取缺少的模块,移除不用的模块) g
阅读全文
摘要:Golang Config File lib Golang 配置文件库 go get github.com/spf13/viper go get github.com/go-ini/ini 数据结构常用库 # 集合库,集合内无重复数据 go get github.com/deckarep/golan
阅读全文
摘要:大规模并发 这一章我或许没有办法写出一些实例代码,因为经验有限。我会结合以往运维的一些系统举出部分例子共读者参考,详情力荐阅读原文。 异常传递 异常时什么,什么时候发生,提供哪些好处?我们需要明确以下信息: 发生了什么,例如:磁盘已满,证书过期,链接超时,不存在的路径 发生在什么时间,什么位置,优秀
阅读全文
摘要:约束 约束可以减轻开发者的认知负担以便写出有更小临界区的并发代码。确保某一信息再并发过程中仅能被其中之一的进程进行访问。程序中通常存在两种可能的约束:特定约束和词法约束。 特定约束 通过公约实现约束,无论是由语言社区、你所在的团队,还是你的代码库设置。在 Go 语言官方默认安装 gofmt 去格式化
阅读全文
摘要:前两章我们介绍了并发之苦,CSP 理论。这一章作者详细的介绍了 Go 是如何支持并发的。 goroutine goroutine 是 Go 语言程序中最基本的组织单位之一。每个 Go 语言程序至少有一个 goroutine: main goroutine , 它在进程开始时自动创建并启动。我们经常听
阅读全文
摘要:Go语言并发之道读后感 - 第二章 CSP (Communicating Sequential Processes) 我们可能听说过,通过通信去共享内存,Go pipeline 等,这一切的核心思想就是 CSP 理论。在这一章作者详尽的介绍了 CSP 与 Go 并发哲学的关系。 并发与并行的区别 并
阅读全文
摘要:《Go 语言并发之道》读后感 - 第一章 前言 人生路漫漫,总有一本书帮助你在某条道路上打通任督二脉,《Go 语言并发之道》就是我作为一个 Gopher 道路上的一本打通任督二脉的书。说说我和它的偶遇,在一次 B 站云原生社区一次分享会上,众多大佬同推荐,并决定一起去读《Kubernetes 源码刨
阅读全文