Go Commons Pool 1.0 发布
jolestar · · 2123 次点击 · · 开始浏览Go commons pool是一个通用的go语言对象池,基于Java版本的Apache Commons Pool改写。Go commons pool实现了Java版本的主要功能,改写了大多数Java版本的测试用例,测试覆盖率达到90%,性能测试结果和Java版本的相近,已经可以用于生产环境,于是发布1.0版本。
Go commons pool保留了Java版本的主要功能,包括:
- 自定义的 PooledObjectFactory.
- 丰富的设置选项,可以精确控制对象的生命周期。详细参看ObjectPoolConfig。
- 对象池是否是 LIFO (后进先出) 或者是 FIFO (先进先出)
- 对象池的容量控制
- 对象池对象的验证配置
- 获取对象时是否阻塞以及最大等待时间配置
- 对象池对象的回收机制配置(支持后台定时任务检测回收)
- 对象池对象的抛弃机制配置(主要用于防止对象池对象借出后未归还,导致对象泄露)
但不包含以下Apache commons pool的功能:
- KeyedObjectPool 实现
- ProxiedObjectPool 实现
- 对象池的统计功能
Go commons pool 最主要的应用场景是各种连接池,当前Go下的各种缓存或数据库(比如redis/memcached)都自己实现了一个功能不太完备的连接池(比如缺少超时设置等),如果通过Go commons pool可以支持更丰富的设置。
关于改写过程中遇到的Go语言的并发问题总结可参看博客Golang多线程编程问题总结。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
Go commons pool是一个通用的go语言对象池,基于Java版本的Apache Commons Pool改写。Go commons pool实现了Java版本的主要功能,改写了大多数Java版本的测试用例,测试覆盖率达到90%,性能测试结果和Java版本的相近,已经可以用于生产环境,于是发布1.0版本。
Go commons pool保留了Java版本的主要功能,包括:
- 自定义的 PooledObjectFactory.
- 丰富的设置选项,可以精确控制对象的生命周期。详细参看ObjectPoolConfig。
- 对象池是否是 LIFO (后进先出) 或者是 FIFO (先进先出)
- 对象池的容量控制
- 对象池对象的验证配置
- 获取对象时是否阻塞以及最大等待时间配置
- 对象池对象的回收机制配置(支持后台定时任务检测回收)
- 对象池对象的抛弃机制配置(主要用于防止对象池对象借出后未归还,导致对象泄露)
但不包含以下Apache commons pool的功能:
- KeyedObjectPool 实现
- ProxiedObjectPool 实现
- 对象池的统计功能
Go commons pool 最主要的应用场景是各种连接池,当前Go下的各种缓存或数据库(比如redis/memcached)都自己实现了一个功能不太完备的连接池(比如缺少超时设置等),如果通过Go commons pool可以支持更丰富的设置。
关于改写过程中遇到的Go语言的并发问题总结可参看博客Golang多线程编程问题总结。