#Golang

golangWeb框架---github.com/gin-gonic/gin学习四(模型绑定、自定义校验、ShouldBindXXX、BindXXX)

文章目录模型绑定、校验绑定json(ShouldBindJSON)绑定xml(ShouldBindXML)、form(ShouldBind)自定义校验器(demo有问题)BindQueryShouldBindQuery(只限查询参数)BindJson(json)、Bind(查询参数、formdata)模型绑定、校验以下...

golangWeb框架---github.com/gin-gonic/gin学习三(路由多视图函数、中间件、log日志)

文章目录gin.New路由包含多个HandlerFunc函数使用中间件如何写log日志gin.New我们之前的例子都是利用了gin.Default(),那么gin.New()跟它有什么区别?来简单看下源码gin.Default()源码如下funcDefault()*Engine{debugPrintWARNINGDef...

golangWeb框架---github.com/gin-gonic/gin学习二(文件上传、多文件上传)

文章目录上传单个文件(一)上传单个文件(二)上传多个文件关于如何实现Gin框架上传单个文件、多个文件的案例上传单个文件(一)packagemainimport("github.com/gin-gonic/gin""io""log""net/http""os")funcmain(){router:=gin.Default...

golangWeb框架---github.com/gin-gonic/gin学习一(路由、多级路由、参数传递几种形式)

文章目录Gin介绍安装快速开始路径参数构造参数post传参get+post混合形式构造Map格式分组路由Gin介绍Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,已经发布了1.0版本。具有快速灵活,容错方便等特点。其实对于golang而言,web框架的依赖要远比Python,Java之类的...

golang框架对比Revel and Beego

1框架背景1.1RevelRevel是Google官方发布的一款go语言web框架,其具有热编译,高性能,无状态,模块化等特性,非常适合做web开发。在GitHub上有10.7k颗star,124个贡献者。1.2Beegobeego是一个快速开发Go应用的HTTP框架,他可以用来快速开发API、Web及后端服务等各种应...

golang中发送http请求的几种常见情况

整理一下golang中各种http的发送方式方式一使用http.Newrequest先生成http.client->再生成http.request->之后提交请求:client.Do(request)->处理返回结果,每一步的过程都可以设置一些具体的参数,下面是一个最朴素最基本的例子://questi...

Golang groupcache LRU 缓存简介与用法

LRU(LeastRecentlyUsed,最近最久未使用算法)是一种常见的缓存淘汰算法,当缓存满时,淘汰最近最久未使用的元素,在很多分布式缓存系统(如Redis,Memcached)中都有广泛使用。其基本思想是如果一个数据在最近一段时间没有被访问到,那么可以认为在将来它被访问的可能性也很小。因此,当缓存满时,最久未被...

使用Golang的singleflight防止缓存击穿

背景singleflight介绍示例源码分析其他Top在使用缓存时,容易发生缓存击穿。缓存击穿:一个存在的key,在缓存过期的瞬间,同时有大量的请求过来,造成所有请求都去读dB,这些请求都会击穿到DB,造成瞬时DB请求量大、压力骤增。Topimport"golang.org/x/sync/singleflight"si...

golang中字符串的查找方法小结

1)funcContains(s,substrstring)bool这个函数是查找某个字符是否在这个字符串中存在,存在返回true示例如下:import("fmt""strings")funcmain(){fmt.Println(strings.Contains("widuu","wi"))//truefmt.Prin...

golang 函数作为参数传递(回调)

和其他很多语言一样,golang中函数也可以作为其它函数的参数进行传递,然后在其它函数内调用执行,一般称之为回调。语法:以函数签名作为主调函数的形参的类型,即传递一个指向函数的指针funcmain(){sayhello("john",addperfix)}funcaddperfix(perfix,namestring)...

golang 做了个mutex与atomic性能测试

funcBenchmarkMutex(b*testing.B){varnumberintlock:=sync.Mutex{}fori:=0;i<b.N;i++{gofunc(){deferlock.Unlock()lock.Lock()number++}()}}funcBenchmarkAtomic(b*test...

golang strings.NewReader

为什么说strings.Reader类型的值可以高效地读取字符串与strings.Builder类型恰恰相反,strings.Reader类型是为了高效读取字符串而存在的。后者的高效主要体现在它对字符串的读取机制上,它封装了很多用于在string值上读取内容的最佳实践。strings.Reader类型的值(以下简称Re...
代码星球 ·2020-10-02

golang strings.Builder

strings.Builder类型的值(以下简称Builder值)的优势有下面的三种:已存在的内容不可变,但可以拼接更多的内容;减少了内存分配和内容拷贝的次数;可将内容重置,可重用值。先来说说string类型。我们都知道,在Go语言中,string类型的值是不可变的。如果我们想获得一个不一样的字符串,那么就只能基于原字...
代码星球 ·2020-10-02

Golang 服务优雅重启

很多时候对于服务升级的做法简单粗暴,就简单的杀进程启动新的进程.还有的好一点就是多个相同的服务依次升级,保证有服务可用.但是公平的说这两种都会丢失请求中的连接.鉴于这种情况,在现实中我们可以使用优雅重启来搞定这个问题.Golang实现优雅重启的原理也很简单:监听USR2信号;收到信号后将服务监听的文件描述符传递给新的子...
代码星球 ·2020-10-02

golang服务开发平滑升级之优雅重启

经典平滑升级方案服务器开发运维中,平滑升级是一个老生常谈的话题。拿一个httpserver来说,最常见的方案就是在httpserver前面加挂一个lvs负载,通过健康检查接口决定负载的导入与摘除。具体来说就是httpserver提供一个/status接口,服务器返回一个status文件,内容为ok,lvs负载定时访问这...
首页上一页...23456...下一页尾页