golang 获取重定向信息

golang 获取重定向信息

原因

  1. 爬虫获取百度查询结果的时候,为了获取网页真实地址,而百度跳转页面的其中一种方式就是302重定向(redirect),那么针对这种方式,go语言默认自动执行redirect的,所以没办法使用get请求获取真实地址
  2. 对于第一条描述的,在302重定向的时候,真实地址在response的location中
  3. go语言中,默认是支持10层redirect,所以,除非跳出,否则会redirect 到第10层才退出,然而也是可以自定义的阅读全文→

smarteng 发布于 2021-09-28 17:49

Go Context 最佳实践

使用场景

Context 主要有以下三种使用场景

  • 传递超时信息,这点用的最多
  • 传递信号,用于消息通知,处理多协程通信
  • 传递数据,常用的框架层 trace-id, metadata阅读全文→

smarteng 发布于 2021-09-26 17:51

Go安全指南

目录 - [1 通用类](#1) * [I. 代码实现](#1.1) + [1.1 内存管理](#1.1.1) + [1.2 文件操作](#1.1.2) + [1.3 系统接口](#1.1.3) + [1.4 通信安全](#1.1.4) + [1.5 敏感数据保护](#1.1.5) + [1.6 加密解密](#1.1.6) + [1.7 正则表达式](#1.1.7) - [2 后台类](#2) * [I. 代码实现](#2.1) + [1.1 输入校验](#2.1.1) + [1.2 SQL操作](#2.1.2) + [1.3 网络请求](#2.1.3) + [1.4 服务器端渲染](#2.1.4) + [1.5 Web跨域](#2.1.5) + [1.6 响应输出](#2.1.6) + [1.7 会话管理](#2.1.7) + [1.8 访问控制](#2.1.8) + [1.9 并发保护](#2.1.9)
阅读全文→

smarteng 发布于 2021-09-26 11:35

Go 1.17 新特性:Go Module 的变化

自从 Go1.11 增加 Go Module 以来,每个版本都在不断改进 Module。Go1.17 也不例外。这次最主要的变化有两点:

  • Module graph pruning:Module 依赖图修剪
  • Lazy Loading:Module 延迟加载阅读全文→

smarteng 发布于 2021-09-23 14:20

golang怎么会变成这么火

程序员始终在寻找一种更加高效,安全的开发语言,高效表现在开发高效和运行高效,安全在于程序要要较少的去关注底层安全问题。当然还有其它的原因,比如:ide,构建,部署难易程度。简单说就是开发者体验。阅读全文→

标签: golang

smarteng 发布于 2021-09-23 14:11

如何在 Go 中优雅地传递、返回、暴露错误方便追溯

在后台开发中,针对错误处理,有三个维度的问题需要解决:

  • 函数内部的错误处理: 这是一个函数在执行过程中遇到各种错误时的错误处理。这是一个语言级的问题
  • 函数/模块的错误信息返回: 一个函数在操作错误之后,要怎么将这个错误信息优雅地返回,方便调用方(也要优雅地)处理。这也是一个语言级的问题
  • 服务/系统的错误信息返回: 微服务/系统在处理失败时,如何返回一个友好的错误信息,依然是需要让调用方优雅地理解和处理。这是一个服务级的问题,适用于任何语言阅读全文→
标签: 错误处理

smarteng 发布于 2021-09-23 14:08

一个Go语言HTTP包Client使用的坑

一句话总结

Go 的 http 包默认不指定请求超时,允许外部服务劫持你的 goroutine
连接到外部服务时,始终需要自定义 http.Client ,至少要自定义超时时间。阅读全文→

标签: http

smarteng 发布于 2021-09-18 20:05

Go CodeReview关注点

Go CodeReview关注点

Gofmt

在代码上运行gofmt来修复大部分形式化的代码风格问题。现在基本所有的Go项目代码都会使用gofmt。下面讨论的都是这个工具无法解决的代码风格问题。
另外一个选择是使用goimports,它是gofmt的超集,额外提供了自动删除或导入的功能。阅读全文→

标签: code-review

smarteng 发布于 2021-09-18 19:45

Golang读取写入Excel文件

Golang读取写入Excel文件

日常开发中会遇到处理Excel文件的相关操作,几乎所有的系统都有数据报表下载,一般的情况我们都会采用csv格式来下载数据,原因有

  • 写csv文件比较方便,大数据量也没有什么问题。
  • csv文件用微软Excel打开操作也非常的方便,几乎跟Excel文件没有区别

但是在有的时候还是需要用Excel文件,例如对文档数据进行格式化,如果用csv就无能为力了。阅读全文→

标签: excel xlsx

smarteng 发布于 2021-09-18 16:29

Go单测 mock数据库测试

这是Go语言单元测试从零到溜系列教程的第2篇,介绍了如何使用go-sqlmock和miniredis工具进行MySQL和Redis的mock测试。
在上一篇《Go单测从零到溜系列——1.网络测试》中,我们介绍了如何使用httptest和gock工具进行网络测试。
除了网络依赖之外,我们在开发中也会经常用到各种数据库,比如常见的MySQL和Redis等。本文就分别举例来演示如何在编写单元测试的时候对MySQL和Redis进行mock。阅读全文→

标签: 测试

smarteng 发布于 2021-09-16 21:03

go语言编写Web程序

  1. 简介
    这个例子涉及到的技术:
  • 创建一个数据类型,含有load和save函数
  • 基于http包创建web程序
  • 基于template包的html模板技术
  • 使用regexp包验证用户输入
  • 使用闭包阅读全文→

smarteng 发布于 2021-09-16 20:25

Golang后台单元测mock网络测试

这是Go语言单元测试从零到溜系列教程的第1篇,介绍了如何使用httptest和gock工具进行网络测试。
在上一篇《Go单测从零到溜系列——0.单元测试基础》中,我们介绍了Go语言编写单元测试的基础内容。
而实际工作中的业务场景往往会比较复杂,无论我们的代码是作为server端对外提供服务或者还是我们依赖别人提供的网络服务(调用别人提供的API接口)的场景,我们通常都不想在测试过程中真正的建立网络连接。本文就专门介绍如何在上述两种场景下mock网络测试。阅读全文→

标签: golang test

smarteng 发布于 2021-09-15 08:59
    1 2