go爬虫————页面抓取
碎碎念跟着小生凡一老师做的,目的是熟悉网络的请求与响应&数据库从17号晚上开始敲了两三个点马马虎虎敲完了,不到200行,中间连接数据库,import等等耽误时间了,先复习一遍,然后找个静态网站抓一下 不管代码有多少行,一个爬虫的核心流程通常是: 发送请求 → 获取响应 → 解析数据 → 保存结果所以接下来也按照这个步骤来过一遍两个项目 代码开源在了go-proj-self (一)抓取豆瓣top250发送请求 构造客户端 1client:=http.Client 构造GET请求 网页处按F12->点network->刷新->点TOP250->会有url,请求方法等 12345req,err:=http.NewRequest("get","https://movie.douban.com/top250",nil)//请求体没有所以是nilif err != nil { //如果出错 fmt.Println("req err",...
go-Gin简明教程
前言学习来源极客兔兔Gin简明教程&ChatGPT (老师的文章已经很全了)。本文是作为一个纯小白在学习兔老师教程的时候一些思考和资料查询。需要先安装go和gin,这里建议直接看老师的教程,很细。 Gin是什么Gin 是一个用 Go 语言编写的轻量级、高性能的 Web 框架,因其简洁的设计和极高的处理性能,在开发 RESTful API 和 Web 服务时非常流行 Gin 的特点 轻量级 代码量少,启动速度快,适合构建微服务。 没有包含过多的插件,保持核心简单,用户可以按需扩展。 高性能 Gin 使用 Go 的 net/http 标准库作为底层,性能表现极为优越。 使用 Radix 树 和 字符串查找优化 实现路由匹配,高效解析 HTTP 请求。 中间件机制 提供了中间件支持,用户可以灵活定义和扩展功能,例如日志、认证、错误处理等。 开发友好 提供了简洁的 API 和丰富的功能,如路由分组、参数绑定、JSON 数据处理等。 对于错误处理和调试有专门支持,如 Context...
go-net/http标准库简明教程
前言这两天懒了(bushi),快赶赶进度…学习来源ChatGPT&&Go by example本文会包括go的net/http标准库等基础知识!零基础小白请放心使用!会有涉及计网的一点知识 (本人也正在cs144里挣扎)好难过下周要考计组和数据结构长文预警!!! Go的net/http标准库基本概念 net/http 是什么它是 Go 标准库中用来处理 HTTP 请求和响应的模块,提供了构建 Web 服务的基本功能。 核心组件 http.Server:表示 HTTP 服务器。 http.Request:表示 HTTP 请求。 http.ResponseWriter:用于构造 HTTP 响应。 路由与处理器:通过 Handler 接口和 ServeMux 路由器来实现。 示例12345678910111213141516package mainimport ( "fmt" "net/http")func handler(w http.ResponseWriter, r...
go-单元测试
前言 零基础小白可放心食用!有很多概念解释比如匹配or通配符等等,一起加油! 学习来源: 极客兔兔-Go Test单元测试简明教程 ChatGPT Go 的单元测试是 Go 语言中内置的一个重要功能,支持开发者快速验证代码的正确性。通过标准库 testing 和相关工具(如 go test),你可以编写简洁、高效的单元测试用例。 单元测试基本概念 单元测试是指对代码中最小的可测试部分(如函数或方法)进行验证,以确保其行为符合预期。 在 Go 中,单元测试文件以 _test.go 为后缀,测试函数以 Test 开头。 Go 的测试框架是内置的,运行 go test 命令即可执行测试。 一个简单例子Go 语言推荐测试文件和源代码文件放在一块,测试文件以 _test.go 结尾。比如,当前 package 有 calc.go 一个文件,我们想测试 calc.go 中的 Add 和 Mul 函数,那么应该新建 calc_test.go 作为测试文件。123example/ |--calc.go ...
go-并发编程
前言之前从未接触过并发编程的童鞋可放心食用! 并发与并行 并发 (Concurrency):并发是指同时处理多个任务的能力,但这些任务不一定是同时执行的。任务可能通过切换来共享时间片。 并行 (Parallelism):并行是指多个任务同时执行,需要多个处理器核心支持。在 Go 中,Goroutine 是通过调度器来实现并发,最终通过 CPU 核心实现并行。 并发和并行的关系:并发是逻辑上的任务切换,而并行是物理上的任务同时运行。 Go的并发核心:GoroutineGoroutine是什么Goroutine 是 Go 的协程实现,是一种比传统线程更轻量级的并发任务单元。 轻量:一个 Goroutine 启动时仅占用大约 2 KB 的内存(相比线程,通常占用 1 MB 堆栈)。 调度灵活:由 Go 的运行时(runtime)管理调度,而不是直接依赖操作系统内核线程。 高效:Go 的运行时会动态调整 Goroutine 的栈大小(最小 2 KB,最大可达 1 GB),并通过用户态线程池实现调度。 协程 vs 线程: ...
go-语言
前言语言学习来源: go-by-example 极客兔兔go简明教程 原来过语言是看个输入输出直接去做题(但是后面看其实没怎么学跟项目有关的),而且这赶上期末&手上有抓紧的项目,换一种方法。速通一下语言,之前学过一点点go语言皮毛,本文主要记录go在语言方面我觉得有趣不同的地方。ps:下一篇涉及并发编程&单元测试 string&rune字符串是以 byte 数组形式保存的,类型是 uint8,占1个 byte(中文一般占3byte),打印时需要用 string 进行类型转换&用printf格式化,否则打印的是编码值。为了更方便地处理字符(尤其是 Unicode 字符),Go 提供了 rune 类型作为字符的抽象,尤其是在处理多字节字符时,例如,字符 汉 是一个 Unicode 字符,在 UTF-8 编码下占用了 3 个字节,但作为 rune 类型,它是一个单独的值,可以直接进行操作。1234567str := "Hello, 世界!"rs := []rune(str)for _, r := range runes...