golang中设置Host Header的小Tips

最近在使用go的http包的时候遇到的问题:

client := &http.Client{}
req, _ := http.NewRequest("GET", url, nil)

//这样设置无效
res.Header.Set("Host", "xxx.xxx")

res, err := client.Do(req)

if err != nil {
return
}
defer res.Body.Close()

js, err = simplejson.NewFromReader(res.Body)
return

//设置Host需要这样处理
res.Host = "xxx.xxx"

smarteng 发布于 2021-11-24 11:00

Linux抓包工具Tcpdump使用示例教程

tcpdump 是一款强大的网络抓包工具,它使用 libpcap 库来抓取网络数据包,这个库在几乎在所有的 Linux/Unix 中都有。熟悉 tcpdump 的使用能够帮助你分析调试网络数据,本文将通过一个个具体的示例来介绍它在不同场景下的使用方法。不管你是系统管理员,程序员,云原生工程师还是 yaml 工程师,掌握 tcpdump 的使用都能让你如虎添翼,升职加薪。


smarteng 发布于 2021-11-24 09:57

腾讯云挂载初始化云硬盘

操作场景

本文档介绍如何初始化已挂载至云服务器的空云硬盘,在云硬盘上创建文件系统并向其中写入一个名为 qcloud.txt 的文件。

说明
关于初始化云硬盘的更多信息,请参考 初始化场景介绍


smarteng 发布于 2021-11-24 08:55

如何在 CentOS 上修改主机名

通常主机名在操作系统安装过程中设置或者在创建虚拟机的过程中动态指定的。
有很多原因,你需要去改变主机名。最常见的原因就是,当自动创建实例的时候,需要自动设置主机名。
这篇指南解释了如何在 CentOS 8 上修改主机名,而不需要重启系统。
想要修改 CentOS 系统的主机名,使用 hostnamectl set-hostname 命令加上新的主机名进行修改。

标签: hostname

smarteng 发布于 2021-11-22 12:25

漫谈非加密哈希算法(MurMurHash,CRC32,FNV,SipHash,xxHash)

HASH算法介绍

  • Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一地确定输入值。
  • 数学表述为:h = H(M) ,其中H( )--单向散列函数,M--任意长度明文,h--固定长度散列值。
标签: 算法

smarteng 发布于 2021-11-22 03:20

Go 每日一库之 goquery

简介
goquery是用 Go 语言编写的一个类似于 jQuery 的库。它基于 HTML 解析库net/html和 CSS 库cascadia,提供与 jQuery 相近的接口。Go 著名的爬虫框架colly就是基于 goquery 的。

快速使用
本文代码使用 Go Modules。

标签: goquery

smarteng 发布于 2021-11-19 09:46

python程序在命令行执行提示ModuleNotFoundError: No module named 'XXX' 解决方法

今天遇到一个问题,在Python中,引入其他人写的模块,这个模块是内网的一个模块,不能发布到外网,就产生从本地引入模块的问题,折腾很急才解决问题。
还是引入的路径问题。
首先 git clone 下来要引入的模块。
在引入的模块中写自己的逻辑:

标签: Python

smarteng 发布于 2021-11-17 05:14

Golang 短网址服务核心代码

Golang 短网址服务核心代码

在一些应用的分享文案中,经常需要包含一个打开实际页面的链接,而这个链接可能会非常的长(因为可能会有很多很多参数。。)这样的分享文案不仅不够美观,而且在一些平台会受到限制,比如weibo的140字。这时候我们就需要采用一个短链接服务了。
短链服务实际上是对长链接的一个1对N映射。在访问短链的时候,通过应用或web服务器进行跳转,就能访问到实际的页面。我们只需将长链完成映射,存储这样的对应关系,就实现了短链生成服务。

标签: 短网址

smarteng 发布于 2021-11-16 07:59

使用Golang的官方mock工具--gomock、mockgen

在Golang的官方Repo(https://github.com/golang/)中有一个单独的工程叫"mock"(https://github.com/golang/mock),虽然star不是特别多,但它却是Golang官方放出来的mock工具,充这这点我们也需要使用下,虽然并不是官方的就是最好(比如比标准库http更快的fasthttp)。

标签: gomock mockgen

smarteng 发布于 2021-11-15 07:01

golang中validator参数校验器自定义规则及提示

在golang中自定义错误信息的展示

标签: validator

smarteng 发布于 2021-11-12 11:51

Golang中validator库参数校验若干实用技巧

本文介绍了使用validator库做参数校验的一些十分实用的使用技巧,包括翻译校验错误提示信息、自定义提示信息的字段名称、自定义校验方法等。

validator库参数校验若干实用技巧

在web开发中一个不可避免的环节就是对请求参数进行校验,通常我们会在代码中定义与请求参数相对应的模型(结构体),借助模型绑定快捷地解析请求中的参数,例如 gin 框架中的 BindShouldBind 系列方法。本文就以 gin 框架的请求参数校验为例,介绍一些 validator 库的实用技巧。
gin框架使用github.com/go-playground/validator进行参数校验,目前已经支持 github.com/go-playground/validator/v10 了,我们需要在定义结构体时使用 binding tag标识相关校验规则,可以查看validator文档查看支持的所有 tag。

标签: validator

smarteng 发布于 2021-11-12 11:49

使用go-playground/validator实现请求参数验证并输出中文错误信息

实现目标

go-playground/validator 原始的参数验证错误信息为英文字符串,很不友好。
在网上找到了这篇文章,解决了大部分问题。但是返回的错误信息没有分字段,且没有真实字段名,对前端来说不友好。
最后自己动手稍作改造,先看看最后实现的结果:

标签: validator

smarteng 发布于 2021-11-12 11:46
    1 2

博主

    blogger

    smarteng

    人生就流星,虽然转瞬即逝,但也有永恒。

日历

恰饭

标签