thinkgo

module
v1.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 5, 2019 License: MIT

README

Thinkgo

Public libraries and components for glang development.

Package manage

golang1.11以下版本,采用govendor机制引入第三包或直接使用vendor
golang1.11+版本,可采用go mod机制管理包

About package

.
├── bitSet          bitSet位图实现,将int数放到内存中进行curd操作
├── cache           基于key/val内存缓存设计,支持过期时间设置
├── common          公共函数库logger每天流动日志,Time,Lock操作,uuid生成等
├── crypto          md5,sha1,sha1File,cbc256,ecb,aes加解密函数等
├── goPool          批量执行task pool池
├── gQueue          通过指定goroutine个数,实现task queue执行器
├── httpRequest     http request请求封装,支持get,post,put,patch,delete等
├── inMemcache      通过接口的形式实现内存cache实现kv存储
├── jsoniter        json优化库使用
├── mysql           gorm/mysql封装
├── dao             xorm/mysql封装,支持读写分离连接对象设置
├── mytest          单元测试用例
├── rbmq            rbmq连接封装
├── redisCache      redisgo操作库封装
├── runner          runner按照顺序,执行任务操作,可作为cron作业或定时任务
├── WatchDog        监控狗,用以监控容易失控的循环或超时
├── work            利用无缓冲chan创建goroutine池来控制一组task的执行
└── yamlConf        yaml配置文件读取

Use help

设置golang proxy
vim ~/.bashrc添加如下内容:
export GOPROXY=https://goproxy.io
让bashrc生效
source ~/.bashrc

如果是采用govendor管理包请按照如下方式进行:
    1. 下载thinkgo包
        cd $GOPATH/src
        git clone https://github.com/daheige/thinkgo.git
    2. 安装govendor go第三方包管理工具
        go get -u github.com/kardianos/govendor
    3. 切换到对应的目录进行 go install编译包
如果采用go mod (golang1.11版本+) 不需要将该包放在$GOPATH/src,只需要在使用的项目中引入就可以。
    1. 请直接执行go mod tidy # 下载依赖包和去掉多余的包
    2. go mod vendor #将包移动到vendor下

License

MIT

Directories

Path Synopsis
* * 基于key/val内存缓存设计 * 1.
* * 基于key/val内存缓存设计 * 1.
* 采用cas实现乐观锁及TryLock Compare And Swap 简称CAS,在sync/atomic包种 这类原子操作由名称以‘CompareAndSwap’为前缀的若干个函数代表。
* 采用cas实现乐观锁及TryLock Compare And Swap 简称CAS,在sync/atomic包种 这类原子操作由名称以‘CompareAndSwap’为前缀的若干个函数代表。
通过指定goroutine个数,实现task queue执行器 提交任务到tash chan中,然后不断从chan中取出task执行 结合官方的sync.WaitGroup计数信号等待执行完毕 go goroutine非抢占式的,通过runtime.Gosched()让出cpu给其他goroutine
通过指定goroutine个数,实现task queue执行器 提交任务到tash chan中,然后不断从chan中取出task执行 结合官方的sync.WaitGroup计数信号等待执行完毕 go goroutine非抢占式的,通过runtime.Gosched()让出cpu给其他goroutine
通用协程池任务执行器实现 协程池,用以使用固定数量的 goroutine 顺序处理大量事件的场景
通用协程池任务执行器实现 协程池,用以使用固定数量的 goroutine 顺序处理大量事件的场景
* * gorm mysql封装,支持多个数据库实例化为连接池对象 * 结合了xorm思想,将每个数据库对象作为一个数据库引擎句柄 * xorm设计思想:在xorm里面,可以同时存在多个Orm引擎 * 一个Orm引擎称为Engine,一个Engine一般只对应一个数据库 * 因此,可以将gorm的每个数据库连接句柄,可以作为一个Engine来进行处理 * 容易踩坑的地方: 对于golang的官方sql引擎,sql.open并非立即连接db,用的时候才会真正的建立连接 但是gorm.Open在设置完db对象后,还发送了一个Ping操作,判断连接是否连接上去 对于短连接的话,建议用完就调用db.Close()方法释放db连接资源 对于长连接服务,一般建议在main/init中关闭连接就可以 具体可以看gorm/main.go源码85行
* * gorm mysql封装,支持多个数据库实例化为连接池对象 * 结合了xorm思想,将每个数据库对象作为一个数据库引擎句柄 * xorm设计思想:在xorm里面,可以同时存在多个Orm引擎 * 一个Orm引擎称为Engine,一个Engine一般只对应一个数据库 * 因此,可以将gorm的每个数据库连接句柄,可以作为一个Engine来进行处理 * 容易踩坑的地方: 对于golang的官方sql引擎,sql.open并非立即连接db,用的时候才会真正的建立连接 但是gorm.Open在设置完db对象后,还发送了一个Ping操作,判断连接是否连接上去 对于短连接的话,建议用完就调用db.Close()方法释放db连接资源 对于长连接服务,一般建议在main/init中关闭连接就可以 具体可以看gorm/main.go源码85行
*runner用于按照顺序,执行程序任务操作,可作为cron作业或定时任务 runner 包可用于展示如何使用通道来监视程序的执行时间,如果程序运行时间太长,也可以 用 runner 包来终止程序。
*runner用于按照顺序,执行程序任务操作,可作为cron作业或定时任务 runner 包可用于展示如何使用通道来监视程序的执行时间,如果程序运行时间太长,也可以 用 runner 包来终止程序。
看门狗实现,用以监控容易失控的循环或超时
看门狗实现,用以监控容易失控的循环或超时
利用无缓冲chan创建goroutine池来控制一组task的执行 work 包的目的是展示如何使用无缓冲的通道来创建一个 goroutine 池,这些 goroutine 执行 并控制一组工作,让其并发执行。
利用无缓冲chan创建goroutine池来控制一组task的执行 work 包的目的是展示如何使用无缓冲的通道来创建一个 goroutine 池,这些 goroutine 执行 并控制一组工作,让其并发执行。
* 自定义错误类型,一般用在api/微服务等业务逻辑中,处理错误 支持是否输出堆栈信息,可以把stack信息记录到日志文件中,方便定位问题
* 自定义错误类型,一般用在api/微服务等业务逻辑中,处理错误 支持是否输出堆栈信息,可以把stack信息记录到日志文件中,方便定位问题

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL