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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea2022.01激活码最新-激活码分享2022.01.18

    (idea2022.01激活码最新)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
    187
  • BGP选路原则(2)-local-preference

    BGP选路原则(2)-local-preference

    2021年8月10日
    68
  • phpstome 激活码【注册码】

    phpstome 激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    42
  • redis的部署方式,主从,集群(docker搭建mysql主从)

    Redis集群搭建——主从模式前言一、什么是主从模式?二、主从模式集群的搭建案例总结前言一般情况下,为了减轻数据库的访问压力,我们会把热点数据保存在内存中而不是直接从后端数据库中读取。Redis虽然是一个极其优秀的非关系型数据库,但是在大型网站应用,热点数据的并发访问量达到百万千万是很正常的,这个时候单个redis就不能够保证数据量的访问和存储。这个时候我们就可以搭建redis集群,可以保证数据的分散存储与数据的一致性,实现redis的高可用,发生故障时保证程序的正常运行与数据的保存。Redis有几

    2022年4月16日
    31
  • wxPython 教程「建议收藏」

    wxPython 教程「建议收藏」wxPython简介wxPython环境wxPythonHelloWorldwxPythonGUI生成器工具wxPython主要类wxPython事件处理wxPython布局管理wxPython按钮wxPython可停靠窗口xPython多文档界面wxPythonDrawingAPIwxPython拖放…

    2022年5月22日
    29
  • jsp开发技术

    jsp开发技术一、为什么说JSP也是动态web开发的一项技术呢?这是因为写JSP虽然像是在写HTML,但是JSP允许在页面中嵌套Java代码,或者利用某个标签表示Java代码(EL与jstl)。这就使得我们在写JS

    2022年7月2日
    27

发表回复

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

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