使用 docker-compose 部署 golang 的 Athens 私有代理
摘要:go中私有代理搭建 前言 为什么选择 athens 使用 docker-compose 部署 配置私有仓库的认证信息 配置下载模式 部署 使用秘钥的方式认证私有仓库 1、配置秘钥 2、配置 HTTP 与 SSH 重写规则 3、配置 SSH 来绕过主机 SSH 键验证 参考 go中私有代理搭建 前言
阅读全文
posted @
2022-04-27 20:46
ZhanLi
阅读(1281)
推荐(0) 编辑
go 中 select 源码阅读
摘要:深入了解下 go 中的 select 前言 1、栗子一 2、栗子二 3、栗子三 看下源码实现 1、不存在 case 2、select 中仅存在一个 case 3、select 中存在两个 case,其中一个是 default 发送值 接收值 4、多个 case 的场景 具体的实现逻辑 1、打乱 ca
阅读全文
posted @
2022-04-16 09:50
ZhanLi
阅读(481)
推荐(0) 编辑
go 中 sort 如何排序,源码解读
摘要:sort 包源码解读 前言 如何使用 基本数据类型切片的排序 自定义 Less 排序比较器 自定义数据结构的排序 分析下源码 不稳定排序 稳定排序 查找 Interface 总结 参考 sort 包源码解读 前言 我们的代码业务中很多地方需要我们自己进行排序操作,go 标准库中是提供了 sort 包
阅读全文
posted @
2022-03-06 16:07
ZhanLi
阅读(1425)
推荐(2) 编辑
etcd学习(2)-etcd中watch源码解读
摘要:etcd中watch的源码解析 前言 client端的代码 Watch newWatcherGrpcStream run newWatchClient serveSubstream server端的代码实现 watchableStore syncWatchersLoop syncWatchers s
阅读全文
posted @
2021-07-21 08:21
ZhanLi
阅读(1843)
推荐(0) 编辑
etcd学习(1)-etcd的使用场景
摘要:etcd的使用 什么是etcd etcd的特点 etcd的应用场景 服务注册与发现 消息发布和订阅 负载均衡 分布式通知与协调 分布式锁 分布式队列 集群监控与Leader竞选 参考 etcd的使用 什么是etcd ETCD是一个分布式、可靠的key-value存储的分布式系统,用于存储分布式系统中
阅读全文
posted @
2021-07-20 08:59
ZhanLi
阅读(3090)
推荐(0) 编辑
小白学k8s(10)-k8s中ConfigMap理解
摘要:理解ConfigMap 什么是ConfigMap ConfigMap的创建 使用key-value 字符串创建 从env文件创建 从目录创建 通过Yaml/Json创建 ConfigMap使用 用作环境变量 用作命令参数 使用volume将ConfigMap作为文件或目录直接挂载 使用subpath
阅读全文
posted @
2021-06-25 14:35
ZhanLi
阅读(1368)
推荐(0) 编辑
小白学k8s(9)-gitlab-runner实现go项目的自动化发布
摘要:gitlab构建CI/CD 准备 docker部署gitlab 使用二进制部署gitlab-runner gitlab-runner注册 配置Variables 简单先来个测试 开始构建 遇到的报错 gitlab构建CI/CD 准备 docker部署gitlab 通过docker-compose启动
阅读全文
posted @
2021-06-22 20:30
ZhanLi
阅读(1504)
推荐(0) 编辑
小白学k8s(8)-Bazel部署go应用
摘要:Bazel使用了解 Bazel产生的背景 什么是Bazel 快(Fast) 可伸缩(scalable) 跨语言(multi-language) 可扩展(extensible) Bazel中的主要文件 WORKSPACE BUILD.bazel 自定义 rule (*.bzl) 配置项 .bazelr
阅读全文
posted @
2021-06-07 18:13
ZhanLi
阅读(1419)
推荐(0) 编辑
记go中一次http超时引发的事故
摘要:记一次http超时引发的事故 前言 分析下具体的代码实现 服务设置超时 客户端设置超时 http.client context http.Transport 问题 总结 参考 记一次http超时引发的事故 前言 我们使用的是golang标准库的http client,对于一些http请求,我们在处理
阅读全文
posted @
2021-06-02 10:19
ZhanLi
阅读(3360)
推荐(2) 编辑
记一次go中map并发引起的事故
摘要:错误使用map引发的血案 前言 场景复原 原因 参考 错误使用map引发的血案 前言 最近业务中,同事使用map来接收返回的结果,使用waitGroup来并发的处理执行返回的结果,结果上线之后,直接崩了。 日志大量的数据库缓存池连接失败 {"ecode":-500,"message":"timed
阅读全文
posted @
2021-04-23 14:58
ZhanLi
阅读(2420)
推荐(0) 编辑
go中panic源码解读
摘要:panic源码解读 前言 panic的作用 panic使用场景 看下实现 gopanic gorecover fatalpanic 总结 参考 panic源码解读 前言 本文是在go version go1.13.15 darwin/amd64上进行的 panic的作用 panic能够改变程序的控制
阅读全文
posted @
2021-04-23 08:42
ZhanLi
阅读(1168)
推荐(0) 编辑
go中控制goroutine数量
摘要:控制goroutine数量 前言 控制goroutine的数量 通过channel+sync 使用semaphore 线程池 几个开源的线程池的设计 fasthttp中的协程池实现 Start Stop clean getCh workerFunc panjf2000/ants 设计思路 go-pl
阅读全文
posted @
2021-04-14 10:33
ZhanLi
阅读(1440)
推荐(0) 编辑
go中semaphore(信号量)源码解读
摘要:运行时信号量机制 semaphore 前言 作用是什么 几个主要的方法 如何实现 sudog 缓存 acquireSudog releaseSudog semaphore poll_runtime_Semacquire/sync_runtime_SemacquireMutex sync_runtim
阅读全文
posted @
2021-04-02 13:21
ZhanLi
阅读(3210)
推荐(1) 编辑
go中x/sync/semaphore解读
摘要:semaphore semaphore的作用 如何使用 分析下原理 Acquire TryAcquire Release 总结 参考 semaphore semaphore的作用 信号量是在并发编程中比较常见的一种同步机制,它会保证持有的计数器在0到初始化的权重之间,每次获取资源时都会将信号量中的计
阅读全文
posted @
2021-04-01 08:19
ZhanLi
阅读(2767)
推荐(0) 编辑
go中sync.Mutex源码解读
摘要:互斥锁 前言 什么是sync.Mutex 分析下源码 Lock 位运算 Unlock 总结 参考 互斥锁 前言 本次的代码是基于go version go1.13.15 darwin/amd64 什么是sync.Mutex sync.Mutex是Go标准库中常用的一个排外锁。当一个goroutine
阅读全文
posted @
2021-03-15 09:29
ZhanLi
阅读(1285)
推荐(0) 编辑
go中sync.Cond源码解读
摘要:sync.Cond 前言 什么是sync.Cond 看下源码 Wait Signal Broadcast 总结 sync.Cond 前言 本次的代码是基于go version go1.13.15 darwin/amd64 什么是sync.Cond Go语言标准库中的条件变量sync.Cond,它可以
阅读全文
posted @
2021-03-11 08:38
ZhanLi
阅读(727)
推荐(0) 编辑
go中sync.Once源码解读
摘要:sync.Once 前言 sync.Once的作用 实现原理 总结 sync.Once 前言 本次的代码是基于go version go1.13.15 darwin/amd64 sync.Once的作用 根据名字就大致能猜到这个函数的作用,就是使用sync.once的对象只能执行一次。 我们在err
阅读全文
posted @
2021-03-09 09:21
ZhanLi
阅读(284)
推荐(0) 编辑
go中errgroup源码解读
摘要:errgroup 前言 如何使用 实现原理 WithContext Go Wait 错误的使用 总结 errgroup 前言 来看下errgroup的实现 如何使用 func main() { var eg errgroup.Group eg.Go(func() error { return err
阅读全文
posted @
2021-03-08 16:26
ZhanLi
阅读(1171)
推荐(0) 编辑
go中waitGroup源码解读
摘要:waitGroup源码刨铣 前言 WaitGroup实现 noCopy state1 Add Wait 总结 参考 waitGroup源码刨铣 前言 学习下waitGroup的实现 本文是在go version go1.13.15 darwin/amd64上进行的 WaitGroup实现 看一个小d
阅读全文
posted @
2021-03-07 21:37
ZhanLi
阅读(750)
推荐(0) 编辑
go中context源码解读
摘要:context 前言 什么是context 为什么需要context呢 context底层设计 context的实现 几种context emptyCtx cancelCtx timerCtx valueCtx 防止内存泄露 总结 参考 context 前言 之前浅读过,不过很快就忘记了,再次深入学
阅读全文
posted @
2021-02-22 19:25
ZhanLi
阅读(292)
推荐(1) 编辑