十分钟学会用Go编写Web中间件

本文首发于公众号,关注文末公众号回复gohttp03 获取文章所用完整源代码。 中间件(通常)是一小段代码,它们接受一个请求,对其进行处理,每个中间件只处理一件事情,完成后将其传递给另一个中间件或最终处理程序,这样就做到了程序的解耦。如果没有中间件那么我们必须在最终的处理程序中来完成这些处理操作,这无疑会造成处理程序的臃肿和代码复用率不高的问题。中间件的一些常见用例是请求日志记录,Header操纵、HTTP请求认证和ResponseWriter劫持等等。 画外音:上面这段描述中间件的文字,跟我两...阅读全文

Segmentfault 2020-02-14 23:32:33 Kevin

Go 每日一库之 logrus

简介 前一篇文章介绍了 Go 标准库中的日志库 log。最后我们也提到,log库只提供了三组接口,功能过于简单了。今天,我们来介绍一个日志库中的“明星库”——logrus。本文编写之时(2020.02.07),logrus 在 GitHub 上 star 数已达到 13.8k。logrus完全兼容标准的log库,还支持文本、JSON 两种日志输出格式。很多知名的开源项目都使用了这个库,如大名鼎鼎的 docker。 快速使用 第三方库需要先安装: $ go get github.com/sirup...阅读全文

Segmentfault 2020-02-14 11:32:33 darjun

Redis必知必会之持久化

1.Redis所有的数据保存在内存中,对数据的更新将异步的保存到磁盘上。 2.持久化的方式:快照(MySQL Dump和Redis RDB)、写日志(MySQL Binlog和Redis AOF) 3.Redis RDB触发方式 save(同步命令,替换老文件) bgsave (异步命令,fork() 一个进程处理 一般情况会很快) 自动 命令 save bgsave IO类型 同步 异步 是否阻塞 是 是(发生在fork()) 复杂度 O(n) O(n) 优点 不会消耗额外内存 不阻塞客户端命...阅读全文

Segmentfault 2020-02-14 09:32:32 xx19941215

Visual Code+Golang环境手工安装依赖

#01 综述 微软发布的visual code studio是款简单易用的轻量级IDE,支持众多语言,包括Go语言。 通过extensions:install extensions安装了Go语言支持插件后,还需要安装gopls、gocode等依赖,因为golang.org无法直接访问,所以有时需要通过GitHub下载后手工安装依赖。 #02 下载和安装 使用git clone指令下载源文件至对应的 src 目录下,使用go install进行安装。(需要保持src下的目录路径与安装时提交的路径参...阅读全文

简书 2020-02-08 01:32:45 ponder4

Beego打包部署到Linux

Beego打包部署到Linux 打包 打开Terminal 定位到工程的 main.go 文件夹目录 使用命令 bee pack -be GOOS=linux 进行打包 打包成Windows 命令 bee pack -be GOOS=windows 部署 将打包好的程序,放到Linux上的某个目录。 将程序放在后台运行,这里使用screen命令进行操作。一般来说,Linux都会自带了screen,如果没有,则可通过命令sudo apt-get install screen或 sudo yum i...阅读全文

简书 2020-02-08 01:32:44 gurlan

代付系统源码(支持API代付)

下载地址 系统图截 视频教程 代付系统演示 系统说明 1. 同一账户日限额20万 2. 同一账户每日最高交易15笔 3. 支持谷歌验证器登录 4. 单笔交易最低10元,最高49999元 5. 支持商户IP白名单系统功能 1. 应用管理: 同时支持公司多个业务系统对接。 2. 商户管理: 支持商户入驻,费率设置,商户需要向平台方提供相关的资料备案。 3. 渠道管理: 支持微信、支付宝、银联、京东支付等多种渠道。 4. 账户管理: 渠道账户管理,支持共享账户(个人商户)及自有账户。 5. 支付下单:...阅读全文

简书 2020-02-08 01:32:43 ckakarotto

leetcode_75

Golang: 思路:这种难度的题目对于我来说还是很够的,所有的算法都需要你深入了解,然后变成自己的东西以后,才能用的上。但不是你知道这个算法就可以了,你还需要能够读懂题目,找到方法。这题的思路,就是个简单的三指针,总结下来就是,2往后放,0往前拎,但具体怎么放怎么拎,还是很有难度的。 代码如下: func sortColors(nums []int) { if len(nums)==0 { return } //碰见2就往后放 //碰见0就往前放 i,j:=0,len(nums)-1 temp...阅读全文

简书 2020-02-08 01:32:42 淳属虚构

Golang-Gui 第三方库andlabs/ui的使用和效果

github上有很多第三方GUI,本文以anblabs/ui库为例,支持跨平台,也比较容易上手,简单介绍下它的用法和最终展示效果。 代码奉上,引包copy代码就直接可以运行起来,部分电脑可能需要下载gcc package main import ( "github.com/andlabs/ui" _ "github.com/andlabs/ui/winmanifest" ) func main() { err:=ui.Main(func() { //生成输入框 input:=ui.NewEntr...阅读全文

简书 2020-02-08 01:32:42 无电不音乐

go学习笔记(一)——环境搭建

go安装和配置 国内源下载 windows环境下,下一步安装法,即可完成安装 go中文文档 go包信息检索 go的常用命令 go包含的命令 如下图: go命令.png 常用命令 命令 可选参数 作用 备注 go build -o 指定输出名称 将go代码文件编译成可执行文件 默认输出名称为package名称,使用build时,会忽略已"_"和"."开头的文件 go install go clean 清理当前项目中的 go get 从远程仓库获取代码包 同python的pip go fmt -w ...阅读全文

简书 2020-02-08 01:32:41 落北忄

18.Go语言基础之反射

1.变量的内在机制 Go语言中的变量是分为两部分的: 类型信息:预先定义好的元信息。 值信息:程序运行过程中可动态变化的。 2.反射介绍 在Python中,Java中,都有反射的概念。 反射是"指程序运行期对程序本身进行访问和修改的能力"。 程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持反射的语言,可以再程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等正和岛可执行文件中,并给程序提供接口,访问反射信息,这样就可以...阅读全文

51CTO博客 2020-02-07 20:32:43 DevOperater

golang 操作redis5大数据类型(string、hash、list、set、zset)(go-redis)

前言 使用redis首先要部署redis,载个安装包,部署下即可,本文不赘述了。redis官网:https://redis.io/ 接着要下载golang的redis资源包,golang官方推荐的有redisgo和go-reids,个人认为go-redis的封装更加人性化,redisgo的调用是基于命令的,go-redis是基于方法的,所以本文先来介绍go-redis的使用。 2行代码来比较下2种资源包的调用方式:redisgo: client.Do("SET", "mykey", "我是数据"...阅读全文

Segmentfault 2020-02-13 11:32:32 叶子

17.Go语言内置包之strconv

1.strconv包 strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数:Atoi(),Itia(),parse系列,format系列,append系列。 1.1string与int类型转换 1.1.1Atoi() Atoi()函数用于将字符串类型的整数转换为int类型 func Atoi(s string) (i int, err error) 如果传入的字符串参数无法转换为Int类型,就会返回错误。 package main import ( "fmt" "strco...阅读全文

51CTO博客 2020-02-07 15:40:05 DevOperater

golang快速入门[2.3]-go语言开发环境配置-linux

golang快速入门[2.3]-go语言开发环境配置-linuxlinux安装Go语言开发包默认读者会使用linux的基本操作配置go语言的开发环境的第一步是要在go官网下载页面下载开发包linux需要下载tar.gz压缩文件这里我们下载的是 64 位的开发包,如果读者的电脑是 32 位系统或者有特殊的需求,则需要下载 32 位的开发包在上图所示页面中向下滚动即可找到 32 位开发包的下载地址,如下图所示注意,如果在ubuntu这样有图形化界面的linux操作系统,我们可以直接下载没有图形化界面...阅读全文

51CTO博客 2020-02-07 12:52:18 jonson_jackson

golang快速入门[2.3]-go语言开发环境配置-linux

golang快速入门[2.3]-go语言开发环境配置-linuxlinux安装Go语言开发包默认读者会使用linux的基本操作配置go语言的开发环境的第一步是要在go官网下载页面下载开发包linux需要下载tar.gz压缩文件这里我们下载的是 64 位的开发包,如果读者的电脑是 32 位系统或者有特殊的需求,则需要下载 32 位的开发包在上图所示页面中向下滚动即可找到 32 位开发包的下载地址,如下图所示注意,如果在ubuntu这样有图形化界面的linux操作系统,我们可以直接下载没有图形化界面...阅读全文

51CTO博客 2020-02-07 12:52:10 jonson_jackson

golang快速入门[2.3]-go语言开发环境配置-linux

golang快速入门[2.3]-go语言开发环境配置-linuxlinux安装Go语言开发包默认读者会使用linux的基本操作配置go语言的开发环境的第一步是要在go官网下载页面下载开发包linux需要下载tar.gz压缩文件这里我们下载的是 64 位的开发包,如果读者的电脑是 32 位系统或者有特殊的需求,则需要下载 32 位的开发包在上图所示页面中向下滚动即可找到 32 位开发包的下载地址,如下图所示注意,如果在ubuntu这样有图形化界面的linux操作系统,我们可以直接下载没有图形化界面...阅读全文

51CTO博客 2020-02-07 12:52:00 jonson_jackson

golang快速入门[2.2]-go语言开发环境配置-macOS

golang快速入门[2.2]-go语言开发环境配置-macOSmacos安装Go语言开发包配置go语言的开发环境的第一步是要在go官网下载页面下载开发包macOS需要下载pkg后缀文件macOS和iOS操作系统Apple软件包使用.pkg扩展名,在内部使用Xar格式Mac OS 的Go语言开发包是 .pkg 格式的,双击我们下载的安装包即可开始安装,一路点击“继续”即可。双击我们下载好的Go语言开发包即可启动安装程序,如下图所示,这是Go语言的用户许可协议,无需管它,直接勾选“I accept...阅读全文

51CTO博客 2020-02-07 12:20:20 jonson_jackson