Google资深工程师深度讲解Go语言-http及其他标准库(十一)「建议收藏」

Google资深工程师深度讲解Go语言-http及其他标准库(十一)

大家好,又见面了,我是全栈君。

一.HTTP标准库

  • 使用http客户端发送请求
  • 使用http.client控制请求头部等
  • 使用httputil简化工作
package main

import (
	"fmt"
	"net/http"
	"net/http/httputil"
)

func main() {
	resp,err:=http.Get("http://www.imooc.com")
	if err!=nil {
		panic(err)
	}
	defer resp.Body.Close()
	s,err:=httputil.DumpResponse(resp,true)
	if err !=nil{
		panic(err)
	}
	fmt.Printf("%s\n",s)
}

升级版

package main

import (
	"fmt"
	"net/http"
	"net/http/httputil"
)

func main() {
	request,err:=http.NewRequest(http.MethodGet,"http://www.imooc.com",nil)
	request.Header.Add("User-Agent"," Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1")

	client:=http.Client{
		Transport:     nil,//设置代理服务器
		CheckRedirect: func( //重定向从这里过
			req *http.Request,
			via []*http.Request) error {
				fmt.Println("redirect:",req)
			return nil
		},
		Jar:           nil,//模拟登陆,设置cookie
		Timeout:       0,
	}
	resp,err:=client.Do(request)
	//resp,err:=http.DefaultClient.Do(request)
	//resp,err:=http.Get("http://www.imooc.com")
	if err!=nil {
		panic(err)
	}
	defer resp.Body.Close()
	s,err:=httputil.DumpResponse(resp,true)
	if err !=nil{
		panic(err)
	}
	fmt.Printf("%s\n",len(s))
}

二.http服务器的性能分析

  • import _”net/http/pprof”
  • 访问/debug/pprof
  • 使用 go tool pprof分析性能
import (
	"./filelisting"
	"log"
	"net/http"
	"os"
	_ "net/http/pprof"  //库前加下划线,引入库,使有pprof的能力
)

Google资深工程师深度讲解Go语言-http及其他标准库(十一)「建议收藏」

浏览器访问:file:///private/var/folders/w9/l38fmd696n95tmrt4pf980vm0000gn/T/pprof001.svg

Google资深工程师深度讲解Go语言-http及其他标准库(十一)「建议收藏」

Google资深工程师深度讲解Go语言-http及其他标准库(十一)「建议收藏」

标准库文档:https://studygolang.com/pkgdoc

或者使用:godoc -http localhost:6060,在本地查看

:Google资深工程师深度讲解Go语言-http及其他标准库(十一)「建议收藏」Google资深工程师深度讲解Go语言-http及其他标准库(十一)「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111698.html原文链接:https://javaforall.net

(0)
上一篇 2022年2月16日 下午10:00
下一篇 2022年2月16日 下午10:00


相关推荐

  • 实战模拟│JWT 登录认证「建议收藏」

    实战模拟│JWT 登录认证「建议收藏」分布式跨域认证的解决新方案

    2022年8月16日
    10
  • redis淘汰策略

    redis淘汰策略redis 默认的最大的内存设置为 0 相当于基于物理机的最大值主要是 4 种算法 针对不同的 key 形成的策略 算法 key LRU 是 LeastRecentl 的缩写 也就是表示最近很少使用 也可以理解成最久没有使用 也就是说当内存不够的时候 每次添加一条数据 都需要抛弃一条最久时间没有使用的旧数据 标准的 LRU 算法为了降低查找和删除元素的时间复杂度 一般采用 Hash 表和双向链表结合的数据结构 hash 表可以赋予链表快速查找到某个 key 是否存在链表中 同时可以快速删除 添加节点 如图所示

    2026年3月26日
    3
  • SpringBoot实现文件下载

    SpringBoot实现文件下载在写 java 的文件下载的时候一直抛出异常 getOutputStr hasalreadybe 抛出异常 getOutputStr hasalreadybe 直到使用了下面的方法 稿源周报 excel 表格下载 ret

    2026年3月16日
    1
  • python 排队论_建模算法(七)——排队论模型

    python 排队论_建模算法(七)——排队论模型一 基本概念一 排队过程的一般表示凡是要求服务的对象称为顾客 凡是为顾客服务的称为服务员二 排队系统的组成和特征主要由输入过程 排队规则 服务过程三部分组成三 排队模型的符号表示 1 X 表示顾客到达流或顾客到达间隔时间分布 2 Y 服务时间分布 3 Z 服务台数目 4 A 系统容量限制 5 B 顾客源数目 6 C 服务规则 FCFS 先到先服务 LCFS 后到先服务四 排队系

    2026年3月16日
    2
  • Android Drawable 与 LayerList综合汇总

    Android Drawable 与 LayerList综合汇总

    2022年1月25日
    41
  • Javascript报错Failed to execute ‘querySelectorAll‘ on ‘Document‘: ‘123456‘ is not a valid sele

    Javascript报错Failed to execute ‘querySelectorAll‘ on ‘Document‘: ‘123456‘ is not a valid seleJavascript 报错 Failedtoexec querySelecto on Document isnotavalids 解决方式 除开特殊符号 第一个字符必须是字母 第一种 将 ID 前面加字母 例如 document querySelecto id 第二种 根据 ID 属性 例如 docum

    2026年3月19日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号