漫谈非加密哈希算法(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

Golang urlencode与urldecode编码解码

为什么需要编码和解码

1.是因为当字符串数据以url的形式传递给web服务器时,字符串中是不允许出现空格和特殊字符的;
2.因为 url 对字符有限制,比如把一个邮箱放入 url,就需要使用 urlencode 函数,因为 url 中不能包含 @ 字符;
3.url转义其实也只是为了符合url的规范而已。因为在标准的url规范中中文和很多的字符是不允许出现在url中的。


smarteng 发布于 2021-11-8 03:23

Google:12 条 Golang 最佳实践

这是直接总结好的 12 条,详细的再继续往下看:

  1. 先处理错误避免嵌套
  2. 尽量避免重复
  3. 先写最重要的代码
  4. 给代码写文档注释
  5. 命名尽可能简洁
  6. 使用多文件包
  7. 使用 go get 可获取你的包
  8. 了解自己的需求
  9. 保持包的独立性
  10. 避免在内部使用并发
  11. 使用 Goroutine 管理状态
  12. 避免 Goroutine 泄露
标签: golang

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

GO爬虫必备之HTTP请求

本文以 Python 的 requests 文档为指导方向,整理了 requests 快速入门文档中的案例在 GO 的是如何实现的。要说明的是, GO 其实也提供了对应于 requests 的克隆版本,github如下:
https://github.com/levigross/grequests​github.com/levigross/grequests
暂时我也还没有看,有兴趣的朋友可以去研究一下

标签: 爬虫

smarteng 发布于 2021-10-20 08:32

VIM CHEATSHEET (中文速查表)

VIM CHEATSHEET (中文速查表),记录vim快捷键

标签: vim

smarteng 发布于 2021-10-15 02:21

博主

    blogger

    smarteng

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

日历

恰饭

标签