随笔分类 -  golang

1 2 3 4 下一页
使用 docker-compose 部署 golang 的 Athens 私有代理
摘要:go中私有代理搭建 前言 为什么选择 athens 使用 docker-compose 部署 配置私有仓库的认证信息 配置下载模式 部署 使用秘钥的方式认证私有仓库 1、配置秘钥 2、配置 HTTP 与 SSH 重写规则 3、配置 SSH 来绕过主机 SSH 键验证 参考 go中私有代理搭建 前言 阅读全文
posted @ 2022-04-27 20:46 ZhanLi 阅读(1336) 评论(0) 推荐(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 阅读(512) 评论(0) 推荐(0) 编辑
go 中 sort 如何排序,源码解读
摘要:sort 包源码解读 前言 如何使用 基本数据类型切片的排序 自定义 Less 排序比较器 自定义数据结构的排序 分析下源码 不稳定排序 稳定排序 查找 Interface 总结 参考 sort 包源码解读 前言 我们的代码业务中很多地方需要我们自己进行排序操作,go 标准库中是提供了 sort 包 阅读全文
posted @ 2022-03-06 16:07 ZhanLi 阅读(1584) 评论(0) 推荐(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 阅读(1943) 评论(0) 推荐(0) 编辑
etcd学习(1)-etcd的使用场景
摘要:etcd的使用 什么是etcd etcd的特点 etcd的应用场景 服务注册与发现 消息发布和订阅 负载均衡 分布式通知与协调 分布式锁 分布式队列 集群监控与Leader竞选 参考 etcd的使用 什么是etcd ETCD是一个分布式、可靠的key-value存储的分布式系统,用于存储分布式系统中 阅读全文
posted @ 2021-07-20 08:59 ZhanLi 阅读(3288) 评论(0) 推荐(0) 编辑
小白学k8s(10)-k8s中ConfigMap理解
摘要:理解ConfigMap 什么是ConfigMap ConfigMap的创建 使用key-value 字符串创建 从env文件创建 从目录创建 通过Yaml/Json创建 ConfigMap使用 用作环境变量 用作命令参数 使用volume将ConfigMap作为文件或目录直接挂载 使用subpath 阅读全文
posted @ 2021-06-25 14:35 ZhanLi 阅读(1389) 评论(0) 推荐(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 阅读(1550) 评论(1) 推荐(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 阅读(1474) 评论(0) 推荐(0) 编辑
记go中一次http超时引发的事故
摘要:记一次http超时引发的事故 前言 分析下具体的代码实现 服务设置超时 客户端设置超时 http.client context http.Transport 问题 总结 参考 记一次http超时引发的事故 前言 我们使用的是golang标准库的http client,对于一些http请求,我们在处理 阅读全文
posted @ 2021-06-02 10:19 ZhanLi 阅读(3684) 评论(0) 推荐(2) 编辑
记一次go中map并发引起的事故
摘要:错误使用map引发的血案 前言 场景复原 原因 参考 错误使用map引发的血案 前言 最近业务中,同事使用map来接收返回的结果,使用waitGroup来并发的处理执行返回的结果,结果上线之后,直接崩了。 日志大量的数据库缓存池连接失败 {"ecode":-500,"message":"timed 阅读全文
posted @ 2021-04-23 14:58 ZhanLi 阅读(2541) 评论(4) 推荐(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 阅读(1240) 评论(2) 推荐(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 阅读(1470) 评论(0) 推荐(0) 编辑
go中semaphore(信号量)源码解读
摘要:运行时信号量机制 semaphore 前言 作用是什么 几个主要的方法 如何实现 sudog 缓存 acquireSudog releaseSudog semaphore poll_runtime_Semacquire/sync_runtime_SemacquireMutex sync_runtim 阅读全文
posted @ 2021-04-02 13:21 ZhanLi 阅读(3352) 评论(0) 推荐(1) 编辑
go中x/sync/semaphore解读
摘要:semaphore semaphore的作用 如何使用 分析下原理 Acquire TryAcquire Release 总结 参考 semaphore semaphore的作用 信号量是在并发编程中比较常见的一种同步机制,它会保证持有的计数器在0到初始化的权重之间,每次获取资源时都会将信号量中的计 阅读全文
posted @ 2021-04-01 08:19 ZhanLi 阅读(2994) 评论(0) 推荐(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 阅读(1355) 评论(3) 推荐(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 阅读(754) 评论(0) 推荐(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 阅读(291) 评论(0) 推荐(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 阅读(1192) 评论(1) 推荐(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 阅读(764) 评论(0) 推荐(0) 编辑
go中context源码解读
摘要:context 前言 什么是context 为什么需要context呢 context底层设计 context的实现 几种context emptyCtx cancelCtx timerCtx valueCtx 防止内存泄露 总结 参考 context 前言 之前浅读过,不过很快就忘记了,再次深入学 阅读全文
posted @ 2021-02-22 19:25 ZhanLi 阅读(301) 评论(0) 推荐(1) 编辑

1 2 3 4 下一页