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


相关推荐

  • 安全帽识别算法

    安全帽识别算法应用背景:安全帽作为一种最常见和实用的个人防护用具,能够有效地防止和减轻外来危险源对头部的伤害。但在现场操作过程中,安全帽的佩戴很容易人为忽略,引发了不少人身伤害事故。为了保证工作人员都能在作业中佩戴安全帽,保障作业人员安全,安全帽识别算法系统应运而生。关键字:安全帽识别算法安全帽识别算法技术原理安全帽识别算法采用最新AI人工智能深度学习技术,基于计算机智能视频物体识别算法,且通过规模化的安全帽数据识别训练,赋予监控系统智能识别能力,从而准确判断识别场景内的作业人员是否佩戴安全帽,若检.

    2022年5月12日
  • 前端VsCode使用插件

    前端VsCode使用插件vscode前端插件

    2022年7月25日
  • c++入门教程–-5判断语句

    c++入门教程–-5判断语句

    2021年3月12日
  • sql语句的简单用法 db2删除修改字段名,db2一次增加多个字段

    sql语句的简单用法 db2删除修改字段名,db2一次增加多个字段

    2021年7月16日
  • VMware 搭建私有云

    VMware 搭建私有云我们的目的是在VMwareworkstation上安装Centos7系统,并配置用远程桌面访问虚拟机。在虚拟机上安装Centos7首先按照老师给出的博客(VirtualBox安装Centos7笔记)进行安装。博主使用的是virtualBox,但VMware的操作也是基本相同,并且不需要单独设置虚拟机远程访问模式。安装完后我遇到了问题ifconfig:…

    2022年6月26日
  • 【Spring】总结Spring整合Mybatis的底层原理实现步骤[通俗易懂]

    【Spring】总结Spring整合Mybatis的底层原理实现步骤[通俗易懂]SpringMyBatisDao:数据访问层,提供让Service层调用的接口,更大的时候,Dao层可以是一个项目。sqlSession.getMapper();使用的是JDK的动态代理使用时自定注入的条件:要被Spring管理。被Spring管理的对象叫做Bean对象和Bean的区别:@Component注解表示将生成一个BeanBean就是一个Java对象,是Spring…

    2022年5月18日

发表回复

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

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