随笔分类 -  Go

摘要:目录1. Runtime库的作用2. Runtime库的核心组件(1)Goroutine调度器(Scheduler)(2)内存管理(3)网络I/O与系统调用(4)类型系统与反射(5)异常处理3. Runtime库的工作机制(1)程序启动(2)Goroutine调度(3)垃圾回收(4)程序退出4. R 阅读全文
posted @ 2025-03-03 17:49 guanyubo 阅读(23) 评论(0) 推荐(0) 编辑
摘要:目录1. Goroutine是轻量级线程(1)资源占用少(2)创建和切换开销低(3)与线程的关系2. Goroutine由Go运行时管理(1)Goroutine的创建(2)Goroutine的调度(3)Goroutine的销毁(4)Goroutine的协作式调度3. Goroutine的优势4. 总 阅读全文
posted @ 2025-03-03 17:46 guanyubo 阅读(31) 评论(0) 推荐(0) 编辑
摘要:目录1. Goroutine与Channel的基本概念2. 通过Channel传递数据3. Channel的并发安全性4. 内存安全的注意事项5. 最佳实践6. 总结 Go语言以其简洁高效的并发模型而闻名,其核心是通过goroutine和channel实现并发编程。Go语言的设计哲学是“通过通信来共 阅读全文
posted @ 2025-03-03 17:39 guanyubo 阅读(14) 评论(0) 推荐(0) 编辑
摘要:目录中间件的核心特点中间件的常见应用场景中间件的工作原理以 HTTP 请求为例:中间件的代码示例代码解释:中间件的优点总结 中间件(Middleware) 是一种软件设计模式,通常用于在应用程序的请求处理流程中插入额外的逻辑。它位于客户端和服务器端之间,或者位于应用程序的不同组件之间,用于处理一些通 阅读全文
posted @ 2025-02-27 13:17 guanyubo 阅读(16) 评论(0) 推荐(0) 编辑
摘要:目录示例代码代码解释总结 示例代码 package main import ( "fmt" "strings" ) // 定义一个函数类型,表示中间件 type Middleware func(string) string // 中间件 1:将字符串转换为大写 func toUpperMiddlew 阅读全文
posted @ 2025-02-27 13:16 guanyubo 阅读(6) 评论(0) 推荐(0) 编辑
摘要:目录1. Goroutine2. Channel3. Select 语句4. 关闭 Channel5. 示例:并发计算6. 总结 在Go语言中,CSP(Communicating Sequential Processes)并发模型是通过goroutine和channel来实现的。CSP模型强调通过通 阅读全文
posted @ 2025-02-27 12:24 guanyubo 阅读(6) 评论(0) 推荐(0) 编辑
摘要:目录1. 线程(OS Thread)发生 OOM2. Goroutine 发生 OOM3. OOM 的典型场景与解决经验4. 实战对比示例总结 在 Go 语言中,线程(内核线程)和 Goroutine(协程)的内存管理机制存在显著差异,因此发生 OOM(Out Of Memory,内存溢出)时的影响 阅读全文
posted @ 2025-02-26 10:19 guanyubo 阅读(8) 评论(0) 推荐(0) 编辑
摘要:目录1. _Grunnable(可运行状态)2. _Grunning(运行中状态)3. _Gsyscall(系统调用状态)4. _Gwaiting(等待/阻塞状态)5. _Gdead(终止状态) Go 语言 GMP 模型中的 Goroutine 状态反映了其在调度过程中的不同阶段。以下是各状态的详细 阅读全文
posted @ 2025-02-26 09:52 guanyubo 阅读(18) 评论(0) 推荐(0) 编辑
摘要:目录1. gopark:暂停当前Goroutine2. goready:唤醒等待中的Goroutine协同工作机制注意事项示例场景:通道操作总结 在Go语言的运行时系统中,gopark和goready是用于协调Goroutine调度的内部函数。它们通常由运行时系统自动管理,一般开发者不需要直接调用。 阅读全文
posted @ 2025-02-26 09:22 guanyubo 阅读(13) 评论(0) 推荐(0) 编辑
摘要:目录1. 基本概念2. 主要用途3. 使用示例示例 1:指针类型转换示例 2:内存操作4. 注意事项5. 总结 unsafe.Pointer 是 Go 语言中的一个特殊类型,用于进行低级别的内存操作。它允许你将任意类型的指针转换为通用的指针类型,并且可以将其转换回其他类型的指针。unsafe.Poi 阅读全文
posted @ 2025-02-25 15:51 guanyubo 阅读(16) 评论(0) 推荐(0) 编辑
摘要:目录如何实现一个负载均衡器?负载均衡器的设计思路1. 确定负载均衡算法2. 维护后端服务器列表3. 健康检查4. 会话保持(可选)5. 高可用性实现负载均衡器的关键技术1. 轮询算法2. 加权轮询算法3. 一致性哈希算法4. 健康检查5. 高可用性完整的负载均衡器示例总结 如何实现一个负载均衡器? 阅读全文
posted @ 2025-02-19 16:20 guanyubo 阅读(16) 评论(0) 推荐(0) 编辑
摘要:目录如何实现一个长连接服务?1. 建立 TCP 连接2. 维护连接状态3. 处理数据读写4. 实现心跳机制5. 处理连接超时如何处理连接的超时和心跳?1. 设置读写超时2. 实现心跳机制3. 使用 context 控制连接生命周期完整的长连接服务示例总结 如何实现一个长连接服务? 长连接服务是指客户 阅读全文
posted @ 2025-02-19 15:39 guanyubo 阅读(34) 评论(0) 推荐(0) 编辑
摘要:目录Golang中的逃逸分析是什么?逃逸分析的示例如何查看逃逸分析的结果如何避免不必要的内存逃逸1. 避免返回局部变量的指针2. 避免在闭包中捕获局部变量3. 避免使用接口类型4. 避免在切片或映射中存储指针5. 减少大对象的分配6. 使用 sync.Pool 复用对象逃逸分析的局限性总结 Gola 阅读全文
posted @ 2025-02-18 22:31 guanyubo 阅读(32) 评论(0) 推荐(0) 编辑
摘要:目录Golang中的sync.Pool是什么?sync.Pool 的核心方法sync.Pool 的使用示例sync.Pool 的使用场景1. 频繁创建和销毁临时对象的场景2. 减少 GC 压力3. 高性能场景4. 临时对象的缓存sync.Pool 的注意事项sync.Pool 的底层实现总结 Gol 阅读全文
posted @ 2025-02-18 22:21 guanyubo 阅读(29) 评论(0) 推荐(0) 编辑
摘要:目录安装 Fyne创建一个简单的 Fyne 应用程序运行应用程序Fyne 的主要组件布局管理自定义主题打包应用程序总结 Fyne 是一个用于构建跨平台图形用户界面(GUI)应用程序的 Go 语言框架。它简单易用,支持 Windows、macOS、Linux、iOS 和 Android 等平台。Fyn 阅读全文
posted @ 2025-02-14 17:09 guanyubo 阅读(33) 评论(0) 推荐(0) 编辑
摘要:目录1. I/O 多路复用2. Go 的 netpoll 实现3. 与 Go 调度器的集成4. 事件循环5. 非阻塞 I/O6. 源码分析总结 Go 语言中的 netpoll 是网络轮询的核心机制,用于高效处理 I/O 事件。其底层原理主要涉及操作系统提供的 I/O 多路复用机制(如 epoll、k 阅读全文
posted @ 2025-02-10 17:04 guanyubo 阅读(3) 评论(0) 推荐(0) 编辑
摘要:目录初始化Go Module创建本地包导入本地包处理跨模块的本地包 在Go语言中,导入本地包通常涉及到使用Go Modules来管理依赖关系。以下是详细的步骤和注意事项,帮助你正确地导入本地包: 初始化Go Module 首先,确保你的项目是一个Go module项目。如果你还没有一个go.mod文 阅读全文
posted @ 2025-02-06 17:08 guanyubo 阅读(93) 评论(0) 推荐(0) 编辑
摘要:目录反射的核心概念反射的常见操作示例代码1. 获取变量的类型和值2. 通过反射修改变量的值3. 操作结构体4. 动态调用函数反射的注意事项总结 Go 语言中的反射(Reflection)是一种在运行时检查类型信息和操作变量的机制。通过反射,程序可以动态地获取变量的类型、值、结构体字段、方法等信息,甚 阅读全文
posted @ 2025-01-27 09:57 guanyubo 阅读(11) 评论(0) 推荐(0) 编辑
摘要:目录1. reflect.TypeOf()2. reflect.ValueOf()3. reflect.Value.Elem()4. reflect.Value.Set()5. reflect.Value.Interface()6. reflect.Value.Kind()7. reflect.Va 阅读全文
posted @ 2025-01-27 09:56 guanyubo 阅读(68) 评论(0) 推荐(0) 编辑
摘要:目录reflect.Valuereflect.Value 的作用reflect.Value 的创建reflect.Value 的常用方法1. 获取值的类型2. 获取值的底层类型3. 获取实际值4. 检查值是否有效5. 检查值是否可设置6. 设置值7. 解引用指针8. 操作结构体9. 动态调用函数10 阅读全文
posted @ 2025-01-27 09:54 guanyubo 阅读(20) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示