随笔分类 -  golang

摘要:Golang Netpoll 底层原理深度解析 - 学习记录 📚 前言 最近深度学习了一篇关于 Golang netpoll 底层原理的万字技术文章,这是一篇真正从理论基础到源码实现的深度技术分析。作者不仅从 IO 多路复用的基本概念开始推演,更是通过与 C++ 等其他语言的横向对比,揭示了 Go 阅读全文
posted @ 2025-09-09 22:11 王鹏鑫 阅读(29) 评论(0) 推荐(0)
摘要:Go模块依赖下载失败的完整解决方案 一句话总结:通过设置稳定的中国Go代理、完全清理模块缓存,并使用go get -d策略重新下载依赖,成功解决了网络连接不稳定导致的Go模块依赖问题。 问题背景 在开发Go项目时,遇到了github.com/c-bata/go-prompt库无法下载的问题。这是一个 阅读全文
posted @ 2025-08-06 10:24 王鹏鑫 阅读(626) 评论(0) 推荐(0)
摘要:Go语言设计模式全解析 前言 设计模式是解决软件设计中常见问题的可重用方案。本文将全面介绍Go语言中的设计模式,包括经典设计模式和Go特有模式,每个模式都配有详细解释和代码示例。 目录 创建型模式 单例模式 工厂方法模式 建造者模式 对象池模式 结构型模式 装饰者模式 代理模式 行为型模式 观察者模 阅读全文
posted @ 2025-05-09 15:00 王鹏鑫 阅读(148) 评论(0) 推荐(0)
摘要:一、Go网络编程的双面性:同步接口下的异步实现 Go语言的网络编程模型是其成功的关键因素之一。与传统的网络编程模型相比,Go提供了一种独特的方式来处理网络I/O操作。 1.1 看似阻塞实则非阻塞:Go网络I/O的独特设计 Go语言网络编程的最大特点在于它提供了同步的API接口,但在底层却是通过非阻塞 阅读全文
posted @ 2025-03-31 17:35 王鹏鑫 阅读(532) 评论(0) 推荐(0)
摘要:一、WebSocket协议简介 WebSocket是一种计算机通信协议,提供全双工通信渠道,通过单个TCP连接实现。WebSocket最大的特点是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话。与HTTP协议不同的是: WebSocket只需要一次握手,就可 阅读全文
posted @ 2025-03-13 18:23 王鹏鑫 阅读(694) 评论(0) 推荐(0)
摘要:简介 在游戏开发和其他需要脚本化逻辑的应用中,Lua因其轻量级、高效和易于嵌入而成为受欢迎的选择。本文将介绍如何在Go语言中使用github.com/yuin/gopher-lua库与Lua脚本进行交互,并分享一些性能优化技巧。 什么是gopher-lua gopher-lua是一个纯Go实现的Lu 阅读全文
posted @ 2025-03-10 11:47 王鹏鑫 阅读(782) 评论(0) 推荐(0)
摘要:安装 go get -u github.com/fogleman/gg 这是它例子的大概效果图,可以看到,能实现的图形效果还是挺多的。 圆形图生成事例: package main import "github.com/fogleman/gg" func main() { dc := gg.NewCo 阅读全文
posted @ 2024-08-14 17:08 王鹏鑫 阅读(225) 评论(0) 推荐(0)
摘要:简介 看到一个有意思的库: SingleFlight是Go语言提供的一个扩展包。作用是当有多个goroutine同时调用同一个函数的时候,只允许一个goroutine去调用这个函数,等到这个调用的goroutine返回结果的时候,再把结果返回给这几个同时调用的goroutine,这样可以减少并发调用 阅读全文
posted @ 2024-05-17 18:34 王鹏鑫 阅读(230) 评论(0) 推荐(0)
摘要:解释定义: mheap:用于管理整个堆内存,mheap 管理多个arena,arena管理多个span,一个span由多个page组成,一个arena有8192个page,page由内存块组成 mspan:一个span对应一个mspan mcentral:mheap里有一个全局的mspan管理中心包 阅读全文
posted @ 2024-03-13 22:29 王鹏鑫 阅读(83) 评论(0) 推荐(0)
摘要:chan 1.chan数据结构 src/runtime/chan.go:hchan定义了channel的数据结构: type hchan struct { qcount uint // 当前队列中剩余元素个数 dataqsiz uint // 环形队列长度,即可以存放的元素个数 buf unsafe 阅读全文
posted @ 2023-11-29 17:53 王鹏鑫 阅读(252) 评论(0) 推荐(0)
摘要:先处理错误避免嵌套 尽量避免重复 重复的代码想办法用一个函数包起来 type binWriter struct { w io.Writer size int64 err error } // Write writes a value to the provided writer in little 阅读全文
posted @ 2023-11-22 16:48 王鹏鑫 阅读(47) 评论(0) 推荐(0)