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


相关推荐

  • PyCharm vs Spyder:两个Python IDE的快速比较

    PyCharm vs Spyder:两个Python IDE的快速比较Ifyouhavefollowedmyblogyoumayhavenoticedthatalotoffocushavebeenputonhowtolearnprogramming(particularlyinPython).IhavealsowrittenaboutIntegratedDevelopmentEnvironments…

    2022年8月29日
    2
  • 什么是WinHTTP?「建议收藏」

    什么是WinHTTP?「建议收藏」WinHTTP的全称是MicrosoftWindowsHTTPServices,它提供给开发者一个HTTP客户端应用程序接口(API),通过这种API借助HTTP协议给其他的HTTP服务器发

    2022年7月4日
    56
  • 聚类分析的常用算法_聚类算法的基本原理

    聚类分析的常用算法_聚类算法的基本原理原博文:聚类是一种机器学习技术,它涉及到数据点的分组。给定一组数据点,我们可以使用聚类算法将每个数据点划分为一个特定的组。理论上,同一组中的数据点应该具有相似的属性和/或特征,而不同组中的数据点应该具有高度不同的属性和/或特征。聚类是一种无监督学习的方法,是许多领域中常用的统计数据分析技术。在数据科学中,我们可以使用聚类分析从我们的数据中获得一些有价值的见解。在这篇文章中,我们将研究5种流…

    2022年8月29日
    1
  • SpringBoot整合Quartz定时任务(持久化到数据库)

    背景最近在做项目,项目中有个需求:需要使用定时任务,这个定时任务需要即时生效。查看Quartz官网之后发现:Quartz提供两种基本作业存储类型:RAMJobStore:RAM也就是内存,默认情况下Quartz会将任务调度存在内存中,这种方式性能是最好的,因为内存的速度是最快的。不好的地方就是数据缺乏持久性,但程序崩溃或者重新发布的时候,所有运行信息都会丢失JDBC作业存储:存到数据库…

    2022年4月9日
    77
  • 图解SQL的Join

    图解SQL的Join

    2022年2月18日
    35
  • IntelliJ IDEA使用教程(新手入门–持续更新)[通俗易懂]

    IntelliJ IDEA使用教程(新手入门–持续更新)[通俗易懂]idea使用教程一、下载安装二、基础配置及插件安装1.基础配置1.1配置jdk1.2配置maven1.3配置git1.4开启自动编译1.5调整字体(参照配置入口,大家可以根据喜好自行调整,记得调整完每一步都要点击apply)1.6取消大小写敏感,取消勾选1.7设置统一编码为utf-82、插件下载2.1[Mybatis](https://how2j.cn/k/mybatis/mybatis-tutorial/1087.html)2.2[Lombok](https://www.zhihu.com/q

    2022年8月29日
    2

发表回复

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

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