【连接池】为什么要使用连接池(一)

为什么要使用连接池?它有什么优点?

这个问题你真的能回答到点子上了吗?

据我所知,有不少人仅仅只是听说连接池好,就说好。至于问他连接池哪里好,他只能给你说连接复用啊,不用重复创建连接啊这种。但是看完这篇文章,你可以在别人问你连接池为什么好的时候,把这篇文章链接甩给他,不要再问我连接池怎么好了可以么?

下文以redis连接池作为案例,一步一步进行分析。

Read more "【连接池】为什么要使用连接池(一)"

gin的Next()方法使用

使用gin这个web框架开发http服务,少不了使用中间件。

在调用gin.Default()方法的时候就会自动使用LoggerRecovery()两个中间件。

仔细查看两个中间件的实现,你会发现,两个中间件都有c.Next()这个方法的调用。

很多人把Next放在中间的最后一行,然后发现加不加next似乎并没有什么区别。所以,它到底是怎么用的?

Read more "gin的Next()方法使用"

go如何实现一个单例

理解单例:

在程序运行的周期内,只初始化一次,称为单例

在go中,我们可以使用两种方法来实现单例。

  1. init 方法
  2. sync.Once

init非常地简单,在程序运行的时候,提前把我们需要的资源初始化好,就可以实现一个简单单例了。

但是在程序的其他地方,如何控制只实现一次?

这里就需要使用到sync.Once.

Read more "go如何实现一个单例"