连接池在编程中并不少见,链接数据库,redis等操作都需要连接池,否则就会出现并发问题,如果每次操作都建立一条新的链接将会大大消耗资源,笔者也是在使用thrift-Clinet链接Service端使用的时候出现了并发问题,然后找到了一个通用的连接池的库在这里分享给大家. 附上: 喵了个咪的博客:w-blog.cn go-commons-pool-Github地址:github.com/jolestar/go-commons-pool 1.连接池 在使用之前我们需要先了解清楚连接池的概念,总结下来...
-
[Golang软件推荐] Golang通用连接池
-
golang 内存分析/动态追踪
golang pprof 当你的golang程序在运行过程中消耗了超出你理解的内存时,你就需要搞明白,到底是 程序中哪些代码导致了这些内存消耗。此时golang编译好的程序对你来说是个黑盒,该 如何搞清其中的内存使用呢?幸好golang已经内置了一些机制来帮助我们进行分析和追 踪。 此时,通常我们可以采用golang的pprof来帮助我们分析golang进程的内存使用。 pprof 实例 通常我们采用http api来将pprof信息暴露出来以供分析,我们可以采用net/http/pprof 这...
-
Go_Json_Unmarshal_Marshal
Go按照RFC 4627的标准实现了一个json编解码的标准库 func Unmarshal(data []byte, v interface{}) error Unmarshal用于反序列化json的函数 根据data将数据反序列化到传入的对象中 仔细查看代码中的四种情况 1 将json反序列化成struct对象 2 将json反序列化到可以存储struct的slice中 3 将json 反序列化到map中 4 将json反序列化到slice中 package main import ( "e...
-
golang利用gob序列化struct对象保存到本地
golang可以通过json或gob来序列化struct对象,虽然json的序列化更为通用,但利用gob编码可以实现json所不能支持的struct的方法序列化,利用gob包序列化struct保存到本地也十分简单. gob包实现的序列化struct对象保存到本地 务必注意的是golang序列化有个小坑,就是struct里的字段必须要可导出也就是首字母大写 package main import ( "encoding/gob" "fmt" "os" ) type User struct { Id...
-
Go各种类型转换及函数的高级用法
golang是强类型语言,在应用过程中类型转换基本都会用到。下面整理一下常用的类型转换,会持续更新。 整形转字符串 fmt.Println(strconv.Itoa(100)) 该方法的源码是: // Itoa is shorthand for FormatInt(i, 10). func Itoa(i int) string { return FormatInt(int64(i), 10) } 可以看出是FormatInt方法的简单实现。 字符串转整形 i, _ := strconv.Atoi...
-
[Go语言]cgo用法演示
经历了数十年发展的C语言,各种各样的现成的库已经非常丰富。通过cgo,可以在Go语言中使用C语言代码,充分利用好现有的“轮子”。 本文所有代码,在下述环境中调试通过: Windows 8.1 64-bitGo 1.3.3 64-bitGCC 4.8.1 64-bit 要想使用cgo,要导入C“包”: import "C"这行代码的上方要紧挨着连续的若干行的注释,在这些注释中编写C代码。例如: /* int PlusOne(int n) { return n + 1; } */ import "C...
-
图解 Go 中的延迟调用 defer
> 本教程将通过几个实用的例子讲解 Go 语言中的 **defer** 的用法 ## 什么是 defer ? 通过使用 `defer` 修饰一个函数,使其在外部函数 ["返回后"](https://medium.com/@inanc/yeah-semantically-after-is-the-right-word-fad1d5181891) 才被执行,即便外部的函数返回的是 [panic 异常](https://golang.org/ref/spec#Handling_panics...