1 2 3 4 5 ··· 16 下一页
摘要: 概述 看了几篇同步,异步,阻塞和非阻塞的文章,感觉还是云里雾里的。本文结合自己的理解写几个例子加深印象,可能理解有误。大佬们可以帮忙批评指正。 个人理解同步/异步,阻塞/非阻塞是站在不同角度看的概念。 同步/异步:站在被调用方视角看,同步会执行调用方的请求,请求结束后返回执行结果给调用方。异步会先响 阅读全文
posted @ 2025-11-13 11:58 胡云Troy 阅读(16) 评论(0) 推荐(0)
摘要: 概述 sync.pool 对象池可以用来复用临时对象,减少内存压力,降低 GC 压力。 示例 基本用法 type Worker struct{} func (w *Worker) Name() string { return "worker" } func main() { workerPool : 阅读全文
posted @ 2025-11-09 18:35 胡云Troy 阅读(9) 评论(0) 推荐(0)
摘要: 0. 概述 在上一篇文章中介绍了 raft 读请求源码走读,本文继续结合 etcd-raft 源码介绍 raft 写请求流程。 需要说明的是,本文使用的是单节点集群环境,后续会补充多节点集群环境加以介绍。 1. 写请求流程 1.1 客户端写入请求 客户端通过 PUT 请求写入键值对请求: curl 阅读全文
posted @ 2025-11-06 17:57 胡云Troy 阅读(64) 评论(0) 推荐(0)
摘要: 概述 raft-example 提供了一个简化版的 KV 存储,本文围绕 raft-example 对读请求进行源码走读。 源码版本为 etcd release-3.6。 raftexample 程序结构 raftexample 程序结构如下所示: ➜ raftexample git:(releas 阅读全文
posted @ 2025-11-06 15:37 胡云Troy 阅读(13) 评论(0) 推荐(0)
摘要: 可读性 Go 中 if else 应遵循快乐路径,即先考虑(退出/返回/跳过)错误情况,否则代码层级嵌套过重,可读性会变差。 作用域 Go 中的作用域分为显式作用域和隐式作用域。显示作用域是花括号包裹的代码块,隐式作用域定义如下: 宇宙(Universe)代码块:所有Go源码都在该隐式代码块中,就相 阅读全文
posted @ 2025-08-01 14:39 胡云Troy 阅读(23) 评论(0) 推荐(0)
摘要: Go 源码编译流程 Go 编译源代码需要经过编译,链接过程。通过以下示例看 Go (Go 版本为 v1.24.1)语言是如何编译源码的。 首先,代码目录结构如下: ➜ demo1 git:(main) ✗ tree ./ ./ ├── cmd │ └── app1 │ └── main.go └── 阅读全文
posted @ 2025-07-27 22:18 胡云Troy 阅读(72) 评论(0) 推荐(0)
摘要: 介绍 Kubernetes Service 用于流量的负载均衡和反向代理,其通过 kube-proxy 组件实现。从服务的角度来看,kube-controller-manager 实现了服务注册,kube-proxy 实现了 kubernetes 集群内服务的负载均衡。 示意图如下: kube-pr 阅读全文
posted @ 2025-05-15 15:42 胡云Troy 阅读(435) 评论(1) 推荐(1)
摘要: 原创文章,欢迎转载,转载请注明出处,谢谢。 【目录】 Go runtime 调度器精讲(一):Go 程序初始化 Go runtime 调度器精讲(二):调度器初始化 Go runtime 调度器精讲(三):main goroutine 创建 Go runtime 调度器精讲(四):运行 main g 阅读全文
posted @ 2024-09-17 10:15 胡云Troy 阅读(224) 评论(0) 推荐(0)
摘要: 原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 前面介绍了运行时间过长和系统调用引起的抢占,它们都属于协作式抢占。本讲会介绍基于信号的真抢占式调度。 在介绍真抢占式调度之前看下 Go 的两种抢占式调度器: 抢占式调度器 - Go 1.2 至今 基于协作的抢占式调度器 - Go 1.2 - G 阅读全文
posted @ 2024-09-16 20:20 胡云Troy 阅读(301) 评论(0) 推荐(1)
摘要: 原创文章,欢迎转载,转载请注明出处,谢谢。 0. 前言 第八讲介绍了当 goroutine 运行时间过长会被抢占的情况。这一讲继续看 goroutine 执行系统调用时间过长的抢占。 1. 系统调用时间过长的抢占 看下面的示例: func longSyscall() { timeout := sys 阅读全文
posted @ 2024-09-16 12:01 胡云Troy 阅读(192) 评论(0) 推荐(0)
1 2 3 4 5 ··· 16 下一页