golang
已收录文章:13862篇
-
Go语言通过Goroutine和channel实现高效并发,每个HTTP请求由独立Goroutine处理,初始栈仅2KB,支持成千上万并发;利用缓冲channel并行获取数据并select超时控制,提升响应速度;使用带缓冲channel作信号量限制并发数,防资源耗尽;结合context传递取消与超时信号,确保请求级资源释放,从而构建高吞吐、低延迟、稳定的Web服务。296 收藏
-
用Golang写基础爬虫需发送HTTP请求并解析HTML。首先通过net/http库发起GET请求获取网页内容,如http.Get读取响应体;接着使用goquery库解析HTML,类似jQuery语法提取h1标题和p段落文本;最后将数据结构化为JSON输出。注意设置User-Agent、处理超时与编码,遵守robots.txt规则。完整流程包括错误处理、资源释放及数据存储,可扩展并发与反爬应对。487 收藏
-
Go语言中函数参数可选值类型或指针类型,影响性能、内存使用及数据修改能力。2.值类型传递副本,不修改原数据,适用于小数据;指针类型传递地址,可修改原数据,适用于大数据或需修改场景。3.小型类型建议值传递,大结构体建议指针传递以减少开销,若需修改原始数据则必须用指针。4.方法集应统一接收器类型以保持一致性。正确选择参数类型可提升效率与安全性。110 收藏
-
使用context.WithCancel可取消goroutine,调用cancel()后所有监听该context的goroutine通过ctx.Done()收到信号并退出。166 收藏
-
Golang中处理MIME类型主要使用mime包,结合net/http实现类型推断、解析与设置。1.根据文件扩展名用mime.TypeByExtension获取类型,需传入带点的小写后缀,如".pdf"返回"application/pdf"。2.基于数据内容前512字节检测类型推荐http.DetectContentType,适用于未知扩展名但有原始数据的场景,如JPEG文件头{0xFF,0xD8,0xFF}返回image/jpeg。3.自定义扩展名可通过mime.AddExtensionType注册,如175 收藏
-
使用net/url包解析、构建和操作URL;2.通过url.Parse()解析字符串为*url.URL结构;3.利用u.Query()获取查询参数并用Set/Add修改;4.手动构造url.URL实例并调用Encode()生成标准URL;5.使用ResolveReference处理相对路径。112 收藏