12 2024 档案

摘要:作用 Go 语言的 channel 是一种 goroutine 之间的通信方式,它可以用来传递数据,也可以用来同步 goroutine 的执行。 chan 是 goroutine 之间的通信桥梁,可以安全地在多个 goroutine 中共享数据。 使用 chan 实现 goroutine 之间的协作 阅读全文
posted @ 2024-12-24 17:48 daemon365 阅读(213) 评论(0) 推荐(0) 编辑
摘要:*** Go 代码基于 v1.23.0 *** 介绍 golang GC 垃圾回收机制 触发条件 用户调用 runtime.GC 主动触发 Go 程序检测到距上次 GC 内存分配增长超过一定比例时(默认 100%)触发 定时触发 (默认 2 min) 定时触发 代码在 src/runtime/pro 阅读全文
posted @ 2024-12-20 10:40 daemon365 阅读(39) 评论(0) 推荐(0) 编辑
摘要:操作系统内存管理 操作系统管理内存的存储单元是页(page),在 linux 中一般是 4KB。而且,操作系统还会使用 虚拟内存 来管理内存,在用户程序中,我们看到的内存是不是真实的内存,而是虚拟内存。当访问或者修改内存的时候,操作系统会将虚拟内存映射到真实的内存中。申请内存的组件是 Page Ta 阅读全文
posted @ 2024-12-15 14:56 daemon365 阅读(210) 评论(0) 推荐(1) 编辑
摘要:本身涉及到的 go 代码 都是基于 go 1.23.0 版本 传统 OS 线程 线程是 CPU 的最小调度单位,CPU 通过不断切换线程来实现多任务的并发。这会引发一些问题(对于用户角度): 线程的创建和销毁等是昂贵的,因为要不断在用户空间和内核空间切换。 线程的调度是由操作系统负责的,用户无法控制 阅读全文
posted @ 2024-12-08 17:19 daemon365 阅读(178) 评论(0) 推荐(0) 编辑
摘要:为什么要做高可用 在生产环境中,kubernetes 集群中会多多个 master 节点,每个 master 节点上都会部署 kube-apiserver 服务,实现高可用。但是 client 访问 kube-apiserver 时,需要指定 ip 或者域名,这样会出现单点故障。官方推荐的做法是使用 阅读全文
posted @ 2024-12-07 14:18 daemon365 阅读(219) 评论(0) 推荐(1) 编辑