golang
已收录文章:14177篇
-
Golang实现零拷贝IO的核心在于避免数据在内核空间与用户空间间复制;1.使用syscall.Sendfile(Linux)或TransmitFile(Windows)可直接将文件数据从文件描述符传输至socket描述符,无需用户空间参与;2.采用mmap将文件映射到内存,允许直接访问内容,跳过read/write操作;3.结合bufio进行缓冲以减少系统调用次数,提升效率;相较于io.Copy,其内部使用固定缓冲区并涉及用户与内核空间拷贝,未发挥零拷贝优势;选择方法需视应用场景及操作系统而定,Send264 收藏
-
使用errchannel可集中处理Go协程中的错误,因goroutine异步执行无法直接返回error,通过带缓冲的errorchannel将各协程错误发送至主协程统一处理,结合sync.WaitGroup确保所有任务完成,最后关闭channel并遍历获取所有错误,提升并发程序健壮性。264 收藏
-
recover必须在defer中调用,用于捕获同一goroutine内的panic,阻止程序崩溃并恢复执行,常用于Web中间件、解析器等场景以保证服务可用性,但不能跨goroutine生效,且不应滥用以避免状态不一致。264 收藏
-
Go中JSON序列化时值类型与指针类型行为一致,因json.Marshal会自动解引用指针;但nil指针序列化为null,而零值字段使用默认值,如空字符串或0;反序列化时指针可区分字段是否提供,配合omitempty能判断字段是否存在,嵌套指针字段可自动分配内存;因此对需区分“未设置”与“零值”的场景,使用指针更灵活。264 收藏
-
简介 最近碰到一个问题,有一个流量采集的组件中使用到了github.com/google/gopacket 这个库,这个库使用一切正常,但是唯独有一个缺点,编译后的二进制文件依赖于libpcap.so的动态库。这为安装包263 收藏
-
继续还是工作中使用colly,不管是官网,还是网上的一些文章(其实90%就是把官网的案例抄过去),都是一样的格式,没有讲到post,测试了几次,记录一下post的使用 c := colly.NewCollector() t263 收藏